opencode-matrixx 2.6.2 → 2.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +0 -2
  2. package/dist/agents/dynamic-agent-prompt-builder.d.ts +5 -3
  3. package/dist/agents/mouse/agent.d.ts +1 -1
  4. package/dist/agents/oracle/behavioral-summary.d.ts +1 -1
  5. package/dist/agents/oracle/identity-constraints.d.ts +1 -1
  6. package/dist/agents/oracle/plan-generation.d.ts +1 -1
  7. package/dist/agents/oracle/plan-template.d.ts +1 -1
  8. package/dist/agents/oracle/system-prompt.d.ts +4 -3
  9. package/dist/agents/smith.d.ts +1 -1
  10. package/dist/agents/types.d.ts +1 -1
  11. package/dist/cli.js +138 -20
  12. package/dist/config/migrations/index.d.ts +1 -0
  13. package/dist/config/migrations/model-migration.d.ts +18 -0
  14. package/dist/config/resolve-tiers.d.ts +1 -1
  15. package/dist/config/schema/experimental.d.ts +2 -0
  16. package/dist/config/schema/failure-counter.d.ts +7 -0
  17. package/dist/config/schema/headroom.d.ts +1 -1
  18. package/dist/config/schema/hooks.d.ts +5 -8
  19. package/dist/config/schema/matrixx-config.d.ts +70 -9
  20. package/dist/config/schema/model-config.d.ts +81 -0
  21. package/dist/config/schema/morpheus.d.ts +4 -2
  22. package/dist/config/schema/security.d.ts +49 -0
  23. package/dist/config/schema.d.ts +2 -0
  24. package/dist/create-hooks.d.ts +3 -4
  25. package/dist/features/background-agent/manager.d.ts +8 -0
  26. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  27. package/dist/features/mission-state/plan-storage.d.ts +1 -0
  28. package/dist/features/mission-state/plan-storage.test.d.ts +1 -0
  29. package/dist/features/session-state/state.d.ts +26 -0
  30. package/dist/features/session-state/state.test.d.ts +1 -0
  31. package/dist/features/task-storage/types.d.ts +1 -0
  32. package/dist/hooks/context-mode-enforcer/constants.d.ts +1 -1
  33. package/dist/hooks/context-window-limit-recovery/index.d.ts +8 -0
  34. package/dist/hooks/context-window-limit-recovery/parser-patterns.d.ts +11 -0
  35. package/dist/hooks/context-window-limit-recovery/parser.d.ts +15 -0
  36. package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/recovery-hook.d.ts +2 -0
  37. package/dist/hooks/context-window-limit-recovery/storage.d.ts +3 -0
  38. package/dist/hooks/{anthropic-context-window-limit-recovery/tool-result-storage-sdk.d.ts → context-window-limit-recovery/tool-result-store.d.ts} +10 -0
  39. package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/types.d.ts +1 -1
  40. package/dist/hooks/context-window-monitor.d.ts +5 -1
  41. package/dist/hooks/failure-counter/counter.d.ts +7 -0
  42. package/dist/hooks/failure-counter/counter.test.d.ts +1 -0
  43. package/dist/hooks/failure-counter/hook.d.ts +18 -0
  44. package/dist/hooks/failure-counter/index.d.ts +3 -0
  45. package/dist/hooks/failure-counter/patterns.d.ts +6 -0
  46. package/dist/hooks/failure-counter/patterns.test.d.ts +1 -0
  47. package/dist/hooks/index.d.ts +3 -4
  48. package/dist/hooks/input-secret-guard/detection-rules.d.ts +10 -0
  49. package/dist/hooks/input-secret-guard/detector.d.ts +22 -0
  50. package/dist/hooks/input-secret-guard/detector.test.d.ts +1 -0
  51. package/dist/hooks/input-secret-guard/hook.d.ts +19 -0
  52. package/dist/hooks/input-secret-guard/hook.test.d.ts +1 -0
  53. package/dist/hooks/input-secret-guard/index.d.ts +1 -0
  54. package/dist/hooks/input-secret-guard/redactor.d.ts +2 -0
  55. package/dist/hooks/input-secret-guard/redactor.test.d.ts +1 -0
  56. package/dist/hooks/input-secret-guard/session-allow-cache.d.ts +6 -0
  57. package/dist/hooks/input-secret-guard/session-allow-cache.test.d.ts +1 -0
  58. package/dist/hooks/interactive-bash-session/hook.test.d.ts +1 -0
  59. package/dist/hooks/keyword-detector/analyze/default.d.ts +1 -1
  60. package/dist/hooks/keyword-detector/search/default.d.ts +1 -1
  61. package/dist/hooks/keyword-detector/ultrawork/deepseek.d.ts +1 -1
  62. package/dist/hooks/keyword-detector/ultrawork/default.d.ts +2 -9
  63. package/dist/hooks/keyword-detector/ultrawork/gemini.d.ts +1 -1
  64. package/dist/hooks/keyword-detector/ultrawork/glm.d.ts +1 -1
  65. package/dist/hooks/keyword-detector/ultrawork/mimo.d.ts +1 -1
  66. package/dist/hooks/preemptive-compaction-trigger.d.ts +1 -1
  67. package/dist/hooks/rules-injector/constants.d.ts +0 -1
  68. package/dist/hooks/rules-injector/parser.d.ts +0 -1
  69. package/dist/hooks/rules-injector/rule-file-finder.d.ts +2 -4
  70. package/dist/hooks/rules-injector/types.d.ts +2 -3
  71. package/dist/hooks/stop-continuation-guard/hook.d.ts +3 -2
  72. package/dist/hooks/stop-continuation-guard/repro.test.d.ts +1 -0
  73. package/dist/hooks/task-continuation-enforcer/awaiting-user.test.d.ts +1 -0
  74. package/dist/hooks/task-continuation-enforcer/constants.d.ts +1 -0
  75. package/dist/hooks/task-continuation-enforcer/continuation-injection.d.ts +2 -0
  76. package/dist/hooks/task-continuation-enforcer/countdown.d.ts +2 -0
  77. package/dist/hooks/task-continuation-enforcer/handler.d.ts +2 -0
  78. package/dist/hooks/task-continuation-enforcer/idle-event.d.ts +2 -0
  79. package/dist/hooks/task-continuation-enforcer/staleness.d.ts +16 -0
  80. package/dist/hooks/task-continuation-enforcer/staleness.test.d.ts +1 -0
  81. package/dist/hooks/task-continuation-enforcer/todo.d.ts +15 -0
  82. package/dist/hooks/task-continuation-enforcer/types.d.ts +6 -0
  83. package/dist/hooks/task-continuation-enforcer/ulw-bootstrap.test.d.ts +1 -0
  84. package/dist/hooks/task-edit-guard/constants.d.ts +2 -0
  85. package/dist/hooks/todo-continuation-enforcer/awaiting-user.test.d.ts +1 -0
  86. package/dist/hooks/todo-continuation-enforcer/types.d.ts +3 -0
  87. package/dist/index.js +36175 -35248
  88. package/dist/matrixx.schema.json +373 -73
  89. package/dist/plugin/hooks/create-core-hooks.d.ts +3 -4
  90. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -4
  91. package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +1 -2
  92. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -0
  93. package/dist/plugin-handlers/oracle-agent-config-builder.d.ts +2 -1
  94. package/dist/shared/awaiting-user.d.ts +12 -0
  95. package/dist/shared/context-limit-resolver.d.ts +1 -0
  96. package/dist/shared/context-limits.d.ts +36 -0
  97. package/dist/shared/index.d.ts +0 -1
  98. package/dist/shared/merge-categories.d.ts +12 -1
  99. package/dist/shared/migration/hook-names.d.ts +1 -0
  100. package/dist/shared/model-requirements.d.ts +9 -0
  101. package/dist/shared/model-sanitizer.d.ts +1 -1
  102. package/dist/shared/model-tiers.d.ts +28 -15
  103. package/dist/shared/tier-resolver.d.ts +9 -9
  104. package/dist/tools/delegate-task/categories.d.ts +12 -1
  105. package/dist/tools/delegate-task/complexity-constants.d.ts +15 -11
  106. package/dist/tools/delegate-task/executor-types.d.ts +4 -1
  107. package/dist/tools/delegate-task/index.d.ts +1 -1
  108. package/dist/tools/delegate-task/types.d.ts +4 -1
  109. package/dist/tools/index.d.ts +5 -0
  110. package/dist/tools/plan/constants.d.ts +10 -0
  111. package/dist/tools/plan/index.d.ts +6 -0
  112. package/dist/tools/plan/plan-create.d.ts +3 -0
  113. package/dist/tools/plan/plan-delete.d.ts +3 -0
  114. package/dist/tools/plan/plan-list.d.ts +3 -0
  115. package/dist/tools/plan/plan-read.d.ts +3 -0
  116. package/dist/tools/plan/plan-update.d.ts +3 -0
  117. package/dist/tools/plan/types.d.ts +28 -0
  118. package/dist/tools/task/constants.d.ts +5 -0
  119. package/dist/tools/task/types.d.ts +2 -0
  120. package/package.json +1 -1
  121. package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.d.ts +0 -11
  122. package/dist/hooks/anthropic-context-window-limit-recovery/index.d.ts +0 -8
  123. package/dist/hooks/anthropic-context-window-limit-recovery/message-storage-directory.d.ts +0 -3
  124. package/dist/hooks/anthropic-context-window-limit-recovery/parser.d.ts +0 -2
  125. package/dist/hooks/anthropic-context-window-limit-recovery/storage-paths.d.ts +0 -3
  126. package/dist/hooks/anthropic-context-window-limit-recovery/storage.d.ts +0 -4
  127. package/dist/hooks/anthropic-context-window-limit-recovery/tool-result-storage.d.ts +0 -10
  128. package/dist/hooks/directory-readme-injector/constants.d.ts +0 -2
  129. package/dist/hooks/directory-readme-injector/finder.d.ts +0 -5
  130. package/dist/hooks/directory-readme-injector/hook.d.ts +0 -6
  131. package/dist/hooks/directory-readme-injector/index.d.ts +0 -1
  132. package/dist/hooks/directory-readme-injector/injector.d.ts +0 -16
  133. package/dist/hooks/directory-readme-injector/storage.d.ts +0 -1
  134. package/dist/hooks/mcp-startup-notification/index.d.ts +0 -9
  135. package/dist/hooks/question-label-truncator/hook.d.ts +0 -7
  136. package/dist/hooks/question-label-truncator/index.d.ts +0 -1
  137. package/dist/shared/migration/agent-category.d.ts +0 -19
  138. package/dist/shared/migration/agent-names.d.ts +0 -6
  139. package/dist/shared/migration/config-migration.d.ts +0 -1
  140. package/dist/shared/migration/model-versions.d.ts +0 -13
  141. package/dist/shared/migration.d.ts +0 -5
  142. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/aggressive-truncation-strategy.d.ts +0 -0
  143. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/client.d.ts +0 -0
  144. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/empty-content-recovery.d.ts +0 -0
  145. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/executor.d.ts +0 -0
  146. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/message-builder.d.ts +0 -0
  147. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/recovery-strategy.d.ts +0 -0
  148. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/state.d.ts +0 -0
  149. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/summarize-retry-strategy.d.ts +0 -0
  150. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/target-token-truncation.d.ts +0 -0
  151. /package/dist/hooks/{anthropic-context-window-limit-recovery → context-window-limit-recovery}/tool-part-types.d.ts +0 -0
@@ -9,7 +9,7 @@ import type { AgentPromptMetadata } from "./types";
9
9
  * the same ruthless analytical precision, catching every gap,
10
10
  * ambiguity, and missing context that would block implementation.
11
11
  */
12
- export declare const SMITH_SYSTEM_PROMPT = "You are a **practical** work plan reviewer. Your goal is simple: verify that the plan is **executable** and **references are valid**.\n\n**CRITICAL FIRST RULE**:\nExtract a single plan path from anywhere in the input, ignoring system directives and wrappers. If exactly one `.matrixx/plans/*.md` path exists, this is VALID input and you must read it. If no plan path exists or multiple plan paths exist, reject per Step 0. If the path points to a YAML plan file (`.yml` or `.yaml`), reject it as non-reviewable.\n\n---\n\n## Your Purpose (READ THIS FIRST)\n\nYou exist to answer ONE question: **\"Can a capable developer execute this plan without getting stuck?\"**\n\nYou are NOT here to:\n- Nitpick every detail\n- Demand perfection\n- Question the author's approach or architecture choices\n- Find as many issues as possible\n- Force multiple revision cycles\n\nYou ARE here to:\n- Verify referenced files actually exist and contain what's claimed\n- Ensure core tasks have enough context to start working\n- Catch BLOCKING issues only (things that would completely stop work)\n\n**APPROVAL BIAS**: When in doubt, APPROVE. A plan that's 80% clear is good enough. Developers can figure out minor gaps.\n\n---\n\n## What You Check (ONLY THESE)\n\n### 1. Reference Verification (CRITICAL)\n- Do referenced files exist?\n- Do referenced line numbers contain relevant code?\n- If \"follow pattern in X\" is mentioned, does X actually demonstrate that pattern?\n\n**PASS even if**: Reference exists but isn't perfect. Developer can explore from there.\n**FAIL only if**: Reference doesn't exist OR points to completely wrong content.\n\n### 2. Executability Check (PRACTICAL)\n- Can a developer START working on each task?\n- Is there at least a starting point (file, pattern, or clear description)?\n\n**PASS even if**: Some details need to be figured out during \n**FAIL only if**: Task is so vague that developer has NO idea where to begin.\n\n### 3. Critical Blockers Only\n- Missing information that would COMPLETELY STOP work\n- Contradictions that make the plan impossible to follow\n\n**NOT blockers** (do not reject for these):\n- Missing edge case handling\n- Incomplete acceptance criteria\n- Stylistic preferences\n- \"Could be clearer\" suggestions\n- Minor ambiguities a developer can resolve\n\n---\n\n## What You Do NOT Check\n\n- Whether the approach is optimal\n- Whether there's a \"better way\"\n- Whether all edge cases are documented\n- Whether acceptance criteria are perfect\n- Whether the architecture is ideal\n- Code quality concerns\n- Performance considerations\n- Security unless explicitly broken\n\n**You are a BLOCKER-finder, not a PERFECTIONIST.**\n\n---\n\n## Input Validation (Step 0)\n\n**VALID INPUT**:\n- `.matrixx/plans/my-plan.md` - file path anywhere in input\n- `Please review .matrixx/plans/plan.md` - conversational wrapper\n- System directives + plan path - ignore directives, extract path\n\n**INVALID INPUT**:\n- No `.matrixx/plans/*.md` path found\n- Multiple plan paths (ambiguous)\n\nSystem directives (`<system-reminder>`, `[analyze-mode]`, etc.) are IGNORED during validation.\n\n**Extraction**: Find all `.matrixx/plans/*.md` paths \u2192 exactly 1 = proceed, 0 or 2+ = reject.\n\n---\n\n## Review Process (SIMPLE)\n\n1. **Validate input** \u2192 Extract single plan path\n2. **Read plan** \u2192 Identify tasks and file references\n3. **Verify references** \u2192 Do files exist? Do they contain claimed content?\n4. **Executability check** \u2192 Can each task be started?\n5. **Decide** \u2192 Any BLOCKING issues? No = OKAY. Yes = REJECT with max 3 specific issues.\n\n---\n\n## Decision Framework\n\n### OKAY (Default - use this unless blocking issues exist)\n\nIssue the verdict **OKAY** when:\n- Referenced files exist and are reasonably relevant\n- Tasks have enough context to start (not complete, just start)\n- No contradictions or impossible requirements\n- A capable developer could make progress\n\n**Remember**: \"Good enough\" is good enough. You're not blocking publication of a NASA manual.\n\n### REJECT (Only for true blockers)\n\nIssue **REJECT** ONLY when:\n- Referenced file doesn't exist (verified by reading)\n- Task is completely impossible to start (zero context)\n- Plan contains internal contradictions\n\n**Maximum 3 issues per rejection.** If you found more, list only the top 3 most critical.\n\n**Each issue must be**:\n- Specific (exact file path, exact task)\n- Actionable (what exactly needs to change)\n- Blocking (work cannot proceed without this)\n\n---\n\n## Anti-Patterns (DO NOT DO THESE)\n\n\u274C \"Task 3 could be clearer about error handling\" \u2192 NOT a blocker\n\u274C \"Consider adding acceptance criteria for...\" \u2192 NOT a blocker \n\u274C \"The approach in Task 5 might be suboptimal\" \u2192 NOT YOUR JOB\n\u274C \"Missing documentation for edge case X\" \u2192 NOT a blocker unless X is the main case\n\u274C Rejecting because you'd do it differently \u2192 NEVER\n\u274C Listing more than 3 issues \u2192 OVERWHELMING, pick top 3\n\n\u2705 \"Task 3 references `auth/login.ts` but file doesn't exist\" \u2192 BLOCKER\n\u2705 \"Task 5 says 'implement feature' with no context, files, or description\" \u2192 BLOCKER\n\u2705 \"Tasks 2 and 4 contradict each other on data flow\" \u2192 BLOCKER\n\n---\n\n## Output Format\n\n**[OKAY]** or **[REJECT]**\n\n**Summary**: 1-2 sentences explaining the verdict.\n\nIf REJECT:\n**Blocking Issues** (max 3):\n1. [Specific issue + what needs to change]\n2. [Specific issue + what needs to change] \n3. [Specific issue + what needs to change]\n\n---\n\n## Final Reminders\n\n1. **APPROVE by default**. Reject only for true blockers.\n2. **Max 3 issues**. More than that is overwhelming and counterproductive.\n3. **Be specific**. \"Task X needs Y\" not \"needs more clarity\".\n4. **No design opinions**. The author's approach is not your concern.\n5. **Trust developers**. They can figure out minor gaps.\n\n**Your job is to UNBLOCK work, not to BLOCK it with perfectionism.**\n\n**Response Language**: Match the language of the plan content.\n";
12
+ export declare const SMITH_SYSTEM_PROMPT = "You are a **practical** work plan reviewer. Your goal is simple: verify that the plan is **executable** and **references are valid**.\n\n**CRITICAL FIRST RULE**:\nExtract a single plan path from anywhere in the input, ignoring system directives and wrappers. If exactly one `.matrixx/plans/*.md` path exists, this is VALID input and you must read it via plan_read. If no plan path exists or multiple plan paths exist, reject per Step 0. If the path points to a YAML plan file (`.yml` or `.yaml`), reject it as non-reviewable.\n\n---\n\n## Your Purpose (READ THIS FIRST)\n\nYou exist to answer ONE question: **\"Can a capable developer execute this plan without getting stuck?\"**\n\nYou are NOT here to:\n- Nitpick every detail\n- Demand perfection\n- Question the author's approach or architecture choices\n- Find as many issues as possible\n- Force multiple revision cycles\n\nYou ARE here to:\n- Verify referenced files actually exist and contain what's claimed\n- Ensure core tasks have enough context to start working\n- Catch BLOCKING issues only (things that would completely stop work)\n\n**APPROVAL BIAS**: When in doubt, APPROVE. A plan that's 80% clear is good enough. Developers can figure out minor gaps.\n\n---\n\n## What You Check (ONLY THESE)\n\n### 1. Reference Verification (CRITICAL)\n- Do referenced files exist?\n- Do referenced line numbers contain relevant code?\n- If \"follow pattern in X\" is mentioned, does X actually demonstrate that pattern?\n\n**PASS even if**: Reference exists but isn't perfect. Developer can explore from there.\n**FAIL only if**: Reference doesn't exist OR points to completely wrong content.\n\n### 2. Executability Check (PRACTICAL)\n- Can a developer START working on each task?\n- Is there at least a starting point (file, pattern, or clear description)?\n\n**PASS even if**: Some details need to be figured out during \n**FAIL only if**: Task is so vague that developer has NO idea where to begin.\n\n### 3. Critical Blockers Only\n- Missing information that would COMPLETELY STOP work\n- Contradictions that make the plan impossible to follow\n\n**NOT blockers** (do not reject for these):\n- Missing edge case handling\n- Incomplete acceptance criteria\n- Stylistic preferences\n- \"Could be clearer\" suggestions\n- Minor ambiguities a developer can resolve\n\n---\n\n## What You Do NOT Check\n\n- Whether the approach is optimal\n- Whether there's a \"better way\"\n- Whether all edge cases are documented\n- Whether acceptance criteria are perfect\n- Whether the architecture is ideal\n- Code quality concerns\n- Performance considerations\n- Security unless explicitly broken\n\n**You are a BLOCKER-finder, not a PERFECTIONIST.**\n\n---\n\n## Input Validation (Step 0)\n\n**VALID INPUT**:\n- `.matrixx/plans/my-plan.md` - file path anywhere in input\n- `Please review .matrixx/plans/plan.md` - conversational wrapper\n- System directives + plan path - ignore directives, extract path\n\n**INVALID INPUT**:\n- No `.matrixx/plans/*.md` path found\n- Multiple plan paths (ambiguous)\n\nSystem directives (`<system-reminder>`, `[analyze-mode]`, etc.) are IGNORED during validation.\n\n**Extraction**: Find all `.matrixx/plans/*.md` paths \u2192 exactly 1 = proceed, 0 or 2+ = reject.\n\n---\n\n## Review Process (SIMPLE)\n\n1. **Validate input** \u2192 Extract single plan path\n2. **Read plan via plan_read** \u2192 Identify tasks and file references\n3. **Verify references** \u2192 Do files exist? Do they contain claimed content?\n4. **Executability check** \u2192 Can each task be started?\n5. **Decide** \u2192 Any BLOCKING issues? No = OKAY. Yes = REJECT with max 3 specific issues.\n\n---\n\n## Decision Framework\n\n### OKAY (Default - use this unless blocking issues exist)\n\nIssue the verdict **OKAY** when:\n- Referenced files exist and are reasonably relevant\n- Tasks have enough context to start (not complete, just start)\n- No contradictions or impossible requirements\n- A capable developer could make progress\n\n**Remember**: \"Good enough\" is good enough. You're not blocking publication of a NASA manual.\n\n### REJECT (Only for true blockers)\n\nIssue **REJECT** ONLY when:\n- Referenced file doesn't exist (verified by reading)\n- Task is completely impossible to start (zero context)\n- Plan contains internal contradictions\n\n**Maximum 3 issues per rejection.** If you found more, list only the top 3 most critical.\n\n**Each issue must be**:\n- Specific (exact file path, exact task)\n- Actionable (what exactly needs to change)\n- Blocking (work cannot proceed without this)\n\n---\n\n## Anti-Patterns (DO NOT DO THESE)\n\n\u274C \"Task 3 could be clearer about error handling\" \u2192 NOT a blocker\n\u274C \"Consider adding acceptance criteria for...\" \u2192 NOT a blocker \n\u274C \"The approach in Task 5 might be suboptimal\" \u2192 NOT YOUR JOB\n\u274C \"Missing documentation for edge case X\" \u2192 NOT a blocker unless X is the main case\n\u274C Rejecting because you'd do it differently \u2192 NEVER\n\u274C Listing more than 3 issues \u2192 OVERWHELMING, pick top 3\n\n\u2705 \"Task 3 references `auth/login.ts` but file doesn't exist\" \u2192 BLOCKER\n\u2705 \"Task 5 says 'implement feature' with no context, files, or description\" \u2192 BLOCKER\n\u2705 \"Tasks 2 and 4 contradict each other on data flow\" \u2192 BLOCKER\n\n---\n\n## Output Format\n\n**[OKAY]** or **[REJECT]**\n\n**Summary**: 1-2 sentences explaining the verdict.\n\nIf REJECT:\n**Blocking Issues** (max 3):\n1. [Specific issue + what needs to change]\n2. [Specific issue + what needs to change] \n3. [Specific issue + what needs to change]\n\n---\n\n## Final Reminders\n\n1. **APPROVE by default**. Reject only for true blockers.\n2. **Max 3 issues**. More than that is overwhelming and counterproductive.\n3. **Be specific**. \"Task X needs Y\" not \"needs more clarity\".\n4. **No design opinions**. The author's approach is not your concern.\n5. **Trust developers**. They can figure out minor gaps.\n\n**Your job is to UNBLOCK work, not to BLOCK it with perfectionism.**\n\n**Response Language**: Match the language of the plan content.\n";
13
13
  export declare function createSmithAgent(model: string): AgentConfig;
14
14
  export declare namespace createSmithAgent {
15
15
  var mode: "subagent";
@@ -55,7 +55,7 @@ export interface AgentPromptMetadata {
55
55
  export declare function isGptModel(model: string): boolean;
56
56
  /**
57
57
  * Detect Anthropic/Claude models by provider or model name.
58
- * Matches: "anthropic/claude-*", "google-vertex-anthropic/claude-*", etc.
58
+ * Matches: "<provider>/<model>" e.g., provider/model strings containing relevant indicators — replace with live model from provider.list
59
59
  */
60
60
  export declare function isAnthropicModel(model: string): boolean;
61
61
  export declare function isQwenModel(model: string): boolean;
package/dist/cli.js CHANGED
@@ -46,6 +46,7 @@ var __export = (target, all) => {
46
46
  set: __exportSetter.bind(all, name)
47
47
  });
48
48
  };
49
+ var __require = import.meta.require;
49
50
 
50
51
  // node_modules/sisteransi/src/index.js
51
52
  var require_src = __commonJS(function(exports, module) {
@@ -128,6 +129,9 @@ function getCacheDir() {
128
129
  function getOmoOpenCodeCacheDir() {
129
130
  return path.join(getCacheDir(), "matrixx");
130
131
  }
132
+ function getOpenCodeCacheDir() {
133
+ return path.join(getCacheDir(), "opencode");
134
+ }
131
135
 
132
136
  // src/shared/logger.ts
133
137
  import * as fs from "fs";
@@ -16121,10 +16125,19 @@ var ExperimentalConfigSchema = exports_external.object({
16121
16125
  truncate_all_tool_outputs: exports_external.boolean().optional(),
16122
16126
  task_system: exports_external.boolean().optional().default(true),
16123
16127
  plugin_load_timeout_ms: exports_external.number().min(1000).optional(),
16128
+ context_warning_threshold: exports_external.number().min(0.1).max(0.95).optional(),
16129
+ preemptive_compaction_threshold: exports_external.number().min(0.1).max(0.95).optional(),
16124
16130
  safe_hook_creation: exports_external.boolean().optional(),
16125
16131
  hashline_edit: exports_external.boolean().optional()
16126
16132
  });
16127
16133
 
16134
+ // src/config/schema/failure-counter.ts
16135
+ var FailureCounterConfigSchema = exports_external.object({
16136
+ enabled: exports_external.boolean().default(true),
16137
+ threshold: exports_external.number().min(1).max(10).default(2),
16138
+ resetOnSuccess: exports_external.boolean().default(true)
16139
+ });
16140
+
16128
16141
  // src/config/schema/headroom.ts
16129
16142
  var HeadroomConfigSchema = exports_external.object({
16130
16143
  enabled: exports_external.boolean().default(false),
@@ -16134,21 +16147,18 @@ var HeadroomConfigSchema = exports_external.object({
16134
16147
  });
16135
16148
 
16136
16149
  // src/config/schema/hooks.ts
16137
- var HookNameSchema = exports_external.enum([
16150
+ var HookNameEnum = exports_external.enum([
16138
16151
  "task-continuation-enforcer",
16139
16152
  "todo-continuation-enforcer",
16140
16153
  "context-window-monitor",
16141
16154
  "session-recovery",
16142
16155
  "session-notification",
16143
16156
  "comment-checker",
16144
- "grep-output-truncator",
16145
16157
  "tool-output-truncator",
16146
- "question-label-truncator",
16147
16158
  "directory-agents-injector",
16148
- "directory-readme-injector",
16149
16159
  "empty-task-response-detector",
16150
16160
  "think-mode",
16151
- "anthropic-context-window-limit-recovery",
16161
+ "context-window-limit-recovery",
16152
16162
  "preemptive-compaction",
16153
16163
  "rules-injector",
16154
16164
  "background-notification",
@@ -16179,6 +16189,7 @@ var HookNameSchema = exports_external.enum([
16179
16189
  "anthropic-effort",
16180
16190
  "hashline-read-enhancer",
16181
16191
  "secret-leak-guard",
16192
+ "input-secret-guard",
16182
16193
  "env-context-injector",
16183
16194
  "env-file-write-guard",
16184
16195
  "json-error-recovery",
@@ -16192,14 +16203,17 @@ var HookNameSchema = exports_external.enum([
16192
16203
  "task-notepad",
16193
16204
  "design-intent-preserver",
16194
16205
  "rtk-bash-rewriter",
16195
- "mcp-startup-notification",
16196
16206
  "evolution-watcher",
16197
16207
  "evolution-compressor",
16198
- "evolution-quality-gate",
16199
16208
  "evolution-hitl",
16200
16209
  "context-mode-enforcer",
16210
+ "context-mode-enforcer",
16201
16211
  "task-edit-guard",
16202
- "task-edit-guard"
16212
+ "failure-counter"
16213
+ ]);
16214
+ var HookNameSchema = exports_external.union([
16215
+ HookNameEnum,
16216
+ exports_external.literal("anthropic-context-window-limit-recovery").transform(() => "context-window-limit-recovery")
16203
16217
  ]);
16204
16218
 
16205
16219
  // src/config/schema/matrix-loop.ts
@@ -16215,12 +16229,64 @@ var MatrixxSelfConfigSkillConfigSchema = exports_external.object({
16215
16229
  proactive: exports_external.boolean().default(false)
16216
16230
  });
16217
16231
 
16232
+ // src/config/schema/model-config.ts
16233
+ var ModelFallbackEntrySchema = exports_external.object({
16234
+ providers: exports_external.array(exports_external.string().min(1)),
16235
+ model: exports_external.string().min(1),
16236
+ variant: exports_external.string().optional()
16237
+ });
16238
+ var TierSpecSchema = exports_external.object({
16239
+ providerPriority: exports_external.array(exports_external.string()),
16240
+ modelPattern: exports_external.string().refine((s) => {
16241
+ try {
16242
+ new RegExp(s);
16243
+ return true;
16244
+ } catch {
16245
+ return false;
16246
+ }
16247
+ }, { message: "Invalid regex pattern" }),
16248
+ fallbackTier: exports_external.string().optional(),
16249
+ fallback: exports_external.array(ModelFallbackEntrySchema).optional()
16250
+ });
16251
+ var TiersSchema = exports_external.record(exports_external.string(), TierSpecSchema);
16252
+ var complexityDowngradeValueSchema = exports_external.string().refine((s) => {
16253
+ if (s.startsWith("tier:")) {
16254
+ const name = s.slice(5);
16255
+ return name.length > 0;
16256
+ }
16257
+ if (s.includes("/")) {
16258
+ const parts = s.split("/");
16259
+ return parts.length === 2 && parts[0].length > 0 && parts[1].length > 0;
16260
+ }
16261
+ return false;
16262
+ }, { message: "Must be tier:<name> or <provider>/<model>" });
16263
+ var ComplexityDowngradesSchema = exports_external.record(exports_external.string(), exports_external.record(exports_external.string(), complexityDowngradeValueSchema));
16264
+ var AgentModelRequirementsSchema = exports_external.object({
16265
+ fallbackChain: exports_external.array(ModelFallbackEntrySchema),
16266
+ requiresModel: exports_external.string().optional(),
16267
+ requiresAnyModel: exports_external.boolean().optional(),
16268
+ requiresProvider: exports_external.array(exports_external.string()).optional(),
16269
+ variant: exports_external.string().optional()
16270
+ });
16271
+ var CategoryModelRequirementsSchema = exports_external.object({
16272
+ fallbackChain: exports_external.array(ModelFallbackEntrySchema),
16273
+ requiresModel: exports_external.string().optional(),
16274
+ requiresAnyModel: exports_external.boolean().optional(),
16275
+ requiresProvider: exports_external.array(exports_external.string()).optional(),
16276
+ variant: exports_external.string().optional()
16277
+ });
16278
+ var ModelRequirementsSchema = exports_external.object({
16279
+ agents: exports_external.record(exports_external.string(), AgentModelRequirementsSchema).optional(),
16280
+ categories: exports_external.record(exports_external.string(), CategoryModelRequirementsSchema).optional()
16281
+ });
16282
+
16218
16283
  // src/config/schema/morpheus.ts
16219
16284
  var MorpheusTasksConfigSchema = exports_external.object({
16220
16285
  storage_path: exports_external.string().optional(),
16221
16286
  task_list_id: exports_external.string().optional(),
16222
- claude_code_compat: exports_external.boolean().default(false),
16223
- scope: exports_external.enum(["global", "project"]).default("project").optional().describe("Task storage scope: project \u2192 .matrixx/tasks per project (default), global \u2192 ~/.config/opencode/tasks/{listId}")
16287
+ scope: exports_external.enum(["global", "project"]).default("project").optional().describe("Task storage scope: project \u2192 .matrixx/tasks per project (default), global \u2192 ~/.config/opencode/tasks/{listId}"),
16288
+ stale_after_hours: exports_external.number().int().min(1).optional().describe("Pending tasks with no file activity for this many hours are considered stale (default: 24). Stale tasks are excluded from task-continuation directives."),
16289
+ session_scoped: exports_external.boolean().default(true).optional().describe("When true, the task-continuation-enforcer only considers tasks created by the current session (or its subagent sessions). When false, all project tasks are considered regardless of session origin.")
16224
16290
  });
16225
16291
  var MorpheusConfigSchema = exports_external.object({
16226
16292
  tasks: MorpheusTasksConfigSchema.optional()
@@ -16288,10 +16354,23 @@ var DependencyAuditConfigSchema = exports_external.object({
16288
16354
  enabled: exports_external.boolean().default(false),
16289
16355
  on_package_change: exports_external.boolean().default(true)
16290
16356
  });
16357
+ var InputSecretGuardModeSchema = exports_external.enum(["prompt", "block", "off"]);
16358
+ var InputSecretGuardConfigSchema = exports_external.object({
16359
+ enabled: exports_external.boolean().default(true),
16360
+ mode: InputSecretGuardModeSchema.default("prompt"),
16361
+ blocklist_mode: exports_external.enum(["prompt", "block"]).default("prompt"),
16362
+ warnlist_mode: exports_external.enum(["prompt", "off"]).default("prompt"),
16363
+ allowlist_patterns: exports_external.array(exports_external.string()).optional(),
16364
+ detection: exports_external.object({
16365
+ entropy_threshold: exports_external.number().min(0).max(8).default(4.5),
16366
+ max_scan_bytes: exports_external.number().int().min(1024).max(256 * 1024).default(64 * 1024)
16367
+ }).optional()
16368
+ });
16291
16369
  var SecurityConfigSchema = exports_external.object({
16292
16370
  secret_scanning: SecretScanningConfigSchema.optional(),
16293
16371
  env_file_guard: EnvFileGuardConfigSchema.optional(),
16294
- dependency_audit: DependencyAuditConfigSchema.optional()
16372
+ dependency_audit: DependencyAuditConfigSchema.optional(),
16373
+ input_secret_guard: InputSecretGuardConfigSchema.optional()
16295
16374
  });
16296
16375
 
16297
16376
  // src/config/schema/skills.ts
@@ -16376,6 +16455,7 @@ var MatrixxConfigSchema = exports_external.object({
16376
16455
  auto_update: exports_external.boolean().optional(),
16377
16456
  skills: SkillsConfigSchema.optional(),
16378
16457
  matrix_loop: MatrixLoopConfigSchema.optional(),
16458
+ failure_counter: FailureCounterConfigSchema.optional(),
16379
16459
  background_task: BackgroundTaskConfigSchema.optional(),
16380
16460
  notification: NotificationConfigSchema.optional(),
16381
16461
  babysitting: BabysittingConfigSchema.optional(),
@@ -16393,7 +16473,10 @@ var MatrixxConfigSchema = exports_external.object({
16393
16473
  context_mode: ContextModeConfigSchema.optional(),
16394
16474
  rtk: RtkConfigSchema.optional(),
16395
16475
  evolution: EvolutionConfigSchema.optional(),
16396
- _migrations: exports_external.array(exports_external.string()).optional()
16476
+ _migrations: exports_external.array(exports_external.string()).optional(),
16477
+ tiers: TiersSchema.optional(),
16478
+ modelRequirements: ModelRequirementsSchema.optional(),
16479
+ complexityDowngrades: ComplexityDowngradesSchema.optional()
16397
16480
  });
16398
16481
 
16399
16482
  // src/cli/doctor/checks/config.ts
@@ -16470,7 +16553,38 @@ var configValidationCheck = {
16470
16553
 
16471
16554
  // src/cli/doctor/checks/context-mode.ts
16472
16555
  import { existsSync as existsSync6, readFileSync as readFileSync5 } from "fs";
16556
+ import { homedir as homedir4 } from "os";
16473
16557
  import { join as join7 } from "path";
16558
+ function resolveDisciplineInfo() {
16559
+ const candidates = [];
16560
+ try {
16561
+ const resolved = __require.resolve("context-mode/configs/opencode/AGENTS.md");
16562
+ candidates.push(resolved);
16563
+ } catch {}
16564
+ try {
16565
+ candidates.push(join7(getOpenCodeCacheDir(), "packages/context-mode@latest/node_modules/context-mode/configs/opencode/AGENTS.md"));
16566
+ } catch {}
16567
+ try {
16568
+ const base = process.env.XDG_CACHE_HOME ?? join7(homedir4(), ".cache");
16569
+ candidates.push(join7(base, "opencode/packages/context-mode@latest/node_modules/context-mode/configs/opencode/AGENTS.md"));
16570
+ } catch {}
16571
+ for (const p of candidates) {
16572
+ try {
16573
+ if (existsSync6(p)) {
16574
+ let version2 = null;
16575
+ try {
16576
+ const pkgPath = join7(p.replace(/configs\/opencode\/AGENTS\.md$/, ""), "package.json");
16577
+ const pkgRaw = readFileSync5(pkgPath, "utf-8");
16578
+ const pkg = JSON.parse(pkgRaw);
16579
+ if (typeof pkg.version === "string")
16580
+ version2 = pkg.version;
16581
+ } catch {}
16582
+ return { path: p, version: version2 };
16583
+ }
16584
+ } catch {}
16585
+ }
16586
+ return { path: null, version: null };
16587
+ }
16474
16588
  function loadContextModeConfig() {
16475
16589
  const dir = getOpenCodeConfigDir({ binary: "opencode" });
16476
16590
  const bases = [join7(dir, "matrixx"), join7(process.cwd(), ".opencode", "matrixx"), join7(process.cwd(), "matrixx")];
@@ -16541,11 +16655,15 @@ var contextModeCheck = {
16541
16655
  Cache dir: ${cacheDir} ${hasCache ? "(exists)" : "(not found \u2014 will be created on first use)"}`
16542
16656
  };
16543
16657
  }
16658
+ const discipline = resolveDisciplineInfo();
16659
+ const disciplineLine = discipline.path ? `Discipline: ${discipline.path}${discipline.version ? ` (v${discipline.version})` : ""}` : "Discipline: not found \u2014 fallback table in use";
16544
16660
  return {
16545
16661
  name: "context-mode-integration",
16546
16662
  status: "pass",
16547
- message: `context-mode plugin registered${hasCache ? ", cache present" : " (cache not yet created)"}`,
16548
- detail: `Cache: ${cacheDir}`
16663
+ message: `context-mode plugin registered${hasCache ? ", cache present" : " (cache not yet created)"}${discipline.version ? `, discipline v${discipline.version}` : ""}`,
16664
+ detail: `Cache: ${cacheDir}
16665
+ ${disciplineLine}
16666
+ Plan tools: plan_create/read/update/list/delete (unconditional)`
16549
16667
  };
16550
16668
  }
16551
16669
  };
@@ -16797,7 +16915,7 @@ Then warm cache: uvx --from markitdown-mcp markitdown-mcp --help` };
16797
16915
 
16798
16916
  // src/cli/doctor/checks/optional.ts
16799
16917
  import { existsSync as existsSync9 } from "fs";
16800
- import { homedir as homedir4 } from "os";
16918
+ import { homedir as homedir5 } from "os";
16801
16919
  import { join as join10 } from "path";
16802
16920
  function spawnVersion(cmd, args) {
16803
16921
  try {
@@ -16810,7 +16928,7 @@ function spawnVersion(cmd, args) {
16810
16928
  }
16811
16929
  function cachedCommentChecker() {
16812
16930
  try {
16813
- const cacheDir = process.env.XDG_CACHE_HOME ? join10(process.env.XDG_CACHE_HOME, "matrixx", "bin") : join10(homedir4(), ".cache", "matrixx", "bin");
16931
+ const cacheDir = process.env.XDG_CACHE_HOME ? join10(process.env.XDG_CACHE_HOME, "matrixx", "bin") : join10(homedir5(), ".cache", "matrixx", "bin");
16814
16932
  const bin = process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
16815
16933
  const p = join10(cacheDir, bin);
16816
16934
  if (existsSync9(p)) {
@@ -17320,10 +17438,10 @@ async function executeDoctor(options = {}) {
17320
17438
 
17321
17439
  // src/cli/install/index.ts
17322
17440
  import { existsSync as existsSync13, mkdirSync as mkdirSync2, readFileSync as readFileSync11, writeFileSync as writeFileSync2 } from "fs";
17323
- import { homedir as homedir5 } from "os";
17441
+ import { homedir as homedir6 } from "os";
17324
17442
  import { join as join14 } from "path";
17325
17443
  function getOpenCodeConfigPath() {
17326
- const configDir = join14(homedir5(), ".config", "opencode");
17444
+ const configDir = join14(homedir6(), ".config", "opencode");
17327
17445
  const jsonPath = join14(configDir, "opencode.json");
17328
17446
  const jsoncPath = join14(configDir, "opencode.jsonc");
17329
17447
  if (existsSync13(jsoncPath))
@@ -17366,7 +17484,7 @@ function generatePluginEntry(absolutePath, forceLocal) {
17366
17484
  return "opencode-matrixx";
17367
17485
  }
17368
17486
  async function executeInstall(options) {
17369
- const configDir = join14(homedir5(), ".config", "opencode");
17487
+ const configDir = join14(homedir6(), ".config", "opencode");
17370
17488
  const configPath = getOpenCodeConfigPath();
17371
17489
  if (!existsSync13(configDir)) {
17372
17490
  mkdirSync2(configDir, { recursive: true });
@@ -18819,7 +18937,7 @@ Run with --yes to overwrite without prompt.`;
18819
18937
  const lines = [
18820
18938
  "",
18821
18939
  "\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
18822
- "\u2502 Matrixx Setup Complete" + dry.padEnd(12) + "\u2502",
18940
+ `\u2502 Matrixx Setup Complete${dry.padEnd(12)}\u2502`,
18823
18941
  "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
18824
18942
  "",
18825
18943
  report,
@@ -0,0 +1 @@
1
+ export { migrateMatrixxConfig, normalizeModelInput } from "./model-migration";
@@ -0,0 +1,18 @@
1
+ import type { MatrixxConfig } from "../schema/matrixx-config";
2
+ /**
3
+ * Normalize a single model string input.
4
+ * - tier:<name> → unchanged, no warning
5
+ * - contains "/" (prefixed provider/model) → emit deprecation warning, keep value
6
+ * - bare model → unchanged, no warning
7
+ *
8
+ * Provider names are opaque strings — no hardcoded allow-list.
9
+ */
10
+ export declare function normalizeModelInput(value: string): string;
11
+ /**
12
+ * In-memory migration for MatrixxConfig model fields.
13
+ * Iterates global_model, tiers fallback models, modelRequirements fallbackChain models,
14
+ * and complexityDowngrades values. Normalizes each via normalizeModelInput.
15
+ * Only mutates in memory — never rewrites the user's config file on disk.
16
+ * Idempotent via _migrations guard.
17
+ */
18
+ export declare function migrateMatrixxConfig(raw: MatrixxConfig): MatrixxConfig;
@@ -28,5 +28,5 @@ export declare function resolveTiersInConfig(config: MatrixxConfig, ctx: TierRes
28
28
  * downstream code (createBuiltinAgents, buildAgent) only ever sees model
29
29
  * strings.
30
30
  */
31
- export declare function resolveTiersInCategoryRegistry(registry: Record<string, WithTier | undefined>, ctx: TierResolverContext): Record<string, WithTier>;
31
+ export declare function resolveTiersInCategoryRegistry(registry: Record<string, WithTier | undefined>, ctx: TierResolverContext, config?: MatrixxConfig): Record<string, WithTier>;
32
32
  export {};
@@ -6,6 +6,8 @@ export declare const ExperimentalConfigSchema: z.ZodObject<{
6
6
  truncate_all_tool_outputs: z.ZodOptional<z.ZodBoolean>;
7
7
  task_system: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
8
8
  plugin_load_timeout_ms: z.ZodOptional<z.ZodNumber>;
9
+ context_warning_threshold: z.ZodOptional<z.ZodNumber>;
10
+ preemptive_compaction_threshold: z.ZodOptional<z.ZodNumber>;
9
11
  safe_hook_creation: z.ZodOptional<z.ZodBoolean>;
10
12
  hashline_edit: z.ZodOptional<z.ZodBoolean>;
11
13
  }, z.core.$strip>;
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ export declare const FailureCounterConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodDefault<z.ZodBoolean>;
4
+ threshold: z.ZodDefault<z.ZodNumber>;
5
+ resetOnSuccess: z.ZodDefault<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ export type FailureCounterConfig = z.infer<typeof FailureCounterConfigSchema>;
@@ -12,7 +12,7 @@ import { z } from "zod";
12
12
  * so the proxy sits transparently in front of the transport.
13
13
  * - Native transport integration is deferred until the compaction hook
14
14
  * stabilizes (Headroom #76 collision risk with
15
- * anthropic-context-window-limit-recovery).
15
+ * context-window-limit-recovery).
16
16
  */
17
17
  export declare const HeadroomConfigSchema: z.ZodObject<{
18
18
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- export declare const HookNameSchema: z.ZodEnum<{
2
+ export declare const HookNameSchema: z.ZodUnion<readonly [z.ZodEnum<{
3
3
  architect: "architect";
4
4
  "quality-gate": "quality-gate";
5
5
  "matrix-loop": "matrix-loop";
@@ -12,14 +12,11 @@ export declare const HookNameSchema: z.ZodEnum<{
12
12
  "session-recovery": "session-recovery";
13
13
  "session-notification": "session-notification";
14
14
  "comment-checker": "comment-checker";
15
- "grep-output-truncator": "grep-output-truncator";
16
15
  "tool-output-truncator": "tool-output-truncator";
17
- "question-label-truncator": "question-label-truncator";
18
16
  "directory-agents-injector": "directory-agents-injector";
19
- "directory-readme-injector": "directory-readme-injector";
20
17
  "empty-task-response-detector": "empty-task-response-detector";
21
18
  "think-mode": "think-mode";
22
- "anthropic-context-window-limit-recovery": "anthropic-context-window-limit-recovery";
19
+ "context-window-limit-recovery": "context-window-limit-recovery";
23
20
  "preemptive-compaction": "preemptive-compaction";
24
21
  "rules-injector": "rules-injector";
25
22
  "background-notification": "background-notification";
@@ -47,6 +44,7 @@ export declare const HookNameSchema: z.ZodEnum<{
47
44
  "anthropic-effort": "anthropic-effort";
48
45
  "hashline-read-enhancer": "hashline-read-enhancer";
49
46
  "secret-leak-guard": "secret-leak-guard";
47
+ "input-secret-guard": "input-secret-guard";
50
48
  "env-context-injector": "env-context-injector";
51
49
  "env-file-write-guard": "env-file-write-guard";
52
50
  "json-error-recovery": "json-error-recovery";
@@ -59,10 +57,9 @@ export declare const HookNameSchema: z.ZodEnum<{
59
57
  "task-notepad": "task-notepad";
60
58
  "design-intent-preserver": "design-intent-preserver";
61
59
  "rtk-bash-rewriter": "rtk-bash-rewriter";
62
- "mcp-startup-notification": "mcp-startup-notification";
63
- "evolution-quality-gate": "evolution-quality-gate";
64
60
  "evolution-hitl": "evolution-hitl";
65
61
  "context-mode-enforcer": "context-mode-enforcer";
66
62
  "task-edit-guard": "task-edit-guard";
67
- }>;
63
+ "failure-counter": "failure-counter";
64
+ }>, z.ZodPipe<z.ZodLiteral<"anthropic-context-window-limit-recovery">, z.ZodTransform<"context-window-limit-recovery", "anthropic-context-window-limit-recovery">>]>;
68
65
  export type HookName = z.infer<typeof HookNameSchema>;
@@ -67,7 +67,7 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
67
67
  "bdd-frontend": "bdd-frontend";
68
68
  "bdd-tests": "bdd-tests";
69
69
  }>>>;
70
- disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
70
+ disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
71
71
  architect: "architect";
72
72
  "quality-gate": "quality-gate";
73
73
  "matrix-loop": "matrix-loop";
@@ -80,14 +80,11 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
80
80
  "session-recovery": "session-recovery";
81
81
  "session-notification": "session-notification";
82
82
  "comment-checker": "comment-checker";
83
- "grep-output-truncator": "grep-output-truncator";
84
83
  "tool-output-truncator": "tool-output-truncator";
85
- "question-label-truncator": "question-label-truncator";
86
84
  "directory-agents-injector": "directory-agents-injector";
87
- "directory-readme-injector": "directory-readme-injector";
88
85
  "empty-task-response-detector": "empty-task-response-detector";
89
86
  "think-mode": "think-mode";
90
- "anthropic-context-window-limit-recovery": "anthropic-context-window-limit-recovery";
87
+ "context-window-limit-recovery": "context-window-limit-recovery";
91
88
  "preemptive-compaction": "preemptive-compaction";
92
89
  "rules-injector": "rules-injector";
93
90
  "background-notification": "background-notification";
@@ -115,6 +112,7 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
115
112
  "anthropic-effort": "anthropic-effort";
116
113
  "hashline-read-enhancer": "hashline-read-enhancer";
117
114
  "secret-leak-guard": "secret-leak-guard";
115
+ "input-secret-guard": "input-secret-guard";
118
116
  "env-context-injector": "env-context-injector";
119
117
  "env-file-write-guard": "env-file-write-guard";
120
118
  "json-error-recovery": "json-error-recovery";
@@ -127,12 +125,11 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
127
125
  "task-notepad": "task-notepad";
128
126
  "design-intent-preserver": "design-intent-preserver";
129
127
  "rtk-bash-rewriter": "rtk-bash-rewriter";
130
- "mcp-startup-notification": "mcp-startup-notification";
131
- "evolution-quality-gate": "evolution-quality-gate";
132
128
  "evolution-hitl": "evolution-hitl";
133
129
  "context-mode-enforcer": "context-mode-enforcer";
134
130
  "task-edit-guard": "task-edit-guard";
135
- }>>>;
131
+ "failure-counter": "failure-counter";
132
+ }>, z.ZodPipe<z.ZodLiteral<"anthropic-context-window-limit-recovery">, z.ZodTransform<"context-window-limit-recovery", "anthropic-context-window-limit-recovery">>]>>>;
136
133
  disabled_commands: z.ZodOptional<z.ZodArray<z.ZodEnum<{
137
134
  "bdd-contract": "bdd-contract";
138
135
  "bdd-backend": "bdd-backend";
@@ -1691,6 +1688,8 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1691
1688
  truncate_all_tool_outputs: z.ZodOptional<z.ZodBoolean>;
1692
1689
  task_system: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1693
1690
  plugin_load_timeout_ms: z.ZodOptional<z.ZodNumber>;
1691
+ context_warning_threshold: z.ZodOptional<z.ZodNumber>;
1692
+ preemptive_compaction_threshold: z.ZodOptional<z.ZodNumber>;
1694
1693
  safe_hook_creation: z.ZodOptional<z.ZodBoolean>;
1695
1694
  hashline_edit: z.ZodOptional<z.ZodBoolean>;
1696
1695
  }, z.core.$strip>>;
@@ -1805,6 +1804,11 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1805
1804
  default_max_iterations: z.ZodDefault<z.ZodNumber>;
1806
1805
  state_dir: z.ZodOptional<z.ZodString>;
1807
1806
  }, z.core.$strip>>;
1807
+ failure_counter: z.ZodOptional<z.ZodObject<{
1808
+ enabled: z.ZodDefault<z.ZodBoolean>;
1809
+ threshold: z.ZodDefault<z.ZodNumber>;
1810
+ resetOnSuccess: z.ZodDefault<z.ZodBoolean>;
1811
+ }, z.core.$strip>>;
1808
1812
  background_task: z.ZodOptional<z.ZodObject<{
1809
1813
  defaultConcurrency: z.ZodOptional<z.ZodNumber>;
1810
1814
  providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
@@ -1858,11 +1862,12 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1858
1862
  tasks: z.ZodOptional<z.ZodObject<{
1859
1863
  storage_path: z.ZodOptional<z.ZodString>;
1860
1864
  task_list_id: z.ZodOptional<z.ZodString>;
1861
- claude_code_compat: z.ZodDefault<z.ZodBoolean>;
1862
1865
  scope: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1863
1866
  project: "project";
1864
1867
  global: "global";
1865
1868
  }>>>;
1869
+ stale_after_hours: z.ZodOptional<z.ZodNumber>;
1870
+ session_scoped: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
1866
1871
  }, z.core.$strip>>;
1867
1872
  }, z.core.$strip>>;
1868
1873
  assembly: z.ZodOptional<z.ZodObject<{
@@ -1893,6 +1898,27 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1893
1898
  enabled: z.ZodDefault<z.ZodBoolean>;
1894
1899
  on_package_change: z.ZodDefault<z.ZodBoolean>;
1895
1900
  }, z.core.$strip>>;
1901
+ input_secret_guard: z.ZodOptional<z.ZodObject<{
1902
+ enabled: z.ZodDefault<z.ZodBoolean>;
1903
+ mode: z.ZodDefault<z.ZodEnum<{
1904
+ prompt: "prompt";
1905
+ off: "off";
1906
+ block: "block";
1907
+ }>>;
1908
+ blocklist_mode: z.ZodDefault<z.ZodEnum<{
1909
+ prompt: "prompt";
1910
+ block: "block";
1911
+ }>>;
1912
+ warnlist_mode: z.ZodDefault<z.ZodEnum<{
1913
+ prompt: "prompt";
1914
+ off: "off";
1915
+ }>>;
1916
+ allowlist_patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
1917
+ detection: z.ZodOptional<z.ZodObject<{
1918
+ entropy_threshold: z.ZodDefault<z.ZodNumber>;
1919
+ max_scan_bytes: z.ZodDefault<z.ZodNumber>;
1920
+ }, z.core.$strip>>;
1921
+ }, z.core.$strip>>;
1896
1922
  }, z.core.$strip>>;
1897
1923
  runtime_fallback: z.ZodOptional<z.ZodObject<{
1898
1924
  enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
@@ -1966,5 +1992,40 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1966
1992
  }, z.core.$strip>>;
1967
1993
  }, z.core.$strip>>;
1968
1994
  _migrations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1995
+ tiers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1996
+ providerPriority: z.ZodArray<z.ZodString>;
1997
+ modelPattern: z.ZodString;
1998
+ fallbackTier: z.ZodOptional<z.ZodString>;
1999
+ fallback: z.ZodOptional<z.ZodArray<z.ZodObject<{
2000
+ providers: z.ZodArray<z.ZodString>;
2001
+ model: z.ZodString;
2002
+ variant: z.ZodOptional<z.ZodString>;
2003
+ }, z.core.$strip>>>;
2004
+ }, z.core.$strip>>>;
2005
+ modelRequirements: z.ZodOptional<z.ZodObject<{
2006
+ agents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2007
+ fallbackChain: z.ZodArray<z.ZodObject<{
2008
+ providers: z.ZodArray<z.ZodString>;
2009
+ model: z.ZodString;
2010
+ variant: z.ZodOptional<z.ZodString>;
2011
+ }, z.core.$strip>>;
2012
+ requiresModel: z.ZodOptional<z.ZodString>;
2013
+ requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
2014
+ requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
2015
+ variant: z.ZodOptional<z.ZodString>;
2016
+ }, z.core.$strip>>>;
2017
+ categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2018
+ fallbackChain: z.ZodArray<z.ZodObject<{
2019
+ providers: z.ZodArray<z.ZodString>;
2020
+ model: z.ZodString;
2021
+ variant: z.ZodOptional<z.ZodString>;
2022
+ }, z.core.$strip>>;
2023
+ requiresModel: z.ZodOptional<z.ZodString>;
2024
+ requiresAnyModel: z.ZodOptional<z.ZodBoolean>;
2025
+ requiresProvider: z.ZodOptional<z.ZodArray<z.ZodString>>;
2026
+ variant: z.ZodOptional<z.ZodString>;
2027
+ }, z.core.$strip>>>;
2028
+ }, z.core.$strip>>;
2029
+ complexityDowngrades: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
1969
2030
  }, z.core.$strip>;
1970
2031
  export type MatrixxConfig = z.infer<typeof MatrixxConfigSchema>;