@reinamaccredy/oh-my-opencode 1.0.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 (429) hide show
  1. package/LICENSE.md +82 -0
  2. package/README.ja.md +1107 -0
  3. package/README.md +1243 -0
  4. package/README.zh-cn.md +1107 -0
  5. package/dist/agents/build-prompt.d.ts +31 -0
  6. package/dist/agents/document-writer.d.ts +5 -0
  7. package/dist/agents/explore.d.ts +5 -0
  8. package/dist/agents/frontend-ui-ux-engineer.d.ts +5 -0
  9. package/dist/agents/index.d.ts +5 -0
  10. package/dist/agents/librarian.d.ts +5 -0
  11. package/dist/agents/metis.d.ts +18 -0
  12. package/dist/agents/momus.d.ts +6 -0
  13. package/dist/agents/multimodal-looker.d.ts +5 -0
  14. package/dist/agents/oracle.d.ts +5 -0
  15. package/dist/agents/orchestrator-sisyphus.d.ts +19 -0
  16. package/dist/agents/plan-prompt.d.ts +64 -0
  17. package/dist/agents/prometheus-prompt.d.ts +27 -0
  18. package/dist/agents/sisyphus-junior.d.ts +3 -0
  19. package/dist/agents/sisyphus-prompt-builder.d.ts +26 -0
  20. package/dist/agents/sisyphus.d.ts +4 -0
  21. package/dist/agents/types.d.ts +49 -0
  22. package/dist/agents/utils.d.ts +13 -0
  23. package/dist/agents/utils.test.d.ts +1 -0
  24. package/dist/auth/antigravity/accounts.d.ts +40 -0
  25. package/dist/auth/antigravity/accounts.test.d.ts +1 -0
  26. package/dist/auth/antigravity/browser.d.ts +27 -0
  27. package/dist/auth/antigravity/browser.test.d.ts +1 -0
  28. package/dist/auth/antigravity/cli.d.ts +2 -0
  29. package/dist/auth/antigravity/cli.test.d.ts +1 -0
  30. package/dist/auth/antigravity/constants.d.ts +98 -0
  31. package/dist/auth/antigravity/constants.test.d.ts +1 -0
  32. package/dist/auth/antigravity/fetch.d.ts +69 -0
  33. package/dist/auth/antigravity/index.d.ts +13 -0
  34. package/dist/auth/antigravity/integration.test.d.ts +10 -0
  35. package/dist/auth/antigravity/message-converter.d.ts +54 -0
  36. package/dist/auth/antigravity/oauth.d.ts +51 -0
  37. package/dist/auth/antigravity/oauth.test.d.ts +1 -0
  38. package/dist/auth/antigravity/plugin.d.ts +54 -0
  39. package/dist/auth/antigravity/project.d.ts +10 -0
  40. package/dist/auth/antigravity/request.d.ts +116 -0
  41. package/dist/auth/antigravity/request.test.d.ts +1 -0
  42. package/dist/auth/antigravity/response.d.ts +137 -0
  43. package/dist/auth/antigravity/storage.d.ts +5 -0
  44. package/dist/auth/antigravity/storage.test.d.ts +1 -0
  45. package/dist/auth/antigravity/thinking.d.ts +278 -0
  46. package/dist/auth/antigravity/thinking.test.d.ts +10 -0
  47. package/dist/auth/antigravity/thought-signature-store.d.ts +52 -0
  48. package/dist/auth/antigravity/token.d.ts +38 -0
  49. package/dist/auth/antigravity/token.test.d.ts +1 -0
  50. package/dist/auth/antigravity/tools.d.ts +119 -0
  51. package/dist/auth/antigravity/types.d.ts +229 -0
  52. package/dist/cli/commands/auth.d.ts +2 -0
  53. package/dist/cli/config-manager.d.ts +91 -0
  54. package/dist/cli/config-manager.test.d.ts +1 -0
  55. package/dist/cli/doctor/checks/auth.d.ts +7 -0
  56. package/dist/cli/doctor/checks/auth.test.d.ts +1 -0
  57. package/dist/cli/doctor/checks/config.d.ts +8 -0
  58. package/dist/cli/doctor/checks/config.test.d.ts +1 -0
  59. package/dist/cli/doctor/checks/dependencies.d.ts +8 -0
  60. package/dist/cli/doctor/checks/dependencies.test.d.ts +1 -0
  61. package/dist/cli/doctor/checks/gh.d.ts +13 -0
  62. package/dist/cli/doctor/checks/gh.test.d.ts +1 -0
  63. package/dist/cli/doctor/checks/index.d.ts +11 -0
  64. package/dist/cli/doctor/checks/lsp.d.ts +8 -0
  65. package/dist/cli/doctor/checks/lsp.test.d.ts +1 -0
  66. package/dist/cli/doctor/checks/mcp.d.ts +6 -0
  67. package/dist/cli/doctor/checks/mcp.test.d.ts +1 -0
  68. package/dist/cli/doctor/checks/opencode.d.ts +10 -0
  69. package/dist/cli/doctor/checks/opencode.test.d.ts +1 -0
  70. package/dist/cli/doctor/checks/plugin.d.ts +4 -0
  71. package/dist/cli/doctor/checks/plugin.test.d.ts +1 -0
  72. package/dist/cli/doctor/checks/version.d.ts +4 -0
  73. package/dist/cli/doctor/checks/version.test.d.ts +1 -0
  74. package/dist/cli/doctor/constants.d.ts +40 -0
  75. package/dist/cli/doctor/formatter.d.ts +12 -0
  76. package/dist/cli/doctor/formatter.test.d.ts +1 -0
  77. package/dist/cli/doctor/index.d.ts +5 -0
  78. package/dist/cli/doctor/runner.d.ts +7 -0
  79. package/dist/cli/doctor/runner.test.d.ts +1 -0
  80. package/dist/cli/doctor/types.d.ts +91 -0
  81. package/dist/cli/get-local-version/formatter.d.ts +3 -0
  82. package/dist/cli/get-local-version/index.d.ts +3 -0
  83. package/dist/cli/get-local-version/types.d.ts +13 -0
  84. package/dist/cli/index.d.ts +2 -0
  85. package/dist/cli/index.js +23604 -0
  86. package/dist/cli/install.d.ts +2 -0
  87. package/dist/cli/run/completion.d.ts +2 -0
  88. package/dist/cli/run/completion.test.d.ts +1 -0
  89. package/dist/cli/run/events.d.ts +11 -0
  90. package/dist/cli/run/events.test.d.ts +1 -0
  91. package/dist/cli/run/index.d.ts +2 -0
  92. package/dist/cli/run/runner.d.ts +2 -0
  93. package/dist/cli/run/types.d.ts +71 -0
  94. package/dist/cli/types.d.ts +27 -0
  95. package/dist/config/index.d.ts +2 -0
  96. package/dist/config/schema.d.ts +1914 -0
  97. package/dist/config/schema.test.d.ts +1 -0
  98. package/dist/features/background-agent/concurrency.d.ts +10 -0
  99. package/dist/features/background-agent/concurrency.test.d.ts +1 -0
  100. package/dist/features/background-agent/index.d.ts +3 -0
  101. package/dist/features/background-agent/manager.d.ts +55 -0
  102. package/dist/features/background-agent/manager.test.d.ts +1 -0
  103. package/dist/features/background-agent/types.d.ts +64 -0
  104. package/dist/features/boulder-state/constants.d.ts +10 -0
  105. package/dist/features/boulder-state/index.d.ts +3 -0
  106. package/dist/features/boulder-state/storage.d.ts +28 -0
  107. package/dist/features/boulder-state/storage.test.d.ts +1 -0
  108. package/dist/features/boulder-state/types.d.ts +24 -0
  109. package/dist/features/builtin-commands/commands.d.ts +2 -0
  110. package/dist/features/builtin-commands/index.d.ts +2 -0
  111. package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -0
  112. package/dist/features/builtin-commands/templates/ralph-loop.d.ts +2 -0
  113. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -0
  114. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -0
  115. package/dist/features/builtin-commands/types.d.ts +6 -0
  116. package/dist/features/builtin-skills/index.d.ts +2 -0
  117. package/dist/features/builtin-skills/skills.d.ts +2 -0
  118. package/dist/features/builtin-skills/types.d.ts +15 -0
  119. package/dist/features/claude-code-agent-loader/index.d.ts +2 -0
  120. package/dist/features/claude-code-agent-loader/loader.d.ts +3 -0
  121. package/dist/features/claude-code-agent-loader/types.d.ts +14 -0
  122. package/dist/features/claude-code-command-loader/index.d.ts +2 -0
  123. package/dist/features/claude-code-command-loader/loader.d.ts +6 -0
  124. package/dist/features/claude-code-command-loader/types.d.ts +42 -0
  125. package/dist/features/claude-code-mcp-loader/env-expander.d.ts +2 -0
  126. package/dist/features/claude-code-mcp-loader/index.d.ts +10 -0
  127. package/dist/features/claude-code-mcp-loader/loader.d.ts +4 -0
  128. package/dist/features/claude-code-mcp-loader/loader.test.d.ts +1 -0
  129. package/dist/features/claude-code-mcp-loader/transformer.d.ts +2 -0
  130. package/dist/features/claude-code-mcp-loader/types.d.ts +35 -0
  131. package/dist/features/claude-code-plugin-loader/index.d.ts +3 -0
  132. package/dist/features/claude-code-plugin-loader/loader.d.ts +20 -0
  133. package/dist/features/claude-code-plugin-loader/types.d.ts +186 -0
  134. package/dist/features/claude-code-session-state/index.d.ts +1 -0
  135. package/dist/features/claude-code-session-state/state.d.ts +4 -0
  136. package/dist/features/context-injector/collector.d.ts +11 -0
  137. package/dist/features/context-injector/collector.test.d.ts +1 -0
  138. package/dist/features/context-injector/index.d.ts +3 -0
  139. package/dist/features/context-injector/injector.d.ts +39 -0
  140. package/dist/features/context-injector/injector.test.d.ts +1 -0
  141. package/dist/features/context-injector/types.d.ts +83 -0
  142. package/dist/features/hook-message-injector/constants.d.ts +3 -0
  143. package/dist/features/hook-message-injector/index.d.ts +4 -0
  144. package/dist/features/hook-message-injector/injector.d.ts +11 -0
  145. package/dist/features/hook-message-injector/types.d.ts +44 -0
  146. package/dist/features/opencode-skill-loader/async-loader.d.ts +6 -0
  147. package/dist/features/opencode-skill-loader/async-loader.test.d.ts +1 -0
  148. package/dist/features/opencode-skill-loader/blocking.d.ts +2 -0
  149. package/dist/features/opencode-skill-loader/blocking.test.d.ts +1 -0
  150. package/dist/features/opencode-skill-loader/discover-worker.d.ts +1 -0
  151. package/dist/features/opencode-skill-loader/index.d.ts +4 -0
  152. package/dist/features/opencode-skill-loader/loader.d.ts +16 -0
  153. package/dist/features/opencode-skill-loader/loader.test.d.ts +1 -0
  154. package/dist/features/opencode-skill-loader/merger.d.ts +7 -0
  155. package/dist/features/opencode-skill-loader/skill-content.d.ts +5 -0
  156. package/dist/features/opencode-skill-loader/skill-content.test.d.ts +1 -0
  157. package/dist/features/opencode-skill-loader/types.d.ts +34 -0
  158. package/dist/features/skill-mcp-manager/env-cleaner.d.ts +2 -0
  159. package/dist/features/skill-mcp-manager/env-cleaner.test.d.ts +1 -0
  160. package/dist/features/skill-mcp-manager/index.d.ts +2 -0
  161. package/dist/features/skill-mcp-manager/manager.d.ts +29 -0
  162. package/dist/features/skill-mcp-manager/manager.test.d.ts +1 -0
  163. package/dist/features/skill-mcp-manager/types.d.ts +11 -0
  164. package/dist/features/task-toast-manager/index.d.ts +2 -0
  165. package/dist/features/task-toast-manager/manager.d.ts +56 -0
  166. package/dist/features/task-toast-manager/manager.test.d.ts +1 -0
  167. package/dist/features/task-toast-manager/types.d.ts +16 -0
  168. package/dist/features/workflow-engine/adapters/index.d.ts +2 -0
  169. package/dist/features/workflow-engine/adapters/maestro/index.d.ts +43 -0
  170. package/dist/features/workflow-engine/adapters/sisyphus/index.d.ts +30 -0
  171. package/dist/features/workflow-engine/contracts/v1/contract.test.d.ts +1 -0
  172. package/dist/features/workflow-engine/contracts/v1/engine.contract.d.ts +27 -0
  173. package/dist/features/workflow-engine/contracts/v1/index.d.ts +2 -0
  174. package/dist/features/workflow-engine/contracts/v1/types.d.ts +337 -0
  175. package/dist/features/workflow-engine/engines/index.d.ts +1 -0
  176. package/dist/features/workflow-engine/engines/maestro-engine.d.ts +40 -0
  177. package/dist/features/workflow-engine/index.d.ts +4 -0
  178. package/dist/features/workflow-engine/service.d.ts +6 -0
  179. package/dist/google-auth.d.ts +3 -0
  180. package/dist/google-auth.js +3871 -0
  181. package/dist/hooks/agent-usage-reminder/constants.d.ts +5 -0
  182. package/dist/hooks/agent-usage-reminder/index.d.ts +22 -0
  183. package/dist/hooks/agent-usage-reminder/storage.d.ts +4 -0
  184. package/dist/hooks/agent-usage-reminder/types.d.ts +6 -0
  185. package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +4 -0
  186. package/dist/hooks/anthropic-context-window-limit-recovery/executor.test.d.ts +1 -0
  187. package/dist/hooks/anthropic-context-window-limit-recovery/index.d.ts +17 -0
  188. package/dist/hooks/anthropic-context-window-limit-recovery/parser.d.ts +2 -0
  189. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.d.ts +7 -0
  190. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.d.ts +1 -0
  191. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-executor.d.ts +3 -0
  192. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-purge-errors.d.ts +7 -0
  193. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-storage.d.ts +2 -0
  194. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-supersede.d.ts +6 -0
  195. package/dist/hooks/anthropic-context-window-limit-recovery/pruning-types.d.ts +36 -0
  196. package/dist/hooks/anthropic-context-window-limit-recovery/storage.d.ts +28 -0
  197. package/dist/hooks/anthropic-context-window-limit-recovery/storage.test.d.ts +1 -0
  198. package/dist/hooks/anthropic-context-window-limit-recovery/types.d.ts +42 -0
  199. package/dist/hooks/auto-slash-command/constants.d.ts +5 -0
  200. package/dist/hooks/auto-slash-command/detector.d.ts +9 -0
  201. package/dist/hooks/auto-slash-command/detector.test.d.ts +1 -0
  202. package/dist/hooks/auto-slash-command/executor.d.ts +11 -0
  203. package/dist/hooks/auto-slash-command/index.d.ts +12 -0
  204. package/dist/hooks/auto-slash-command/index.test.d.ts +1 -0
  205. package/dist/hooks/auto-slash-command/types.d.ts +27 -0
  206. package/dist/hooks/auto-update-checker/cache.d.ts +3 -0
  207. package/dist/hooks/auto-update-checker/checker.d.ts +20 -0
  208. package/dist/hooks/auto-update-checker/constants.d.ts +13 -0
  209. package/dist/hooks/auto-update-checker/index.d.ts +13 -0
  210. package/dist/hooks/auto-update-checker/types.d.ts +25 -0
  211. package/dist/hooks/background-notification/index.d.ts +12 -0
  212. package/dist/hooks/background-notification/types.d.ts +4 -0
  213. package/dist/hooks/claude-code-hooks/config-loader.d.ts +13 -0
  214. package/dist/hooks/claude-code-hooks/config.d.ts +3 -0
  215. package/dist/hooks/claude-code-hooks/index.d.ts +48 -0
  216. package/dist/hooks/claude-code-hooks/plugin-config.d.ts +8 -0
  217. package/dist/hooks/claude-code-hooks/post-tool-use.d.ts +40 -0
  218. package/dist/hooks/claude-code-hooks/pre-compact.d.ts +16 -0
  219. package/dist/hooks/claude-code-hooks/pre-tool-use.d.ts +25 -0
  220. package/dist/hooks/claude-code-hooks/stop.d.ts +20 -0
  221. package/dist/hooks/claude-code-hooks/todo.d.ts +12 -0
  222. package/dist/hooks/claude-code-hooks/tool-input-cache.d.ts +5 -0
  223. package/dist/hooks/claude-code-hooks/transcript.d.ts +38 -0
  224. package/dist/hooks/claude-code-hooks/types.d.ts +183 -0
  225. package/dist/hooks/claude-code-hooks/user-prompt-submit.d.ts +22 -0
  226. package/dist/hooks/comment-checker/cli.d.ts +53 -0
  227. package/dist/hooks/comment-checker/constants.d.ts +3 -0
  228. package/dist/hooks/comment-checker/downloader.d.ts +25 -0
  229. package/dist/hooks/comment-checker/filters/bdd.d.ts +2 -0
  230. package/dist/hooks/comment-checker/filters/directive.d.ts +2 -0
  231. package/dist/hooks/comment-checker/filters/docstring.d.ts +2 -0
  232. package/dist/hooks/comment-checker/filters/index.d.ts +7 -0
  233. package/dist/hooks/comment-checker/filters/shebang.d.ts +2 -0
  234. package/dist/hooks/comment-checker/index.d.ts +19 -0
  235. package/dist/hooks/comment-checker/output/formatter.d.ts +2 -0
  236. package/dist/hooks/comment-checker/output/index.d.ts +2 -0
  237. package/dist/hooks/comment-checker/output/xml-builder.d.ts +2 -0
  238. package/dist/hooks/comment-checker/types.d.ts +31 -0
  239. package/dist/hooks/compaction-context-injector/index.d.ts +2 -0
  240. package/dist/hooks/context-window-monitor.d.ts +18 -0
  241. package/dist/hooks/directory-agents-injector/constants.d.ts +3 -0
  242. package/dist/hooks/directory-agents-injector/index.d.ts +26 -0
  243. package/dist/hooks/directory-agents-injector/storage.d.ts +3 -0
  244. package/dist/hooks/directory-agents-injector/types.d.ts +5 -0
  245. package/dist/hooks/directory-readme-injector/constants.d.ts +3 -0
  246. package/dist/hooks/directory-readme-injector/index.d.ts +26 -0
  247. package/dist/hooks/directory-readme-injector/storage.d.ts +3 -0
  248. package/dist/hooks/directory-readme-injector/types.d.ts +5 -0
  249. package/dist/hooks/edit-error-recovery/index.d.ts +31 -0
  250. package/dist/hooks/edit-error-recovery/index.test.d.ts +1 -0
  251. package/dist/hooks/empty-message-sanitizer/index.d.ts +12 -0
  252. package/dist/hooks/empty-task-response-detector.d.ts +12 -0
  253. package/dist/hooks/index.d.ts +30 -0
  254. package/dist/hooks/interactive-bash-session/constants.d.ts +4 -0
  255. package/dist/hooks/interactive-bash-session/index.d.ts +23 -0
  256. package/dist/hooks/interactive-bash-session/storage.d.ts +4 -0
  257. package/dist/hooks/interactive-bash-session/types.d.ts +10 -0
  258. package/dist/hooks/keyword-detector/constants.d.ts +12 -0
  259. package/dist/hooks/keyword-detector/detector.d.ts +11 -0
  260. package/dist/hooks/keyword-detector/index.d.ts +22 -0
  261. package/dist/hooks/keyword-detector/index.test.d.ts +1 -0
  262. package/dist/hooks/keyword-detector/types.d.ts +4 -0
  263. package/dist/hooks/non-interactive-env/constants.d.ts +34 -0
  264. package/dist/hooks/non-interactive-env/detector.d.ts +1 -0
  265. package/dist/hooks/non-interactive-env/index.d.ts +14 -0
  266. package/dist/hooks/non-interactive-env/index.test.d.ts +1 -0
  267. package/dist/hooks/non-interactive-env/types.d.ts +3 -0
  268. package/dist/hooks/preemptive-compaction/constants.d.ts +3 -0
  269. package/dist/hooks/preemptive-compaction/index.d.ts +24 -0
  270. package/dist/hooks/preemptive-compaction/types.d.ts +17 -0
  271. package/dist/hooks/prometheus-md-only/constants.d.ts +6 -0
  272. package/dist/hooks/prometheus-md-only/index.d.ts +12 -0
  273. package/dist/hooks/prometheus-md-only/index.test.d.ts +1 -0
  274. package/dist/hooks/ralph-loop/constants.d.ts +5 -0
  275. package/dist/hooks/ralph-loop/index.d.ts +20 -0
  276. package/dist/hooks/ralph-loop/index.test.d.ts +1 -0
  277. package/dist/hooks/ralph-loop/storage.d.ts +6 -0
  278. package/dist/hooks/ralph-loop/types.d.ts +16 -0
  279. package/dist/hooks/rules-injector/constants.d.ts +8 -0
  280. package/dist/hooks/rules-injector/finder.d.ts +33 -0
  281. package/dist/hooks/rules-injector/finder.test.d.ts +1 -0
  282. package/dist/hooks/rules-injector/index.d.ts +26 -0
  283. package/dist/hooks/rules-injector/matcher.d.ts +21 -0
  284. package/dist/hooks/rules-injector/parser.d.ts +18 -0
  285. package/dist/hooks/rules-injector/parser.test.d.ts +1 -0
  286. package/dist/hooks/rules-injector/storage.d.ts +9 -0
  287. package/dist/hooks/rules-injector/types.d.ts +54 -0
  288. package/dist/hooks/session-notification-utils.d.ts +9 -0
  289. package/dist/hooks/session-notification.d.ts +20 -0
  290. package/dist/hooks/session-notification.test.d.ts +1 -0
  291. package/dist/hooks/session-recovery/constants.d.ts +6 -0
  292. package/dist/hooks/session-recovery/index.d.ts +22 -0
  293. package/dist/hooks/session-recovery/index.test.d.ts +1 -0
  294. package/dist/hooks/session-recovery/storage.d.ts +19 -0
  295. package/dist/hooks/session-recovery/types.d.ts +90 -0
  296. package/dist/hooks/sisyphus-orchestrator/index.d.ts +35 -0
  297. package/dist/hooks/sisyphus-orchestrator/index.test.d.ts +1 -0
  298. package/dist/hooks/start-work/index.d.ts +16 -0
  299. package/dist/hooks/start-work/index.test.d.ts +1 -0
  300. package/dist/hooks/task-resume-info/index.d.ts +11 -0
  301. package/dist/hooks/think-mode/detector.d.ts +5 -0
  302. package/dist/hooks/think-mode/index.d.ts +14 -0
  303. package/dist/hooks/think-mode/index.test.d.ts +1 -0
  304. package/dist/hooks/think-mode/switcher.d.ts +57 -0
  305. package/dist/hooks/think-mode/switcher.test.d.ts +1 -0
  306. package/dist/hooks/think-mode/types.d.ts +21 -0
  307. package/dist/hooks/thinking-block-validator/index.d.ts +30 -0
  308. package/dist/hooks/todo-continuation-enforcer.d.ts +17 -0
  309. package/dist/hooks/todo-continuation-enforcer.test.d.ts +1 -0
  310. package/dist/hooks/tool-output-truncator.d.ts +17 -0
  311. package/dist/hooks/tool-output-truncator.test.d.ts +1 -0
  312. package/dist/index.d.ts +5 -0
  313. package/dist/index.js +56428 -0
  314. package/dist/mcp/context7.d.ts +5 -0
  315. package/dist/mcp/grep-app.d.ts +5 -0
  316. package/dist/mcp/index.d.ts +8 -0
  317. package/dist/mcp/index.test.d.ts +1 -0
  318. package/dist/mcp/types.d.ts +9 -0
  319. package/dist/mcp/websearch.d.ts +8 -0
  320. package/dist/plugin-config.d.ts +4 -0
  321. package/dist/plugin-handlers/config-handler.d.ts +10 -0
  322. package/dist/plugin-handlers/index.d.ts +1 -0
  323. package/dist/plugin-state.d.ts +6 -0
  324. package/dist/shared/claude-config-dir.d.ts +1 -0
  325. package/dist/shared/claude-config-dir.test.d.ts +1 -0
  326. package/dist/shared/command-executor.d.ts +21 -0
  327. package/dist/shared/config-errors.d.ts +7 -0
  328. package/dist/shared/config-path.d.ts +17 -0
  329. package/dist/shared/data-path.d.ts +14 -0
  330. package/dist/shared/deep-merge.d.ts +13 -0
  331. package/dist/shared/dynamic-truncator.d.ts +27 -0
  332. package/dist/shared/external-plugin-detector.d.ts +18 -0
  333. package/dist/shared/external-plugin-detector.test.d.ts +1 -0
  334. package/dist/shared/file-reference-resolver.d.ts +1 -0
  335. package/dist/shared/file-utils.d.ts +7 -0
  336. package/dist/shared/frontmatter.d.ts +7 -0
  337. package/dist/shared/frontmatter.test.d.ts +1 -0
  338. package/dist/shared/hook-disabled.d.ts +2 -0
  339. package/dist/shared/index.d.ts +22 -0
  340. package/dist/shared/jsonc-parser.d.ts +15 -0
  341. package/dist/shared/jsonc-parser.test.d.ts +1 -0
  342. package/dist/shared/logger.d.ts +2 -0
  343. package/dist/shared/migration.d.ts +17 -0
  344. package/dist/shared/migration.test.d.ts +1 -0
  345. package/dist/shared/model-sanitizer.d.ts +3 -0
  346. package/dist/shared/opencode-config-dir.d.ts +19 -0
  347. package/dist/shared/opencode-config-dir.test.d.ts +1 -0
  348. package/dist/shared/opencode-version.d.ts +10 -0
  349. package/dist/shared/opencode-version.test.d.ts +1 -0
  350. package/dist/shared/pattern-matcher.d.ts +3 -0
  351. package/dist/shared/permission-compat.d.ts +12 -0
  352. package/dist/shared/permission-compat.test.d.ts +1 -0
  353. package/dist/shared/snake-case.d.ts +4 -0
  354. package/dist/shared/tool-name.d.ts +1 -0
  355. package/dist/tools/ast-grep/cli.d.ts +15 -0
  356. package/dist/tools/ast-grep/constants.d.ts +29 -0
  357. package/dist/tools/ast-grep/downloader.d.ts +5 -0
  358. package/dist/tools/ast-grep/index.d.ts +8 -0
  359. package/dist/tools/ast-grep/napi.d.ts +13 -0
  360. package/dist/tools/ast-grep/tools.d.ts +3 -0
  361. package/dist/tools/ast-grep/types.d.ts +58 -0
  362. package/dist/tools/ast-grep/utils.d.ts +5 -0
  363. package/dist/tools/background-task/constants.d.ts +3 -0
  364. package/dist/tools/background-task/index.d.ts +3 -0
  365. package/dist/tools/background-task/tools.d.ts +7 -0
  366. package/dist/tools/background-task/types.d.ts +14 -0
  367. package/dist/tools/call-omo-agent/constants.d.ts +2 -0
  368. package/dist/tools/call-omo-agent/index.d.ts +3 -0
  369. package/dist/tools/call-omo-agent/tools.d.ts +3 -0
  370. package/dist/tools/call-omo-agent/types.d.ts +24 -0
  371. package/dist/tools/glob/cli.d.ts +7 -0
  372. package/dist/tools/glob/constants.d.ts +6 -0
  373. package/dist/tools/glob/index.d.ts +2 -0
  374. package/dist/tools/glob/tools.d.ts +2 -0
  375. package/dist/tools/glob/types.d.ts +19 -0
  376. package/dist/tools/glob/utils.d.ts +2 -0
  377. package/dist/tools/grep/cli.d.ts +3 -0
  378. package/dist/tools/grep/constants.d.ts +17 -0
  379. package/dist/tools/grep/downloader.d.ts +3 -0
  380. package/dist/tools/grep/downloader.test.d.ts +1 -0
  381. package/dist/tools/grep/index.d.ts +2 -0
  382. package/dist/tools/grep/tools.d.ts +2 -0
  383. package/dist/tools/grep/types.d.ts +36 -0
  384. package/dist/tools/grep/utils.d.ts +3 -0
  385. package/dist/tools/index.d.ts +14 -0
  386. package/dist/tools/interactive-bash/constants.d.ts +3 -0
  387. package/dist/tools/interactive-bash/index.d.ts +3 -0
  388. package/dist/tools/interactive-bash/tools.d.ts +7 -0
  389. package/dist/tools/interactive-bash/types.d.ts +3 -0
  390. package/dist/tools/interactive-bash/utils.d.ts +3 -0
  391. package/dist/tools/look-at/constants.d.ts +2 -0
  392. package/dist/tools/look-at/index.d.ts +3 -0
  393. package/dist/tools/look-at/tools.d.ts +2 -0
  394. package/dist/tools/look-at/types.d.ts +4 -0
  395. package/dist/tools/lsp/client.d.ts +59 -0
  396. package/dist/tools/lsp/config.d.ts +17 -0
  397. package/dist/tools/lsp/constants.d.ts +9 -0
  398. package/dist/tools/lsp/index.d.ts +6 -0
  399. package/dist/tools/lsp/tools.d.ts +12 -0
  400. package/dist/tools/lsp/types.d.ts +156 -0
  401. package/dist/tools/lsp/utils.d.ts +29 -0
  402. package/dist/tools/session-manager/constants.d.ts +12 -0
  403. package/dist/tools/session-manager/index.d.ts +3 -0
  404. package/dist/tools/session-manager/storage.d.ts +12 -0
  405. package/dist/tools/session-manager/storage.test.d.ts +1 -0
  406. package/dist/tools/session-manager/tools.d.ts +5 -0
  407. package/dist/tools/session-manager/tools.test.d.ts +1 -0
  408. package/dist/tools/session-manager/types.d.ts +89 -0
  409. package/dist/tools/session-manager/utils.d.ts +11 -0
  410. package/dist/tools/session-manager/utils.test.d.ts +1 -0
  411. package/dist/tools/sisyphus-task/constants.d.ts +12 -0
  412. package/dist/tools/sisyphus-task/index.d.ts +3 -0
  413. package/dist/tools/sisyphus-task/tools.d.ts +16 -0
  414. package/dist/tools/sisyphus-task/tools.test.d.ts +1 -0
  415. package/dist/tools/sisyphus-task/types.d.ts +9 -0
  416. package/dist/tools/skill/constants.d.ts +3 -0
  417. package/dist/tools/skill/index.d.ts +3 -0
  418. package/dist/tools/skill/tools.d.ts +10 -0
  419. package/dist/tools/skill/tools.test.d.ts +1 -0
  420. package/dist/tools/skill/types.d.ts +25 -0
  421. package/dist/tools/skill-mcp/constants.d.ts +2 -0
  422. package/dist/tools/skill-mcp/index.d.ts +3 -0
  423. package/dist/tools/skill-mcp/tools.d.ts +11 -0
  424. package/dist/tools/skill-mcp/tools.test.d.ts +1 -0
  425. package/dist/tools/skill-mcp/types.d.ts +8 -0
  426. package/dist/tools/slashcommand/index.d.ts +2 -0
  427. package/dist/tools/slashcommand/tools.d.ts +11 -0
  428. package/dist/tools/slashcommand/types.d.ts +24 -0
  429. package/package.json +83 -0
@@ -0,0 +1,4 @@
1
+ import type { InteractiveBashSessionState } from "./types";
2
+ export declare function loadInteractiveBashSessionState(sessionID: string): InteractiveBashSessionState | null;
3
+ export declare function saveInteractiveBashSessionState(state: InteractiveBashSessionState): void;
4
+ export declare function clearInteractiveBashSessionState(sessionID: string): void;
@@ -0,0 +1,10 @@
1
+ export interface InteractiveBashSessionState {
2
+ sessionID: string;
3
+ tmuxSessions: Set<string>;
4
+ updatedAt: number;
5
+ }
6
+ export interface SerializedInteractiveBashSessionState {
7
+ sessionID: string;
8
+ tmuxSessions: string[];
9
+ updatedAt: number;
10
+ }
@@ -0,0 +1,12 @@
1
+ export declare const CODE_BLOCK_PATTERN: RegExp;
2
+ export declare const INLINE_CODE_PATTERN: RegExp;
3
+ /**
4
+ * Generates the ultrawork message based on agent context.
5
+ * Planner agents get context-gathering focused instructions.
6
+ * Other agents get the original strong agent utilization instructions.
7
+ */
8
+ export declare function getUltraworkMessage(agentName?: string): string;
9
+ export declare const KEYWORD_DETECTORS: Array<{
10
+ pattern: RegExp;
11
+ message: string | ((agentName?: string) => string);
12
+ }>;
@@ -0,0 +1,11 @@
1
+ export interface DetectedKeyword {
2
+ type: "ultrawork" | "search" | "analyze";
3
+ message: string;
4
+ }
5
+ export declare function removeCodeBlocks(text: string): string;
6
+ export declare function detectKeywords(text: string, agentName?: string): string[];
7
+ export declare function detectKeywordsWithType(text: string, agentName?: string): DetectedKeyword[];
8
+ export declare function extractPromptText(parts: Array<{
9
+ type: string;
10
+ text?: string;
11
+ }>): string;
@@ -0,0 +1,22 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ export * from "./detector";
3
+ export * from "./constants";
4
+ export * from "./types";
5
+ export declare function createKeywordDetectorHook(ctx: PluginInput): {
6
+ "chat.message": (input: {
7
+ sessionID: string;
8
+ agent?: string;
9
+ model?: {
10
+ providerID: string;
11
+ modelID: string;
12
+ };
13
+ messageID?: string;
14
+ }, output: {
15
+ message: Record<string, unknown>;
16
+ parts: Array<{
17
+ type: string;
18
+ text?: string;
19
+ [key: string]: unknown;
20
+ }>;
21
+ }) => Promise<void>;
22
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export interface KeywordDetectorState {
2
+ detected: boolean;
3
+ injected: boolean;
4
+ }
@@ -0,0 +1,34 @@
1
+ export declare const HOOK_NAME = "non-interactive-env";
2
+ export declare const NON_INTERACTIVE_ENV: Record<string, string>;
3
+ /**
4
+ * Shell command guidance for non-interactive environments.
5
+ * These patterns should be followed to avoid hanging on user input.
6
+ */
7
+ export declare const SHELL_COMMAND_PATTERNS: {
8
+ readonly npm: {
9
+ readonly bad: readonly ["npm init", "npm install (prompts)"];
10
+ readonly good: readonly ["npm init -y", "npm install --yes"];
11
+ };
12
+ readonly apt: {
13
+ readonly bad: readonly ["apt-get install pkg"];
14
+ readonly good: readonly ["apt-get install -y pkg", "DEBIAN_FRONTEND=noninteractive apt-get install pkg"];
15
+ };
16
+ readonly pip: {
17
+ readonly bad: readonly ["pip install pkg (with prompts)"];
18
+ readonly good: readonly ["pip install --no-input pkg", "PIP_NO_INPUT=1 pip install pkg"];
19
+ };
20
+ readonly git: {
21
+ readonly bad: readonly ["git commit", "git merge branch", "git add -p", "git rebase -i"];
22
+ readonly good: readonly ["git commit -m 'msg'", "git merge --no-edit branch", "git add .", "git rebase --no-edit"];
23
+ };
24
+ readonly system: {
25
+ readonly bad: readonly ["rm file (prompts)", "cp a b (prompts)", "ssh host"];
26
+ readonly good: readonly ["rm -f file", "cp -f a b", "ssh -o BatchMode=yes host", "unzip -o file.zip"];
27
+ };
28
+ readonly banned: readonly ["vim", "nano", "vi", "emacs", "less", "more", "man", "python (REPL)", "node (REPL)", "git add -p", "git rebase -i"];
29
+ readonly workarounds: {
30
+ readonly yesPipe: "yes | ./script.sh";
31
+ readonly heredoc: "./script.sh <<EOF\noption1\noption2\nEOF";
32
+ readonly expectAlternative: "Use environment variables or config files instead of expect";
33
+ };
34
+ };
@@ -0,0 +1 @@
1
+ export declare function isNonInteractive(): boolean;
@@ -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 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export interface NonInteractiveEnvConfig {
2
+ disabled?: boolean;
3
+ }
@@ -0,0 +1,3 @@
1
+ export declare const DEFAULT_THRESHOLD = 0.85;
2
+ export declare const MIN_TOKENS_FOR_COMPACTION = 50000;
3
+ export declare const COMPACTION_COOLDOWN_MS = 60000;
@@ -0,0 +1,24 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { ExperimentalConfig } from "../../config";
3
+ export interface SummarizeContext {
4
+ sessionID: string;
5
+ providerID: string;
6
+ modelID: string;
7
+ usageRatio: number;
8
+ directory: string;
9
+ }
10
+ export type BeforeSummarizeCallback = (ctx: SummarizeContext) => Promise<void> | void;
11
+ export type GetModelLimitCallback = (providerID: string, modelID: string) => number | undefined;
12
+ export interface PreemptiveCompactionOptions {
13
+ experimental?: ExperimentalConfig;
14
+ onBeforeSummarize?: BeforeSummarizeCallback;
15
+ getModelLimit?: GetModelLimitCallback;
16
+ }
17
+ export declare function createPreemptiveCompactionHook(ctx: PluginInput, options?: PreemptiveCompactionOptions): {
18
+ event: ({ event }: {
19
+ event: {
20
+ type: string;
21
+ properties?: unknown;
22
+ };
23
+ }) => Promise<void>;
24
+ };
@@ -0,0 +1,17 @@
1
+ export interface PreemptiveCompactionState {
2
+ lastCompactionTime: Map<string, number>;
3
+ compactionInProgress: Set<string>;
4
+ }
5
+ export interface TokenInfo {
6
+ input: number;
7
+ output: number;
8
+ reasoning: number;
9
+ cache: {
10
+ read: number;
11
+ write: number;
12
+ };
13
+ }
14
+ export interface ModelLimits {
15
+ context: number;
16
+ output: number;
17
+ }
@@ -0,0 +1,6 @@
1
+ export declare const HOOK_NAME = "prometheus-md-only";
2
+ export declare const PROMETHEUS_AGENTS: string[];
3
+ export declare const ALLOWED_EXTENSIONS: string[];
4
+ export declare const ALLOWED_PATH_PREFIX = ".sisyphus/";
5
+ export declare const BLOCKED_TOOLS: string[];
6
+ export declare const PLANNING_CONSULT_WARNING = "\n\n---\n\n[SYSTEM DIRECTIVE - READ-ONLY PLANNING CONSULTATION]\n\nYou are being invoked by Prometheus (Planner), a READ-ONLY planning agent.\n\n**CRITICAL CONSTRAINTS:**\n- DO NOT modify any files (no Write, Edit, or any file mutations)\n- DO NOT execute commands that change system state\n- DO NOT create, delete, or rename files\n- ONLY provide analysis, recommendations, and information\n\n**YOUR ROLE**: Provide consultation, research, and analysis to assist with planning.\nReturn your findings and recommendations. The actual implementation will be handled separately after planning is complete.\n\n---\n\n";
@@ -0,0 +1,12 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ 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
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare const HOOK_NAME = "ralph-loop";
2
+ export declare const DEFAULT_STATE_FILE = ".sisyphus/ralph-loop.local.md";
3
+ export declare const COMPLETION_TAG_PATTERN: RegExp;
4
+ export declare const DEFAULT_MAX_ITERATIONS = 100;
5
+ export declare const DEFAULT_COMPLETION_PROMISE = "DONE";
@@ -0,0 +1,20 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { RalphLoopState, RalphLoopOptions } from "./types";
3
+ export * from "./types";
4
+ export * from "./constants";
5
+ 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
+ }) => boolean;
17
+ cancelLoop: (sessionID: string) => boolean;
18
+ getState: () => RalphLoopState | null;
19
+ }
20
+ export declare function createRalphLoopHook(ctx: PluginInput, options?: RalphLoopOptions): RalphLoopHook;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { RalphLoopState } from "./types";
2
+ export declare function getStateFilePath(directory: string, customPath?: string): string;
3
+ export declare function readState(directory: string, customPath?: string): RalphLoopState | null;
4
+ export declare function writeState(directory: string, state: RalphLoopState, customPath?: string): boolean;
5
+ export declare function clearState(directory: string, customPath?: string): boolean;
6
+ export declare function incrementIteration(directory: string, customPath?: string): RalphLoopState | null;
@@ -0,0 +1,16 @@
1
+ import type { RalphLoopConfig } from "../../config";
2
+ export interface RalphLoopState {
3
+ active: boolean;
4
+ iteration: number;
5
+ max_iterations: number;
6
+ completion_promise: string;
7
+ started_at: string;
8
+ prompt: string;
9
+ session_id?: string;
10
+ }
11
+ export interface RalphLoopOptions {
12
+ config?: RalphLoopConfig;
13
+ getTranscriptPath?: (sessionId: string) => string;
14
+ apiTimeout?: number;
15
+ checkSessionExists?: (sessionId: string) => Promise<boolean>;
16
+ }
@@ -0,0 +1,8 @@
1
+ export declare const OPENCODE_STORAGE: string;
2
+ export declare const RULES_INJECTOR_STORAGE: string;
3
+ export declare const PROJECT_MARKERS: string[];
4
+ export declare const PROJECT_RULE_SUBDIRS: [string, string][];
5
+ export declare const PROJECT_RULE_FILES: string[];
6
+ export declare const GITHUB_INSTRUCTIONS_PATTERN: RegExp;
7
+ export declare const USER_RULE_DIR = ".claude/rules";
8
+ export declare const RULE_EXTENSIONS: string[];
@@ -0,0 +1,33 @@
1
+ import type { RuleFileCandidate } from "./types";
2
+ /**
3
+ * Find project root by walking up from startPath.
4
+ * Checks for PROJECT_MARKERS (.git, pyproject.toml, package.json, etc.)
5
+ *
6
+ * @param startPath - Starting path to search from (file or directory)
7
+ * @returns Project root path or null if not found
8
+ */
9
+ export declare function findProjectRoot(startPath: string): string | null;
10
+ /**
11
+ * Calculate directory distance between a rule file and current file.
12
+ * Distance is based on common ancestor within project root.
13
+ *
14
+ * @param rulePath - Path to the rule file
15
+ * @param currentFile - Path to the current file being edited
16
+ * @param projectRoot - Project root for relative path calculation
17
+ * @returns Distance (0 = same directory, higher = further)
18
+ */
19
+ export declare function calculateDistance(rulePath: string, currentFile: string, projectRoot: string | null): number;
20
+ /**
21
+ * Find all rule files for a given context.
22
+ * Searches from currentFile upward to projectRoot for rule directories,
23
+ * then user-level directory (~/.claude/rules).
24
+ *
25
+ * IMPORTANT: This searches EVERY directory from file to project root.
26
+ * Not just the project root itself.
27
+ *
28
+ * @param projectRoot - Project root path (or null if outside any project)
29
+ * @param homeDir - User home directory
30
+ * @param currentFile - Current file being edited (for distance calculation)
31
+ * @returns Array of rule file candidates sorted by distance
32
+ */
33
+ export declare function findRuleFiles(projectRoot: string | null, homeDir: string, currentFile: string): RuleFileCandidate[];
@@ -0,0 +1 @@
1
+ export {};
@@ -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 createRulesInjectorHook(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 {};
@@ -0,0 +1,21 @@
1
+ import type { RuleMetadata } from "./types";
2
+ export interface MatchResult {
3
+ applies: boolean;
4
+ reason?: string;
5
+ }
6
+ /**
7
+ * Check if a rule should apply to the current file based on metadata
8
+ */
9
+ export declare function shouldApplyRule(metadata: RuleMetadata, currentFilePath: string, projectRoot: string | null): MatchResult;
10
+ /**
11
+ * Check if realPath already exists in cache (symlink deduplication)
12
+ */
13
+ export declare function isDuplicateByRealPath(realPath: string, cache: Set<string>): boolean;
14
+ /**
15
+ * Create SHA-256 hash of content, truncated to 16 chars
16
+ */
17
+ export declare function createContentHash(content: string): string;
18
+ /**
19
+ * Check if content hash already exists in cache
20
+ */
21
+ export declare function isDuplicateByContentHash(hash: string, cache: Set<string>): boolean;
@@ -0,0 +1,18 @@
1
+ import type { RuleMetadata } from "./types";
2
+ export interface RuleFrontmatterResult {
3
+ metadata: RuleMetadata;
4
+ body: string;
5
+ }
6
+ /**
7
+ * Parse YAML frontmatter from rule file content
8
+ * Supports:
9
+ * - Single string: globs: "**\/*.py"
10
+ * - Inline array: globs: ["**\/*.py", "src/**\/*.ts"]
11
+ * - Multi-line array:
12
+ * globs:
13
+ * - "**\/*.py"
14
+ * - "src/**\/*.ts"
15
+ * - Comma-separated: globs: "**\/*.py, src/**\/*.ts"
16
+ * - Claude Code 'paths' field (alias for globs)
17
+ */
18
+ export declare function parseRuleFrontmatter(content: string): RuleFrontmatterResult;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export declare function loadInjectedRules(sessionID: string): {
2
+ contentHashes: Set<string>;
3
+ realPaths: Set<string>;
4
+ };
5
+ export declare function saveInjectedRules(sessionID: string, data: {
6
+ contentHashes: Set<string>;
7
+ realPaths: Set<string>;
8
+ }): void;
9
+ export declare function clearInjectedRules(sessionID: string): void;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Rule file metadata (Claude Code style frontmatter)
3
+ * Supports both Claude Code format (globs, paths) and GitHub Copilot format (applyTo)
4
+ * @see https://docs.anthropic.com/en/docs/claude-code/settings#rule-files
5
+ * @see https://docs.github.com/en/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot
6
+ */
7
+ export interface RuleMetadata {
8
+ description?: string;
9
+ globs?: string | string[];
10
+ alwaysApply?: boolean;
11
+ }
12
+ /**
13
+ * Rule information with path context and content
14
+ */
15
+ export interface RuleInfo {
16
+ /** Absolute path to the rule file */
17
+ path: string;
18
+ /** Path relative to project root */
19
+ relativePath: string;
20
+ /** Directory distance from target file (0 = same dir) */
21
+ distance: number;
22
+ /** Rule file content (without frontmatter) */
23
+ content: string;
24
+ /** SHA-256 hash of content for deduplication */
25
+ contentHash: string;
26
+ /** Parsed frontmatter metadata */
27
+ metadata: RuleMetadata;
28
+ /** Why this rule matched (e.g., "alwaysApply", "glob: *.ts", "path match") */
29
+ matchReason: string;
30
+ /** Real path after symlink resolution (for duplicate detection) */
31
+ realPath: string;
32
+ }
33
+ /**
34
+ * Rule file candidate with discovery context
35
+ */
36
+ export interface RuleFileCandidate {
37
+ path: string;
38
+ realPath: string;
39
+ isGlobal: boolean;
40
+ distance: number;
41
+ /** Single-file rules (e.g., .github/copilot-instructions.md) always apply without frontmatter */
42
+ isSingleFile?: boolean;
43
+ }
44
+ /**
45
+ * Session storage for injected rules tracking
46
+ */
47
+ export interface InjectedRulesData {
48
+ sessionID: string;
49
+ /** Content hashes of already injected rules */
50
+ injectedHashes: string[];
51
+ /** Real paths of already injected rules (for symlink deduplication) */
52
+ injectedRealPaths: string[];
53
+ updatedAt: number;
54
+ }
@@ -0,0 +1,9 @@
1
+ type Platform = "darwin" | "linux" | "win32" | "unsupported";
2
+ export declare function getNotifySendPath(): Promise<string | null>;
3
+ export declare function getOsascriptPath(): Promise<string | null>;
4
+ export declare function getPowershellPath(): Promise<string | null>;
5
+ export declare function getAfplayPath(): Promise<string | null>;
6
+ export declare function getPaplayPath(): Promise<string | null>;
7
+ export declare function getAplayPath(): Promise<string | null>;
8
+ export declare function startBackgroundCheck(platform: Platform): void;
9
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ interface SessionNotificationConfig {
3
+ title?: string;
4
+ message?: string;
5
+ playSound?: boolean;
6
+ soundPath?: string;
7
+ /** Delay in ms before sending notification to confirm session is still idle (default: 1500) */
8
+ idleConfirmationDelay?: number;
9
+ /** Skip notification if there are incomplete todos (default: true) */
10
+ skipIfIncompleteTodos?: boolean;
11
+ /** Maximum number of sessions to track before cleanup (default: 100) */
12
+ maxTrackedSessions?: number;
13
+ }
14
+ export declare function createSessionNotification(ctx: PluginInput, config?: SessionNotificationConfig): ({ event }: {
15
+ event: {
16
+ type: string;
17
+ properties?: unknown;
18
+ };
19
+ }) => Promise<void>;
20
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare const OPENCODE_STORAGE: string;
2
+ export declare const MESSAGE_STORAGE: string;
3
+ export declare const PART_STORAGE: string;
4
+ export declare const THINKING_TYPES: Set<string>;
5
+ export declare const META_TYPES: Set<string>;
6
+ export declare const CONTENT_TYPES: Set<string>;
@@ -0,0 +1,22 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ import type { ExperimentalConfig } from "../../config";
3
+ export interface SessionRecoveryOptions {
4
+ experimental?: ExperimentalConfig;
5
+ }
6
+ type RecoveryErrorType = "tool_result_missing" | "thinking_block_order" | "thinking_disabled_violation" | null;
7
+ interface MessageInfo {
8
+ id?: string;
9
+ role?: string;
10
+ sessionID?: string;
11
+ parentID?: string;
12
+ error?: unknown;
13
+ }
14
+ export declare function detectErrorType(error: unknown): RecoveryErrorType;
15
+ export interface SessionRecoveryHook {
16
+ handleSessionRecovery: (info: MessageInfo) => Promise<boolean>;
17
+ isRecoverableError: (error: unknown) => boolean;
18
+ setOnAbortCallback: (callback: (sessionID: string) => void) => void;
19
+ setOnRecoveryCompleteCallback: (callback: (sessionID: string) => void) => void;
20
+ }
21
+ export declare function createSessionRecoveryHook(ctx: PluginInput, options?: SessionRecoveryOptions): SessionRecoveryHook;
22
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { StoredMessageMeta, StoredPart } from "./types";
2
+ export declare function generatePartId(): string;
3
+ export declare function getMessageDir(sessionID: string): string;
4
+ export declare function readMessages(sessionID: string): StoredMessageMeta[];
5
+ export declare function readParts(messageID: string): StoredPart[];
6
+ export declare function hasContent(part: StoredPart): boolean;
7
+ export declare function messageHasContent(messageID: string): boolean;
8
+ export declare function injectTextPart(sessionID: string, messageID: string, text: string): boolean;
9
+ export declare function findEmptyMessages(sessionID: string): string[];
10
+ export declare function findEmptyMessageByIndex(sessionID: string, targetIndex: number): string | null;
11
+ export declare function findFirstEmptyMessage(sessionID: string): string | null;
12
+ export declare function findMessagesWithThinkingBlocks(sessionID: string): string[];
13
+ export declare function findMessagesWithThinkingOnly(sessionID: string): string[];
14
+ export declare function findMessagesWithOrphanThinking(sessionID: string): string[];
15
+ export declare function prependThinkingPart(sessionID: string, messageID: string): boolean;
16
+ export declare function stripThinkingParts(messageID: string): boolean;
17
+ export declare function replaceEmptyTextParts(messageID: string, replacementText: string): boolean;
18
+ export declare function findMessagesWithEmptyTextParts(sessionID: string): string[];
19
+ export declare function findMessageByIndexNeedingThinking(sessionID: string, targetIndex: number): string | null;
@@ -0,0 +1,90 @@
1
+ export type ThinkingPartType = "thinking" | "redacted_thinking" | "reasoning";
2
+ export type MetaPartType = "step-start" | "step-finish";
3
+ export type ContentPartType = "text" | "tool" | "tool_use" | "tool_result";
4
+ export interface StoredMessageMeta {
5
+ id: string;
6
+ sessionID: string;
7
+ role: "user" | "assistant";
8
+ parentID?: string;
9
+ time?: {
10
+ created: number;
11
+ completed?: number;
12
+ };
13
+ error?: unknown;
14
+ }
15
+ export interface StoredTextPart {
16
+ id: string;
17
+ sessionID: string;
18
+ messageID: string;
19
+ type: "text";
20
+ text: string;
21
+ synthetic?: boolean;
22
+ ignored?: boolean;
23
+ }
24
+ export interface StoredToolPart {
25
+ id: string;
26
+ sessionID: string;
27
+ messageID: string;
28
+ type: "tool";
29
+ callID: string;
30
+ tool: string;
31
+ state: {
32
+ status: "pending" | "running" | "completed" | "error";
33
+ input: Record<string, unknown>;
34
+ output?: string;
35
+ error?: string;
36
+ };
37
+ }
38
+ export interface StoredReasoningPart {
39
+ id: string;
40
+ sessionID: string;
41
+ messageID: string;
42
+ type: "reasoning";
43
+ text: string;
44
+ }
45
+ export interface StoredStepPart {
46
+ id: string;
47
+ sessionID: string;
48
+ messageID: string;
49
+ type: "step-start" | "step-finish";
50
+ }
51
+ export type StoredPart = StoredTextPart | StoredToolPart | StoredReasoningPart | StoredStepPart | {
52
+ id: string;
53
+ sessionID: string;
54
+ messageID: string;
55
+ type: string;
56
+ [key: string]: unknown;
57
+ };
58
+ export interface MessageData {
59
+ info?: {
60
+ id?: string;
61
+ role?: string;
62
+ sessionID?: string;
63
+ parentID?: string;
64
+ error?: unknown;
65
+ agent?: string;
66
+ model?: {
67
+ providerID: string;
68
+ modelID: string;
69
+ };
70
+ system?: string;
71
+ tools?: Record<string, boolean>;
72
+ };
73
+ parts?: Array<{
74
+ type: string;
75
+ id?: string;
76
+ text?: string;
77
+ thinking?: string;
78
+ name?: string;
79
+ input?: Record<string, unknown>;
80
+ callID?: string;
81
+ }>;
82
+ }
83
+ export interface ResumeConfig {
84
+ sessionID: string;
85
+ agent?: string;
86
+ model?: {
87
+ providerID: string;
88
+ modelID: string;
89
+ };
90
+ }