opencode-matrixx 1.0.2 → 1.1.0

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 (117) hide show
  1. package/README.md +49 -7
  2. package/dist/agents/architect/default.d.ts +1 -1
  3. package/dist/agents/architect/gpt.d.ts +1 -1
  4. package/dist/agents/index.d.ts +1 -0
  5. package/dist/agents/mouse/agent.d.ts +1 -1
  6. package/dist/agents/oracle/behavioral-summary.d.ts +1 -1
  7. package/dist/agents/oracle/high-accuracy-mode.d.ts +1 -1
  8. package/dist/agents/oracle/identity-constraints.d.ts +1 -1
  9. package/dist/agents/oracle/interview-mode.d.ts +1 -1
  10. package/dist/agents/oracle/plan-generation.d.ts +1 -1
  11. package/dist/agents/oracle/plan-template.d.ts +1 -1
  12. package/dist/agents/oracle/system-prompt.d.ts +1 -1
  13. package/dist/agents/smith.d.ts +1 -1
  14. package/dist/agents/types.d.ts +1 -1
  15. package/dist/agents/zion.d.ts +7 -0
  16. package/dist/cli/index.js +724 -171
  17. package/dist/config/index.d.ts +2 -2
  18. package/dist/config/schema/agent-definitions.d.ts +4 -0
  19. package/dist/config/schema/agent-names.d.ts +7 -0
  20. package/dist/config/schema/categories.d.ts +2 -0
  21. package/dist/config/schema/hooks.d.ts +6 -0
  22. package/dist/config/schema/matrixx-config.d.ts +30 -0
  23. package/dist/config/schema/model-capabilities.d.ts +8 -0
  24. package/dist/config/schema/runtime-fallback.d.ts +10 -0
  25. package/dist/config/schema/tdd-enforcer.d.ts +5 -0
  26. package/dist/config/schema.d.ts +4 -0
  27. package/dist/create-hooks.d.ts +6 -0
  28. package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
  29. package/dist/features/builtin-commands/templates/pickup.d.ts +1 -1
  30. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  31. package/dist/features/builtin-skills/skills/crypto-market-analysis.d.ts +4 -0
  32. package/dist/features/builtin-skills/skills/crypto-onchain.d.ts +4 -0
  33. package/dist/features/builtin-skills/skills/crypto-trading.d.ts +4 -0
  34. package/dist/features/builtin-skills/skills/index.d.ts +5 -0
  35. package/dist/features/builtin-skills/skills/review-work.d.ts +4 -0
  36. package/dist/features/builtin-skills/skills/tdd-enforcer.d.ts +4 -0
  37. package/dist/features/mission-state/constants.d.ts +4 -4
  38. package/dist/features/mission-state/storage.d.ts +1 -1
  39. package/dist/features/run-continuation-state/constants.d.ts +1 -0
  40. package/dist/features/run-continuation-state/index.d.ts +3 -0
  41. package/dist/features/run-continuation-state/storage.d.ts +6 -0
  42. package/dist/features/run-continuation-state/types.d.ts +12 -0
  43. package/dist/features/team-mode/index.d.ts +2 -0
  44. package/dist/features/team-mode/team-layout-tmux/index.d.ts +1 -0
  45. package/dist/features/team-mode/team-layout-tmux/layout.d.ts +15 -0
  46. package/dist/features/team-mode/team-worktree/cleanup.d.ts +3 -0
  47. package/dist/features/team-mode/team-worktree/index.d.ts +2 -0
  48. package/dist/features/team-mode/team-worktree/manager.d.ts +15 -0
  49. package/dist/features/team-mode/types.d.ts +210 -0
  50. package/dist/hooks/handoff-injector/constants.d.ts +2 -2
  51. package/dist/hooks/hashline-edit-diff-enhancer/hook.d.ts +28 -0
  52. package/dist/hooks/hashline-edit-diff-enhancer/index.d.ts +1 -0
  53. package/dist/hooks/index.d.ts +6 -0
  54. package/dist/hooks/keyword-detector/ultrawork/planner.d.ts +1 -1
  55. package/dist/hooks/matrix-loop/constants.d.ts +1 -1
  56. package/dist/hooks/mouse-notepad/constants.d.ts +1 -1
  57. package/dist/hooks/preemptive-compaction-degradation-monitor.d.ts +55 -0
  58. package/dist/hooks/preemptive-compaction-no-text-tail.d.ts +18 -0
  59. package/dist/hooks/preemptive-compaction-trigger.d.ts +13 -0
  60. package/dist/hooks/preemptive-compaction-types.d.ts +53 -0
  61. package/dist/hooks/preemptive-compaction.d.ts +5 -13
  62. package/dist/hooks/prometheus-md-only/constants.d.ts +1 -1
  63. package/dist/hooks/prometheus-md-only/path-policy.d.ts +3 -3
  64. package/dist/hooks/read-image-resizer/hook.d.ts +12 -0
  65. package/dist/hooks/read-image-resizer/image-dimensions.d.ts +2 -0
  66. package/dist/hooks/read-image-resizer/image-resizer.d.ts +5 -0
  67. package/dist/hooks/read-image-resizer/index.d.ts +1 -0
  68. package/dist/hooks/read-image-resizer/png-fallback-resizer.d.ts +2 -0
  69. package/dist/hooks/read-image-resizer/types.d.ts +14 -0
  70. package/dist/hooks/runtime-fallback/agent-resolver.d.ts +6 -0
  71. package/dist/hooks/runtime-fallback/auto-retry-signal.d.ts +4 -0
  72. package/dist/hooks/runtime-fallback/auto-retry.d.ts +10 -0
  73. package/dist/hooks/runtime-fallback/chat-message-handler.d.ts +20 -0
  74. package/dist/hooks/runtime-fallback/constants.d.ts +4 -0
  75. package/dist/hooks/runtime-fallback/error-classifier.d.ts +13 -0
  76. package/dist/hooks/runtime-fallback/event-handler.d.ts +8 -0
  77. package/dist/hooks/runtime-fallback/fallback-bootstrap-model.d.ts +10 -0
  78. package/dist/hooks/runtime-fallback/fallback-models.d.ts +2 -0
  79. package/dist/hooks/runtime-fallback/fallback-retry-dispatcher.d.ts +11 -0
  80. package/dist/hooks/runtime-fallback/fallback-state.d.ts +6 -0
  81. package/dist/hooks/runtime-fallback/hook.d.ts +2 -0
  82. package/dist/hooks/runtime-fallback/index.d.ts +3 -0
  83. package/dist/hooks/runtime-fallback/is-abort-error.d.ts +1 -0
  84. package/dist/hooks/runtime-fallback/last-user-retry-parts.d.ts +4 -0
  85. package/dist/hooks/runtime-fallback/message-update-handler.d.ts +4 -0
  86. package/dist/hooks/runtime-fallback/model-utils.d.ts +7 -0
  87. package/dist/hooks/runtime-fallback/retry-model-payload.d.ts +11 -0
  88. package/dist/hooks/runtime-fallback/retry-status-utils.d.ts +2 -0
  89. package/dist/hooks/runtime-fallback/session-category-registry.d.ts +6 -0
  90. package/dist/hooks/runtime-fallback/session-messages.d.ts +9 -0
  91. package/dist/hooks/runtime-fallback/session-status-handler.d.ts +3 -0
  92. package/dist/hooks/runtime-fallback/types.d.ts +113 -0
  93. package/dist/hooks/runtime-fallback/visible-assistant-response.d.ts +3 -0
  94. package/dist/hooks/shared/compaction-model-resolver.d.ts +5 -0
  95. package/dist/hooks/todo-description-override/description.d.ts +1 -0
  96. package/dist/hooks/todo-description-override/hook.d.ts +8 -0
  97. package/dist/hooks/todo-description-override/index.d.ts +1 -0
  98. package/dist/hooks/tool-pair-validator/hook.d.ts +28 -0
  99. package/dist/hooks/tool-pair-validator/index.d.ts +1 -0
  100. package/dist/hooks/webfetch-redirect-guard/constants.d.ts +6 -0
  101. package/dist/hooks/webfetch-redirect-guard/hook.d.ts +19 -0
  102. package/dist/hooks/webfetch-redirect-guard/index.d.ts +1 -0
  103. package/dist/hooks/webfetch-redirect-guard/redirect-resolution.d.ts +16 -0
  104. package/dist/index.js +5562 -792
  105. package/dist/plugin/hooks/create-core-hooks.d.ts +6 -0
  106. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -1
  107. package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +5 -1
  108. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -1
  109. package/dist/plugin/tool-definition.d.ts +9 -0
  110. package/dist/shared/context-limit-resolver.d.ts +5 -0
  111. package/dist/shared/session-model-state.d.ts +7 -0
  112. package/dist/shared/tmux/tmux-utils/spawn-process.d.ts +1 -0
  113. package/dist/tools/ast-grep/pattern-hints.d.ts +4 -0
  114. package/dist/tools/ast-grep/tool-descriptions.d.ts +3 -0
  115. package/dist/tools/delegate-task/constants.d.ts +2 -3
  116. package/dist/tools/delegate-task/prompt-builder.d.ts +1 -0
  117. package/package.json +28 -15
@@ -1,4 +1,4 @@
1
1
  export { expandProfile, PROFILE_NAMES } from "./profiles";
2
2
  export type { ProfileName } from "./profiles";
3
- export { MatrixxConfigSchema, AgentOverrideConfigSchema, AgentOverridesSchema, McpNameSchema, AgentNameSchema, HookNameSchema, BuiltinCommandNameSchema, MorpheusAgentConfigSchema, ExperimentalConfigSchema, MatrixLoopConfigSchema, SecurityConfigSchema, TmuxConfigSchema, TmuxLayoutSchema, } from "./schema";
4
- export type { MatrixxConfig, AgentOverrideConfig, AgentOverrides, McpName, AgentName, HookName, BuiltinCommandName, MorpheusAgentConfig, ExperimentalConfig, DynamicContextPruningConfig, MatrixLoopConfig, SecurityConfig, SecretScanningConfig, EnvFileGuardConfig, DependencyAuditConfig, TmuxConfig, TmuxLayout, MorpheusConfig, MorpheusTasksConfig, } from "./schema";
3
+ export { MatrixxConfigSchema, AgentOverrideConfigSchema, AgentOverridesSchema, McpNameSchema, AgentNameSchema, HookNameSchema, BuiltinCommandNameSchema, MorpheusAgentConfigSchema, ExperimentalConfigSchema, MatrixLoopConfigSchema, SecurityConfigSchema, TmuxConfigSchema, TmuxLayoutSchema, RuntimeFallbackConfigSchema, } from "./schema";
4
+ export type { MatrixxConfig, AgentOverrideConfig, AgentOverrides, McpName, AgentName, HookName, BuiltinCommandName, MorpheusAgentConfig, ExperimentalConfig, DynamicContextPruningConfig, MatrixLoopConfig, SecurityConfig, SecretScanningConfig, EnvFileGuardConfig, DependencyAuditConfig, TmuxConfig, TmuxLayout, MorpheusConfig, MorpheusTasksConfig, RuntimeFallbackConfig, AgentDefinitions, ModelCapabilitiesConfig, } from "./schema";
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export declare const AgentDefinitionPathSchema: z.ZodString;
3
+ export declare const AgentDefinitionsConfigSchema: z.ZodOptional<z.ZodArray<z.ZodString>>;
4
+ export type AgentDefinitions = z.infer<typeof AgentDefinitionsConfigSchema>;
@@ -12,6 +12,7 @@ export declare const BuiltinAgentNameSchema: z.ZodEnum<{
12
12
  cipher: "cipher";
13
13
  niobe: "niobe";
14
14
  sentinel: "sentinel";
15
+ zion: "zion";
15
16
  oracle: "oracle";
16
17
  }>;
17
18
  export declare const BuiltinSkillNameSchema: z.ZodEnum<{
@@ -52,6 +53,10 @@ export declare const BuiltinSkillNameSchema: z.ZodEnum<{
52
53
  "security-crypto": "security-crypto";
53
54
  "security-infra": "security-infra";
54
55
  "security-review": "security-review";
56
+ "crypto-market-analysis": "crypto-market-analysis";
57
+ "crypto-trading": "crypto-trading";
58
+ "crypto-onchain": "crypto-onchain";
59
+ "tdd-enforcer": "tdd-enforcer";
55
60
  }>;
56
61
  export declare const OverridableAgentNameSchema: z.ZodEnum<{
57
62
  morpheus: "morpheus";
@@ -66,6 +71,7 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
66
71
  cipher: "cipher";
67
72
  niobe: "niobe";
68
73
  sentinel: "sentinel";
74
+ zion: "zion";
69
75
  build: "build";
70
76
  oracle: "oracle";
71
77
  plan: "plan";
@@ -85,6 +91,7 @@ export declare const AgentNameSchema: z.ZodEnum<{
85
91
  cipher: "cipher";
86
92
  niobe: "niobe";
87
93
  sentinel: "sentinel";
94
+ zion: "zion";
88
95
  oracle: "oracle";
89
96
  }>;
90
97
  export type AgentName = z.infer<typeof AgentNameSchema>;
@@ -28,6 +28,7 @@ export declare const CategoryConfigSchema: z.ZodObject<{
28
28
  prompt_append: z.ZodOptional<z.ZodString>;
29
29
  is_unstable_agent: z.ZodOptional<z.ZodBoolean>;
30
30
  disable: z.ZodOptional<z.ZodBoolean>;
31
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
31
32
  }, z.core.$strip>;
32
33
  export declare const BuiltinCategoryNameSchema: z.ZodEnum<{
33
34
  construct: "construct";
@@ -68,6 +69,7 @@ export declare const CategoriesConfigSchema: z.ZodRecord<z.ZodString, z.ZodObjec
68
69
  prompt_append: z.ZodOptional<z.ZodString>;
69
70
  is_unstable_agent: z.ZodOptional<z.ZodBoolean>;
70
71
  disable: z.ZodOptional<z.ZodBoolean>;
72
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
71
73
  }, z.core.$strip>>;
72
74
  export type CategoryConfig = z.infer<typeof CategoryConfigSchema>;
73
75
  export type CategoriesConfig = z.infer<typeof CategoriesConfigSchema>;
@@ -47,5 +47,11 @@ export declare const HookNameSchema: z.ZodEnum<{
47
47
  "env-file-write-guard": "env-file-write-guard";
48
48
  "json-error-recovery": "json-error-recovery";
49
49
  "bash-file-read-guard": "bash-file-read-guard";
50
+ "todo-description-override": "todo-description-override";
51
+ "runtime-fallback": "runtime-fallback";
52
+ "read-image-resizer": "read-image-resizer";
53
+ "webfetch-redirect-guard": "webfetch-redirect-guard";
54
+ "hashline-edit-diff-enhancer": "hashline-edit-diff-enhancer";
55
+ "tool-pair-validator": "tool-pair-validator";
50
56
  }>;
51
57
  export type HookName = z.infer<typeof HookNameSchema>;
@@ -23,6 +23,7 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
23
23
  cipher: "cipher";
24
24
  niobe: "niobe";
25
25
  sentinel: "sentinel";
26
+ zion: "zion";
26
27
  oracle: "oracle";
27
28
  }>>>;
28
29
  disabled_skills: z.ZodOptional<z.ZodArray<z.ZodEnum<{
@@ -63,6 +64,10 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
63
64
  "security-crypto": "security-crypto";
64
65
  "security-infra": "security-infra";
65
66
  "security-review": "security-review";
67
+ "crypto-market-analysis": "crypto-market-analysis";
68
+ "crypto-trading": "crypto-trading";
69
+ "crypto-onchain": "crypto-onchain";
70
+ "tdd-enforcer": "tdd-enforcer";
66
71
  }>>>;
67
72
  disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
68
73
  architect: "architect";
@@ -112,6 +117,12 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
112
117
  "env-file-write-guard": "env-file-write-guard";
113
118
  "json-error-recovery": "json-error-recovery";
114
119
  "bash-file-read-guard": "bash-file-read-guard";
120
+ "todo-description-override": "todo-description-override";
121
+ "runtime-fallback": "runtime-fallback";
122
+ "read-image-resizer": "read-image-resizer";
123
+ "webfetch-redirect-guard": "webfetch-redirect-guard";
124
+ "hashline-edit-diff-enhancer": "hashline-edit-diff-enhancer";
125
+ "tool-pair-validator": "tool-pair-validator";
115
126
  }>>>;
116
127
  disabled_commands: z.ZodOptional<z.ZodArray<z.ZodEnum<{
117
128
  "init-deep": "init-deep";
@@ -1514,6 +1525,7 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1514
1525
  prompt_append: z.ZodOptional<z.ZodString>;
1515
1526
  is_unstable_agent: z.ZodOptional<z.ZodBoolean>;
1516
1527
  disable: z.ZodOptional<z.ZodBoolean>;
1528
+ fallback_models: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1517
1529
  }, z.core.$strip>>>;
1518
1530
  claude_code: z.ZodOptional<z.ZodObject<{
1519
1531
  mcp: z.ZodOptional<z.ZodBoolean>;
@@ -1620,6 +1632,9 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1620
1632
  commit_footer: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
1621
1633
  include_co_authored_by: z.ZodDefault<z.ZodBoolean>;
1622
1634
  }, z.core.$strip>>;
1635
+ tdd_enforcer: z.ZodOptional<z.ZodObject<{
1636
+ enabled: z.ZodDefault<z.ZodBoolean>;
1637
+ }, z.core.$strip>>;
1623
1638
  browser_automation_engine: z.ZodOptional<z.ZodObject<{
1624
1639
  provider: z.ZodDefault<z.ZodEnum<{
1625
1640
  playwright: "playwright";
@@ -1673,6 +1688,21 @@ export declare const MatrixxConfigSchema: z.ZodObject<{
1673
1688
  on_package_change: z.ZodDefault<z.ZodBoolean>;
1674
1689
  }, z.core.$strip>>;
1675
1690
  }, z.core.$strip>>;
1691
+ runtime_fallback: z.ZodOptional<z.ZodObject<{
1692
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1693
+ retry_on_errors: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodNumber>>>;
1694
+ max_fallback_attempts: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1695
+ cooldown_seconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1696
+ timeout_seconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1697
+ notify_on_fallback: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
1698
+ }, z.core.$strip>>;
1699
+ agent_definitions: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
1700
+ model_capabilities: z.ZodOptional<z.ZodObject<{
1701
+ enabled: z.ZodOptional<z.ZodBoolean>;
1702
+ auto_refresh_on_start: z.ZodOptional<z.ZodBoolean>;
1703
+ refresh_timeout_ms: z.ZodOptional<z.ZodNumber>;
1704
+ source_url: z.ZodOptional<z.ZodString>;
1705
+ }, z.core.$strip>>;
1676
1706
  _migrations: z.ZodOptional<z.ZodArray<z.ZodString>>;
1677
1707
  }, z.core.$strip>;
1678
1708
  export type MatrixxConfig = z.infer<typeof MatrixxConfigSchema>;
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export declare const ModelCapabilitiesConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodOptional<z.ZodBoolean>;
4
+ auto_refresh_on_start: z.ZodOptional<z.ZodBoolean>;
5
+ refresh_timeout_ms: z.ZodOptional<z.ZodNumber>;
6
+ source_url: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ export type ModelCapabilitiesConfig = z.infer<typeof ModelCapabilitiesConfigSchema>;
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ export declare const RuntimeFallbackConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
4
+ retry_on_errors: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodNumber>>>;
5
+ max_fallback_attempts: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
6
+ cooldown_seconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7
+ timeout_seconds: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ notify_on_fallback: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
9
+ }, z.core.$strip>;
10
+ export type RuntimeFallbackConfig = z.infer<typeof RuntimeFallbackConfigSchema>;
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ export declare const TddEnforcerConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodDefault<z.ZodBoolean>;
4
+ }, z.core.$strip>;
5
+ export type TddEnforcerConfig = z.infer<typeof TddEnforcerConfigSchema>;
@@ -10,6 +10,7 @@ export * from "./schema/commands";
10
10
  export * from "./schema/dynamic-context-pruning";
11
11
  export * from "./schema/experimental";
12
12
  export * from "./schema/git-master";
13
+ export * from "./schema/tdd-enforcer";
13
14
  export * from "./schema/hooks";
14
15
  export * from "./schema/notification";
15
16
  export * from "./schema/matrixx-config";
@@ -20,4 +21,7 @@ export * from "./schema/morpheus-agent";
20
21
  export * from "./schema/tmux";
21
22
  export * from "./schema/security";
22
23
  export * from "./schema/websearch";
24
+ export * from "./schema/runtime-fallback";
25
+ export * from "./schema/agent-definitions";
26
+ export * from "./schema/model-capabilities";
23
27
  export { AnyMcpNameSchema, type AnyMcpName, McpNameSchema, type McpName } from "../mcp/types";
@@ -26,6 +26,7 @@ export declare function createHooks(args: {
26
26
  keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
27
27
  contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
28
28
  thinkingBlockValidator: ReturnType<typeof import("./hooks").createThinkingBlockValidatorHook> | null;
29
+ toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
29
30
  commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
30
31
  toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
31
32
  directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
@@ -39,6 +40,10 @@ export declare function createHooks(args: {
39
40
  envFileWriteGuard: ReturnType<typeof import("./hooks").createEnvFileWriteGuardHook> | null;
40
41
  jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
41
42
  bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
43
+ todoDescriptionOverride: ReturnType<typeof import("./hooks").createTodoDescriptionOverrideHook> | null;
44
+ readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
45
+ webfetchRedirectGuard: ReturnType<typeof import("./hooks").createWebFetchRedirectGuardHook> | null;
46
+ hashlineEditDiffEnhancer: ReturnType<typeof import("./hooks").createHashlineEditDiffEnhancerHook> | null;
42
47
  contextWindowMonitor: ReturnType<typeof import("./hooks").createContextWindowMonitorHook> | null;
43
48
  preemptiveCompaction: ReturnType<typeof import("./hooks").createPreemptiveCompactionHook> | null;
44
49
  sessionRecovery: ReturnType<typeof import("./hooks").createSessionRecoveryHook> | null;
@@ -58,4 +63,5 @@ export declare function createHooks(args: {
58
63
  questionLabelTruncator: ReturnType<typeof import("./hooks").createQuestionLabelTruncatorHook>;
59
64
  taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook>;
60
65
  anthropicEffort: ReturnType<typeof import("./hooks/anthropic-effort").createAnthropicEffortHook> | null;
66
+ runtimeFallback: ReturnType<typeof import("./hooks").createRuntimeFallbackHook> | null;
61
67
  };
@@ -1 +1 @@
1
- export declare const HANDOFF_TEMPLATE = "# Handoff Command\n\n## Purpose\n\nUse /handoff when:\n- The current session context is getting too long and quality is degrading\n- You want to start fresh while preserving essential context from this session\n- The context window is approaching capacity\n\nThis creates a detailed context summary that can be used to continue work in a new session.\n\n---\n\n# PHASE 0: VALIDATE REQUEST\n\nBefore proceeding, confirm:\n- [ ] There is meaningful work or context in this session to preserve\n- [ ] The user wants to create a handoff summary (not just asking about it)\n\nIf the session is nearly empty or has no meaningful context, inform the user there is nothing substantial to hand off.\n\n---\n\n# PHASE 1: GATHER PROGRAMMATIC CONTEXT\n\nExecute these tools to gather concrete data:\n\n1. session_read({ session_id: \"$SESSION_ID\" }) \u2014 full session history\n2. todoread() \u2014 current task progress\n3. Bash({ command: \"git diff --stat HEAD~10..HEAD\" }) \u2014 recent file changes\n4. Bash({ command: \"git status --porcelain\" }) \u2014 uncommitted changes\n\nSuggested execution order:\n\n```\nsession_read({ session_id: \"$SESSION_ID\" })\ntodoread()\nBash({ command: \"git diff --stat HEAD~10..HEAD\" })\nBash({ command: \"git status --porcelain\" })\n```\n\nAnalyze the gathered outputs to understand:\n- What the user asked for (exact wording)\n- What work was completed\n- What tasks remain incomplete (include todo state)\n- What decisions were made\n- What files were modified or discussed (include git diff/stat + status)\n- What patterns, constraints, or preferences were established\n\n---\n\n# PHASE 2: EXTRACT CONTEXT\n\nWrite the context summary from first person perspective (\"I did...\", \"I told you...\").\n\nFocus on:\n- Capabilities and behavior, not file-by-file implementation details\n- What matters for continuing the work\n- Avoiding excessive implementation details (variable names, storage keys, constants) unless critical\n- USER REQUESTS (AS-IS) must be verbatim (do not paraphrase)\n- EXPLICIT CONSTRAINTS must be verbatim only (do not invent)\n\nQuestions to consider when extracting:\n- What did I just do or implement?\n- What instructions did I already give which are still relevant (e.g. follow patterns in the codebase)?\n- What files did I tell you are important or that I am working on?\n- Did I provide a plan or spec that should be included?\n- What did I already tell you that is important (libraries, patterns, constraints, preferences)?\n- What important technical details did I discover (APIs, methods, patterns)?\n- What caveats, limitations, or open questions did I find?\n\n---\n\n# PHASE 3: FORMAT OUTPUT\n\nGenerate a handoff summary. WRITE the summary to .matrix/handoff.md using the Write tool. Use this exact format:\n\n```\nHANDOFF CONTEXT\n===============\n\nUSER REQUESTS (AS-IS)\n---------------------\n- [Exact verbatim user requests - NOT paraphrased]\n\nGOAL\n----\n[One sentence describing what should be done next]\n\nWORK COMPLETED\n--------------\n- [First person bullet points of what was done]\n- [Include specific file paths when relevant]\n- [Note key implementation decisions]\n\nCURRENT STATE\n-------------\n- [Current state of the codebase or task]\n- [Build/test status if applicable]\n- [Any environment or configuration state]\n\nPENDING TASKS\n-------------\n- [Tasks that were planned but not completed]\n- [Next logical steps to take]\n- [Any blockers or issues encountered]\n- [Include current todo state from todoread()]\n\nKEY FILES\n---------\n- [path/to/file1] - [brief role description]\n- [path/to/file2] - [brief role description]\n(Maximum 10 files, prioritized by importance)\n- (Include files from git diff/stat and git status)\n\nIMPORTANT DECISIONS\n-------------------\n- [Technical decisions that were made and why]\n- [Trade-offs that were considered]\n- [Patterns or conventions established]\n\nEXPLICIT CONSTRAINTS\n--------------------\n- [Verbatim constraints only - from user or existing AGENTS.md]\n- If none, write: None\n\nCONTEXT FOR CONTINUATION\n------------------------\n- [What the next session needs to know to continue]\n- [Warnings or gotchas to be aware of]\n- [References to documentation if relevant]\n```\n\nWrite this content to .matrix/handoff.md using the Write tool. This file will be automatically loaded when a new session starts.\n\nRules for the summary:\n- Plain text with bullets\n- No markdown headers with # (use the format above with dashes)\n- No bold, italic, or code fences within content\n- Use workspace-relative paths for files\n- Keep it focused - only include what matters for continuation\n- Pick an appropriate length based on complexity\n- USER REQUESTS (AS-IS) and EXPLICIT CONSTRAINTS must be verbatim only\n\n---\n\n# PHASE 4: PROVIDE INSTRUCTIONS\n\nAfter writing the file, inform the user:\n\n```\n---\n\nHANDOFF COMPLETE:\n\nContext saved to .matrix/handoff.md\n\nTo continue in a new session:\n1. Press 'n' in OpenCode TUI to open a new session, or run 'opencode' in a new terminal\n2. Your context will be loaded automatically \u2014 no copy-paste needed\n3. Start with your next task: \"Continue from where I left off. [Your next task]\"\n```\n\n---\n\n# IMPORTANT CONSTRAINTS\n\n- DO NOT attempt to programmatically create new sessions (no API available to agents)\n- DO provide a self-contained summary in the .matrix/handoff.md file\n- DO include workspace-relative file paths\n- DO NOT include sensitive information (API keys, credentials, secrets)\n- DO NOT exceed 10 files in the KEY FILES section\n- DO keep the GOAL section to a single sentence or short paragraph\n\n---\n\n# EXECUTE NOW\n\nBegin by gathering programmatic context, then synthesize the handoff summary.\n";
1
+ export declare const HANDOFF_TEMPLATE = "# Handoff Command\n\n## Purpose\n\nUse /handoff when:\n- The current session context is getting too long and quality is degrading\n- You want to start fresh while preserving essential context from this session\n- The context window is approaching capacity\n\nThis creates a detailed context summary that can be used to continue work in a new session.\n\n---\n\n# PHASE 0: VALIDATE REQUEST\n\nBefore proceeding, confirm:\n- [ ] There is meaningful work or context in this session to preserve\n- [ ] The user wants to create a handoff summary (not just asking about it)\n\nIf the session is nearly empty or has no meaningful context, inform the user there is nothing substantial to hand off.\n\n---\n\n# PHASE 1: GATHER PROGRAMMATIC CONTEXT\n\nExecute these tools to gather concrete data:\n\n1. session_read({ session_id: \"$SESSION_ID\" }) \u2014 full session history\n2. todoread() \u2014 current task progress\n3. Bash({ command: \"git diff --stat HEAD~10..HEAD\" }) \u2014 recent file changes\n4. Bash({ command: \"git status --porcelain\" }) \u2014 uncommitted changes\n\nSuggested execution order:\n\n```\nsession_read({ session_id: \"$SESSION_ID\" })\ntodoread()\nBash({ command: \"git diff --stat HEAD~10..HEAD\" })\nBash({ command: \"git status --porcelain\" })\n```\n\nAnalyze the gathered outputs to understand:\n- What the user asked for (exact wording)\n- What work was completed\n- What tasks remain incomplete (include todo state)\n- What decisions were made\n- What files were modified or discussed (include git diff/stat + status)\n- What patterns, constraints, or preferences were established\n\n---\n\n# PHASE 2: EXTRACT CONTEXT\n\nWrite the context summary from first person perspective (\"I did...\", \"I told you...\").\n\nFocus on:\n- Capabilities and behavior, not file-by-file implementation details\n- What matters for continuing the work\n- Avoiding excessive implementation details (variable names, storage keys, constants) unless critical\n- USER REQUESTS (AS-IS) must be verbatim (do not paraphrase)\n- EXPLICIT CONSTRAINTS must be verbatim only (do not invent)\n\nQuestions to consider when extracting:\n- What did I just do or implement?\n- What instructions did I already give which are still relevant (e.g. follow patterns in the codebase)?\n- What files did I tell you are important or that I am working on?\n- Did I provide a plan or spec that should be included?\n- What did I already tell you that is important (libraries, patterns, constraints, preferences)?\n- What important technical details did I discover (APIs, methods, patterns)?\n- What caveats, limitations, or open questions did I find?\n\n---\n\n# PHASE 3: FORMAT OUTPUT\n\nGenerate a handoff summary. WRITE the summary to .matrixx/handoff.md using the Write tool. Use this exact format:\n\n```\nHANDOFF CONTEXT\n===============\n\nUSER REQUESTS (AS-IS)\n---------------------\n- [Exact verbatim user requests - NOT paraphrased]\n\nGOAL\n----\n[One sentence describing what should be done next]\n\nWORK COMPLETED\n--------------\n- [First person bullet points of what was done]\n- [Include specific file paths when relevant]\n- [Note key implementation decisions]\n\nCURRENT STATE\n-------------\n- [Current state of the codebase or task]\n- [Build/test status if applicable]\n- [Any environment or configuration state]\n\nPENDING TASKS\n-------------\n- [Tasks that were planned but not completed]\n- [Next logical steps to take]\n- [Any blockers or issues encountered]\n- [Include current todo state from todoread()]\n\nKEY FILES\n---------\n- [path/to/file1] - [brief role description]\n- [path/to/file2] - [brief role description]\n(Maximum 10 files, prioritized by importance)\n- (Include files from git diff/stat and git status)\n\nIMPORTANT DECISIONS\n-------------------\n- [Technical decisions that were made and why]\n- [Trade-offs that were considered]\n- [Patterns or conventions established]\n\nEXPLICIT CONSTRAINTS\n--------------------\n- [Verbatim constraints only - from user or existing AGENTS.md]\n- If none, write: None\n\nCONTEXT FOR CONTINUATION\n------------------------\n- [What the next session needs to know to continue]\n- [Warnings or gotchas to be aware of]\n- [References to documentation if relevant]\n```\n\nWrite this content to .matrixx/handoff.md using the Write tool. This file will be automatically loaded when a new session starts.\n\nRules for the summary:\n- Plain text with bullets\n- No markdown headers with # (use the format above with dashes)\n- No bold, italic, or code fences within content\n- Use workspace-relative paths for files\n- Keep it focused - only include what matters for continuation\n- Pick an appropriate length based on complexity\n- USER REQUESTS (AS-IS) and EXPLICIT CONSTRAINTS must be verbatim only\n\n---\n\n# PHASE 4: PROVIDE INSTRUCTIONS\n\nAfter writing the file, inform the user:\n\n```\n---\n\nHANDOFF COMPLETE:\n\nContext saved to .matrixx/handoff.md\n\nTo continue in a new session:\n1. Press 'n' in OpenCode TUI to open a new session, or run 'opencode' in a new terminal\n2. Your context will be loaded automatically \u2014 no copy-paste needed\n3. Start with your next task: \"Continue from where I left off. [Your next task]\"\n```\n\n---\n\n# IMPORTANT CONSTRAINTS\n\n- DO NOT attempt to programmatically create new sessions (no API available to agents)\n- DO provide a self-contained summary in the .matrixx/handoff.md file\n- DO include workspace-relative file paths\n- DO NOT include sensitive information (API keys, credentials, secrets)\n- DO NOT exceed 10 files in the KEY FILES section\n- DO keep the GOAL section to a single sentence or short paragraph\n\n---\n\n# EXECUTE NOW\n\nBegin by gathering programmatic context, then synthesize the handoff summary.\n";
@@ -1 +1 @@
1
- export declare const PICKUP_TEMPLATE = "# Pickup Command\n\n## Purpose\n\nUse /pickup to load handoff context from a previous session.\nThis reads the .matrix/handoff.md file created by /handoff and uses it as context for this session.\n\n---\n\n# PHASE 1: LOAD HANDOFF FILE\n\n1. Read the file .matrix/handoff.md using the Read tool\n2. If the file does not exist, inform the user:\n \"No handoff context found. Run /handoff in a previous session first to create one.\"\n Then STOP \u2014 do not proceed to Phase 2.\n\n---\n\n# PHASE 2: ARCHIVE THE FILE\n\nAfter successfully reading the handoff content:\n\n1. Rename .matrix/handoff.md to .matrix/handoff.consumed.md using Bash:\n Bash({ command: \"mv .matrix/handoff.md .matrix/handoff.consumed.md\" })\n\nThis prevents the same handoff from being picked up again.\n\n---\n\n# PHASE 3: APPLY CONTEXT\n\n1. Acknowledge the loaded context to the user with a brief summary:\n - What the previous session was working on (from GOAL section)\n - What was completed (from WORK COMPLETED section)\n - What remains (from PENDING TASKS section)\n\n2. State: \"Handoff context loaded. Ready to continue.\"\n\n3. If the user provided additional instructions with the /pickup command, begin working on those immediately using the handoff context.\n\n---\n\n# IMPORTANT CONSTRAINTS\n\n- DO read the handoff file using the Read tool \u2014 do not guess or fabricate context\n- DO archive the file after reading to prevent duplicate pickups\n- DO NOT modify the handoff content \u2014 use it as-is for context\n- DO NOT attempt to load handoff.consumed.md \u2014 that is a previously consumed handoff\n- DO summarize the context briefly \u2014 the user wants to know what was picked up\n- DO begin working immediately if the user provided a task alongside /pickup\n";
1
+ export declare const PICKUP_TEMPLATE = "# Pickup Command\n\n## Purpose\n\nUse /pickup to load handoff context from a previous session.\nThis reads the .matrixx/handoff.md file created by /handoff and uses it as context for this session.\n\n---\n\n# PHASE 1: LOAD HANDOFF FILE\n\n1. Read the file .matrixx/handoff.md using the Read tool\n2. If the file does not exist, inform the user:\n \"No handoff context found. Run /handoff in a previous session first to create one.\"\n Then STOP \u2014 do not proceed to Phase 2.\n\n---\n\n# PHASE 2: ARCHIVE THE FILE\n\nAfter successfully reading the handoff content:\n\n1. Rename .matrixx/handoff.md to .matrixx/handoff.consumed.md using Bash:\n Bash({ command: \"mv .matrixx/handoff.md .matrixx/handoff.consumed.md\" })\n\nThis prevents the same handoff from being picked up again.\n\n---\n\n# PHASE 3: APPLY CONTEXT\n\n1. Acknowledge the loaded context to the user with a brief summary:\n - What the previous session was working on (from GOAL section)\n - What was completed (from WORK COMPLETED section)\n - What remains (from PENDING TASKS section)\n\n2. State: \"Handoff context loaded. Ready to continue.\"\n\n3. If the user provided additional instructions with the /pickup command, begin working on those immediately using the handoff context.\n\n---\n\n# IMPORTANT CONSTRAINTS\n\n- DO read the handoff file using the Read tool \u2014 do not guess or fabricate context\n- DO archive the file after reading to prevent duplicate pickups\n- DO NOT modify the handoff content \u2014 use it as-is for context\n- DO NOT attempt to load handoff.consumed.md \u2014 that is a previously consumed handoff\n- DO summarize the context briefly \u2014 the user wants to know what was picked up\n- DO begin working immediately if the user provided a task alongside /pickup\n";
@@ -1 +1 @@
1
- export declare const START_WORK_TEMPLATE = "You are starting a Morpheus work session.\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Oracle-generated plan files at `.matrix/plans/`\n\n2. **Check for active mission state**: Read `.matrix/mission.json` if it exists\n\n3. **Decision logic**:\n - If `.matrix/mission.json` exists AND plan is NOT complete (has unchecked boxes):\n - **APPEND** current session to session_ids\n - Continue work on existing plan\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Create/Update mission.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\"\n }\n ```\n\n5. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update mission.json BEFORE starting work\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)";
1
+ export declare const START_WORK_TEMPLATE = "You are starting a Morpheus work session.\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Oracle-generated plan files at `.matrixx/plans/`\n\n2. **Check for active mission state**: Read `.matrixx/mission.json` if it exists\n\n3. **Decision logic**:\n - If `.matrixx/mission.json` exists AND plan is NOT complete (has unchecked boxes):\n - **APPEND** current session to session_ids\n - Continue work on existing plan\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Create/Update mission.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\"\n }\n ```\n\n5. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update mission.json BEFORE starting work\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)";
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../types";
2
+ export declare const CRYPTO_MARKET_ANALYSIS_SKILL_NAME = "crypto-market-analysis";
3
+ export declare const CRYPTO_MARKET_ANALYSIS_SKILL_DESCRIPTION = "Professional crypto market analysis: technical analysis (RSI, MACD, Bollinger Bands, volume, Fibonacci), chart patterns, market structure (S/R, order blocks, FVG), candlestick patterns, multi-timeframe analysis. Triggers: 'technical analysis', 'TA', 'chart', 'indicators', 'price action', 'market structure', 'support resistance'.";
4
+ export declare const cryptoMarketAnalysisSkill: BuiltinSkill;
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../types";
2
+ export declare const CRYPTO_ONCHAIN_SKILL_NAME = "crypto-onchain";
3
+ export declare const CRYPTO_ONCHAIN_SKILL_DESCRIPTION = "Crypto on-chain analysis and DeFi expertise: MVRV, NVT, SOPR, exchange flows, whale tracking, network health metrics, tokenomics analysis, DeFi protocol assessment (TVL, yield, impermanent loss, protocol risk), and blockchain fundamentals. Triggers: 'on-chain', 'onchain', 'blockchain metrics', 'DeFi', 'TVL', 'tokenomics', 'whale', 'exchange inflow', 'MVRV', 'NVT'.";
4
+ export declare const cryptoOnchainSkill: BuiltinSkill;
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../types";
2
+ export declare const CRYPTO_TRADING_SKILL_NAME = "crypto-trading";
3
+ export declare const CRYPTO_TRADING_SKILL_DESCRIPTION = "Professional crypto trading strategies and risk management: trend following, mean reversion, breakout, swing/scalping, position sizing, stop-loss placement, portfolio allocation, futures/perpetuals (funding rates, basis), options strategies. Triggers: 'trading strategy', 'position sizing', 'risk management', 'futures', 'perpetuals', 'stop loss', 'take profit', 'entry exit'.";
4
+ export declare const cryptoTradingSkill: BuiltinSkill;
@@ -36,3 +36,8 @@ export { securityCryptoSkill } from "./security-crypto";
36
36
  export { securityInfraSkill } from "./security-infra";
37
37
  export { securityReviewSkill } from "./security-review";
38
38
  export { documentReaderSkill } from "./document-reader";
39
+ export { cryptoMarketAnalysisSkill } from "./crypto-market-analysis";
40
+ export { cryptoTradingSkill } from "./crypto-trading";
41
+ export { cryptoOnchainSkill } from "./crypto-onchain";
42
+ export { tddEnforcerSkill } from "./tdd-enforcer";
43
+ export { reviewWorkSkill } from "./review-work";
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../types";
2
+ export declare const REVIEW_WORK_SKILL_NAME = "review-work";
3
+ export declare const REVIEW_WORK_SKILL_DESCRIPTION = "Post-implementation review orchestrator. Launches 5 parallel background sub-agents: Oracle (goal/constraint verification), Oracle (code quality), Oracle (security), unspecified-high (hands-on QA execution), unspecified-high (context mining from GitHub/git/Slack/Notion). All must pass for review to pass. MUST USE after completing any significant implementation work. Triggers: 'review work', 'review my work', 'review changes', 'QA my work', 'verify implementation', 'check my work', 'validate changes', 'post-implementation review'.";
4
+ export declare const reviewWorkSkill: BuiltinSkill;
@@ -0,0 +1,4 @@
1
+ import type { BuiltinSkill } from "../types";
2
+ export declare const TDD_ENFORCER_SKILL_NAME = "tdd-enforcer";
3
+ export declare const TDD_ENFORCER_SKILL_DESCRIPTION = "Test-Driven Development enforcement: RED-GREEN-REFACTOR cycle, mandatory test-first for every fix/feature/refactor, bun test conventions, BDD comment patterns, unit vs integration test strategy, evidence requirements. Triggers: 'write tests', 'TDD', 'test first', 'unit test', 'integration test', 'test coverage', 'testing', 'failing test', 'test suite'.";
4
+ export declare const tddEnforcerSkill: BuiltinSkill;
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Mission State Constants
3
3
  */
4
- export declare const MISSION_DIR = ".matrix";
4
+ export declare const MISSION_DIR = ".matrixx";
5
5
  export declare const MISSION_FILE = "mission.json";
6
- export declare const MISSION_STATE_PATH = ".matrix/mission.json";
6
+ export declare const MISSION_STATE_PATH = ".matrixx/mission.json";
7
7
  export declare const NOTEPAD_DIR = "notepads";
8
- export declare const NOTEPAD_BASE_PATH = ".matrix/notepads";
8
+ export declare const NOTEPAD_BASE_PATH = ".matrixx/notepads";
9
9
  /** Oracle planner plan directory pattern */
10
- export declare const ORACLE_PLANS_DIR = ".matrix/plans";
10
+ export declare const ORACLE_PLANS_DIR = ".matrixx/plans";
@@ -11,7 +11,7 @@ export declare function appendSessionId(directory: string, sessionId: string): M
11
11
  export declare function clearMissionState(directory: string): boolean;
12
12
  /**
13
13
  * Find Oracle plan files for this project.
14
- * Oracle stores plans at: {project}/.matrix/plans/{name}.md
14
+ * Oracle stores plans at: {project}/.matrixx/plans/{name}.md
15
15
  */
16
16
  export declare function findOraclePlans(directory: string): string[];
17
17
  /**
@@ -0,0 +1 @@
1
+ export declare const CONTINUATION_MARKER_DIR = ".matrixx/run-continuation";
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./constants";
3
+ export * from "./storage";
@@ -0,0 +1,6 @@
1
+ import type { ContinuationMarker, ContinuationMarkerSource, ContinuationMarkerState } from "./types";
2
+ export declare function readContinuationMarker(directory: string, sessionID: string): ContinuationMarker | null;
3
+ export declare function setContinuationMarkerSource(directory: string, sessionID: string, source: ContinuationMarkerSource, state: ContinuationMarkerState, reason?: string): ContinuationMarker;
4
+ export declare function clearContinuationMarker(directory: string, sessionID: string): void;
5
+ export declare function isContinuationMarkerActive(marker: ContinuationMarker): boolean;
6
+ export declare function getActiveContinuationMarkerReason(marker: ContinuationMarker): string | null;
@@ -0,0 +1,12 @@
1
+ export type ContinuationMarkerSource = "todo" | "stop";
2
+ export type ContinuationMarkerState = "idle" | "active" | "stopped";
3
+ export interface ContinuationMarkerSourceEntry {
4
+ state: ContinuationMarkerState;
5
+ reason?: string;
6
+ updatedAt: string;
7
+ }
8
+ export interface ContinuationMarker {
9
+ sessionID: string;
10
+ updatedAt: string;
11
+ sources: Partial<Record<ContinuationMarkerSource, ContinuationMarkerSourceEntry>>;
12
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./team-worktree";
@@ -0,0 +1 @@
1
+ export { canVisualize, createTeamLayout, removeTeamLayout } from "./layout";
@@ -0,0 +1,15 @@
1
+ import type { TmuxSessionManager } from "../../tmux-subagent/manager";
2
+ type TeamLayoutMember = {
3
+ name: string;
4
+ sessionId: string;
5
+ color?: string;
6
+ };
7
+ type TeamLayoutResult = {
8
+ focusWindowId: string;
9
+ gridWindowId: string;
10
+ panesByMember: Record<string, string>;
11
+ };
12
+ export declare function canVisualize(): boolean;
13
+ export declare function createTeamLayout(teamRunId: string, members: Array<TeamLayoutMember>, tmuxMgr: TmuxSessionManager): Promise<TeamLayoutResult | null>;
14
+ export declare function removeTeamLayout(teamRunId: string, tmuxMgr: TmuxSessionManager): Promise<void>;
15
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { TeamModeConfig } from "./manager";
2
+ export declare function removeWorktree(worktreePath: string): Promise<void>;
3
+ export declare function findOrphanWorktrees(baseDir: string, _config: TeamModeConfig): Promise<string[]>;
@@ -0,0 +1,2 @@
1
+ export { GitUnavailableError, createWorktree, isGitAvailable, validateWorktreeSpec } from "./manager";
2
+ export { findOrphanWorktrees, removeWorktree } from "./cleanup";
@@ -0,0 +1,15 @@
1
+ export type TeamModeConfig = {
2
+ worktreeBaseDir?: string;
3
+ };
4
+ export declare class GitUnavailableError extends Error {
5
+ constructor();
6
+ }
7
+ declare function runGit(args: string[], cwd?: string): Promise<{
8
+ code: number;
9
+ stderr: string;
10
+ }>;
11
+ export declare function setGitCommandRunnerForTests(runner: typeof runGit): void;
12
+ export declare function isGitAvailable(): Promise<boolean>;
13
+ export declare function validateWorktreeSpec(spec: string): void;
14
+ export declare function createWorktree(repoRoot: string, _teamRunId: string, _memberName: string, worktreePath: string, _config: TeamModeConfig): Promise<string>;
15
+ export {};