{"version":3,"file":"system-prompt-hardening.test.d.ts","sourceRoot":"","sources":["../../src/core/system-prompt-hardening.test.ts"],"names":[],"mappings":"","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { buildSystemPrompt } from \"./system-prompt.js\";\nimport { getToolPrompt } from \"./tools/tools-prompt-data.js\";\n\ndescribe(\"prompt hardening verification\", () => {\n\tdescribe(\"buildSystemPrompt includes Operator State Discipline section\", () => {\n\t\tit(\"contains the Operator State Discipline section header\", () => {\n\t\t\tconst prompt = buildSystemPrompt();\n\t\t\texpect(prompt).toContain(\"Operator State Discipline:\");\n\t\t});\n\n\t\tit(\"contains task_create delegation guidance\", () => {\n\t\t\tconst prompt = buildSystemPrompt();\n\t\t\texpect(prompt).toContain(\"Use task_create for multi-step work requiring explicit tracking\");\n\t\t});\n\n\t\tit(\"contains todo_write usage guidance\", () => {\n\t\t\tconst prompt = buildSystemPrompt();\n\t\t\texpect(prompt).toContain(\"Use todo_write for ephemeral step-by-step progress tracking\");\n\t\t});\n\n\t\tit(\"contains 'Do not delegate until you have captured what needs tracking'\", () => {\n\t\t\tconst prompt = buildSystemPrompt();\n\t\t\texpect(prompt).toContain(\"Do not delegate until you have captured what needs tracking\");\n\t\t});\n\n\t\tit(\"contains 'If you have active delegated work' guidance\", () => {\n\t\t\tconst prompt = buildSystemPrompt();\n\t\t\texpect(prompt).toContain(\n\t\t\t\t\"If you have active delegated work, there should be corresponding task or todo entries\",\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"getToolPrompt('task_create') contains expected hardening language\", () => {\n\t\tit(\"contains 'Always call task_list FIRST'\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_create\");\n\t\t\texpect(prompt).toBeDefined();\n\t\t\texpect(prompt).toContain(\"Always call task_list FIRST\");\n\t\t});\n\n\t\tit(\"contains status transition guidance\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_create\");\n\t\t\texpect(prompt).toContain(\"After creating, use task_update to mark the task as in_progress\");\n\t\t});\n\n\t\tit(\"contains meaningful tasks guidance\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_create\");\n\t\t\texpect(prompt).toContain(\"Meaningful tasks only\");\n\t\t\texpect(prompt).toContain(\"Do NOT create a task for every trivial step\");\n\t\t});\n\t});\n\n\tdescribe(\"getToolPrompt('todo_write') contains expected hardening language\", () => {\n\t\tit(\"contains 'Exactly ONE task should be in_progress at any time'\", () => {\n\t\t\tconst prompt = getToolPrompt(\"todo_write\");\n\t\t\texpect(prompt).toBeDefined();\n\t\t\texpect(prompt).toContain(\"Exactly ONE task should be in_progress at any time during active work\");\n\t\t});\n\n\t\tit(\"contains 'When to use proactively' list\", () => {\n\t\t\tconst prompt = getToolPrompt(\"todo_write\");\n\t\t\texpect(prompt).toContain(\"When to use proactively\");\n\t\t});\n\n\t\tit(\"contains FULL LIST REPLACEMENT semantics\", () => {\n\t\t\tconst prompt = getToolPrompt(\"todo_write\");\n\t\t\texpect(prompt).toContain(\"FULL LIST REPLACEMENT\");\n\t\t});\n\t});\n\n\tdescribe(\"getToolPrompt('task_update') contains status transition rules\", () => {\n\t\tit(\"contains 'pending → in_progress' transition\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_update\");\n\t\t\texpect(prompt).toBeDefined();\n\t\t\texpect(prompt).toContain(\"pending → in_progress\");\n\t\t});\n\n\t\tit(\"contains 'in_progress → completed' transition\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_update\");\n\t\t\texpect(prompt).toContain(\"in_progress → completed\");\n\t\t});\n\n\t\tit(\"contains 'Exactly ONE task should be in_progress'\", () => {\n\t\t\tconst prompt = getToolPrompt(\"task_update\");\n\t\t\texpect(prompt).toContain(\"Exactly ONE task should be in_progress at any time\");\n\t\t});\n\t});\n});\n"]}