oh-my-opencode 3.4.0 → 3.5.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 (562) hide show
  1. package/README.ja.md +2 -0
  2. package/README.ko.md +2 -0
  3. package/README.md +2 -0
  4. package/README.zh-cn.md +2 -0
  5. package/dist/agents/agent-builder.d.ts +7 -0
  6. package/dist/agents/atlas/agent.d.ts +34 -0
  7. package/dist/agents/atlas/default.d.ts +1 -1
  8. package/dist/agents/atlas/gpt.d.ts +1 -1
  9. package/dist/agents/atlas/index.d.ts +4 -37
  10. package/dist/agents/builtin-agents/agent-overrides.d.ts +12 -0
  11. package/dist/agents/builtin-agents/atlas-agent.d.ts +16 -0
  12. package/dist/agents/builtin-agents/available-skills.d.ts +4 -0
  13. package/dist/agents/builtin-agents/environment-context.d.ts +2 -0
  14. package/dist/agents/builtin-agents/general-agents.d.ts +23 -0
  15. package/dist/agents/builtin-agents/hephaestus-agent.d.ts +17 -0
  16. package/dist/agents/builtin-agents/model-resolution.d.ts +24 -0
  17. package/dist/agents/builtin-agents/sisyphus-agent.d.ts +19 -0
  18. package/dist/agents/builtin-agents.d.ts +6 -0
  19. package/dist/agents/custom-agent-summaries.d.ts +8 -0
  20. package/dist/agents/env-context.d.ts +7 -0
  21. package/dist/agents/index.d.ts +1 -1
  22. package/dist/agents/prometheus/index.d.ts +1 -33
  23. package/dist/agents/prometheus/interview-mode.d.ts +1 -1
  24. package/dist/agents/prometheus/system-prompt.d.ts +16 -0
  25. package/dist/agents/sisyphus-junior/agent.d.ts +29 -0
  26. package/dist/agents/sisyphus-junior/index.d.ts +2 -29
  27. package/dist/cli/cli-installer.d.ts +2 -0
  28. package/dist/cli/cli-program.d.ts +1 -0
  29. package/dist/cli/config-manager/add-plugin-to-opencode-config.d.ts +2 -0
  30. package/dist/cli/config-manager/add-provider-config.d.ts +2 -0
  31. package/dist/cli/config-manager/antigravity-provider-configuration.d.ts +122 -0
  32. package/dist/cli/config-manager/auth-plugins.d.ts +3 -0
  33. package/dist/cli/config-manager/bun-install.d.ts +7 -0
  34. package/dist/cli/config-manager/config-context.d.ts +13 -0
  35. package/dist/cli/config-manager/deep-merge-record.d.ts +1 -0
  36. package/dist/cli/config-manager/detect-current-config.d.ts +2 -0
  37. package/dist/cli/config-manager/ensure-config-directory-exists.d.ts +1 -0
  38. package/dist/cli/config-manager/format-error-with-suggestion.d.ts +1 -0
  39. package/dist/cli/config-manager/generate-omo-config.d.ts +2 -0
  40. package/dist/cli/config-manager/jsonc-provider-editor.d.ts +1 -0
  41. package/dist/cli/config-manager/npm-dist-tags.d.ts +7 -0
  42. package/dist/cli/config-manager/opencode-binary.d.ts +2 -0
  43. package/dist/cli/config-manager/opencode-config-format.d.ts +5 -0
  44. package/dist/cli/config-manager/parse-opencode-config-file.d.ts +10 -0
  45. package/dist/cli/config-manager/plugin-name-with-version.d.ts +1 -0
  46. package/dist/cli/config-manager/write-omo-config.d.ts +2 -0
  47. package/dist/cli/config-manager.d.ts +14 -162
  48. package/dist/cli/doctor/checks/index.d.ts +6 -0
  49. package/dist/cli/doctor/checks/model-resolution-cache.d.ts +2 -0
  50. package/dist/cli/doctor/checks/model-resolution-config.d.ts +2 -0
  51. package/dist/cli/doctor/checks/model-resolution-details.d.ts +6 -0
  52. package/dist/cli/doctor/checks/model-resolution-effective-model.d.ts +3 -0
  53. package/dist/cli/doctor/checks/model-resolution-types.d.ts +37 -0
  54. package/dist/cli/doctor/checks/model-resolution-variant.d.ts +5 -0
  55. package/dist/cli/doctor/checks/model-resolution.d.ts +1 -33
  56. package/dist/cli/fallback-chain-resolution.d.ts +10 -0
  57. package/dist/cli/get-local-version/get-local-version.d.ts +2 -0
  58. package/dist/cli/get-local-version/index.d.ts +1 -2
  59. package/dist/cli/index.js +3175 -2037
  60. package/dist/cli/install-validators.d.ts +32 -0
  61. package/dist/cli/model-fallback-types.d.ts +26 -0
  62. package/dist/cli/model-fallback.d.ts +2 -15
  63. package/dist/cli/provider-availability.d.ts +4 -0
  64. package/dist/cli/provider-model-id-transform.d.ts +1 -0
  65. package/dist/cli/run/event-formatting.d.ts +3 -0
  66. package/dist/cli/run/event-handlers.d.ts +9 -0
  67. package/dist/cli/run/event-state.d.ts +13 -0
  68. package/dist/cli/run/event-stream-processor.d.ts +3 -0
  69. package/dist/cli/run/events.d.ts +4 -16
  70. package/dist/cli/run/index.d.ts +2 -0
  71. package/dist/cli/run/poll-for-completion.d.ts +7 -0
  72. package/dist/cli/tui-install-prompts.d.ts +2 -0
  73. package/dist/cli/tui-installer.d.ts +2 -0
  74. package/dist/config/schema/agent-names.d.ts +50 -0
  75. package/dist/config/schema/agent-overrides.d.ts +1130 -0
  76. package/dist/config/schema/babysitting.d.ts +5 -0
  77. package/dist/config/schema/background-task.d.ts +8 -0
  78. package/dist/config/schema/browser-automation.d.ts +15 -0
  79. package/dist/config/schema/categories.d.ts +72 -0
  80. package/dist/config/schema/claude-code.d.ts +11 -0
  81. package/dist/config/schema/commands.d.ts +11 -0
  82. package/dist/config/schema/comment-checker.d.ts +5 -0
  83. package/dist/config/schema/dynamic-context-pruning.d.ts +28 -0
  84. package/dist/config/schema/experimental.d.ts +37 -0
  85. package/dist/config/schema/git-master.d.ts +6 -0
  86. package/dist/config/schema/hooks.d.ts +47 -0
  87. package/dist/config/schema/internal/permission.d.ts +44 -0
  88. package/dist/config/schema/notification.d.ts +5 -0
  89. package/dist/config/schema/oh-my-opencode-config.d.ts +1294 -0
  90. package/dist/config/schema/ralph-loop.d.ts +7 -0
  91. package/dist/config/schema/sisyphus-agent.d.ts +8 -0
  92. package/dist/config/schema/sisyphus.d.ts +15 -0
  93. package/dist/config/schema/skills.d.ts +58 -0
  94. package/dist/config/schema/tmux.d.ts +23 -0
  95. package/dist/config/schema/websearch.d.ts +13 -0
  96. package/dist/config/schema.d.ts +21 -2827
  97. package/dist/create-hooks.d.ts +57 -0
  98. package/dist/create-managers.d.ts +19 -0
  99. package/dist/create-tools.d.ts +20 -0
  100. package/dist/features/background-agent/background-event-handler.d.ts +25 -0
  101. package/dist/features/background-agent/background-manager-shutdown.d.ts +25 -0
  102. package/dist/features/background-agent/background-task-completer.d.ts +3 -0
  103. package/dist/features/background-agent/background-task-notification-template.d.ts +10 -0
  104. package/dist/features/background-agent/duration-formatter.d.ts +1 -0
  105. package/dist/features/background-agent/error-classifier.d.ts +2 -0
  106. package/dist/features/background-agent/format-duration.d.ts +1 -0
  107. package/dist/features/background-agent/manager.d.ts +2 -2
  108. package/dist/features/background-agent/message-dir.d.ts +1 -0
  109. package/dist/features/background-agent/message-storage-locator.d.ts +1 -0
  110. package/dist/features/background-agent/notification-builder.d.ts +8 -0
  111. package/dist/features/background-agent/notification-tracker.d.ts +6 -0
  112. package/dist/features/background-agent/notify-parent-session.d.ts +10 -0
  113. package/dist/features/background-agent/opencode-client.d.ts +2 -0
  114. package/dist/features/background-agent/parent-session-context-resolver.d.ts +14 -0
  115. package/dist/features/background-agent/parent-session-notifier.d.ts +3 -0
  116. package/dist/features/background-agent/poll-running-tasks.d.ts +13 -0
  117. package/dist/features/background-agent/process-signal.d.ts +2 -0
  118. package/dist/features/background-agent/result-handler-context.d.ts +8 -0
  119. package/dist/features/background-agent/result-handler.d.ts +7 -15
  120. package/dist/features/background-agent/session-output-validator.d.ts +2 -0
  121. package/dist/features/background-agent/session-todo-checker.d.ts +2 -0
  122. package/dist/features/background-agent/session-validator.d.ts +7 -0
  123. package/dist/features/background-agent/spawner/spawner-context.d.ts +11 -0
  124. package/dist/features/background-agent/spawner/task-factory.d.ts +2 -0
  125. package/dist/features/background-agent/spawner/task-resumer.d.ts +3 -0
  126. package/dist/features/background-agent/spawner/task-starter.d.ts +3 -0
  127. package/dist/features/background-agent/stale-task-pruner.d.ts +9 -0
  128. package/dist/features/background-agent/state.d.ts +1 -1
  129. package/dist/features/background-agent/task-canceller.d.ts +27 -0
  130. package/dist/features/background-agent/task-completer.d.ts +13 -0
  131. package/dist/features/background-agent/task-launch.d.ts +15 -0
  132. package/dist/features/background-agent/task-poller.d.ts +16 -0
  133. package/dist/features/background-agent/task-queries.d.ts +7 -0
  134. package/dist/features/background-agent/task-queue-processor.d.ts +14 -0
  135. package/dist/features/background-agent/task-resumer.d.ts +14 -0
  136. package/dist/features/background-agent/task-starter.d.ts +27 -0
  137. package/dist/features/background-agent/task-tracker.d.ts +18 -0
  138. package/dist/features/background-agent/types.d.ts +1 -1
  139. package/dist/features/builtin-skills/skills/git-master-skill-metadata.d.ts +2 -0
  140. package/dist/features/claude-code-plugin-loader/agent-loader.d.ts +3 -0
  141. package/dist/features/claude-code-plugin-loader/command-loader.d.ts +3 -0
  142. package/dist/features/claude-code-plugin-loader/discovery.d.ts +2 -0
  143. package/dist/features/claude-code-plugin-loader/hook-loader.d.ts +2 -0
  144. package/dist/features/claude-code-plugin-loader/index.d.ts +7 -0
  145. package/dist/features/claude-code-plugin-loader/loader.d.ts +7 -7
  146. package/dist/features/claude-code-plugin-loader/mcp-server-loader.d.ts +3 -0
  147. package/dist/features/claude-code-plugin-loader/plugin-path-resolver.d.ts +2 -0
  148. package/dist/features/claude-code-plugin-loader/skill-loader.d.ts +3 -0
  149. package/dist/features/claude-tasks/types.d.ts +2 -2
  150. package/dist/features/mcp-oauth/index.d.ts +2 -0
  151. package/dist/features/mcp-oauth/oauth-authorization-flow.d.ts +26 -0
  152. package/dist/features/mcp-oauth/provider.d.ts +4 -16
  153. package/dist/features/opencode-skill-loader/allowed-tools-parser.d.ts +1 -0
  154. package/dist/features/opencode-skill-loader/git-master-template-injection.d.ts +2 -0
  155. package/dist/features/opencode-skill-loader/index.d.ts +10 -0
  156. package/dist/features/opencode-skill-loader/loaded-skill-from-path.d.ts +9 -0
  157. package/dist/features/opencode-skill-loader/loaded-skill-template-extractor.d.ts +2 -0
  158. package/dist/features/opencode-skill-loader/merger/builtin-skill-converter.d.ts +3 -0
  159. package/dist/features/opencode-skill-loader/merger/config-skill-entry-loader.d.ts +3 -0
  160. package/dist/features/opencode-skill-loader/merger/scope-priority.d.ts +2 -0
  161. package/dist/features/opencode-skill-loader/merger/skill-definition-merger.d.ts +3 -0
  162. package/dist/features/opencode-skill-loader/merger/skills-config-normalizer.d.ts +11 -0
  163. package/dist/features/opencode-skill-loader/skill-content.d.ts +5 -22
  164. package/dist/features/opencode-skill-loader/skill-deduplication.d.ts +2 -0
  165. package/dist/features/opencode-skill-loader/skill-definition-record.d.ts +3 -0
  166. package/dist/features/opencode-skill-loader/skill-directory-loader.d.ts +8 -0
  167. package/dist/features/opencode-skill-loader/skill-discovery.d.ts +4 -0
  168. package/dist/features/opencode-skill-loader/skill-mcp-config.d.ts +3 -0
  169. package/dist/features/opencode-skill-loader/skill-resolution-options.d.ts +6 -0
  170. package/dist/features/opencode-skill-loader/skill-template-resolver.d.ts +11 -0
  171. package/dist/features/skill-mcp-manager/cleanup.d.ts +8 -0
  172. package/dist/features/skill-mcp-manager/connection-type.d.ts +7 -0
  173. package/dist/features/skill-mcp-manager/connection.d.ts +15 -0
  174. package/dist/features/skill-mcp-manager/http-client.d.ts +3 -0
  175. package/dist/features/skill-mcp-manager/manager.d.ts +3 -32
  176. package/dist/features/skill-mcp-manager/oauth-handler.d.ts +9 -0
  177. package/dist/features/skill-mcp-manager/stdio-client.d.ts +3 -0
  178. package/dist/features/skill-mcp-manager/types.d.ts +44 -0
  179. package/dist/features/task-toast-manager/manager.d.ts +1 -0
  180. package/dist/features/tmux-subagent/cleanup.d.ts +9 -0
  181. package/dist/features/tmux-subagent/decision-engine.d.ts +7 -38
  182. package/dist/features/tmux-subagent/event-handlers.d.ts +6 -0
  183. package/dist/features/tmux-subagent/grid-planning.d.ts +19 -0
  184. package/dist/features/tmux-subagent/index.d.ts +10 -0
  185. package/dist/features/tmux-subagent/oldest-agent-pane.d.ts +7 -0
  186. package/dist/features/tmux-subagent/pane-split-availability.d.ts +8 -0
  187. package/dist/features/tmux-subagent/polling-constants.d.ts +3 -0
  188. package/dist/features/tmux-subagent/polling.d.ts +19 -0
  189. package/dist/features/tmux-subagent/session-created-event.d.ts +14 -0
  190. package/dist/features/tmux-subagent/session-created-handler.d.ts +22 -0
  191. package/dist/features/tmux-subagent/session-deleted-handler.d.ts +15 -0
  192. package/dist/features/tmux-subagent/session-message-count.d.ts +1 -0
  193. package/dist/features/tmux-subagent/session-ready-waiter.d.ts +7 -0
  194. package/dist/features/tmux-subagent/session-status-parser.d.ts +5 -0
  195. package/dist/features/tmux-subagent/spawn-action-decider.d.ts +4 -0
  196. package/dist/features/tmux-subagent/spawn-target-finder.d.ts +6 -0
  197. package/dist/features/tmux-subagent/tmux-grid-constants.d.ts +7 -0
  198. package/dist/features/tool-metadata-store/index.d.ts +2 -39
  199. package/dist/features/tool-metadata-store/store.d.ts +39 -0
  200. package/dist/hooks/agent-usage-reminder/hook.d.ts +22 -0
  201. package/dist/hooks/agent-usage-reminder/index.d.ts +1 -22
  202. package/dist/hooks/anthropic-context-window-limit-recovery/aggressive-truncation-strategy.d.ts +14 -0
  203. package/dist/hooks/anthropic-context-window-limit-recovery/client.d.ts +60 -0
  204. package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery.d.ts +8 -0
  205. package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +1 -1
  206. package/dist/hooks/anthropic-context-window-limit-recovery/index.d.ts +3 -0
  207. package/dist/hooks/anthropic-context-window-limit-recovery/message-builder.d.ts +4 -0
  208. package/dist/hooks/anthropic-context-window-limit-recovery/message-storage-directory.d.ts +2 -0
  209. package/dist/hooks/anthropic-context-window-limit-recovery/recovery-strategy.d.ts +2 -0
  210. package/dist/hooks/anthropic-context-window-limit-recovery/state.d.ts +6 -0
  211. package/dist/hooks/anthropic-context-window-limit-recovery/storage-paths.d.ts +3 -0
  212. package/dist/hooks/anthropic-context-window-limit-recovery/storage.d.ts +3 -28
  213. package/dist/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.d.ts +11 -0
  214. package/dist/hooks/anthropic-context-window-limit-recovery/target-token-truncation.d.ts +2 -0
  215. package/dist/hooks/anthropic-context-window-limit-recovery/tool-part-types.d.ts +39 -0
  216. package/dist/hooks/anthropic-context-window-limit-recovery/tool-result-storage.d.ts +10 -0
  217. package/dist/hooks/anthropic-effort/hook.d.ts +26 -0
  218. package/dist/hooks/anthropic-effort/index.d.ts +1 -26
  219. package/dist/hooks/atlas/atlas-hook.d.ts +19 -0
  220. package/dist/hooks/atlas/boulder-continuation-injector.d.ts +13 -0
  221. package/dist/hooks/atlas/event-handler.d.ts +13 -0
  222. package/dist/hooks/atlas/hook-name.d.ts +1 -0
  223. package/dist/hooks/atlas/index.d.ts +3 -36
  224. package/dist/hooks/atlas/is-abort-error.d.ts +1 -0
  225. package/dist/hooks/atlas/recent-model-resolver.d.ts +3 -0
  226. package/dist/hooks/atlas/session-last-agent.d.ts +1 -0
  227. package/dist/hooks/atlas/sisyphus-path.d.ts +6 -0
  228. package/dist/hooks/atlas/subagent-session-id.d.ts +1 -0
  229. package/dist/hooks/atlas/system-reminder-templates.d.ts +5 -0
  230. package/dist/hooks/atlas/tool-execute-after.d.ts +6 -0
  231. package/dist/hooks/atlas/tool-execute-before.d.ts +10 -0
  232. package/dist/hooks/atlas/types.d.ts +27 -0
  233. package/dist/hooks/atlas/verification-reminders.d.ts +5 -0
  234. package/dist/hooks/atlas/write-edit-tool-policy.d.ts +1 -0
  235. package/dist/hooks/auto-slash-command/hook.d.ts +9 -0
  236. package/dist/hooks/auto-slash-command/index.d.ts +2 -9
  237. package/dist/hooks/auto-update-checker/checker/cached-version.d.ts +1 -0
  238. package/dist/hooks/auto-update-checker/checker/check-for-update.d.ts +2 -0
  239. package/dist/hooks/auto-update-checker/checker/config-paths.d.ts +1 -0
  240. package/dist/hooks/auto-update-checker/checker/jsonc-strip.d.ts +1 -0
  241. package/dist/hooks/auto-update-checker/checker/latest-version.d.ts +1 -0
  242. package/dist/hooks/auto-update-checker/checker/local-dev-path.d.ts +2 -0
  243. package/dist/hooks/auto-update-checker/checker/local-dev-version.d.ts +1 -0
  244. package/dist/hooks/auto-update-checker/checker/package-json-locator.d.ts +1 -0
  245. package/dist/hooks/auto-update-checker/checker/pinned-version-updater.d.ts +1 -0
  246. package/dist/hooks/auto-update-checker/checker/plugin-entry.d.ts +7 -0
  247. package/dist/hooks/auto-update-checker/checker.d.ts +8 -20
  248. package/dist/hooks/auto-update-checker/hook/background-update-check.d.ts +2 -0
  249. package/dist/hooks/auto-update-checker/hook/config-errors-toast.d.ts +2 -0
  250. package/dist/hooks/auto-update-checker/hook/connected-providers-status.d.ts +2 -0
  251. package/dist/hooks/auto-update-checker/hook/model-cache-warning.d.ts +2 -0
  252. package/dist/hooks/auto-update-checker/hook/spinner-toast.d.ts +2 -0
  253. package/dist/hooks/auto-update-checker/hook/startup-toasts.d.ts +3 -0
  254. package/dist/hooks/auto-update-checker/hook/update-toasts.d.ts +3 -0
  255. package/dist/hooks/auto-update-checker/hook.d.ts +10 -0
  256. package/dist/hooks/auto-update-checker/index.d.ts +3 -15
  257. package/dist/hooks/auto-update-checker/version-channel.d.ts +4 -0
  258. package/dist/hooks/background-notification/hook.d.ts +18 -0
  259. package/dist/hooks/background-notification/index.d.ts +1 -17
  260. package/dist/hooks/category-skill-reminder/formatter.d.ts +2 -0
  261. package/dist/hooks/category-skill-reminder/hook.d.ts +23 -0
  262. package/dist/hooks/category-skill-reminder/index.d.ts +1 -23
  263. package/dist/hooks/claude-code-hooks/claude-code-hooks-hook.d.ts +48 -0
  264. package/dist/hooks/claude-code-hooks/handlers/chat-message-handler.d.ts +19 -0
  265. package/dist/hooks/claude-code-hooks/handlers/pre-compact-handler.d.ts +7 -0
  266. package/dist/hooks/claude-code-hooks/handlers/session-event-handler.d.ts +8 -0
  267. package/dist/hooks/claude-code-hooks/handlers/tool-execute-after-handler.d.ts +11 -0
  268. package/dist/hooks/claude-code-hooks/handlers/tool-execute-before-handler.d.ts +9 -0
  269. package/dist/hooks/claude-code-hooks/index.d.ts +1 -48
  270. package/dist/hooks/claude-code-hooks/session-hook-state.d.ts +9 -0
  271. package/dist/hooks/comment-checker/cli-runner.d.ts +19 -0
  272. package/dist/hooks/comment-checker/hook.d.ts +19 -0
  273. package/dist/hooks/comment-checker/index.d.ts +1 -19
  274. package/dist/hooks/comment-checker/pending-calls.d.ts +4 -0
  275. package/dist/hooks/compaction-context-injector/hook.d.ts +1 -0
  276. package/dist/hooks/compaction-context-injector/index.d.ts +1 -1
  277. package/dist/hooks/compaction-todo-preserver/hook.d.ts +11 -0
  278. package/dist/hooks/compaction-todo-preserver/index.d.ts +2 -11
  279. package/dist/hooks/delegate-task-retry/guidance.d.ts +2 -0
  280. package/dist/hooks/delegate-task-retry/hook.d.ts +12 -0
  281. package/dist/hooks/delegate-task-retry/index.d.ts +4 -24
  282. package/dist/hooks/delegate-task-retry/patterns.d.ts +11 -0
  283. package/dist/hooks/directory-agents-injector/finder.d.ts +5 -0
  284. package/dist/hooks/directory-agents-injector/hook.d.ts +26 -0
  285. package/dist/hooks/directory-agents-injector/index.d.ts +1 -26
  286. package/dist/hooks/directory-agents-injector/injector.d.ts +16 -0
  287. package/dist/hooks/directory-readme-injector/finder.d.ts +5 -0
  288. package/dist/hooks/directory-readme-injector/hook.d.ts +26 -0
  289. package/dist/hooks/directory-readme-injector/index.d.ts +1 -26
  290. package/dist/hooks/directory-readme-injector/injector.d.ts +16 -0
  291. package/dist/hooks/edit-error-recovery/hook.d.ts +31 -0
  292. package/dist/hooks/edit-error-recovery/index.d.ts +1 -31
  293. package/dist/hooks/index.d.ts +4 -0
  294. package/dist/hooks/interactive-bash-session/index.d.ts +2 -3
  295. package/dist/hooks/interactive-bash-session/interactive-bash-session-hook.d.ts +23 -0
  296. package/dist/hooks/interactive-bash-session/interactive-bash-session-tracker.d.ts +21 -0
  297. package/dist/hooks/interactive-bash-session/tmux-command-parser.d.ts +4 -0
  298. package/dist/hooks/keyword-detector/hook.d.ts +20 -0
  299. package/dist/hooks/keyword-detector/index.d.ts +1 -20
  300. package/dist/hooks/keyword-detector/ultrawork/default.d.ts +1 -1
  301. package/dist/hooks/keyword-detector/ultrawork/gpt5.2.d.ts +1 -1
  302. package/dist/hooks/keyword-detector/ultrawork/index.d.ts +2 -2
  303. package/dist/hooks/non-interactive-env/index.d.ts +1 -11
  304. package/dist/hooks/non-interactive-env/non-interactive-env-hook.d.ts +14 -0
  305. package/dist/hooks/prometheus-md-only/agent-resolution.d.ts +13 -0
  306. package/dist/hooks/prometheus-md-only/hook.d.ts +11 -0
  307. package/dist/hooks/prometheus-md-only/index.d.ts +1 -11
  308. package/dist/hooks/prometheus-md-only/path-policy.d.ts +10 -0
  309. package/dist/hooks/question-label-truncator/hook.d.ts +7 -0
  310. package/dist/hooks/question-label-truncator/index.d.ts +1 -7
  311. package/dist/hooks/ralph-loop/completion-promise-detector.d.ts +8 -0
  312. package/dist/hooks/ralph-loop/continuation-prompt-builder.d.ts +2 -0
  313. package/dist/hooks/ralph-loop/continuation-prompt-injector.d.ts +7 -0
  314. package/dist/hooks/ralph-loop/index.d.ts +2 -18
  315. package/dist/hooks/ralph-loop/loop-session-recovery.d.ts +7 -0
  316. package/dist/hooks/ralph-loop/loop-state-controller.d.ts +16 -0
  317. package/dist/hooks/ralph-loop/message-storage-directory.d.ts +1 -0
  318. package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +27 -0
  319. package/dist/hooks/ralph-loop/ralph-loop-hook.d.ts +18 -0
  320. package/dist/hooks/ralph-loop/with-timeout.d.ts +1 -0
  321. package/dist/hooks/rules-injector/cache.d.ts +8 -0
  322. package/dist/hooks/rules-injector/finder.d.ts +3 -33
  323. package/dist/hooks/rules-injector/hook.d.ts +26 -0
  324. package/dist/hooks/rules-injector/index.d.ts +2 -26
  325. package/dist/hooks/rules-injector/injector.d.ts +20 -0
  326. package/dist/hooks/rules-injector/project-root-finder.d.ts +8 -0
  327. package/dist/hooks/rules-injector/rule-distance.d.ts +10 -0
  328. package/dist/hooks/rules-injector/rule-file-finder.d.ts +15 -0
  329. package/dist/hooks/rules-injector/rule-file-scanner.d.ts +14 -0
  330. package/dist/hooks/session-notification-formatting.d.ts +3 -0
  331. package/dist/hooks/session-notification-scheduler.d.ts +24 -0
  332. package/dist/hooks/session-notification-sender.d.ts +6 -0
  333. package/dist/hooks/session-recovery/detect-error-type.d.ts +3 -0
  334. package/dist/hooks/session-recovery/hook.d.ts +20 -0
  335. package/dist/hooks/session-recovery/index.d.ts +5 -22
  336. package/dist/hooks/session-recovery/recover-empty-content-message.d.ts +5 -0
  337. package/dist/hooks/session-recovery/recover-thinking-block-order.d.ts +5 -0
  338. package/dist/hooks/session-recovery/recover-thinking-disabled-violation.d.ts +5 -0
  339. package/dist/hooks/session-recovery/recover-tool-result-missing.d.ts +5 -0
  340. package/dist/hooks/session-recovery/resume.d.ts +7 -0
  341. package/dist/hooks/session-recovery/storage/empty-messages.d.ts +3 -0
  342. package/dist/hooks/session-recovery/storage/empty-text.d.ts +2 -0
  343. package/dist/hooks/session-recovery/storage/message-dir.d.ts +1 -0
  344. package/dist/hooks/session-recovery/storage/messages-reader.d.ts +2 -0
  345. package/dist/hooks/session-recovery/storage/orphan-thinking-search.d.ts +2 -0
  346. package/dist/hooks/session-recovery/storage/part-content.d.ts +3 -0
  347. package/dist/hooks/session-recovery/storage/part-id.d.ts +1 -0
  348. package/dist/hooks/session-recovery/storage/parts-reader.d.ts +2 -0
  349. package/dist/hooks/session-recovery/storage/text-part-injector.d.ts +1 -0
  350. package/dist/hooks/session-recovery/storage/thinking-block-search.d.ts +2 -0
  351. package/dist/hooks/session-recovery/storage/thinking-prepend.d.ts +1 -0
  352. package/dist/hooks/session-recovery/storage/thinking-strip.d.ts +1 -0
  353. package/dist/hooks/session-recovery/storage.d.ts +13 -19
  354. package/dist/hooks/session-todo-status.d.ts +2 -0
  355. package/dist/hooks/sisyphus-junior-notepad/hook.d.ts +11 -0
  356. package/dist/hooks/sisyphus-junior-notepad/index.d.ts +1 -11
  357. package/dist/hooks/start-work/index.d.ts +1 -16
  358. package/dist/hooks/start-work/start-work-hook.d.ts +16 -0
  359. package/dist/hooks/stop-continuation-guard/hook.d.ts +16 -0
  360. package/dist/hooks/stop-continuation-guard/index.d.ts +2 -16
  361. package/dist/hooks/subagent-question-blocker/hook.d.ts +2 -0
  362. package/dist/hooks/subagent-question-blocker/index.d.ts +1 -2
  363. package/dist/hooks/task-reminder/hook.d.ts +19 -0
  364. package/dist/hooks/task-reminder/index.d.ts +1 -19
  365. package/dist/hooks/task-resume-info/hook.d.ts +11 -0
  366. package/dist/hooks/task-resume-info/index.d.ts +1 -11
  367. package/dist/hooks/tasks-todowrite-disabler/hook.d.ts +14 -0
  368. package/dist/hooks/tasks-todowrite-disabler/index.d.ts +2 -14
  369. package/dist/hooks/think-mode/hook.d.ts +11 -0
  370. package/dist/hooks/think-mode/index.d.ts +1 -11
  371. package/dist/hooks/thinking-block-validator/hook.d.ts +30 -0
  372. package/dist/hooks/thinking-block-validator/index.d.ts +1 -30
  373. package/dist/hooks/todo-continuation-enforcer/abort-detection.d.ts +4 -0
  374. package/dist/hooks/todo-continuation-enforcer/constants.d.ts +7 -0
  375. package/dist/hooks/todo-continuation-enforcer/continuation-injection.d.ts +12 -0
  376. package/dist/hooks/todo-continuation-enforcer/countdown.d.ts +14 -0
  377. package/dist/hooks/todo-continuation-enforcer/handler.d.ts +15 -0
  378. package/dist/hooks/todo-continuation-enforcer/idle-event.d.ts +11 -0
  379. package/dist/hooks/todo-continuation-enforcer/index.d.ts +4 -0
  380. package/dist/hooks/todo-continuation-enforcer/message-directory.d.ts +1 -0
  381. package/dist/hooks/todo-continuation-enforcer/non-idle-events.d.ts +6 -0
  382. package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +9 -0
  383. package/dist/hooks/todo-continuation-enforcer/todo.d.ts +2 -0
  384. package/dist/hooks/todo-continuation-enforcer/types.d.ts +55 -0
  385. package/dist/hooks/unstable-agent-babysitter/index.d.ts +2 -69
  386. package/dist/hooks/unstable-agent-babysitter/task-message-analyzer.d.ts +23 -0
  387. package/dist/hooks/unstable-agent-babysitter/unstable-agent-babysitter-hook.d.ts +69 -0
  388. package/dist/hooks/write-existing-file-guard/hook.d.ts +2 -0
  389. package/dist/hooks/write-existing-file-guard/index.d.ts +1 -2
  390. package/dist/index.js +48950 -47298
  391. package/dist/plugin/available-categories.d.ts +3 -0
  392. package/dist/plugin/chat-message.d.ts +30 -0
  393. package/dist/plugin/chat-params.d.ts +28 -0
  394. package/dist/plugin/event.d.ts +25 -0
  395. package/dist/plugin/hooks/create-continuation-hooks.d.ts +27 -0
  396. package/dist/plugin/hooks/create-core-hooks.d.ts +41 -0
  397. package/dist/plugin/hooks/create-session-hooks.d.ts +32 -0
  398. package/dist/plugin/hooks/create-skill-hooks.d.ts +16 -0
  399. package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +19 -0
  400. package/dist/plugin/hooks/create-transform-hooks.d.ts +16 -0
  401. package/dist/plugin/messages-transform.d.ts +13 -0
  402. package/dist/plugin/recent-synthetic-idles.d.ts +6 -0
  403. package/dist/plugin/session-status-normalizer.d.ts +8 -0
  404. package/dist/plugin/skill-context.d.ts +14 -0
  405. package/dist/plugin/tool-execute-after.d.ts +12 -0
  406. package/dist/plugin/tool-execute-before.d.ts +12 -0
  407. package/dist/plugin/tool-registry.d.ts +16 -0
  408. package/dist/plugin/types.d.ts +12 -0
  409. package/dist/plugin/unstable-agent-babysitter.d.ts +15 -0
  410. package/dist/plugin-handlers/agent-config-handler.d.ts +11 -0
  411. package/dist/plugin-handlers/agent-priority-order.d.ts +1 -0
  412. package/dist/plugin-handlers/category-config-resolver.d.ts +2 -0
  413. package/dist/plugin-handlers/command-config-handler.d.ts +7 -0
  414. package/dist/plugin-handlers/config-handler.d.ts +1 -2
  415. package/dist/plugin-handlers/index.d.ts +9 -0
  416. package/dist/plugin-handlers/mcp-config-handler.d.ts +7 -0
  417. package/dist/plugin-handlers/plugin-components-loader.d.ts +22 -0
  418. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +23 -0
  419. package/dist/plugin-handlers/provider-config-handler.d.ts +5 -0
  420. package/dist/plugin-handlers/tool-config-handler.d.ts +6 -0
  421. package/dist/plugin-interface.d.ts +21 -0
  422. package/dist/shared/available-models-fetcher.d.ts +4 -0
  423. package/dist/shared/command-executor/embedded-commands.d.ts +7 -0
  424. package/dist/shared/command-executor/execute-command.d.ts +1 -0
  425. package/dist/shared/command-executor/execute-hook-command.d.ts +10 -0
  426. package/dist/shared/command-executor/home-directory.d.ts +1 -0
  427. package/dist/shared/command-executor/resolve-commands-in-text.d.ts +1 -0
  428. package/dist/shared/command-executor/shell-path.d.ts +2 -0
  429. package/dist/shared/command-executor.d.ts +4 -21
  430. package/dist/shared/connected-providers-cache.d.ts +4 -8
  431. package/dist/shared/fallback-model-availability.d.ts +5 -0
  432. package/dist/shared/index.d.ts +3 -1
  433. package/dist/shared/model-cache-availability.d.ts +2 -0
  434. package/dist/shared/model-name-matcher.d.ts +2 -0
  435. package/dist/shared/model-resolution-types.d.ts +23 -0
  436. package/dist/shared/models-json-cache-reader.d.ts +1 -0
  437. package/dist/shared/open-code-client-accessors.d.ts +3 -0
  438. package/dist/shared/open-code-client-shapes.d.ts +13 -0
  439. package/dist/shared/opencode-config-dir-types.d.ts +13 -0
  440. package/dist/shared/opencode-config-dir.d.ts +2 -13
  441. package/dist/shared/provider-models-cache-model-reader.d.ts +1 -0
  442. package/dist/shared/record-type-guard.d.ts +1 -0
  443. package/dist/shared/skill-path-resolver.d.ts +9 -0
  444. package/dist/shared/tmux/tmux-utils/environment.d.ts +3 -0
  445. package/dist/shared/tmux/tmux-utils/layout.d.ts +3 -0
  446. package/dist/shared/tmux/tmux-utils/pane-close.d.ts +1 -0
  447. package/dist/shared/tmux/tmux-utils/pane-dimensions.d.ts +5 -0
  448. package/dist/shared/tmux/tmux-utils/pane-replace.d.ts +3 -0
  449. package/dist/shared/tmux/tmux-utils/pane-spawn.d.ts +4 -0
  450. package/dist/shared/tmux/tmux-utils/server-health.d.ts +2 -0
  451. package/dist/shared/tmux/tmux-utils.d.ts +9 -17
  452. package/dist/tools/ast-grep/cli-binary-path-resolution.d.ts +5 -0
  453. package/dist/tools/ast-grep/cli.d.ts +1 -4
  454. package/dist/tools/ast-grep/constants.d.ts +5 -29
  455. package/dist/tools/ast-grep/environment-check.d.ts +20 -0
  456. package/dist/tools/ast-grep/language-support.d.ts +6 -0
  457. package/dist/tools/ast-grep/process-output-timeout.d.ts +12 -0
  458. package/dist/tools/ast-grep/sg-cli-path.d.ts +3 -0
  459. package/dist/tools/ast-grep/sg-compact-json-output.d.ts +2 -0
  460. package/dist/tools/background-task/clients.d.ts +45 -0
  461. package/dist/tools/background-task/create-background-cancel.d.ts +4 -0
  462. package/dist/tools/background-task/create-background-output.d.ts +3 -0
  463. package/dist/tools/background-task/create-background-task.d.ts +3 -0
  464. package/dist/tools/background-task/delay.d.ts +1 -0
  465. package/dist/tools/background-task/full-session-format.d.ts +9 -0
  466. package/dist/tools/background-task/message-dir.d.ts +1 -0
  467. package/dist/tools/background-task/session-messages.d.ts +3 -0
  468. package/dist/tools/background-task/task-result-format.d.ts +3 -0
  469. package/dist/tools/background-task/task-status-format.d.ts +2 -0
  470. package/dist/tools/background-task/time-format.d.ts +2 -0
  471. package/dist/tools/background-task/tools.d.ts +4 -7
  472. package/dist/tools/background-task/truncate-text.d.ts +1 -0
  473. package/dist/tools/call-omo-agent/agent-type-normalizer.d.ts +2 -0
  474. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +4 -0
  475. package/dist/tools/call-omo-agent/message-storage-directory.d.ts +1 -0
  476. package/dist/tools/call-omo-agent/session-completion-poller.d.ts +13 -0
  477. package/dist/tools/call-omo-agent/session-message-output-extractor.d.ts +17 -0
  478. package/dist/tools/call-omo-agent/subagent-session-creator.d.ts +10 -0
  479. package/dist/tools/call-omo-agent/subagent-session-prompter.d.ts +11 -0
  480. package/dist/tools/call-omo-agent/sync-agent-executor.d.ts +4 -0
  481. package/dist/tools/call-omo-agent/tool-context-with-metadata.d.ts +10 -0
  482. package/dist/tools/delegate-task/available-models.d.ts +2 -0
  483. package/dist/tools/delegate-task/background-continuation.d.ts +3 -0
  484. package/dist/tools/delegate-task/background-task.d.ts +7 -0
  485. package/dist/tools/delegate-task/category-resolver.d.ts +17 -0
  486. package/dist/tools/delegate-task/constants.d.ts +2 -1
  487. package/dist/tools/delegate-task/error-formatting.d.ts +15 -0
  488. package/dist/tools/delegate-task/executor-types.d.ts +51 -0
  489. package/dist/tools/delegate-task/executor.d.ts +11 -80
  490. package/dist/tools/delegate-task/model-selection.d.ts +11 -0
  491. package/dist/tools/delegate-task/model-string-parser.d.ts +7 -0
  492. package/dist/tools/delegate-task/parent-context-resolver.d.ts +3 -0
  493. package/dist/tools/delegate-task/sisyphus-junior-agent.d.ts +1 -0
  494. package/dist/tools/delegate-task/skill-content-resolver.d.ts +9 -0
  495. package/dist/tools/delegate-task/subagent-resolver.d.ts +11 -0
  496. package/dist/tools/delegate-task/sync-continuation-deps.d.ts +7 -0
  497. package/dist/tools/delegate-task/sync-continuation.d.ts +4 -0
  498. package/dist/tools/delegate-task/sync-prompt-sender.d.ts +16 -0
  499. package/dist/tools/delegate-task/sync-result-fetcher.d.ts +8 -0
  500. package/dist/tools/delegate-task/sync-session-creator.d.ts +14 -0
  501. package/dist/tools/delegate-task/sync-session-poller.d.ts +12 -0
  502. package/dist/tools/delegate-task/sync-task-deps.d.ts +11 -0
  503. package/dist/tools/delegate-task/sync-task.d.ts +9 -0
  504. package/dist/tools/delegate-task/time-formatter.d.ts +4 -0
  505. package/dist/tools/delegate-task/unstable-agent-task.d.ts +7 -0
  506. package/dist/tools/interactive-bash/index.d.ts +1 -1
  507. package/dist/tools/look-at/assistant-message-extractor.d.ts +1 -0
  508. package/dist/tools/look-at/look-at-arguments.d.ts +6 -0
  509. package/dist/tools/look-at/mime-type-inference.d.ts +3 -0
  510. package/dist/tools/look-at/multimodal-agent-metadata.d.ts +11 -0
  511. package/dist/tools/look-at/session-poller.d.ts +8 -0
  512. package/dist/tools/look-at/tools.d.ts +1 -7
  513. package/dist/tools/lsp/client.d.ts +3 -57
  514. package/dist/tools/lsp/config.d.ts +3 -17
  515. package/dist/tools/lsp/constants.d.ts +2 -6
  516. package/dist/tools/lsp/diagnostics-tool.d.ts +2 -0
  517. package/dist/tools/lsp/find-references-tool.d.ts +2 -0
  518. package/dist/tools/lsp/goto-definition-tool.d.ts +2 -0
  519. package/dist/tools/lsp/index.d.ts +3 -1
  520. package/dist/tools/lsp/language-config.d.ts +1 -0
  521. package/dist/tools/lsp/language-mappings.d.ts +3 -0
  522. package/dist/tools/lsp/lsp-client-connection.d.ts +4 -0
  523. package/dist/tools/lsp/lsp-client-transport.d.ts +20 -0
  524. package/dist/tools/lsp/lsp-client-wrapper.d.ts +8 -0
  525. package/dist/tools/lsp/lsp-client.d.ts +17 -0
  526. package/dist/tools/lsp/{utils.d.ts → lsp-formatters.d.ts} +2 -15
  527. package/dist/tools/lsp/lsp-manager-process-cleanup.d.ts +12 -0
  528. package/dist/tools/lsp/lsp-manager-temp-directory-cleanup.d.ts +8 -0
  529. package/dist/tools/lsp/lsp-process.d.ts +29 -0
  530. package/dist/tools/lsp/lsp-server.d.ts +23 -0
  531. package/dist/tools/lsp/rename-tools.d.ts +3 -0
  532. package/dist/tools/lsp/server-config-loader.d.ts +25 -0
  533. package/dist/tools/lsp/server-definitions.d.ts +3 -0
  534. package/dist/tools/lsp/server-installation.d.ts +1 -0
  535. package/dist/tools/lsp/server-resolution.d.ts +15 -0
  536. package/dist/tools/lsp/symbols-tool.d.ts +2 -0
  537. package/dist/tools/lsp/tools.d.ts +5 -7
  538. package/dist/tools/lsp/workspace-edit.d.ts +8 -0
  539. package/dist/tools/slashcommand/command-discovery.d.ts +2 -0
  540. package/dist/tools/slashcommand/command-output-formatter.d.ts +3 -0
  541. package/dist/tools/slashcommand/skill-command-converter.d.ts +3 -0
  542. package/dist/tools/slashcommand/slashcommand-description.d.ts +3 -0
  543. package/dist/tools/slashcommand/slashcommand-tool.d.ts +4 -0
  544. package/dist/tools/slashcommand/tools.d.ts +2 -5
  545. package/dist/tools/task/task-action-create.d.ts +4 -0
  546. package/dist/tools/task/task-action-delete.d.ts +2 -0
  547. package/dist/tools/task/task-action-get.d.ts +2 -0
  548. package/dist/tools/task/task-action-list.d.ts +2 -0
  549. package/dist/tools/task/task-action-update.d.ts +2 -0
  550. package/dist/tools/task/task-id-validator.d.ts +1 -0
  551. package/dist/tools/task/types.d.ts +5 -5
  552. package/package.json +8 -8
  553. package/dist/agents/utils.d.ts +0 -16
  554. package/dist/hooks/todo-continuation-enforcer.d.ts +0 -19
  555. package/dist/tools/delegate-task/helpers.d.ts +0 -30
  556. /package/dist/agents/atlas/{utils.d.ts → prompt-section-builder.d.ts} +0 -0
  557. /package/dist/hooks/keyword-detector/ultrawork/{utils.d.ts → source-detector.d.ts} +0 -0
  558. /package/dist/tools/ast-grep/{utils.d.ts → result-formatter.d.ts} +0 -0
  559. /package/dist/tools/glob/{utils.d.ts → result-formatter.d.ts} +0 -0
  560. /package/dist/tools/grep/{utils.d.ts → result-formatter.d.ts} +0 -0
  561. /package/dist/tools/interactive-bash/{utils.d.ts → tmux-path-resolver.d.ts} +0 -0
  562. /package/dist/tools/session-manager/{utils.d.ts → session-formatter.d.ts} +0 -0
@@ -1,26 +1 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- interface ToolExecuteInput {
3
- tool: string;
4
- sessionID: string;
5
- callID: string;
6
- }
7
- interface ToolExecuteOutput {
8
- title: string;
9
- output: string;
10
- metadata: unknown;
11
- }
12
- interface ToolExecuteBeforeOutput {
13
- args: unknown;
14
- }
15
- interface EventInput {
16
- event: {
17
- type: string;
18
- properties?: unknown;
19
- };
20
- }
21
- export declare function createDirectoryAgentsInjectorHook(ctx: PluginInput): {
22
- "tool.execute.before": (input: ToolExecuteInput, output: ToolExecuteBeforeOutput) => Promise<void>;
23
- "tool.execute.after": (input: ToolExecuteInput, output: ToolExecuteOutput) => Promise<void>;
24
- event: ({ event }: EventInput) => Promise<void>;
25
- };
26
- export {};
1
+ export { createDirectoryAgentsInjectorHook } from "./hook";
@@ -0,0 +1,16 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { createDynamicTruncator } from "../../shared/dynamic-truncator";
3
+ type DynamicTruncator = ReturnType<typeof createDynamicTruncator>;
4
+ export declare function processFilePathForAgentsInjection(input: {
5
+ ctx: PluginInput;
6
+ truncator: DynamicTruncator;
7
+ sessionCaches: Map<string, Set<string>>;
8
+ filePath: string;
9
+ sessionID: string;
10
+ output: {
11
+ title: string;
12
+ output: string;
13
+ metadata: unknown;
14
+ };
15
+ }): Promise<void>;
16
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare function resolveFilePath(rootDirectory: string, path: string): string | null;
2
+ export declare function findReadmeMdUp(input: {
3
+ startDir: string;
4
+ rootDir: string;
5
+ }): string[];
@@ -0,0 +1,26 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ interface ToolExecuteInput {
3
+ tool: string;
4
+ sessionID: string;
5
+ callID: string;
6
+ }
7
+ interface ToolExecuteOutput {
8
+ title: string;
9
+ output: string;
10
+ metadata: unknown;
11
+ }
12
+ interface ToolExecuteBeforeOutput {
13
+ args: unknown;
14
+ }
15
+ interface EventInput {
16
+ event: {
17
+ type: string;
18
+ properties?: unknown;
19
+ };
20
+ }
21
+ export declare function createDirectoryReadmeInjectorHook(ctx: PluginInput): {
22
+ "tool.execute.before": (input: ToolExecuteInput, output: ToolExecuteBeforeOutput) => Promise<void>;
23
+ "tool.execute.after": (input: ToolExecuteInput, output: ToolExecuteOutput) => Promise<void>;
24
+ event: ({ event }: EventInput) => Promise<void>;
25
+ };
26
+ export {};
@@ -1,26 +1 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- interface ToolExecuteInput {
3
- tool: string;
4
- sessionID: string;
5
- callID: string;
6
- }
7
- interface ToolExecuteOutput {
8
- title: string;
9
- output: string;
10
- metadata: unknown;
11
- }
12
- interface ToolExecuteBeforeOutput {
13
- args: unknown;
14
- }
15
- interface EventInput {
16
- event: {
17
- type: string;
18
- properties?: unknown;
19
- };
20
- }
21
- export declare function createDirectoryReadmeInjectorHook(ctx: PluginInput): {
22
- "tool.execute.before": (input: ToolExecuteInput, output: ToolExecuteBeforeOutput) => Promise<void>;
23
- "tool.execute.after": (input: ToolExecuteInput, output: ToolExecuteOutput) => Promise<void>;
24
- event: ({ event }: EventInput) => Promise<void>;
25
- };
26
- export {};
1
+ export { createDirectoryReadmeInjectorHook } from "./hook";
@@ -0,0 +1,16 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { createDynamicTruncator } from "../../shared/dynamic-truncator";
3
+ type DynamicTruncator = ReturnType<typeof createDynamicTruncator>;
4
+ export declare function processFilePathForReadmeInjection(input: {
5
+ ctx: PluginInput;
6
+ truncator: DynamicTruncator;
7
+ sessionCaches: Map<string, Set<string>>;
8
+ filePath: string;
9
+ sessionID: string;
10
+ output: {
11
+ title: string;
12
+ output: string;
13
+ metadata: unknown;
14
+ };
15
+ }): Promise<void>;
16
+ export {};
@@ -0,0 +1,31 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ /**
3
+ * Known Edit tool error patterns that indicate the AI made a mistake
4
+ */
5
+ export declare const EDIT_ERROR_PATTERNS: readonly ["oldString and newString must be different", "oldString not found", "oldString found multiple times"];
6
+ /**
7
+ * System reminder injected when Edit tool fails due to AI mistake
8
+ * Short, direct, and commanding - forces immediate corrective action
9
+ */
10
+ export declare const EDIT_ERROR_REMINDER = "\n[EDIT ERROR - IMMEDIATE ACTION REQUIRED]\n\nYou made an Edit mistake. STOP and do this NOW:\n\n1. READ the file immediately to see its ACTUAL current state\n2. VERIFY what the content really looks like (your assumption was wrong)\n3. APOLOGIZE briefly to the user for the error\n4. CONTINUE with corrected action based on the real file content\n\nDO NOT attempt another edit until you've read and verified the file state.\n";
11
+ /**
12
+ * Detects Edit tool errors caused by AI mistakes and injects a recovery reminder
13
+ *
14
+ * This hook catches common Edit tool failures:
15
+ * - oldString and newString must be different (trying to "edit" to same content)
16
+ * - oldString not found (wrong assumption about file content)
17
+ * - oldString found multiple times (ambiguous match, need more context)
18
+ *
19
+ * @see https://github.com/sst/opencode/issues/4718
20
+ */
21
+ export declare function createEditErrorRecoveryHook(_ctx: PluginInput): {
22
+ "tool.execute.after": (input: {
23
+ tool: string;
24
+ sessionID: string;
25
+ callID: string;
26
+ }, output: {
27
+ title: string;
28
+ output: string;
29
+ metadata: unknown;
30
+ }) => Promise<void>;
31
+ };
@@ -1,31 +1 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- /**
3
- * Known Edit tool error patterns that indicate the AI made a mistake
4
- */
5
- export declare const EDIT_ERROR_PATTERNS: readonly ["oldString and newString must be different", "oldString not found", "oldString found multiple times"];
6
- /**
7
- * System reminder injected when Edit tool fails due to AI mistake
8
- * Short, direct, and commanding - forces immediate corrective action
9
- */
10
- export declare const EDIT_ERROR_REMINDER = "\n[EDIT ERROR - IMMEDIATE ACTION REQUIRED]\n\nYou made an Edit mistake. STOP and do this NOW:\n\n1. READ the file immediately to see its ACTUAL current state\n2. VERIFY what the content really looks like (your assumption was wrong)\n3. APOLOGIZE briefly to the user for the error\n4. CONTINUE with corrected action based on the real file content\n\nDO NOT attempt another edit until you've read and verified the file state.\n";
11
- /**
12
- * Detects Edit tool errors caused by AI mistakes and injects a recovery reminder
13
- *
14
- * This hook catches common Edit tool failures:
15
- * - oldString and newString must be different (trying to "edit" to same content)
16
- * - oldString not found (wrong assumption about file content)
17
- * - oldString found multiple times (ambiguous match, need more context)
18
- *
19
- * @see https://github.com/sst/opencode/issues/4718
20
- */
21
- export declare function createEditErrorRecoveryHook(_ctx: PluginInput): {
22
- "tool.execute.after": (input: {
23
- tool: string;
24
- sessionID: string;
25
- callID: string;
26
- }, output: {
27
- title: string;
28
- output: string;
29
- metadata: unknown;
30
- }) => Promise<void>;
31
- };
1
+ export { createEditErrorRecoveryHook, EDIT_ERROR_PATTERNS, EDIT_ERROR_REMINDER, } from "./hook";
@@ -1,6 +1,10 @@
1
1
  export { createTodoContinuationEnforcer, type TodoContinuationEnforcer } from "./todo-continuation-enforcer";
2
2
  export { createContextWindowMonitorHook } from "./context-window-monitor";
3
3
  export { createSessionNotification } from "./session-notification";
4
+ export { sendSessionNotification, playSessionNotificationSound, detectPlatform, getDefaultSoundPath } from "./session-notification-sender";
5
+ export { buildWindowsToastScript, escapeAppleScriptText, escapePowerShellSingleQuotedText } from "./session-notification-formatting";
6
+ export { hasIncompleteTodos } from "./session-todo-status";
7
+ export { createIdleNotificationScheduler } from "./session-notification-scheduler";
4
8
  export { createSessionRecoveryHook, type SessionRecoveryHook, type SessionRecoveryOptions } from "./session-recovery";
5
9
  export { createCommentCheckerHooks } from "./comment-checker";
6
10
  export { createToolOutputTruncatorHook } from "./tool-output-truncator";
@@ -1,4 +1,3 @@
1
1
  export { createInteractiveBashSessionHook } from "./hook";
2
- export * from "./types";
3
- export * from "./constants";
4
- export * from "./storage";
2
+ export { createInteractiveBashSessionTracker } from "./interactive-bash-session-tracker";
3
+ export { parseTmuxCommand } from "./tmux-command-parser";
@@ -0,0 +1,23 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ interface ToolExecuteInput {
3
+ tool: string;
4
+ sessionID: string;
5
+ callID: string;
6
+ args?: Record<string, unknown>;
7
+ }
8
+ interface ToolExecuteOutput {
9
+ title: string;
10
+ output: string;
11
+ metadata: unknown;
12
+ }
13
+ interface EventInput {
14
+ event: {
15
+ type: string;
16
+ properties?: unknown;
17
+ };
18
+ }
19
+ export declare function createInteractiveBashSessionHook(ctx: PluginInput): {
20
+ "tool.execute.after": (input: ToolExecuteInput, output: ToolExecuteOutput) => Promise<void>;
21
+ event: ({ event }: EventInput) => Promise<void>;
22
+ };
23
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { InteractiveBashSessionState } from "./types";
2
+ type AbortSession = (args: {
3
+ path: {
4
+ id: string;
5
+ };
6
+ }) => Promise<unknown>;
7
+ export declare function createInteractiveBashSessionTracker(options: {
8
+ abortSession: AbortSession;
9
+ }): {
10
+ getOrCreateState: (sessionID: string) => InteractiveBashSessionState;
11
+ handleSessionDeleted: (sessionID: string) => Promise<void>;
12
+ handleTmuxCommand: (input: {
13
+ sessionID: string;
14
+ subCommand: string;
15
+ sessionName: string | null;
16
+ toolOutput: string;
17
+ }) => {
18
+ reminderToAppend: string | null;
19
+ };
20
+ };
21
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare function parseTmuxCommand(tmuxCommand: string): {
2
+ subCommand: string;
3
+ sessionName: string | null;
4
+ };
@@ -0,0 +1,20 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { ContextCollector } from "../../features/context-injector";
3
+ export declare function createKeywordDetectorHook(ctx: PluginInput, _collector?: ContextCollector): {
4
+ "chat.message": (input: {
5
+ sessionID: string;
6
+ agent?: string;
7
+ model?: {
8
+ providerID: string;
9
+ modelID: string;
10
+ };
11
+ messageID?: string;
12
+ }, output: {
13
+ message: Record<string, unknown>;
14
+ parts: Array<{
15
+ type: string;
16
+ text?: string;
17
+ [key: string]: unknown;
18
+ }>;
19
+ }) => Promise<void>;
20
+ };
@@ -1,23 +1,4 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- import type { ContextCollector } from "../../features/context-injector";
3
1
  export * from "./detector";
4
2
  export * from "./constants";
5
3
  export * from "./types";
6
- export declare function createKeywordDetectorHook(ctx: PluginInput, collector?: ContextCollector): {
7
- "chat.message": (input: {
8
- sessionID: string;
9
- agent?: string;
10
- model?: {
11
- providerID: string;
12
- modelID: string;
13
- };
14
- messageID?: string;
15
- }, output: {
16
- message: Record<string, unknown>;
17
- parts: Array<{
18
- type: string;
19
- text?: string;
20
- [key: string]: unknown;
21
- }>;
22
- }) => Promise<void>;
23
- };
4
+ export { createKeywordDetectorHook } from "./hook";
@@ -6,5 +6,5 @@
6
6
  * - Parallel execution emphasized - fire agents and continue working
7
7
  * - Simple workflow: EXPLORES → GATHER → PLAN → DELEGATE
8
8
  */
9
- export declare const ULTRAWORK_DEFAULT_MESSAGE = "<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Ultrathink before acting.\n\n## **ABSOLUTE CERTAINTY REQUIRED - DO NOT SKIP THIS**\n\n**YOU MUST NOT START ANY IMPLEMENTATION UNTIL YOU ARE 100% CERTAIN.**\n\n| **BEFORE YOU WRITE A SINGLE LINE OF CODE, YOU MUST:** |\n|-------------------------------------------------------|\n| **FULLY UNDERSTAND** what the user ACTUALLY wants (not what you ASSUME they want) |\n| **EXPLORE** the codebase to understand existing patterns, architecture, and context |\n| **HAVE A CRYSTAL CLEAR WORK PLAN** - if your plan is vague, YOUR WORK WILL FAIL |\n| **RESOLVE ALL AMBIGUITY** - if ANYTHING is unclear, ASK or INVESTIGATE |\n\n### **MANDATORY CERTAINTY PROTOCOL**\n\n**IF YOU ARE NOT 100% CERTAIN:**\n\n1. **THINK DEEPLY** - What is the user's TRUE intent? What problem are they REALLY trying to solve?\n2. **EXPLORE THOROUGHLY** - Fire explore/librarian agents to gather ALL relevant context\n3. **CONSULT SPECIALISTS** - For hard/complex tasks, DO NOT struggle alone. Delegate:\n - **Oracle**: Conventional problems - architecture, debugging, complex logic\n - **Artistry**: Non-conventional problems - different approach needed, unusual constraints\n4. **ASK THE USER** - If ambiguity remains after exploration, ASK. Don't guess.\n\n**SIGNS YOU ARE NOT READY TO IMPLEMENT:**\n- You're making assumptions about requirements\n- You're unsure which files to modify\n- You don't understand how existing code works\n- Your plan has \"probably\" or \"maybe\" in it\n- You can't explain the exact steps you'll take\n\n**WHEN IN DOUBT:**\n```\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Find [X] patterns in codebase\", run_in_background=true)\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"Find docs/examples for [Y]\", run_in_background=true)\ntask(subagent_type=\"oracle\", load_skills=[], prompt=\"Review my approach: [describe plan]\", run_in_background=false)\n```\n\n**ONLY AFTER YOU HAVE:**\n- Gathered sufficient context via agents\n- Resolved all ambiguities\n- Created a precise, step-by-step work plan\n- Achieved 100% confidence in your understanding\n\n**...THEN AND ONLY THEN MAY YOU BEGIN IMPLEMENTATION.**\n\n---\n\n## **NO EXCUSES. NO COMPROMISES. DELIVER WHAT WAS ASKED.**\n\n**THE USER'S ORIGINAL REQUEST IS SACRED. YOU MUST FULFILL IT EXACTLY.**\n\n| VIOLATION | CONSEQUENCE |\n|-----------|-------------|\n| \"I couldn't because...\" | **UNACCEPTABLE.** Find a way or ask for help. |\n| \"This is a simplified version...\" | **UNACCEPTABLE.** Deliver the FULL implementation. |\n| \"You can extend this later...\" | **UNACCEPTABLE.** Finish it NOW. |\n| \"Due to limitations...\" | **UNACCEPTABLE.** Use agents, tools, whatever it takes. |\n| \"I made some assumptions...\" | **UNACCEPTABLE.** You should have asked FIRST. |\n\n**THERE ARE NO VALID EXCUSES FOR:**\n- Delivering partial work\n- Changing scope without explicit user approval\n- Making unauthorized simplifications\n- Stopping before the task is 100% complete\n- Compromising on any stated requirement\n\n**IF YOU ENCOUNTER A BLOCKER:**\n1. **DO NOT** give up\n2. **DO NOT** deliver a compromised version\n3. **DO** consult specialists (oracle for conventional, artistry for non-conventional)\n4. **DO** ask the user for guidance\n5. **DO** explore alternative approaches\n\n**THE USER ASKED FOR X. DELIVER EXACTLY X. PERIOD.**\n\n---\n\nYOU MUST LEVERAGE ALL AVAILABLE AGENTS / **CATEGORY + SKILLS** TO THEIR FULLEST POTENTIAL.\nTELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.\n\n## MANDATORY: PLAN AGENT INVOCATION (NON-NEGOTIABLE)\n\n**YOU MUST ALWAYS INVOKE THE PLAN AGENT FOR ANY NON-TRIVIAL TASK.**\n\n| Condition | Action |\n|-----------|--------|\n| Task has 2+ steps | MUST call plan agent |\n| Task scope unclear | MUST call plan agent |\n| Implementation required | MUST call plan agent |\n| Architecture decision needed | MUST call plan agent |\n\n```\ntask(subagent_type=\"plan\", load_skills=[], prompt=\"<gathered context + user request>\")\n```\n\n**WHY PLAN AGENT IS MANDATORY:**\n- Plan agent analyzes dependencies and parallel execution opportunities\n- Plan agent outputs a **parallel task graph** with waves and dependencies\n- Plan agent provides structured TODO list with category + skills per task\n- YOU are an orchestrator, NOT an implementer\n\n### SESSION CONTINUITY WITH PLAN AGENT (CRITICAL)\n\n**Plan agent returns a session_id. USE IT for follow-up interactions.**\n\n| Scenario | Action |\n|----------|--------|\n| Plan agent asks clarifying questions | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"<your answer>\")` |\n| Need to refine the plan | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"Please adjust: <feedback>\")` |\n| Plan needs more detail | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"Add more detail to Task N\")` |\n\n**WHY SESSION_ID IS CRITICAL:**\n- Plan agent retains FULL conversation context\n- No repeated exploration or context gathering\n- Saves 70%+ tokens on follow-ups\n- Maintains interview continuity until plan is finalized\n\n```\n// WRONG: Starting fresh loses all context\ntask(subagent_type=\"plan\", load_skills=[], prompt=\"Here's more info...\")\n\n// CORRECT: Resume preserves everything\ntask(session_id=\"ses_abc123\", load_skills=[], prompt=\"Here's my answer to your question: ...\")\n```\n\n**FAILURE TO CALL PLAN AGENT = INCOMPLETE WORK.**\n\n---\n\n## AGENTS / **CATEGORY + SKILLS** UTILIZATION PRINCIPLES\n\n**DEFAULT BEHAVIOR: DELEGATE. DO NOT WORK YOURSELF.**\n\n| Task Type | Action | Why |\n|-----------|--------|-----|\n| Codebase exploration | task(subagent_type=\"explore\", load_skills=[], run_in_background=true) | Parallel, context-efficient |\n| Documentation lookup | task(subagent_type=\"librarian\", load_skills=[], run_in_background=true) | Specialized knowledge |\n| Planning | task(subagent_type=\"plan\", load_skills=[]) | Parallel task graph + structured TODO list |\n| Hard problem (conventional) | task(subagent_type=\"oracle\", load_skills=[]) | Architecture, debugging, complex logic |\n| Hard problem (non-conventional) | task(category=\"artistry\", load_skills=[...]) | Different approach needed |\n| Implementation | task(category=\"...\", load_skills=[...]) | Domain-optimized models |\n\n**CATEGORY + SKILL DELEGATION:**\n```\n// Frontend work\ntask(category=\"visual-engineering\", load_skills=[\"frontend-ui-ux\"])\n\n// Complex logic\ntask(category=\"ultrabrain\", load_skills=[\"typescript-programmer\"])\n\n// Quick fixes\ntask(category=\"quick\", load_skills=[\"git-master\"])\n```\n\n**YOU SHOULD ONLY DO IT YOURSELF WHEN:**\n- Task is trivially simple (1-2 lines, obvious change)\n- You have ALL context already loaded\n- Delegation overhead exceeds task complexity\n\n**OTHERWISE: DELEGATE. ALWAYS.**\n\n---\n\n## EXECUTION RULES\n- **TODO**: Track EVERY step. Mark complete IMMEDIATELY after each.\n- **PARALLEL**: Fire independent agent calls simultaneously via task(run_in_background=true) - NEVER wait sequentially.\n- **BACKGROUND FIRST**: Use task for exploration/research agents (10+ concurrent if needed).\n- **VERIFY**: Re-read request after completion. Check ALL requirements met before reporting done.\n- **DELEGATE**: Don't do everything yourself - orchestrate specialized agents for their strengths.\n\n## WORKFLOW\n1. Analyze the request and identify required capabilities\n2. Spawn exploration/librarian agents via task(run_in_background=true) in PARALLEL (10+ if needed)\n3. Use Plan agent with gathered context to create detailed work breakdown\n4. Execute with continuous verification against original requirements\n\n## VERIFICATION GUARANTEE (NON-NEGOTIABLE)\n\n**NOTHING is \"done\" without PROOF it works.**\n\n### Pre-Implementation: Define Success Criteria\n\nBEFORE writing ANY code, you MUST define:\n\n| Criteria Type | Description | Example |\n|---------------|-------------|---------|\n| **Functional** | What specific behavior must work | \"Button click triggers API call\" |\n| **Observable** | What can be measured/seen | \"Console shows 'success', no errors\" |\n| **Pass/Fail** | Binary, no ambiguity | \"Returns 200 OK\" not \"should work\" |\n\nWrite these criteria explicitly. Share with user if scope is non-trivial.\n\n### Test Plan Template (MANDATORY for non-trivial tasks)\n\n```\n## Test Plan\n### Objective: [What we're verifying]\n### Prerequisites: [Setup needed]\n### Test Cases:\n1. [Test Name]: [Input] \u2192 [Expected Output] \u2192 [How to verify]\n2. ...\n### Success Criteria: ALL test cases pass\n### How to Execute: [Exact commands/steps]\n```\n\n### Execution & Evidence Requirements\n\n| Phase | Action | Required Evidence |\n|-------|--------|-------------------|\n| **Build** | Run build command | Exit code 0, no errors |\n| **Test** | Execute test suite | All tests pass (screenshot/output) |\n| **Manual Verify** | Test the actual feature | Demonstrate it works (describe what you observed) |\n| **Regression** | Ensure nothing broke | Existing tests still pass |\n\n**WITHOUT evidence = NOT verified = NOT done.**\n\n### TDD Workflow (when test infrastructure exists)\n\n1. **SPEC**: Define what \"working\" means (success criteria above)\n2. **RED**: Write failing test \u2192 Run it \u2192 Confirm it FAILS\n3. **GREEN**: Write minimal code \u2192 Run test \u2192 Confirm it PASSES\n4. **REFACTOR**: Clean up \u2192 Tests MUST stay green\n5. **VERIFY**: Run full test suite, confirm no regressions\n6. **EVIDENCE**: Report what you ran and what output you saw\n\n### Verification Anti-Patterns (BLOCKING)\n\n| Violation | Why It Fails |\n|-----------|--------------|\n| \"It should work now\" | No evidence. Run it. |\n| \"I added the tests\" | Did they pass? Show output. |\n| \"Fixed the bug\" | How do you know? What did you test? |\n| \"Implementation complete\" | Did you verify against success criteria? |\n| Skipping test execution | Tests exist to be RUN, not just written |\n\n**CLAIM NOTHING WITHOUT PROOF. EXECUTE. VERIFY. SHOW EVIDENCE.**\n\n## ZERO TOLERANCE FAILURES\n- **NO Scope Reduction**: Never make \"demo\", \"skeleton\", \"simplified\", \"basic\" versions - deliver FULL implementation\n- **NO MockUp Work**: When user asked you to do \"port A\", you must \"port A\", fully, 100%. No Extra feature, No reduced feature, no mock data, fully working 100% port.\n- **NO Partial Completion**: Never stop at 60-80% saying \"you can extend this...\" - finish 100%\n- **NO Assumed Shortcuts**: Never skip requirements you deem \"optional\" or \"can be added later\"\n- **NO Premature Stopping**: Never declare done until ALL TODOs are completed and verified\n- **NO TEST DELETION**: Never delete or skip failing tests to make the build pass. Fix the code, not the tests.\n\nTHE USER ASKED FOR X. DELIVER EXACTLY X. NOT A SUBSET. NOT A DEMO. NOT A STARTING POINT.\n\n1. EXPLORES + LIBRARIANS\n2. GATHER -> PLAN AGENT SPAWN\n3. WORK BY DELEGATING TO ANOTHER AGENTS\n\nNOW.\n\n</ultrawork-mode>\n\n---\n\n";
9
+ export declare const ULTRAWORK_DEFAULT_MESSAGE = "<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Ultrathink before acting.\n\n## **ABSOLUTE CERTAINTY REQUIRED - DO NOT SKIP THIS**\n\n**YOU MUST NOT START ANY IMPLEMENTATION UNTIL YOU ARE 100% CERTAIN.**\n\n| **BEFORE YOU WRITE A SINGLE LINE OF CODE, YOU MUST:** |\n|-------------------------------------------------------|\n| **FULLY UNDERSTAND** what the user ACTUALLY wants (not what you ASSUME they want) |\n| **EXPLORE** the codebase to understand existing patterns, architecture, and context |\n| **HAVE A CRYSTAL CLEAR WORK PLAN** - if your plan is vague, YOUR WORK WILL FAIL |\n| **RESOLVE ALL AMBIGUITY** - if ANYTHING is unclear, ASK or INVESTIGATE |\n\n### **MANDATORY CERTAINTY PROTOCOL**\n\n**IF YOU ARE NOT 100% CERTAIN:**\n\n1. **THINK DEEPLY** - What is the user's TRUE intent? What problem are they REALLY trying to solve?\n2. **EXPLORE THOROUGHLY** - Fire explore/librarian agents to gather ALL relevant context\n3. **CONSULT SPECIALISTS** - For hard/complex tasks, DO NOT struggle alone. Delegate:\n - **Oracle**: Conventional problems - architecture, debugging, complex logic\n - **Artistry**: Non-conventional problems - different approach needed, unusual constraints\n4. **ASK THE USER** - If ambiguity remains after exploration, ASK. Don't guess.\n\n**SIGNS YOU ARE NOT READY TO IMPLEMENT:**\n- You're making assumptions about requirements\n- You're unsure which files to modify\n- You don't understand how existing code works\n- Your plan has \"probably\" or \"maybe\" in it\n- You can't explain the exact steps you'll take\n\n**WHEN IN DOUBT:**\n```\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"I'm implementing [TASK DESCRIPTION] and need to understand [SPECIFIC KNOWLEDGE GAP]. Find [X] patterns in the codebase \u2014 show file paths, implementation approach, and conventions used. I'll use this to [HOW RESULTS WILL BE USED]. Focus on src/ directories, skip test files unless test patterns are specifically needed. Return concrete file paths with brief descriptions of what each file does.\", run_in_background=true)\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"I'm working with [LIBRARY/TECHNOLOGY] and need [SPECIFIC INFORMATION]. Find official documentation and production-quality examples for [Y] \u2014 specifically: API reference, configuration options, recommended patterns, and common pitfalls. Skip beginner tutorials. I'll use this to [DECISION THIS WILL INFORM].\", run_in_background=true)\ntask(subagent_type=\"oracle\", load_skills=[], prompt=\"I need architectural review of my approach to [TASK]. Here's my plan: [DESCRIBE PLAN WITH SPECIFIC FILES AND CHANGES]. My concerns are: [LIST SPECIFIC UNCERTAINTIES]. Please evaluate: correctness of approach, potential issues I'm missing, and whether a better alternative exists.\", run_in_background=false)\n```\n\n**ONLY AFTER YOU HAVE:**\n- Gathered sufficient context via agents\n- Resolved all ambiguities\n- Created a precise, step-by-step work plan\n- Achieved 100% confidence in your understanding\n\n**...THEN AND ONLY THEN MAY YOU BEGIN IMPLEMENTATION.**\n\n---\n\n## **NO EXCUSES. NO COMPROMISES. DELIVER WHAT WAS ASKED.**\n\n**THE USER'S ORIGINAL REQUEST IS SACRED. YOU MUST FULFILL IT EXACTLY.**\n\n| VIOLATION | CONSEQUENCE |\n|-----------|-------------|\n| \"I couldn't because...\" | **UNACCEPTABLE.** Find a way or ask for help. |\n| \"This is a simplified version...\" | **UNACCEPTABLE.** Deliver the FULL implementation. |\n| \"You can extend this later...\" | **UNACCEPTABLE.** Finish it NOW. |\n| \"Due to limitations...\" | **UNACCEPTABLE.** Use agents, tools, whatever it takes. |\n| \"I made some assumptions...\" | **UNACCEPTABLE.** You should have asked FIRST. |\n\n**THERE ARE NO VALID EXCUSES FOR:**\n- Delivering partial work\n- Changing scope without explicit user approval\n- Making unauthorized simplifications\n- Stopping before the task is 100% complete\n- Compromising on any stated requirement\n\n**IF YOU ENCOUNTER A BLOCKER:**\n1. **DO NOT** give up\n2. **DO NOT** deliver a compromised version\n3. **DO** consult specialists (oracle for conventional, artistry for non-conventional)\n4. **DO** ask the user for guidance\n5. **DO** explore alternative approaches\n\n**THE USER ASKED FOR X. DELIVER EXACTLY X. PERIOD.**\n\n---\n\nYOU MUST LEVERAGE ALL AVAILABLE AGENTS / **CATEGORY + SKILLS** TO THEIR FULLEST POTENTIAL.\nTELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.\n\n## MANDATORY: PLAN AGENT INVOCATION (NON-NEGOTIABLE)\n\n**YOU MUST ALWAYS INVOKE THE PLAN AGENT FOR ANY NON-TRIVIAL TASK.**\n\n| Condition | Action |\n|-----------|--------|\n| Task has 2+ steps | MUST call plan agent |\n| Task scope unclear | MUST call plan agent |\n| Implementation required | MUST call plan agent |\n| Architecture decision needed | MUST call plan agent |\n\n```\ntask(subagent_type=\"plan\", load_skills=[], prompt=\"<gathered context + user request>\")\n```\n\n**WHY PLAN AGENT IS MANDATORY:**\n- Plan agent analyzes dependencies and parallel execution opportunities\n- Plan agent outputs a **parallel task graph** with waves and dependencies\n- Plan agent provides structured TODO list with category + skills per task\n- YOU are an orchestrator, NOT an implementer\n\n### SESSION CONTINUITY WITH PLAN AGENT (CRITICAL)\n\n**Plan agent returns a session_id. USE IT for follow-up interactions.**\n\n| Scenario | Action |\n|----------|--------|\n| Plan agent asks clarifying questions | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"<your answer>\")` |\n| Need to refine the plan | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"Please adjust: <feedback>\")` |\n| Plan needs more detail | `task(session_id=\"{returned_session_id}\", load_skills=[], prompt=\"Add more detail to Task N\")` |\n\n**WHY SESSION_ID IS CRITICAL:**\n- Plan agent retains FULL conversation context\n- No repeated exploration or context gathering\n- Saves 70%+ tokens on follow-ups\n- Maintains interview continuity until plan is finalized\n\n```\n// WRONG: Starting fresh loses all context\ntask(subagent_type=\"plan\", load_skills=[], prompt=\"Here's more info...\")\n\n// CORRECT: Resume preserves everything\ntask(session_id=\"ses_abc123\", load_skills=[], prompt=\"Here's my answer to your question: ...\")\n```\n\n**FAILURE TO CALL PLAN AGENT = INCOMPLETE WORK.**\n\n---\n\n## AGENTS / **CATEGORY + SKILLS** UTILIZATION PRINCIPLES\n\n**DEFAULT BEHAVIOR: DELEGATE. DO NOT WORK YOURSELF.**\n\n| Task Type | Action | Why |\n|-----------|--------|-----|\n| Codebase exploration | task(subagent_type=\"explore\", load_skills=[], run_in_background=true) | Parallel, context-efficient |\n| Documentation lookup | task(subagent_type=\"librarian\", load_skills=[], run_in_background=true) | Specialized knowledge |\n| Planning | task(subagent_type=\"plan\", load_skills=[]) | Parallel task graph + structured TODO list |\n| Hard problem (conventional) | task(subagent_type=\"oracle\", load_skills=[]) | Architecture, debugging, complex logic |\n| Hard problem (non-conventional) | task(category=\"artistry\", load_skills=[...]) | Different approach needed |\n| Implementation | task(category=\"...\", load_skills=[...]) | Domain-optimized models |\n\n**CATEGORY + SKILL DELEGATION:**\n```\n// Frontend work\ntask(category=\"visual-engineering\", load_skills=[\"frontend-ui-ux\"])\n\n// Complex logic\ntask(category=\"ultrabrain\", load_skills=[\"typescript-programmer\"])\n\n// Quick fixes\ntask(category=\"quick\", load_skills=[\"git-master\"])\n```\n\n**YOU SHOULD ONLY DO IT YOURSELF WHEN:**\n- Task is trivially simple (1-2 lines, obvious change)\n- You have ALL context already loaded\n- Delegation overhead exceeds task complexity\n\n**OTHERWISE: DELEGATE. ALWAYS.**\n\n---\n\n## EXECUTION RULES\n- **TODO**: Track EVERY step. Mark complete IMMEDIATELY after each.\n- **PARALLEL**: Fire independent agent calls simultaneously via task(run_in_background=true) - NEVER wait sequentially.\n- **BACKGROUND FIRST**: Use task for exploration/research agents (10+ concurrent if needed).\n- **VERIFY**: Re-read request after completion. Check ALL requirements met before reporting done.\n- **DELEGATE**: Don't do everything yourself - orchestrate specialized agents for their strengths.\n\n## WORKFLOW\n1. Analyze the request and identify required capabilities\n2. Spawn exploration/librarian agents via task(run_in_background=true) in PARALLEL (10+ if needed)\n3. Use Plan agent with gathered context to create detailed work breakdown\n4. Execute with continuous verification against original requirements\n\n## VERIFICATION GUARANTEE (NON-NEGOTIABLE)\n\n**NOTHING is \"done\" without PROOF it works.**\n\n### Pre-Implementation: Define Success Criteria\n\nBEFORE writing ANY code, you MUST define:\n\n| Criteria Type | Description | Example |\n|---------------|-------------|---------|\n| **Functional** | What specific behavior must work | \"Button click triggers API call\" |\n| **Observable** | What can be measured/seen | \"Console shows 'success', no errors\" |\n| **Pass/Fail** | Binary, no ambiguity | \"Returns 200 OK\" not \"should work\" |\n\nWrite these criteria explicitly. Share with user if scope is non-trivial.\n\n### Test Plan Template (MANDATORY for non-trivial tasks)\n\n```\n## Test Plan\n### Objective: [What we're verifying]\n### Prerequisites: [Setup needed]\n### Test Cases:\n1. [Test Name]: [Input] \u2192 [Expected Output] \u2192 [How to verify]\n2. ...\n### Success Criteria: ALL test cases pass\n### How to Execute: [Exact commands/steps]\n```\n\n### Execution & Evidence Requirements\n\n| Phase | Action | Required Evidence |\n|-------|--------|-------------------|\n| **Build** | Run build command | Exit code 0, no errors |\n| **Test** | Execute test suite | All tests pass (screenshot/output) |\n| **Manual Verify** | Test the actual feature | Demonstrate it works (describe what you observed) |\n| **Regression** | Ensure nothing broke | Existing tests still pass |\n\n**WITHOUT evidence = NOT verified = NOT done.**\n\n### TDD Workflow (when test infrastructure exists)\n\n1. **SPEC**: Define what \"working\" means (success criteria above)\n2. **RED**: Write failing test \u2192 Run it \u2192 Confirm it FAILS\n3. **GREEN**: Write minimal code \u2192 Run test \u2192 Confirm it PASSES\n4. **REFACTOR**: Clean up \u2192 Tests MUST stay green\n5. **VERIFY**: Run full test suite, confirm no regressions\n6. **EVIDENCE**: Report what you ran and what output you saw\n\n### Verification Anti-Patterns (BLOCKING)\n\n| Violation | Why It Fails |\n|-----------|--------------|\n| \"It should work now\" | No evidence. Run it. |\n| \"I added the tests\" | Did they pass? Show output. |\n| \"Fixed the bug\" | How do you know? What did you test? |\n| \"Implementation complete\" | Did you verify against success criteria? |\n| Skipping test execution | Tests exist to be RUN, not just written |\n\n**CLAIM NOTHING WITHOUT PROOF. EXECUTE. VERIFY. SHOW EVIDENCE.**\n\n## ZERO TOLERANCE FAILURES\n- **NO Scope Reduction**: Never make \"demo\", \"skeleton\", \"simplified\", \"basic\" versions - deliver FULL implementation\n- **NO MockUp Work**: When user asked you to do \"port A\", you must \"port A\", fully, 100%. No Extra feature, No reduced feature, no mock data, fully working 100% port.\n- **NO Partial Completion**: Never stop at 60-80% saying \"you can extend this...\" - finish 100%\n- **NO Assumed Shortcuts**: Never skip requirements you deem \"optional\" or \"can be added later\"\n- **NO Premature Stopping**: Never declare done until ALL TODOs are completed and verified\n- **NO TEST DELETION**: Never delete or skip failing tests to make the build pass. Fix the code, not the tests.\n\nTHE USER ASKED FOR X. DELIVER EXACTLY X. NOT A SUBSET. NOT A DEMO. NOT A STARTING POINT.\n\n1. EXPLORES + LIBRARIANS\n2. GATHER -> PLAN AGENT SPAWN\n3. WORK BY DELEGATING TO ANOTHER AGENTS\n\nNOW.\n\n</ultrawork-mode>\n\n---\n\n";
10
10
  export declare function getDefaultUltraworkMessage(): string;
@@ -11,5 +11,5 @@
11
11
  * - Fire background agents, then use direct tools while waiting
12
12
  * - Explicit complexity-based decision criteria
13
13
  */
14
- export declare const ULTRAWORK_GPT_MESSAGE = "<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Think deeply before acting.\n\n<output_verbosity_spec>\n- Default: 3-6 sentences or \u22645 bullets for typical answers\n- Simple yes/no questions: \u22642 sentences\n- Complex multi-file tasks: 1 short overview paragraph + \u22645 bullets (What, Where, Risks, Next, Open)\n- Avoid long narrative paragraphs; prefer compact bullets\n- Do not rephrase the user's request unless it changes semantics\n</output_verbosity_spec>\n\n<scope_constraints>\n- Implement EXACTLY and ONLY what the user requests\n- No extra features, no added components, no embellishments\n- If any instruction is ambiguous, choose the simplest valid interpretation\n- Do NOT expand the task beyond what was asked\n</scope_constraints>\n\n## CERTAINTY PROTOCOL\n\n**Before implementation, ensure you have:**\n- Full understanding of the user's actual intent\n- Explored the codebase to understand existing patterns\n- A clear work plan (mental or written)\n- Resolved any ambiguities through exploration (not questions)\n\n<uncertainty_handling>\n- If the question is ambiguous or underspecified:\n - EXPLORE FIRST using tools (grep, file reads, explore agents)\n - If still unclear, state your interpretation and proceed\n - Ask clarifying questions ONLY as last resort\n- Never fabricate exact figures, line numbers, or references when uncertain\n- Prefer \"Based on the provided context...\" over absolute claims when unsure\n</uncertainty_handling>\n\n## DECISION FRAMEWORK: Self vs Delegate\n\n**Evaluate each task against these criteria to decide:**\n\n| Complexity | Criteria | Decision |\n|------------|----------|----------|\n| **Trivial** | <10 lines, single file, obvious pattern | **DO IT YOURSELF** |\n| **Moderate** | Single domain, clear pattern, <100 lines | **DO IT YOURSELF** (faster than delegation overhead) |\n| **Complex** | Multi-file, unfamiliar domain, >100 lines, needs specialized expertise | **DELEGATE** to appropriate category+skills |\n| **Research** | Need broad codebase context or external docs | **DELEGATE** to explore/librarian (background, parallel) |\n\n**Decision Factors:**\n- Delegation overhead \u2248 10-15 seconds. If task takes less, do it yourself.\n- If you already have full context loaded, do it yourself.\n- If task requires specialized expertise (frontend-ui-ux, git operations), delegate.\n- If you need information from multiple sources, fire parallel background agents.\n\n## AVAILABLE RESOURCES\n\nUse these when they provide clear value based on the decision framework above:\n\n| Resource | When to Use | How to Use |\n|----------|-------------|------------|\n| explore agent | Need codebase patterns you don't have | `task(subagent_type=\"explore\", load_skills=[], run_in_background=true, ...)` |\n| librarian agent | External library docs, OSS examples | `task(subagent_type=\"librarian\", load_skills=[], run_in_background=true, ...)` |\n| oracle agent | Stuck on architecture/debugging after 2+ attempts | `task(subagent_type=\"oracle\", load_skills=[], ...)` |\n| plan agent | Complex multi-step with dependencies (5+ steps) | `task(subagent_type=\"plan\", load_skills=[], ...)` |\n| task category | Specialized work matching a category | `task(category=\"...\", load_skills=[...])` |\n\n<tool_usage_rules>\n- Prefer tools over internal knowledge for fresh or user-specific data\n- Parallelize independent reads (read_file, grep, explore, librarian) to reduce latency\n- After any write/update, briefly restate: What changed, Where (path), Follow-up needed\n</tool_usage_rules>\n\n## EXECUTION PATTERN\n\n**Context gathering uses TWO parallel tracks:**\n\n| Track | Tools | Speed | Purpose |\n|-------|-------|-------|---------|\n| **Direct** | Grep, Read, LSP, AST-grep | Instant | Quick wins, known locations |\n| **Background** | explore, librarian agents | Async | Deep search, external docs |\n\n**ALWAYS run both tracks in parallel:**\n```\n// Fire background agents for deep exploration\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"Find X patterns...\", run_in_background=true)\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"Find docs for Y...\", run_in_background=true)\n\n// WHILE THEY RUN - use direct tools for immediate context\ngrep(pattern=\"relevant_pattern\", path=\"src/\")\nread_file(filePath=\"known/important/file.ts\")\n\n// Collect background results when ready\ndeep_context = background_output(task_id=...)\n\n// Merge ALL findings for comprehensive understanding\n```\n\n**Plan agent (complex tasks only):**\n- Only if 5+ interdependent steps\n- Invoke AFTER gathering context from both tracks\n\n**Execute:**\n- Surgical, minimal changes matching existing patterns\n- If delegating: provide exhaustive context and success criteria\n\n**Verify:**\n- `lsp_diagnostics` on modified files\n- Run tests if available\n\n## QUALITY STANDARDS\n\n| Phase | Action | Required Evidence |\n|-------|--------|-------------------|\n| Build | Run build command | Exit code 0 |\n| Test | Execute test suite | All tests pass |\n| Lint | Run lsp_diagnostics | Zero new errors |\n\n## COMPLETION CRITERIA\n\nA task is complete when:\n1. Requested functionality is fully implemented (not partial, not simplified)\n2. lsp_diagnostics shows zero errors on modified files\n3. Tests pass (or pre-existing failures documented)\n4. Code matches existing codebase patterns\n\n**Deliver exactly what was asked. No more, no less.**\n\n</ultrawork-mode>\n\n---\n\n";
14
+ export declare const ULTRAWORK_GPT_MESSAGE = "<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Think deeply before acting.\n\n<output_verbosity_spec>\n- Default: 3-6 sentences or \u22645 bullets for typical answers\n- Simple yes/no questions: \u22642 sentences\n- Complex multi-file tasks: 1 short overview paragraph + \u22645 bullets (What, Where, Risks, Next, Open)\n- Avoid long narrative paragraphs; prefer compact bullets\n- Do not rephrase the user's request unless it changes semantics\n</output_verbosity_spec>\n\n<scope_constraints>\n- Implement EXACTLY and ONLY what the user requests\n- No extra features, no added components, no embellishments\n- If any instruction is ambiguous, choose the simplest valid interpretation\n- Do NOT expand the task beyond what was asked\n</scope_constraints>\n\n## CERTAINTY PROTOCOL\n\n**Before implementation, ensure you have:**\n- Full understanding of the user's actual intent\n- Explored the codebase to understand existing patterns\n- A clear work plan (mental or written)\n- Resolved any ambiguities through exploration (not questions)\n\n<uncertainty_handling>\n- If the question is ambiguous or underspecified:\n - EXPLORE FIRST using tools (grep, file reads, explore agents)\n - If still unclear, state your interpretation and proceed\n - Ask clarifying questions ONLY as last resort\n- Never fabricate exact figures, line numbers, or references when uncertain\n- Prefer \"Based on the provided context...\" over absolute claims when unsure\n</uncertainty_handling>\n\n## DECISION FRAMEWORK: Self vs Delegate\n\n**Evaluate each task against these criteria to decide:**\n\n| Complexity | Criteria | Decision |\n|------------|----------|----------|\n| **Trivial** | <10 lines, single file, obvious pattern | **DO IT YOURSELF** |\n| **Moderate** | Single domain, clear pattern, <100 lines | **DO IT YOURSELF** (faster than delegation overhead) |\n| **Complex** | Multi-file, unfamiliar domain, >100 lines, needs specialized expertise | **DELEGATE** to appropriate category+skills |\n| **Research** | Need broad codebase context or external docs | **DELEGATE** to explore/librarian (background, parallel) |\n\n**Decision Factors:**\n- Delegation overhead \u2248 10-15 seconds. If task takes less, do it yourself.\n- If you already have full context loaded, do it yourself.\n- If task requires specialized expertise (frontend-ui-ux, git operations), delegate.\n- If you need information from multiple sources, fire parallel background agents.\n\n## AVAILABLE RESOURCES\n\nUse these when they provide clear value based on the decision framework above:\n\n| Resource | When to Use | How to Use |\n|----------|-------------|------------|\n| explore agent | Need codebase patterns you don't have | `task(subagent_type=\"explore\", load_skills=[], run_in_background=true, ...)` |\n| librarian agent | External library docs, OSS examples | `task(subagent_type=\"librarian\", load_skills=[], run_in_background=true, ...)` |\n| oracle agent | Stuck on architecture/debugging after 2+ attempts | `task(subagent_type=\"oracle\", load_skills=[], ...)` |\n| plan agent | Complex multi-step with dependencies (5+ steps) | `task(subagent_type=\"plan\", load_skills=[], ...)` |\n| task category | Specialized work matching a category | `task(category=\"...\", load_skills=[...])` |\n\n<tool_usage_rules>\n- Prefer tools over internal knowledge for fresh or user-specific data\n- Parallelize independent reads (read_file, grep, explore, librarian) to reduce latency\n- After any write/update, briefly restate: What changed, Where (path), Follow-up needed\n</tool_usage_rules>\n\n## EXECUTION PATTERN\n\n**Context gathering uses TWO parallel tracks:**\n\n| Track | Tools | Speed | Purpose |\n|-------|-------|-------|---------|\n| **Direct** | Grep, Read, LSP, AST-grep | Instant | Quick wins, known locations |\n| **Background** | explore, librarian agents | Async | Deep search, external docs |\n\n**ALWAYS run both tracks in parallel:**\n```\n// Fire background agents for deep exploration\ntask(subagent_type=\"explore\", load_skills=[], prompt=\"I'm implementing [TASK] and need to understand [KNOWLEDGE GAP]. Find [X] patterns in the codebase \u2014 file paths, implementation approach, conventions used, and how modules connect. I'll use this to [DOWNSTREAM DECISION]. Focus on production code in src/. Return file paths with brief descriptions.\", run_in_background=true)\ntask(subagent_type=\"librarian\", load_skills=[], prompt=\"I'm working with [TECHNOLOGY] and need [SPECIFIC INFO]. Find official docs and production examples for [Y] \u2014 API reference, configuration, recommended patterns, and pitfalls. Skip tutorials. I'll use this to [DECISION THIS INFORMS].\", run_in_background=true)\n\n// WHILE THEY RUN - use direct tools for immediate context\ngrep(pattern=\"relevant_pattern\", path=\"src/\")\nread_file(filePath=\"known/important/file.ts\")\n\n// Collect background results when ready\ndeep_context = background_output(task_id=...)\n\n// Merge ALL findings for comprehensive understanding\n```\n\n**Plan agent (complex tasks only):**\n- Only if 5+ interdependent steps\n- Invoke AFTER gathering context from both tracks\n\n**Execute:**\n- Surgical, minimal changes matching existing patterns\n- If delegating: provide exhaustive context and success criteria\n\n**Verify:**\n- `lsp_diagnostics` on modified files\n- Run tests if available\n\n## QUALITY STANDARDS\n\n| Phase | Action | Required Evidence |\n|-------|--------|-------------------|\n| Build | Run build command | Exit code 0 |\n| Test | Execute test suite | All tests pass |\n| Lint | Run lsp_diagnostics | Zero new errors |\n\n## COMPLETION CRITERIA\n\nA task is complete when:\n1. Requested functionality is fully implemented (not partial, not simplified)\n2. lsp_diagnostics shows zero errors on modified files\n3. Tests pass (or pre-existing failures documented)\n4. Code matches existing codebase patterns\n\n**Deliver exactly what was asked. No more, no less.**\n\n</ultrawork-mode>\n\n---\n\n";
15
15
  export declare function getGptUltraworkMessage(): string;
@@ -6,8 +6,8 @@
6
6
  * 2. GPT 5.2 models → gpt5.2.ts
7
7
  * 3. Default (Claude, etc.) → default.ts (optimized for Claude series)
8
8
  */
9
- export { isPlannerAgent, isGptModel, getUltraworkSource } from "./utils";
10
- export type { UltraworkSource } from "./utils";
9
+ export { isPlannerAgent, isGptModel, getUltraworkSource } from "./source-detector";
10
+ export type { UltraworkSource } from "./source-detector";
11
11
  export { ULTRAWORK_PLANNER_SECTION, getPlannerUltraworkMessage } from "./planner";
12
12
  export { ULTRAWORK_GPT_MESSAGE, getGptUltraworkMessage } from "./gpt5.2";
13
13
  export { ULTRAWORK_DEFAULT_MESSAGE, getDefaultUltraworkMessage } from "./default";
@@ -1,14 +1,4 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
1
  export * from "./constants";
3
2
  export * from "./detector";
4
3
  export * from "./types";
5
- export declare function createNonInteractiveEnvHook(_ctx: PluginInput): {
6
- "tool.execute.before": (input: {
7
- tool: string;
8
- sessionID: string;
9
- callID: string;
10
- }, output: {
11
- args: Record<string, unknown>;
12
- message?: string;
13
- }) => Promise<void>;
14
- };
4
+ export { createNonInteractiveEnvHook } from "./non-interactive-env-hook";
@@ -0,0 +1,14 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export * from "./constants";
3
+ export * from "./detector";
4
+ export * from "./types";
5
+ export declare function createNonInteractiveEnvHook(_ctx: PluginInput): {
6
+ "tool.execute.before": (input: {
7
+ tool: string;
8
+ sessionID: string;
9
+ callID: string;
10
+ }, output: {
11
+ args: Record<string, unknown>;
12
+ message?: string;
13
+ }) => Promise<void>;
14
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Get the effective agent for the session.
3
+ * Priority order:
4
+ * 1. In-memory session agent (most recent, set by /start-work)
5
+ * 2. Boulder state agent (persisted across restarts, fixes #927)
6
+ * 3. Message files (fallback for sessions without boulder state)
7
+ *
8
+ * This fixes issue #927 where after interruption:
9
+ * - In-memory map is cleared (process restart)
10
+ * - Message files return "prometheus" (oldest message from /plan)
11
+ * - But boulder.json has agent: "atlas" (set by /start-work)
12
+ */
13
+ export declare function getAgentFromSession(sessionID: string, directory: string): string | undefined;
@@ -0,0 +1,11 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare function createPrometheusMdOnlyHook(ctx: PluginInput): {
3
+ "tool.execute.before": (input: {
4
+ tool: string;
5
+ sessionID: string;
6
+ callID: string;
7
+ }, output: {
8
+ args: Record<string, unknown>;
9
+ message?: string;
10
+ }) => Promise<void>;
11
+ };
@@ -1,12 +1,2 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
1
  export * from "./constants";
3
- export declare function createPrometheusMdOnlyHook(ctx: PluginInput): {
4
- "tool.execute.before": (input: {
5
- tool: string;
6
- sessionID: string;
7
- callID: string;
8
- }, output: {
9
- args: Record<string, unknown>;
10
- message?: string;
11
- }) => Promise<void>;
12
- };
2
+ export { createPrometheusMdOnlyHook } from "./hook";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cross-platform path validator for Prometheus file writes.
3
+ * Uses path.resolve/relative instead of string matching to handle:
4
+ * - Windows backslashes (e.g., .sisyphus\\plans\\x.md)
5
+ * - Mixed separators (e.g., .sisyphus\\plans/x.md)
6
+ * - Case-insensitive directory/extension matching
7
+ * - Workspace confinement (blocks paths outside root or via traversal)
8
+ * - Nested project paths (e.g., parent/.sisyphus/... when ctx.directory is parent)
9
+ */
10
+ export declare function isAllowedFile(filePath: string, workspaceRoot: string): boolean;
@@ -0,0 +1,7 @@
1
+ export declare function createQuestionLabelTruncatorHook(): {
2
+ "tool.execute.before": (input: {
3
+ tool: string;
4
+ }, output: {
5
+ args: Record<string, unknown>;
6
+ }) => Promise<void>;
7
+ };
@@ -1,7 +1 @@
1
- export declare function createQuestionLabelTruncatorHook(): {
2
- "tool.execute.before": (input: {
3
- tool: string;
4
- }, output: {
5
- args: Record<string, unknown>;
6
- }) => Promise<void>;
7
- };
1
+ export { createQuestionLabelTruncatorHook } from "./hook";
@@ -0,0 +1,8 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare function detectCompletionInTranscript(transcriptPath: string | undefined, promise: string): boolean;
3
+ export declare function detectCompletionInSessionMessages(ctx: PluginInput, options: {
4
+ sessionID: string;
5
+ promise: string;
6
+ apiTimeoutMs: number;
7
+ directory: string;
8
+ }): Promise<boolean>;
@@ -0,0 +1,2 @@
1
+ import type { RalphLoopState } from "./types";
2
+ export declare function buildContinuationPrompt(state: RalphLoopState): string;
@@ -0,0 +1,7 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export declare function injectContinuationPrompt(ctx: PluginInput, options: {
3
+ sessionID: string;
4
+ prompt: string;
5
+ directory: string;
6
+ apiTimeoutMs: number;
7
+ }): Promise<void>;
@@ -1,21 +1,5 @@
1
- import type { PluginInput } from "@opencode-ai/plugin";
2
- import type { RalphLoopState, RalphLoopOptions } from "./types";
3
1
  export * from "./types";
4
2
  export * from "./constants";
5
3
  export { readState, writeState, clearState, incrementIteration } from "./storage";
6
- export interface RalphLoopHook {
7
- event: (input: {
8
- event: {
9
- type: string;
10
- properties?: unknown;
11
- };
12
- }) => Promise<void>;
13
- startLoop: (sessionID: string, prompt: string, options?: {
14
- maxIterations?: number;
15
- completionPromise?: string;
16
- ultrawork?: boolean;
17
- }) => boolean;
18
- cancelLoop: (sessionID: string) => boolean;
19
- getState: () => RalphLoopState | null;
20
- }
21
- export declare function createRalphLoopHook(ctx: PluginInput, options?: RalphLoopOptions): RalphLoopHook;
4
+ export { createRalphLoopHook } from "./ralph-loop-hook";
5
+ export type { RalphLoopHook } from "./ralph-loop-hook";
@@ -0,0 +1,7 @@
1
+ export declare function createLoopSessionRecovery(options?: {
2
+ recoveryWindowMs?: number;
3
+ }): {
4
+ isRecovering(sessionID: string): boolean;
5
+ markRecovering(sessionID: string): void;
6
+ clear(sessionID: string): void;
7
+ };
@@ -0,0 +1,16 @@
1
+ import type { RalphLoopOptions, RalphLoopState } from "./types";
2
+ export declare function createLoopStateController(options: {
3
+ directory: string;
4
+ stateDir: string | undefined;
5
+ config: RalphLoopOptions["config"] | undefined;
6
+ }): {
7
+ startLoop(sessionID: string, prompt: string, loopOptions?: {
8
+ maxIterations?: number;
9
+ completionPromise?: string;
10
+ ultrawork?: boolean;
11
+ }): boolean;
12
+ cancelLoop(sessionID: string): boolean;
13
+ getState(): RalphLoopState | null;
14
+ clear(): boolean;
15
+ incrementIteration(): RalphLoopState | null;
16
+ };
@@ -0,0 +1 @@
1
+ export declare function getMessageDir(sessionID: string): string | null;
@@ -0,0 +1,27 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { RalphLoopOptions, RalphLoopState } from "./types";
3
+ type SessionRecovery = {
4
+ isRecovering: (sessionID: string) => boolean;
5
+ markRecovering: (sessionID: string) => void;
6
+ clear: (sessionID: string) => void;
7
+ };
8
+ type LoopStateController = {
9
+ getState: () => RalphLoopState | null;
10
+ clear: () => boolean;
11
+ incrementIteration: () => RalphLoopState | null;
12
+ };
13
+ type RalphLoopEventHandlerOptions = {
14
+ directory: string;
15
+ apiTimeoutMs: number;
16
+ getTranscriptPath: (sessionID: string) => string | undefined;
17
+ checkSessionExists?: RalphLoopOptions["checkSessionExists"];
18
+ sessionRecovery: SessionRecovery;
19
+ loopState: LoopStateController;
20
+ };
21
+ export declare function createRalphLoopEventHandler(ctx: PluginInput, options: RalphLoopEventHandlerOptions): ({ event }: {
22
+ event: {
23
+ type: string;
24
+ properties?: unknown;
25
+ };
26
+ }) => Promise<void>;
27
+ export {};