opencode-matrixx 2.6.12 → 2.6.14

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 +25 -21
  2. package/dist/agents/architect/default.d.ts +1 -1
  3. package/dist/agents/architect/gpt.d.ts +1 -1
  4. package/dist/agents/builtin-agents/architect-agent.d.ts +0 -1
  5. package/dist/agents/builtin-agents/general-agents.d.ts +0 -1
  6. package/dist/agents/builtin-agents/keymaker-agent.d.ts +0 -1
  7. package/dist/agents/builtin-agents/morpheus-agent.d.ts +0 -1
  8. package/dist/agents/builtin-agents.d.ts +1 -1
  9. package/dist/agents/dynamic-agent-prompt-builder.d.ts +4 -4
  10. package/dist/agents/keymaker.d.ts +1 -1
  11. package/dist/agents/model-directives.d.ts +7 -0
  12. package/dist/agents/morpheus.d.ts +1 -1
  13. package/dist/agents/mouse/agent.d.ts +2 -2
  14. package/dist/agents/mouse/deepseek.d.ts +1 -1
  15. package/dist/agents/mouse/default.d.ts +1 -1
  16. package/dist/agents/mouse/gpt.d.ts +1 -1
  17. package/dist/agents/mouse/mimo.d.ts +1 -1
  18. package/dist/agents/mouse/qwen.d.ts +1 -1
  19. package/dist/agents/mouse/shared.d.ts +3 -3
  20. package/dist/agents/oracle/plan-generation.d.ts +1 -1
  21. package/dist/agents/seraph.d.ts +1 -1
  22. package/dist/cli.js +17 -10
  23. package/dist/config/schema/dcp.d.ts +15 -11
  24. package/dist/config/schema/experimental.d.ts +1 -1
  25. package/dist/config/schema/hooks.d.ts +4 -5
  26. package/dist/config/schema/matrixx-config.d.ts +8 -6
  27. package/dist/config/schema/tasks.d.ts +5 -1
  28. package/dist/create-hooks.d.ts +3 -4
  29. package/dist/features/background-agent/manager.d.ts +5 -2
  30. package/dist/features/background-agent/reconcile.d.ts +8 -1
  31. package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
  32. package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -1
  33. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  34. package/dist/features/builtin-commands/templates/remove-deadcode.d.ts +1 -1
  35. package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -1
  36. package/dist/features/session-state/state.d.ts +3 -0
  37. package/dist/features/task-session-scope/ancestry.d.ts +23 -0
  38. package/dist/features/task-session-scope/index.d.ts +2 -0
  39. package/dist/features/task-session-scope/session-task-pending.d.ts +83 -0
  40. package/dist/hooks/architect/system-reminder-templates.d.ts +1 -1
  41. package/dist/hooks/dcp-nudge-sanitizer/constants.d.ts +2 -0
  42. package/dist/hooks/dcp-nudge-sanitizer/hook.d.ts +25 -0
  43. package/dist/hooks/dcp-nudge-sanitizer/index.d.ts +1 -0
  44. package/dist/hooks/index.d.ts +3 -5
  45. package/dist/hooks/keyword-detector/ultrawork/deepseek.d.ts +1 -1
  46. package/dist/hooks/keyword-detector/ultrawork/default.d.ts +1 -1
  47. package/dist/hooks/keyword-detector/ultrawork/gemini.d.ts +1 -1
  48. package/dist/hooks/keyword-detector/ultrawork/glm.d.ts +1 -1
  49. package/dist/hooks/keyword-detector/ultrawork/mimo.d.ts +1 -1
  50. package/dist/hooks/nudge-loop-breaker/constants.d.ts +9 -0
  51. package/dist/hooks/nudge-loop-breaker/hook.d.ts +18 -0
  52. package/dist/hooks/nudge-loop-breaker/index.d.ts +1 -0
  53. package/dist/hooks/nudge-loop-breaker/session-state.d.ts +11 -0
  54. package/dist/hooks/plan-persister/hook.d.ts +1 -1
  55. package/dist/hooks/session-notification-scheduler.d.ts +1 -1
  56. package/dist/hooks/session-notification.d.ts +9 -2
  57. package/dist/hooks/task-continuation-enforcer/handler.d.ts +0 -1
  58. package/dist/hooks/task-continuation-enforcer/index.d.ts +0 -1
  59. package/dist/hooks/task-continuation-enforcer/staleness.d.ts +10 -0
  60. package/dist/hooks/task-continuation-enforcer/todo.d.ts +2 -1
  61. package/dist/hooks/task-continuation-enforcer/types.d.ts +0 -8
  62. package/dist/hooks/task-notepad-writer/constants.d.ts +42 -0
  63. package/dist/hooks/task-notepad-writer/hook.d.ts +14 -0
  64. package/dist/hooks/task-notepad-writer/index.d.ts +2 -0
  65. package/dist/hooks/task-notepad-writer/notepad-path.d.ts +36 -0
  66. package/dist/index.js +1834 -2138
  67. package/dist/matrixx.schema.json +69 -18
  68. package/dist/plugin/hooks/create-continuation-hooks.d.ts +2 -3
  69. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -2
  70. package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -3
  71. package/dist/plugin/hooks/create-transform-hooks.d.ts +2 -0
  72. package/dist/plugin-handlers/task-permissions.d.ts +48 -0
  73. package/dist/shared/dcp-switch-profile.d.ts +12 -0
  74. package/dist/shared/logger.d.ts +1 -0
  75. package/dist/shared/system-directive.d.ts +0 -1
  76. package/dist/shared/task-system-gating.d.ts +24 -4
  77. package/dist/tools/session-manager/constants.d.ts +1 -1
  78. package/dist/tools/session-manager/storage.d.ts +44 -0
  79. package/dist/tools/session-manager/tools.d.ts +2 -1
  80. package/dist/tools/task/create-one.d.ts +21 -0
  81. package/dist/tools/task/types.d.ts +56 -1
  82. package/package.json +1 -1
  83. package/dist/cli/setup/config-writer.test.d.ts +0 -1
  84. package/dist/cli/setup/deps.test.d.ts +0 -1
  85. package/dist/cli/setup/index.test.d.ts +0 -1
  86. package/dist/cli/setup/opencode-sync.test.d.ts +0 -1
  87. package/dist/cli/setup/prompts.test.d.ts +0 -1
  88. package/dist/features/background-agent/handle-index.test.d.ts +0 -1
  89. package/dist/features/background-agent/manager-handles.test.d.ts +0 -1
  90. package/dist/features/knowledge-hub/loader.test.d.ts +0 -1
  91. package/dist/features/knowledge-hub/resolver.test.d.ts +0 -1
  92. package/dist/features/mission-state/plan-storage.test.d.ts +0 -1
  93. package/dist/features/mission-state/reconcile.test.d.ts +0 -1
  94. package/dist/features/session-state/state.test.d.ts +0 -1
  95. package/dist/hooks/compaction-todo-preserver/hook.d.ts +0 -24
  96. package/dist/hooks/compaction-todo-preserver/index.d.ts +0 -2
  97. package/dist/hooks/input-secret-guard/detector.test.d.ts +0 -1
  98. package/dist/hooks/input-secret-guard/hook.test.d.ts +0 -1
  99. package/dist/hooks/input-secret-guard/redactor.test.d.ts +0 -1
  100. package/dist/hooks/input-secret-guard/session-allow-cache.test.d.ts +0 -1
  101. package/dist/hooks/interactive-bash-session/hook.test.d.ts +0 -1
  102. package/dist/hooks/knowledge-hub-guard/hook.test.d.ts +0 -1
  103. package/dist/hooks/knowledge-hub-injector/hook.test.d.ts +0 -1
  104. package/dist/hooks/knowledge-hub-search-nudge/hook.test.d.ts +0 -1
  105. package/dist/hooks/plan-persister/task-sync.test.d.ts +0 -1
  106. package/dist/hooks/rtk-bash-rewriter/hook.test.d.ts +0 -1
  107. package/dist/hooks/session-todo-status.d.ts +0 -2
  108. package/dist/hooks/stop-continuation-guard/repro.test.d.ts +0 -1
  109. package/dist/hooks/task-continuation-enforcer/awaiting-user.test.d.ts +0 -1
  110. package/dist/hooks/task-continuation-enforcer/continuation-injection.test.d.ts +0 -1
  111. package/dist/hooks/task-continuation-enforcer/countdown.test.d.ts +0 -1
  112. package/dist/hooks/task-continuation-enforcer/idle-event.test.d.ts +0 -1
  113. package/dist/hooks/task-continuation-enforcer/staleness.test.d.ts +0 -1
  114. package/dist/hooks/task-continuation-enforcer/todo.test.d.ts +0 -1
  115. package/dist/hooks/task-continuation-enforcer/ulw-bootstrap.test.d.ts +0 -1
  116. package/dist/hooks/task-notepad/constants.d.ts +0 -10
  117. package/dist/hooks/task-notepad/hook.d.ts +0 -12
  118. package/dist/hooks/task-notepad/index.d.ts +0 -3
  119. package/dist/hooks/task-notepad/types.d.ts +0 -16
  120. package/dist/hooks/tasks-todowrite-disabler/constants.d.ts +0 -3
  121. package/dist/hooks/tasks-todowrite-disabler/hook.d.ts +0 -14
  122. package/dist/hooks/tasks-todowrite-disabler/index.d.ts +0 -2
  123. package/dist/hooks/todo-continuation-enforcer/abort-detection.d.ts +0 -4
  124. package/dist/hooks/todo-continuation-enforcer/awaiting-user.test.d.ts +0 -1
  125. package/dist/hooks/todo-continuation-enforcer/constants.d.ts +0 -10
  126. package/dist/hooks/todo-continuation-enforcer/continuation-injection.d.ts +0 -12
  127. package/dist/hooks/todo-continuation-enforcer/countdown.d.ts +0 -14
  128. package/dist/hooks/todo-continuation-enforcer/countdown.test.d.ts +0 -1
  129. package/dist/hooks/todo-continuation-enforcer/handler.d.ts +0 -15
  130. package/dist/hooks/todo-continuation-enforcer/idle-event.d.ts +0 -11
  131. package/dist/hooks/todo-continuation-enforcer/idle-event.test.d.ts +0 -1
  132. package/dist/hooks/todo-continuation-enforcer/index.d.ts +0 -4
  133. package/dist/hooks/todo-continuation-enforcer/message-directory.d.ts +0 -1
  134. package/dist/hooks/todo-continuation-enforcer/non-idle-events.d.ts +0 -6
  135. package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +0 -10
  136. package/dist/hooks/todo-continuation-enforcer/todo.d.ts +0 -2
  137. package/dist/hooks/todo-continuation-enforcer/types.d.ts +0 -61
  138. package/dist/shared/format-bytes.test.d.ts +0 -1
  139. package/dist/shared/is-abort-error.test.d.ts +0 -1
  140. package/dist/shared/task-system-gating.test.d.ts +0 -1
  141. package/dist/shared/with-timeout.test.d.ts +0 -1
  142. package/dist/tools/delegate-task/poll-timeout-outcome.test.d.ts +0 -1
  143. package/dist/tools/delegate-task/prompt-builder.tdd.test.d.ts +0 -1
  144. package/dist/tools/delegate-task/sync-task.test.d.ts +0 -1
  145. package/dist/tools/delegate-task/tdd-enforcement.test.d.ts +0 -1
  146. package/dist/tools/delegate-task/timing.test.d.ts +0 -1
  147. package/dist/tools/evolution/query-actions.test.d.ts +0 -1
  148. package/dist/tools/evolution/tools.test.d.ts +0 -1
  149. package/dist/tools/github-search/result-formatter.test.d.ts +0 -1
  150. package/dist/tools/knowledge-hub-confirm/tools.test.d.ts +0 -1
  151. package/dist/tools/task/task-cleanup.test.d.ts +0 -1
@@ -160,7 +160,6 @@
160
160
  "type": "string",
161
161
  "enum": [
162
162
  "task-continuation-enforcer",
163
- "todo-continuation-enforcer",
164
163
  "context-window-monitor",
165
164
  "session-recovery",
166
165
  "session-notification",
@@ -184,7 +183,6 @@
184
183
  "matrix-loop",
185
184
  "category-skill-reminder",
186
185
  "compaction-context-injector",
187
- "compaction-todo-preserver",
188
186
  "auto-slash-command",
189
187
  "edit-error-recovery",
190
188
  "delegate-task-retry",
@@ -196,7 +194,6 @@
196
194
  "unstable-agent-babysitter",
197
195
  "task-resume-info",
198
196
  "stop-continuation-guard",
199
- "tasks-todowrite-disabler",
200
197
  "write-existing-file-guard",
201
198
  "anthropic-effort",
202
199
  "hashline-read-enhancer",
@@ -211,7 +208,6 @@
211
208
  "webfetch-redirect-guard",
212
209
  "tool-pair-validator",
213
210
  "quality-gate",
214
- "task-notepad",
215
211
  "design-intent-preserver",
216
212
  "rtk-bash-rewriter",
217
213
  "evolution-watcher",
@@ -222,10 +218,29 @@
222
218
  "document-reader-guard",
223
219
  "knowledge-hub-guard",
224
220
  "knowledge-hub-injector",
225
- "knowledge-hub-search-nudge"
221
+ "knowledge-hub-search-nudge",
222
+ "dcp-nudge-sanitizer",
223
+ "nudge-loop-breaker",
224
+ "task-notepad-writer"
226
225
  ]
227
226
  },
228
- {}
227
+ {},
228
+ {
229
+ "type": "string",
230
+ "const": "todo-continuation-enforcer"
231
+ },
232
+ {
233
+ "type": "string",
234
+ "const": "compaction-todo-preserver"
235
+ },
236
+ {
237
+ "type": "string",
238
+ "const": "tasks-todowrite-disabler"
239
+ },
240
+ {
241
+ "type": "string",
242
+ "const": "task-notepad"
243
+ }
229
244
  ]
230
245
  }
231
246
  },
@@ -3935,7 +3950,6 @@
3935
3950
  "type": "boolean"
3936
3951
  },
3937
3952
  "task_system": {
3938
- "default": true,
3939
3953
  "type": "boolean"
3940
3954
  },
3941
3955
  "plugin_load_timeout_ms": {
@@ -3959,9 +3973,6 @@
3959
3973
  "type": "boolean"
3960
3974
  }
3961
3975
  },
3962
- "required": [
3963
- "task_system"
3964
- ],
3965
3976
  "additionalProperties": false
3966
3977
  },
3967
3978
  "dcp": {
@@ -4013,6 +4024,42 @@
4013
4024
  }
4014
4025
  ]
4015
4026
  },
4027
+ "modelMaxLimits": {
4028
+ "type": "object",
4029
+ "propertyNames": {
4030
+ "type": "string",
4031
+ "pattern": "^[^/]+\\/[^/]+$"
4032
+ },
4033
+ "additionalProperties": {
4034
+ "anyOf": [
4035
+ {
4036
+ "type": "number"
4037
+ },
4038
+ {
4039
+ "type": "string",
4040
+ "pattern": "^\\d+%$"
4041
+ }
4042
+ ]
4043
+ }
4044
+ },
4045
+ "modelMinLimits": {
4046
+ "type": "object",
4047
+ "propertyNames": {
4048
+ "type": "string",
4049
+ "pattern": "^[^/]+\\/[^/]+$"
4050
+ },
4051
+ "additionalProperties": {
4052
+ "anyOf": [
4053
+ {
4054
+ "type": "number"
4055
+ },
4056
+ {
4057
+ "type": "string",
4058
+ "pattern": "^\\d+%$"
4059
+ }
4060
+ ]
4061
+ }
4062
+ },
4016
4063
  "nudgeFrequency": {
4017
4064
  "type": "integer",
4018
4065
  "minimum": 1,
@@ -4812,10 +4859,15 @@
4812
4859
  "type": "string"
4813
4860
  },
4814
4861
  "stale_after_hours": {
4815
- "description": "Pending tasks with no file activity for this many hours are considered stale (default: 24). Stale tasks are excluded from task-continuation directives.",
4816
- "type": "integer",
4817
- "minimum": 1,
4818
- "maximum": 9007199254740991
4862
+ "description": "Pending tasks with no file activity for this many hours are considered stale and excluded from task-continuation directives. Accepts fractional hours (minimum 0.25 = 15 minutes); there is no separate minutes companion key. Default 24.",
4863
+ "type": "number",
4864
+ "minimum": 0.25
4865
+ },
4866
+ "background_stale_after_hours": {
4867
+ "description": "Window used only by the background-agent completion gates: a pending/in_progress task with no file activity for this many hours stops blocking completion of its background handle. Separate from stale_after_hours because a missed nudge and a wedged handle are different failures. Accepts fractional hours (min 0.25). Default 2.",
4868
+ "default": 2,
4869
+ "type": "number",
4870
+ "minimum": 0.25
4819
4871
  },
4820
4872
  "session_scoped": {
4821
4873
  "description": "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.",
@@ -4953,10 +5005,9 @@
4953
5005
  ]
4954
5006
  },
4955
5007
  "stale_after_hours": {
4956
- "description": "Pending tasks with no file activity for this many hours are considered stale (default: 24). Stale tasks are excluded from task-continuation directives.",
4957
- "type": "integer",
4958
- "minimum": 1,
4959
- "maximum": 9007199254740991
5008
+ "description": "Pending tasks with no file activity for this many hours are considered stale and excluded from task-continuation directives. Accepts fractional hours (minimum 0.25 = 15 minutes); there is no separate minutes companion key. Default 24.",
5009
+ "type": "number",
5010
+ "minimum": 0.25
4960
5011
  },
4961
5012
  "session_scoped": {
4962
5013
  "description": "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.",
@@ -1,15 +1,14 @@
1
1
  import type { HookName, MatrixxConfig } from "../../config";
2
2
  import type { BackgroundManager } from "../../features/background-agent";
3
- import { createArchitectHook, createBackgroundNotificationHook, createCompactionContextInjector, createCompactionTodoPreserverHook, createEvolutionCompressorHook, createEvolutionHitlHook, createPlanPersister, createStopContinuationGuardHook, createTaskContinuationEnforcer, createTodoContinuationEnforcer } from "../../hooks";
3
+ import { createArchitectHook, createBackgroundNotificationHook, createCompactionContextInjector, createEvolutionCompressorHook, createEvolutionHitlHook, createNudgeLoopBreakerHook, createPlanPersister, createStopContinuationGuardHook, createTaskContinuationEnforcer } from "../../hooks";
4
4
  import type { PluginContext } from "../types";
5
5
  import { createUnstableAgentBabysitter } from "../unstable-agent-babysitter";
6
6
  export type ContinuationHooks = {
7
7
  stopContinuationGuard: ReturnType<typeof createStopContinuationGuardHook> | null;
8
8
  compactionContextInjector: ReturnType<typeof createCompactionContextInjector> | null;
9
- compactionTodoPreserver: ReturnType<typeof createCompactionTodoPreserverHook> | null;
10
- todoContinuationEnforcer: ReturnType<typeof createTodoContinuationEnforcer> | null;
11
9
  taskContinuationEnforcer: ReturnType<typeof createTaskContinuationEnforcer> | null;
12
10
  unstableAgentBabysitter: ReturnType<typeof createUnstableAgentBabysitter> | null;
11
+ nudgeLoopBreaker: ReturnType<typeof createNudgeLoopBreakerHook> | null;
13
12
  backgroundNotificationHook: ReturnType<typeof createBackgroundNotificationHook> | null;
14
13
  architectHook: ReturnType<typeof createArchitectHook> | null;
15
14
  planPersister: ReturnType<typeof createPlanPersister> | null;
@@ -12,6 +12,7 @@ export declare function createCoreHooks(args: {
12
12
  knowledgeHubInjector: ReturnType<typeof import("../../hooks").createKnowledgeHubInjectorHook> | null;
13
13
  envContextInjector: ReturnType<typeof import("../../hooks").createEnvContextInjectorHook> | null;
14
14
  thinkingBlockValidator: ReturnType<typeof import("../../hooks").createThinkingBlockValidatorHook> | null;
15
+ dcpNudgeSanitizer: ReturnType<typeof import("../../hooks").createDcpNudgeSanitizerHook> | null;
15
16
  toolPairValidator: ReturnType<typeof import("../../hooks").createToolPairValidatorHook> | null;
16
17
  designIntentPreserver: ReturnType<typeof import("../../hooks").createDesignIntentPreserverHook> | null;
17
18
  backgroundTaskBlocker: ReturnType<typeof import("../../hooks").createBackgroundTaskBlockerHook> | null;
@@ -20,7 +21,6 @@ export declare function createCoreHooks(args: {
20
21
  directoryAgentsInjector: ReturnType<typeof import("../../hooks").createDirectoryAgentsInjectorHook> | null;
21
22
  emptyTaskResponseDetector: ReturnType<typeof import("../../hooks").createEmptyTaskResponseDetectorHook> | null;
22
23
  rulesInjector: ReturnType<typeof import("../../hooks").createRulesInjectorHook> | null;
23
- tasksTodowriteDisabler: ReturnType<typeof import("../../hooks").createTasksTodowriteDisablerHook> | null;
24
24
  writeExistingFileGuard: ReturnType<typeof import("../../hooks").createWriteExistingFileGuardHook> | null;
25
25
  hashlineReadEnhancer: ReturnType<typeof import("../../hooks").createHashlineReadEnhancerHook> | null;
26
26
  secretLeakGuard: ReturnType<typeof import("../../hooks").createSecretLeakGuardHook> | null;
@@ -31,8 +31,8 @@ export declare function createCoreHooks(args: {
31
31
  readImageResizer: ReturnType<typeof import("../../hooks").createReadImageResizerHook> | null;
32
32
  webfetchRedirectGuard: ReturnType<typeof import("../../hooks").createWebFetchRedirectGuardHook> | null;
33
33
  qualityGate: ReturnType<typeof import("../../hooks").createQualityGateHook> | null;
34
- taskNotepad: ReturnType<typeof import("../../hooks").createTaskNotepadHook> | null;
35
34
  taskEditGuard: ReturnType<typeof import("../../hooks").createTaskEditGuardHook> | null;
35
+ taskNotepadWriter: ReturnType<typeof import("../../hooks").createTaskNotepadWriterHook> | null;
36
36
  documentReaderGuard: ReturnType<typeof import("../../hooks").createDocumentReaderGuardHook> | null;
37
37
  knowledgeHubGuard: ReturnType<typeof import("../../hooks").createKnowledgeHubGuardHook> | null;
38
38
  knowledgeHubSearchNudge: ReturnType<typeof import("../../hooks").createKnowledgeHubSearchNudgeHook> | null;
@@ -1,5 +1,5 @@
1
1
  import type { HookName, MatrixxConfig } from "../../config";
2
- import { createBackgroundTaskBlockerHook, createBashFileReadGuardHook, createCommentCheckerHooks, createContextModeEnforcerHook, createDirectoryAgentsInjectorHook, createDocumentReaderGuardHook, createEmptyTaskResponseDetectorHook, createEnvFileWriteGuardHook, createEvolutionWatcherHook, createHashlineReadEnhancerHook, createJsonErrorRecoveryHook, createKnowledgeHubGuardHook, createKnowledgeHubSearchNudgeHook, createQualityGateHook, createReadImageResizerHook, createRulesInjectorHook, createSecretLeakGuardHook, createTaskEditGuardHook, createTaskNotepadHook, createTasksTodowriteDisablerHook, createToolOutputTruncatorHook, createWebFetchRedirectGuardHook, createWriteExistingFileGuardHook } from "../../hooks";
2
+ import { createBackgroundTaskBlockerHook, createBashFileReadGuardHook, createCommentCheckerHooks, createContextModeEnforcerHook, createDirectoryAgentsInjectorHook, createDocumentReaderGuardHook, createEmptyTaskResponseDetectorHook, createEnvFileWriteGuardHook, createEvolutionWatcherHook, createHashlineReadEnhancerHook, createJsonErrorRecoveryHook, createKnowledgeHubGuardHook, createKnowledgeHubSearchNudgeHook, createQualityGateHook, createReadImageResizerHook, createRulesInjectorHook, createSecretLeakGuardHook, createTaskEditGuardHook, createTaskNotepadWriterHook, createToolOutputTruncatorHook, createWebFetchRedirectGuardHook, createWriteExistingFileGuardHook } from "../../hooks";
3
3
  import type { PluginContext } from "../types";
4
4
  export type ToolGuardHooks = {
5
5
  backgroundTaskBlocker: ReturnType<typeof createBackgroundTaskBlockerHook> | null;
@@ -8,7 +8,6 @@ export type ToolGuardHooks = {
8
8
  directoryAgentsInjector: ReturnType<typeof createDirectoryAgentsInjectorHook> | null;
9
9
  emptyTaskResponseDetector: ReturnType<typeof createEmptyTaskResponseDetectorHook> | null;
10
10
  rulesInjector: ReturnType<typeof createRulesInjectorHook> | null;
11
- tasksTodowriteDisabler: ReturnType<typeof createTasksTodowriteDisablerHook> | null;
12
11
  writeExistingFileGuard: ReturnType<typeof createWriteExistingFileGuardHook> | null;
13
12
  hashlineReadEnhancer: ReturnType<typeof createHashlineReadEnhancerHook> | null;
14
13
  secretLeakGuard: ReturnType<typeof createSecretLeakGuardHook> | null;
@@ -19,8 +18,8 @@ export type ToolGuardHooks = {
19
18
  readImageResizer: ReturnType<typeof createReadImageResizerHook> | null;
20
19
  webfetchRedirectGuard: ReturnType<typeof createWebFetchRedirectGuardHook> | null;
21
20
  qualityGate: ReturnType<typeof createQualityGateHook> | null;
22
- taskNotepad: ReturnType<typeof createTaskNotepadHook> | null;
23
21
  taskEditGuard: ReturnType<typeof createTaskEditGuardHook> | null;
22
+ taskNotepadWriter: ReturnType<typeof createTaskNotepadWriterHook> | null;
24
23
  documentReaderGuard: ReturnType<typeof createDocumentReaderGuardHook> | null;
25
24
  knowledgeHubGuard: ReturnType<typeof createKnowledgeHubGuardHook> | null;
26
25
  knowledgeHubSearchNudge: ReturnType<typeof createKnowledgeHubSearchNudgeHook> | null;
@@ -1,6 +1,7 @@
1
1
  import type { MatrixxConfig } from "../../config";
2
2
  import { createContextInjectorMessagesTransformHook } from "../../features/context-injector";
3
3
  import { createDesignIntentPreserverHook, createEnvContextInjectorHook, createKeywordDetectorHook, createKnowledgeHubInjectorHook, createThinkingBlockValidatorHook, createToolPairValidatorHook } from "../../hooks";
4
+ import { createDcpNudgeSanitizerHook } from "../../hooks/dcp-nudge-sanitizer";
4
5
  import { createInputSecretGuardHook } from "../../hooks/input-secret-guard";
5
6
  import type { PluginContext } from "../types";
6
7
  export type TransformHooks = {
@@ -10,6 +11,7 @@ export type TransformHooks = {
10
11
  knowledgeHubInjector: ReturnType<typeof createKnowledgeHubInjectorHook> | null;
11
12
  envContextInjector: ReturnType<typeof createEnvContextInjectorHook> | null;
12
13
  thinkingBlockValidator: ReturnType<typeof createThinkingBlockValidatorHook> | null;
14
+ dcpNudgeSanitizer: ReturnType<typeof createDcpNudgeSanitizerHook> | null;
13
15
  toolPairValidator: ReturnType<typeof createToolPairValidatorHook> | null;
14
16
  designIntentPreserver: ReturnType<typeof createDesignIntentPreserverHook> | null;
15
17
  };
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Task-store permission grants.
3
+ *
4
+ * The task store (`.matrixx/tasks/`) is a separate write channel from the
5
+ * codebase. An agent whose prompt tells it to track work with tasks must be
6
+ * able to reach it, no matter which agent happens to hold delegation rights.
7
+ */
8
+ /** The legacy todo tools are denied for every task-capable agent. */
9
+ export declare const denyTodoTools: {
10
+ readonly todowrite: "deny";
11
+ readonly todoread: "deny";
12
+ };
13
+ /**
14
+ * Tracking only: the agent may read and write its own task-store records but
15
+ * may not delegate. Granted to every primary-capable agent.
16
+ */
17
+ export declare const taskStorePermissions: {
18
+ readonly todowrite: "deny";
19
+ readonly todoread: "deny";
20
+ readonly "task_*": "allow";
21
+ };
22
+ /** Tracking plus outgoing delegation via the task tool. */
23
+ export declare const fullTaskPermissions: {
24
+ readonly todowrite: "deny";
25
+ readonly todoread: "deny";
26
+ readonly task: "allow";
27
+ readonly "task_*": "allow";
28
+ readonly teammate: "allow";
29
+ };
30
+ type AgentLike = {
31
+ mode?: string;
32
+ permission?: Record<string, unknown>;
33
+ };
34
+ /**
35
+ * An agent that can be driven as a top-level session is expected to track its
36
+ * own work in the task store. Derived from the declared mode, never from a
37
+ * hardcoded name list — a name list is exactly what let the original drift go
38
+ * unnoticed.
39
+ */
40
+ export declare function isTaskStorePrimary(agent: AgentLike): boolean;
41
+ /** The permission defaults a primary-capable agent is missing. */
42
+ export declare function deriveTaskPermissions(agent: AgentLike): Record<string, string>;
43
+ /**
44
+ * Fill-only merge (the architect arm's `??=` pattern): a factory value or an
45
+ * explicit user override in their own config is never overwritten here.
46
+ */
47
+ export declare function grantTaskPermissions(agent: AgentLike): void;
48
+ export {};
@@ -5,6 +5,18 @@ export interface DcpSwitchProfileOptions {
5
5
  };
6
6
  }
7
7
  export declare function deepMergeProfile(builtin: Record<string, unknown>, override: Record<string, unknown>): Record<string, unknown>;
8
+ /**
9
+ * Build a full inline DCP PluginConfig object for the given profile.
10
+ * Starts with base values from dcpConfig.base, overlays profile-specific
11
+ * values from dcpConfig.profiles[profile], and falls back to built-in
12
+ * profile definitions when no Matrixx config is provided.
13
+ *
14
+ * NOTE: DCP also supports per-model context limits via modelMaxLimits
15
+ * and modelMinLimits in the compress section. These allow fine-grained
16
+ * control per LLM provider/model (e.g., {"anthropic/claude-sonnet-4-20250514": "80%"}).
17
+ * Exposed via DcpCompressOverrideSchema and propagated below.
18
+ */
19
+ export declare function buildInlineConfig(profile: string, options?: DcpSwitchProfileOptions): Record<string, unknown>;
8
20
  /**
9
21
  * Switch the active DCP profile.
10
22
  * Reads profile parameters from the Matrixx plugin configuration and writes
@@ -1 +1,2 @@
1
+ export declare function warn(message: string, data?: unknown): void;
1
2
  export declare function log(message: string, data?: unknown): void;
@@ -33,7 +33,6 @@ export declare function hasSystemReminder(text: string): boolean;
33
33
  */
34
34
  export declare function removeSystemReminders(text: string): string;
35
35
  export declare const SystemDirectiveTypes: {
36
- readonly TODO_CONTINUATION: "TODO CONTINUATION";
37
36
  readonly TASK_CONTINUATION: "TASK CONTINUATION";
38
37
  readonly MATRIX_LOOP: "MATRIX LOOP";
39
38
  readonly MISSION_CONTINUATION: "MISSION CONTINUATION";
@@ -1,12 +1,32 @@
1
1
  import type { MatrixxConfig } from "../config/schema";
2
2
  import type { TasksConfig } from "../config/schema/tasks";
3
3
  export declare const TASK_SYSTEM_DEFAULT: true;
4
- export type ResolvedTasksConfig = Required<Pick<TasksConfig, "enabled" | "scope" | "session_scoped">> & Pick<TasksConfig, "storage_path" | "task_list_id" | "stale_after_hours" | "pollTimeoutMs">;
4
+ export type ResolvedTasksConfig = Required<Pick<TasksConfig, "enabled" | "scope" | "session_scoped">> & Pick<TasksConfig, "storage_path" | "task_list_id" | "stale_after_hours" | "pollTimeoutMs" | "background_stale_after_hours">;
5
5
  /**
6
- * Merge the canonical `tasks` section with legacy locations.
7
- * Explicit `tasks.*` always wins; legacy keys fill the gaps:
8
- * `experimental.task_system` / `new_task_system_enabled` → enabled,
6
+ * Fallback for `tasks.background_stale_after_hours` when the key is absent.
7
+ * Kept here, next to the resolution that applies it, so the default and its
8
+ * use site cannot drift; re-exported from the enforcer's `staleness.ts` where
9
+ * the other staleness default lives.
10
+ */
11
+ export declare const DEFAULT_BACKGROUND_STALE_AFTER_HOURS = 2;
12
+ /**
13
+ * Point the one-time deprecation toast at an OpenCode client. Pass
14
+ * `undefined` to detach. Failures are swallowed — a toast is never worth a
15
+ * broken config load.
16
+ */
17
+ export declare function bindTaskSystemDeprecationToast(client: unknown): void;
18
+ /** Test-only: allow the one-time warning to fire again. */
19
+ export declare function resetTaskSystemDeprecationWarning(): void;
20
+ /**
21
+ * Merge the canonical `tasks` section with the remaining legacy locations:
9
22
  * `morpheus.tasks.*` → same-named key, `task.pollTimeoutMs` → pollTimeoutMs.
23
+ *
24
+ * `enabled` is NOT derived from the config: the file-backed task system is
25
+ * unconditional and always resolves to `TASK_SYSTEM_DEFAULT`. The three keys
26
+ * that used to gate it (`tasks.enabled`, `experimental.task_system`,
27
+ * `new_task_system_enabled`) are parsed, ignored, and reported once per session
28
+ * via `warn` plus a single startup toast. Nothing here throws.
29
+ *
10
30
  * Pure derivation, no mutation — safe to call on every read.
11
31
  */
12
32
  export declare function resolveTasksConfig(config: Partial<MatrixxConfig> | undefined | null): ResolvedTasksConfig;
@@ -2,7 +2,7 @@ export { MESSAGE_STORAGE, OPENCODE_STORAGE, PART_STORAGE, SESSION_STORAGE } from
2
2
  export declare const TODO_DIR: string;
3
3
  export declare const TRANSCRIPT_DIR: string;
4
4
  export declare const SESSION_LIST_DESCRIPTION = "List all OpenCode sessions with optional filtering.\n\nReturns a list of available session IDs with metadata including message count, date range, and agents used.\n\nArguments:\n- limit (optional): Maximum number of sessions to return\n- from_date (optional): Filter sessions from this date (ISO 8601 format)\n- to_date (optional): Filter sessions until this date (ISO 8601 format)\n\nExample output:\n| Session ID | Messages | First | Last | Agents |\n|------------|----------|-------|------|--------|\n| ses_abc123 | 45 | 2025-12-20 | 2025-12-24 | build, oracle |\n| ses_def456 | 12 | 2025-12-19 | 2025-12-19 | build |";
5
- export declare const SESSION_READ_DESCRIPTION = "Read messages and history from an OpenCode session.\n\nReturns a formatted view of session messages with role, timestamp, and content. Optionally includes todos and transcript data.\n\nArguments:\n- session_id (required): Session ID to read\n- include_todos (optional): Include todo list if available (default: false)\n- include_transcript (optional): Include transcript log if available (default: false)\n- limit (optional): Maximum number of messages to return (default: all)\n\nExample output:\nSession: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 to 2025-12-24\n\n[Message 1] user (2025-12-20 10:30:00)\nHello, can you help me with...\n\n[Message 2] assistant (2025-12-20 10:30:15)\nOf course! Let me help you with...";
5
+ export declare const SESSION_READ_DESCRIPTION = "Read messages and history from an OpenCode session.\n\nReturns a formatted view of session messages with role, timestamp, and content. Optionally includes task state and transcript data.\n\nArguments:\n- session_id (required): Session ID to read\n- include_todos (optional): Include the session's task state from the task store if available (default: false). Every task attributed to the session is listed, including one that has been untouched long enough to be stale, so an unfinished item is never hidden from this diagnostic.\n- include_transcript (optional): Include transcript log if available (default: false)\n- limit (optional): Maximum number of messages to return (default: all)\n\nExample output:\nSession: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 to 2025-12-24\n\n[Message 1] user (2025-12-20 10:30:00)\nHello, can you help me with...\n\n[Message 2] assistant (2025-12-20 10:30:15)\nOf course! Let me help you with...";
6
6
  export declare const SESSION_SEARCH_DESCRIPTION = "Search for content within OpenCode session messages.\n\nPerforms full-text search across session messages and returns matching excerpts with context.\n\nArguments:\n- query (required): Search query string\n- session_id (optional): Search within specific session only (default: all sessions)\n- case_sensitive (optional): Case-sensitive search (default: false)\n- limit (optional): Maximum number of results to return (default: 20)\n\nExample output:\nFound 3 matches across 2 sessions:\n\n[ses_abc123] Message msg_001 (user)\n...implement the **session manager** tool...\n\n[ses_abc123] Message msg_005 (assistant)\n...I'll create a **session manager** with full search...\n\n[ses_def456] Message msg_012 (user)\n...use the **session manager** to find...";
7
7
  export declare const SESSION_INFO_DESCRIPTION = "Get metadata and statistics about an OpenCode session.\n\nReturns detailed information about a session including message count, date range, agents used, and available data sources.\n\nArguments:\n- session_id (required): Session ID to inspect\n\nExample output:\nSession ID: ses_abc123\nMessages: 45\nDate Range: 2025-12-20 10:30:00 to 2025-12-24 15:45:30\nDuration: 4 days, 5 hours\nAgents Used: build, oracle, librarian\nHas Todos: Yes (12 items, 8 completed)\nHas Transcript: Yes (234 entries)";
8
8
  export declare const SESSION_DELETE_DESCRIPTION = "Delete an OpenCode session and all associated data.\n\nRemoves session messages, parts, todos, and transcript. This operation cannot be undone.\n\nArguments:\n- session_id (required): Session ID to delete\n- confirm (required): Must be true to confirm deletion\n\nExample:\nsession_delete(session_id=\"ses_abc123\", confirm=true)\nSuccessfully deleted session ses_abc123";
@@ -1,14 +1,58 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { MatrixxConfig } from "../../config/schema";
2
3
  import type { SessionInfo, SessionMessage, SessionMetadata, TodoItem } from "./types";
3
4
  interface GetMainSessionsOptions {
4
5
  directory?: string;
5
6
  }
6
7
  export declare function setStorageClient(client: PluginInput["client"]): void;
7
8
  export declare function resetStorageClient(): void;
9
+ /**
10
+ * Thread `ctx.directory` into the storage layer. `createSessionManagerTools` is the
11
+ * single construction point of this module, so the directory is held in a module
12
+ * setter for the same reason the SDK client is: `getSessionInfo` is a second
13
+ * consumer of the task read and has no directory of its own, so an explicit
14
+ * parameter would have to be threaded through both public signatures. Passing no
15
+ * directory makes the task store resolve to its global default, matching
16
+ * `getTaskDir`'s own contract when `directory` is omitted; this function needs a
17
+ * concrete string, so an unset directory falls back to `process.cwd()` exactly as
18
+ * `getTaskDir` does for a relative `storage_path`.
19
+ */
20
+ export declare function setStorageDirectory(directory: string | undefined): void;
21
+ /**
22
+ * Thread the plugin config into the task read, for the same reason as the directory:
23
+ * `getSessionInfo` is a second consumer of `readSessionTodos` and carries neither a
24
+ * config nor a directory of its own. Without it the read always resolves the
25
+ * `process.cwd()`-relative project store, which silently returns nothing for a user
26
+ * who configured `tasks.storage_path` or `tasks.scope: "global"` — the `include_todos`
27
+ * diagnostic would be permanently empty for exactly those users.
28
+ */
29
+ export declare function setStorageConfig(config: Partial<MatrixxConfig> | undefined): void;
8
30
  export declare function getMainSessions(options: GetMainSessionsOptions): Promise<SessionMetadata[]>;
9
31
  export declare function getAllSessions(): Promise<string[]>;
10
32
  export { getMessageDir } from "../../shared/opencode-message-dir";
11
33
  export declare function sessionExists(sessionID: string): Promise<boolean>;
12
34
  export declare function readSessionMessages(sessionID: string): Promise<SessionMessage[]>;
35
+ /**
36
+ * Read the file-backed task store for one session. Replaces the legacy read of
37
+ * OpenCode's own todo state, which had two branches: the SDK endpoint and a "stable
38
+ * mode" scan of OpenCode's on-disk todo directory. Both are gone.
39
+ *
40
+ * There is deliberately no `isSqliteBackend()` split here, unlike the message and
41
+ * session readers in this file. That distinction exists because those endpoints
42
+ * differ per backend; the task store is a plugin-owned local directory, so it is
43
+ * backend-independent and one read covers both. Do not "restore" the branch.
44
+ *
45
+ * Fails open via `readSessionTasks`: a missing store or an unreadable file yields
46
+ * `[]` rather than throwing, matching the contract of the reads it replaces.
47
+ *
48
+ * `excludeStale: false` is an explicit local opt-out, not a change of default.
49
+ * `SessionTaskQuery.excludeStale` stays `true` so a completion gate cannot leak a
50
+ * pending handle forever; that bound belongs to the gates, not to this read. This
51
+ * is the `include_todos` / `SessionInfo.todos` diagnostic, and the native list it
52
+ * replaced applied no staleness filter at all, so inheriting the default silently
53
+ * dropped an untouched-but-unfinished task from the view a user inspects when
54
+ * asking "what is this session carrying?" — which is why a session could report
55
+ * `has_todos: true` and render an empty list.
56
+ */
13
57
  export declare function readSessionTodos(sessionID: string): Promise<TodoItem[]>;
14
58
  export declare function getSessionInfo(sessionID: string): Promise<SessionInfo | null>;
@@ -1,3 +1,4 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import { type ToolDefinition } from "@opencode-ai/plugin/tool";
3
- export declare function createSessionManagerTools(ctx: PluginInput): Record<string, ToolDefinition>;
3
+ import type { MatrixxConfig } from "../../config/schema";
4
+ export declare function createSessionManagerTools(ctx: PluginInput, pluginConfig?: Partial<MatrixxConfig>): Record<string, ToolDefinition>;
@@ -0,0 +1,21 @@
1
+ import type { TaskCreateInput, TaskObject } from "./types";
2
+ export type CreateOneResult = {
3
+ outcome: "created";
4
+ task: TaskObject;
5
+ } | {
6
+ outcome: "deduplicated";
7
+ id: string;
8
+ subject: string;
9
+ };
10
+ export interface CreateOneOptions {
11
+ input: TaskCreateInput;
12
+ taskDir: string;
13
+ directory: string;
14
+ threadID: string;
15
+ }
16
+ /**
17
+ * The caller owns the storage lock. This reads and writes one task and nothing
18
+ * else, so a batch can call it strictly sequentially and have item N's write
19
+ * already on disk when item N+1 runs its dedup scan.
20
+ */
21
+ export declare function createOneTask(options: CreateOneOptions): CreateOneResult;
@@ -6,6 +6,13 @@ export declare const TaskStatusSchema: z.ZodEnum<{
6
6
  in_progress: "in_progress";
7
7
  }>;
8
8
  export type TaskStatus = z.infer<typeof TaskStatusSchema>;
9
+ /** Optional with no default: pre-existing task files must keep loading unmodified. */
10
+ export declare const TaskPrioritySchema: z.ZodEnum<{
11
+ low: "low";
12
+ medium: "medium";
13
+ high: "high";
14
+ }>;
15
+ export type TaskPriority = z.infer<typeof TaskPrioritySchema>;
9
16
  /** Task ID must match T-{uuid}-style format (rejects truncated IDs like "T-"). */
10
17
  export declare const TaskIdSchema: z.ZodString;
11
18
  export declare const TaskObjectSchema: z.ZodObject<{
@@ -27,6 +34,11 @@ export declare const TaskObjectSchema: z.ZodObject<{
27
34
  parentID: z.ZodOptional<z.ZodString>;
28
35
  threadID: z.ZodString;
29
36
  projectRoot: z.ZodOptional<z.ZodString>;
37
+ priority: z.ZodOptional<z.ZodEnum<{
38
+ low: "low";
39
+ medium: "medium";
40
+ high: "high";
41
+ }>>;
30
42
  }, z.core.$strict>;
31
43
  export type TaskObject = z.infer<typeof TaskObjectSchema>;
32
44
  export declare const TaskSchema: z.ZodObject<{
@@ -48,8 +60,17 @@ export declare const TaskSchema: z.ZodObject<{
48
60
  parentID: z.ZodOptional<z.ZodString>;
49
61
  threadID: z.ZodString;
50
62
  projectRoot: z.ZodOptional<z.ZodString>;
63
+ priority: z.ZodOptional<z.ZodEnum<{
64
+ low: "low";
65
+ medium: "medium";
66
+ high: "high";
67
+ }>>;
51
68
  }, z.core.$strict>;
52
69
  export type Task = TaskObject;
70
+ /**
71
+ * Strict on purpose: `status` belongs to `task_update`, and silently dropping a
72
+ * key the caller was told about is how an argument shape drifts from the schema.
73
+ */
53
74
  export declare const TaskCreateInputSchema: z.ZodObject<{
54
75
  subject: z.ZodString;
55
76
  description: z.ZodOptional<z.ZodString>;
@@ -60,8 +81,37 @@ export declare const TaskCreateInputSchema: z.ZodObject<{
60
81
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
61
82
  repoURL: z.ZodOptional<z.ZodString>;
62
83
  parentID: z.ZodOptional<z.ZodString>;
63
- }, z.core.$strip>;
84
+ priority: z.ZodOptional<z.ZodEnum<{
85
+ low: "low";
86
+ medium: "medium";
87
+ high: "high";
88
+ }>>;
89
+ }, z.core.$strict>;
64
90
  export type TaskCreateInput = z.infer<typeof TaskCreateInputSchema>;
91
+ /**
92
+ * Batch form of `task_create`. A top-level array is unrepresentable: the SDK
93
+ * types `args` as a ZodRawShape (a flat record of zod types) and validates it
94
+ * into a ZodObject before `execute` runs, so a declared `items` key is the only
95
+ * expressible way to create more than one task in a single call.
96
+ *
97
+ * Items are `unknown` here on purpose: each one is validated separately by
98
+ * `TaskCreateInputSchema` so a bad item fails alone instead of failing the call.
99
+ */
100
+ export declare const TaskCreateBatchInputSchema: z.ZodObject<{
101
+ items: z.ZodArray<z.ZodUnknown>;
102
+ }, z.core.$strict>;
103
+ export type TaskCreateBatchInput = z.infer<typeof TaskCreateBatchInputSchema>;
104
+ /** One entry of the `tasks` array in the single, always-present response envelope. */
105
+ export type CreatedTaskSummary = {
106
+ id: string;
107
+ subject: string;
108
+ deduplicated?: boolean;
109
+ };
110
+ /** A batch item that failed validation on its own; `index` is its position in `items`. */
111
+ export type TaskCreateItemError = {
112
+ index: number;
113
+ message: string;
114
+ };
65
115
  export declare const TaskListInputSchema: z.ZodObject<{
66
116
  status: z.ZodOptional<z.ZodEnum<{
67
117
  deleted: "deleted";
@@ -93,6 +143,11 @@ export declare const TaskUpdateInputSchema: z.ZodObject<{
93
143
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
94
144
  repoURL: z.ZodOptional<z.ZodString>;
95
145
  parentID: z.ZodOptional<z.ZodString>;
146
+ priority: z.ZodOptional<z.ZodEnum<{
147
+ low: "low";
148
+ medium: "medium";
149
+ high: "high";
150
+ }>>;
96
151
  }, z.core.$strip>;
97
152
  export type TaskUpdateInput = z.infer<typeof TaskUpdateInputSchema>;
98
153
  export declare const TaskDeleteInputSchema: z.ZodObject<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-matrixx",
3
- "version": "2.6.12",
3
+ "version": "2.6.14",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1,24 +0,0 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- interface TodoSnapshot {
3
- id: string;
4
- content: string;
5
- status: "pending" | "in_progress" | "completed" | "cancelled";
6
- priority?: "low" | "medium" | "high";
7
- }
8
- type TodoWriter = (input: {
9
- sessionID: string;
10
- todos: TodoSnapshot[];
11
- }) => Promise<void>;
12
- export declare function _resetForTesting(): void;
13
- export declare function _setWriterForTesting(writer: TodoWriter | null | undefined): void;
14
- export interface CompactionTodoPreserver {
15
- capture: (sessionID: string) => Promise<void>;
16
- event: (input: {
17
- event: {
18
- type: string;
19
- properties?: unknown;
20
- };
21
- }) => Promise<void>;
22
- }
23
- export declare function createCompactionTodoPreserverHook(ctx: PluginInput): CompactionTodoPreserver;
24
- export {};