Adding skills & isac talent updates

This commit is contained in:
jb
2026-07-29 20:56:22 -04:00
parent f1b473ffa8
commit 65a4987cad
68 changed files with 5486 additions and 569 deletions
@@ -78,7 +78,7 @@ describe('AI mechanic authoring prompt', () => {
recipeKeys: []
}));
expect(AI_MECHANIC_PROMPT_VERSION).toBe(5);
expect(AI_MECHANIC_PROMPT_VERSION).toBe(6);
expect(input.canonicalCatalog.grammar.outcome.optional).toEqual(
expect.arrayContaining(['delivery', 'durationSeconds'])
);
@@ -115,7 +115,7 @@ describe('AI mechanic authoring prompt', () => {
expect.stringContaining('Do not replace continuous delivery with a periodic reducer')
]));
expect(AI_MECHANIC_AUTHORING_INSTRUCTIONS).toContain(
'Prompt contract version: 5'
'Prompt contract version: 6'
);
const advertised = structuredClone(
@@ -157,6 +157,33 @@ describe('AI mechanic authoring prompt', () => {
expect(parsed.ok).toBe(true);
});
it('advertises authoritative current Health percentage with strict band semantics', () => {
const input = JSON.parse(buildAiMechanicAuthoringInput({
request,
attributes: [],
events: [{ key: 'tick', label: 'Simulation tick' }],
actions: [],
recipeKeys: ['health_threshold_bands']
}));
expect(input.canonicalCatalog.grammar.combatReferences.currentHealthPercent)
.toMatchObject({
label: 'Current Health percentage',
description: expect.stringContaining('0 through 100')
});
expect(input.canonicalCatalog.grammar.referenceShapes).toContainEqual({
ref: {
source: 'combat',
path: 'currentHealthPercent',
timing: 'current'
}
});
expect(input.examplesAndRules).toEqual(expect.arrayContaining([
expect.stringContaining('operator:"lt"'),
expect.stringContaining('<25, >=25 and <50, and >=50 and <75')
]));
});
it('advertises Precise Trauma through target expiry without inventing target tick iteration', () => {
const skillDamageId = 'skill-damage-catalog-id';
const input = JSON.parse(buildAiMechanicAuthoringInput({