context-mode 1.0.168 → 2.0.0-next.5

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 (395) hide show
  1. package/.claude-plugin/marketplace.json +4 -22
  2. package/.claude-plugin/plugin.json +9 -24
  3. package/SHA256SUMS +31 -0
  4. package/claude-code/skills/ctx-doctor/SKILL.md +6 -0
  5. package/claude-code/skills/ctx-stats/SKILL.md +6 -0
  6. package/claude-code/skills/ctx-upgrade/SKILL.md +6 -0
  7. package/cli.mjs +6744 -0
  8. package/copilot/plugin.json +14 -0
  9. package/fixtures/hook-roundtrip.json +22 -0
  10. package/gemini-extension.json +14 -0
  11. package/hook.mjs +202 -0
  12. package/hooks/claude-code.json +50 -0
  13. package/hooks/codex.json +50 -0
  14. package/hooks/copilot-cli.json +33 -0
  15. package/hooks/hooks.json +16 -111
  16. package/hooks/kiro.json +69 -0
  17. package/hooks/qwen.json +50 -0
  18. package/hooks/vscode.json +40 -0
  19. package/hooks/zcode.json +53 -0
  20. package/opencode/plugin.js +22456 -0
  21. package/package.json +29 -114
  22. package/pi/index.js +50841 -0
  23. package/pi/skills/ctx-doctor/SKILL.md +6 -0
  24. package/pi/skills/ctx-stats/SKILL.md +6 -0
  25. package/pi/skills/ctx-upgrade/SKILL.md +6 -0
  26. package/qwen-extension.json +15 -0
  27. package/run.mjs +5633 -0
  28. package/search.mjs +5633 -0
  29. package/server.mjs +48198 -0
  30. package/skills/ctx-doctor/SKILL.md +3 -19
  31. package/skills/ctx-stats/SKILL.md +3 -23
  32. package/skills/ctx-upgrade/SKILL.md +3 -28
  33. package/.codex-plugin/hooks.json +0 -65
  34. package/.codex-plugin/mcp.json +0 -13
  35. package/.codex-plugin/plugin.json +0 -31
  36. package/.openclaw-plugin/index.ts +0 -12
  37. package/.openclaw-plugin/openclaw.plugin.json +0 -38
  38. package/.openclaw-plugin/package.json +0 -28
  39. package/LICENSE +0 -94
  40. package/README.md +0 -1619
  41. package/bin/statusline.mjs +0 -378
  42. package/build/adapters/antigravity/index.d.ts +0 -51
  43. package/build/adapters/antigravity/index.js +0 -169
  44. package/build/adapters/antigravity-cli/index.d.ts +0 -51
  45. package/build/adapters/antigravity-cli/index.js +0 -342
  46. package/build/adapters/base.d.ts +0 -92
  47. package/build/adapters/base.js +0 -135
  48. package/build/adapters/claude-code/config.d.ts +0 -8
  49. package/build/adapters/claude-code/config.js +0 -8
  50. package/build/adapters/claude-code/hooks.d.ts +0 -106
  51. package/build/adapters/claude-code/hooks.js +0 -183
  52. package/build/adapters/claude-code/index.d.ts +0 -80
  53. package/build/adapters/claude-code/index.js +0 -569
  54. package/build/adapters/claude-code-base.d.ts +0 -49
  55. package/build/adapters/claude-code-base.js +0 -113
  56. package/build/adapters/client-map.d.ts +0 -10
  57. package/build/adapters/client-map.js +0 -42
  58. package/build/adapters/codex/config.d.ts +0 -8
  59. package/build/adapters/codex/config.js +0 -8
  60. package/build/adapters/codex/hooks.d.ts +0 -55
  61. package/build/adapters/codex/hooks.js +0 -64
  62. package/build/adapters/codex/index.d.ts +0 -87
  63. package/build/adapters/codex/index.js +0 -992
  64. package/build/adapters/codex/paths.d.ts +0 -1
  65. package/build/adapters/codex/paths.js +0 -12
  66. package/build/adapters/codex/usage.d.ts +0 -107
  67. package/build/adapters/codex/usage.js +0 -227
  68. package/build/adapters/copilot-base.d.ts +0 -94
  69. package/build/adapters/copilot-base.js +0 -297
  70. package/build/adapters/copilot-cli/hooks.d.ts +0 -33
  71. package/build/adapters/copilot-cli/hooks.js +0 -64
  72. package/build/adapters/copilot-cli/index.d.ts +0 -48
  73. package/build/adapters/copilot-cli/index.js +0 -341
  74. package/build/adapters/cursor/config.d.ts +0 -4
  75. package/build/adapters/cursor/config.js +0 -4
  76. package/build/adapters/cursor/hooks.d.ts +0 -55
  77. package/build/adapters/cursor/hooks.js +0 -82
  78. package/build/adapters/cursor/index.d.ts +0 -64
  79. package/build/adapters/cursor/index.js +0 -517
  80. package/build/adapters/detect.d.ts +0 -136
  81. package/build/adapters/detect.js +0 -623
  82. package/build/adapters/gemini-cli/config.d.ts +0 -8
  83. package/build/adapters/gemini-cli/config.js +0 -8
  84. package/build/adapters/gemini-cli/hooks.d.ts +0 -83
  85. package/build/adapters/gemini-cli/hooks.js +0 -115
  86. package/build/adapters/gemini-cli/index.d.ts +0 -80
  87. package/build/adapters/gemini-cli/index.js +0 -483
  88. package/build/adapters/jetbrains-copilot/config.d.ts +0 -8
  89. package/build/adapters/jetbrains-copilot/config.js +0 -8
  90. package/build/adapters/jetbrains-copilot/hooks.d.ts +0 -59
  91. package/build/adapters/jetbrains-copilot/hooks.js +0 -87
  92. package/build/adapters/jetbrains-copilot/index.d.ts +0 -31
  93. package/build/adapters/jetbrains-copilot/index.js +0 -131
  94. package/build/adapters/kimi/config.d.ts +0 -8
  95. package/build/adapters/kimi/config.js +0 -8
  96. package/build/adapters/kimi/hooks.d.ts +0 -28
  97. package/build/adapters/kimi/hooks.js +0 -34
  98. package/build/adapters/kimi/index.d.ts +0 -66
  99. package/build/adapters/kimi/index.js +0 -537
  100. package/build/adapters/kimi/paths.d.ts +0 -21
  101. package/build/adapters/kimi/paths.js +0 -52
  102. package/build/adapters/kimi/usage.d.ts +0 -82
  103. package/build/adapters/kimi/usage.js +0 -217
  104. package/build/adapters/kiro/hooks.d.ts +0 -61
  105. package/build/adapters/kiro/hooks.js +0 -94
  106. package/build/adapters/kiro/index.d.ts +0 -61
  107. package/build/adapters/kiro/index.js +0 -301
  108. package/build/adapters/omp/index.d.ts +0 -65
  109. package/build/adapters/omp/index.js +0 -182
  110. package/build/adapters/omp/plugin.d.ts +0 -81
  111. package/build/adapters/omp/plugin.js +0 -331
  112. package/build/adapters/omp/usage.d.ts +0 -49
  113. package/build/adapters/omp/usage.js +0 -110
  114. package/build/adapters/openclaw/config.d.ts +0 -8
  115. package/build/adapters/openclaw/config.js +0 -8
  116. package/build/adapters/openclaw/hooks.d.ts +0 -50
  117. package/build/adapters/openclaw/hooks.js +0 -61
  118. package/build/adapters/openclaw/index.d.ts +0 -74
  119. package/build/adapters/openclaw/index.js +0 -439
  120. package/build/adapters/openclaw/mcp-tools.d.ts +0 -54
  121. package/build/adapters/openclaw/mcp-tools.js +0 -207
  122. package/build/adapters/openclaw/plugin.d.ts +0 -141
  123. package/build/adapters/openclaw/plugin.js +0 -818
  124. package/build/adapters/openclaw/session-db.d.ts +0 -55
  125. package/build/adapters/openclaw/session-db.js +0 -88
  126. package/build/adapters/openclaw/usage.d.ts +0 -34
  127. package/build/adapters/openclaw/usage.js +0 -52
  128. package/build/adapters/openclaw/workspace-router.d.ts +0 -29
  129. package/build/adapters/openclaw/workspace-router.js +0 -64
  130. package/build/adapters/opencode/config.d.ts +0 -8
  131. package/build/adapters/opencode/config.js +0 -8
  132. package/build/adapters/opencode/hooks.d.ts +0 -38
  133. package/build/adapters/opencode/hooks.js +0 -50
  134. package/build/adapters/opencode/index.d.ts +0 -67
  135. package/build/adapters/opencode/index.js +0 -463
  136. package/build/adapters/opencode/plugin.d.ts +0 -184
  137. package/build/adapters/opencode/plugin.js +0 -558
  138. package/build/adapters/opencode/zod3tov4.d.ts +0 -1
  139. package/build/adapters/opencode/zod3tov4.js +0 -132
  140. package/build/adapters/pi/extension.d.ts +0 -81
  141. package/build/adapters/pi/extension.js +0 -861
  142. package/build/adapters/pi/index.d.ts +0 -57
  143. package/build/adapters/pi/index.js +0 -173
  144. package/build/adapters/pi/mcp-bridge.d.ts +0 -268
  145. package/build/adapters/pi/mcp-bridge.js +0 -894
  146. package/build/adapters/qwen-code/hooks.d.ts +0 -26
  147. package/build/adapters/qwen-code/hooks.js +0 -29
  148. package/build/adapters/qwen-code/index.d.ts +0 -40
  149. package/build/adapters/qwen-code/index.js +0 -361
  150. package/build/adapters/qwen-code/usage.d.ts +0 -90
  151. package/build/adapters/qwen-code/usage.js +0 -222
  152. package/build/adapters/types.d.ts +0 -360
  153. package/build/adapters/types.js +0 -118
  154. package/build/adapters/vscode-copilot/config.d.ts +0 -8
  155. package/build/adapters/vscode-copilot/config.js +0 -8
  156. package/build/adapters/vscode-copilot/hooks.d.ts +0 -71
  157. package/build/adapters/vscode-copilot/hooks.js +0 -98
  158. package/build/adapters/vscode-copilot/index.d.ts +0 -32
  159. package/build/adapters/vscode-copilot/index.js +0 -222
  160. package/build/adapters/zed/index.d.ts +0 -40
  161. package/build/adapters/zed/index.js +0 -163
  162. package/build/cache-heal.d.ts +0 -48
  163. package/build/cache-heal.js +0 -150
  164. package/build/cli.d.ts +0 -34
  165. package/build/cli.js +0 -1827
  166. package/build/concurrency/runPool.d.ts +0 -36
  167. package/build/concurrency/runPool.js +0 -51
  168. package/build/db-base.d.ts +0 -179
  169. package/build/db-base.js +0 -569
  170. package/build/executor.d.ts +0 -72
  171. package/build/executor.js +0 -678
  172. package/build/exit-classify.d.ts +0 -19
  173. package/build/exit-classify.js +0 -12
  174. package/build/fetch-cache.d.ts +0 -13
  175. package/build/fetch-cache.js +0 -15
  176. package/build/lifecycle.d.ts +0 -124
  177. package/build/lifecycle.js +0 -278
  178. package/build/openclaw/mcp-tools.d.ts +0 -54
  179. package/build/openclaw/mcp-tools.js +0 -198
  180. package/build/openclaw/workspace-router.d.ts +0 -29
  181. package/build/openclaw/workspace-router.js +0 -64
  182. package/build/openclaw-plugin.d.ts +0 -130
  183. package/build/openclaw-plugin.js +0 -626
  184. package/build/opencode-plugin.d.ts +0 -122
  185. package/build/opencode-plugin.js +0 -375
  186. package/build/pi-extension.d.ts +0 -14
  187. package/build/pi-extension.js +0 -451
  188. package/build/routing-block.d.ts +0 -8
  189. package/build/routing-block.js +0 -86
  190. package/build/runPool.d.ts +0 -36
  191. package/build/runPool.js +0 -51
  192. package/build/runtime.d.ts +0 -71
  193. package/build/runtime.js +0 -659
  194. package/build/search/auto-memory.d.ts +0 -47
  195. package/build/search/auto-memory.js +0 -170
  196. package/build/search/ctx-search-schema.d.ts +0 -90
  197. package/build/search/ctx-search-schema.js +0 -135
  198. package/build/search/flood-guard.d.ts +0 -57
  199. package/build/search/flood-guard.js +0 -80
  200. package/build/search/unified.d.ts +0 -56
  201. package/build/search/unified.js +0 -104
  202. package/build/security.d.ts +0 -206
  203. package/build/security.js +0 -780
  204. package/build/server.d.ts +0 -184
  205. package/build/server.js +0 -4542
  206. package/build/session/analytics.d.ts +0 -745
  207. package/build/session/analytics.js +0 -2369
  208. package/build/session/db.d.ts +0 -468
  209. package/build/session/db.js +0 -1308
  210. package/build/session/error-classifier.d.ts +0 -87
  211. package/build/session/error-classifier.js +0 -303
  212. package/build/session/event-emit.d.ts +0 -48
  213. package/build/session/event-emit.js +0 -101
  214. package/build/session/extract.d.ts +0 -333
  215. package/build/session/extract.js +0 -2688
  216. package/build/session/model-prices.json +0 -429
  217. package/build/session/persist-tool-calls.d.ts +0 -54
  218. package/build/session/persist-tool-calls.js +0 -105
  219. package/build/session/pricing.d.ts +0 -64
  220. package/build/session/pricing.js +0 -151
  221. package/build/session/project-attribution.d.ts +0 -73
  222. package/build/session/project-attribution.js +0 -245
  223. package/build/session/purge.d.ts +0 -138
  224. package/build/session/purge.js +0 -240
  225. package/build/session/snapshot.d.ts +0 -46
  226. package/build/session/snapshot.js +0 -532
  227. package/build/store-directory.d.ts +0 -56
  228. package/build/store-directory.js +0 -254
  229. package/build/store.d.ts +0 -147
  230. package/build/store.js +0 -1714
  231. package/build/tool-naming.d.ts +0 -4
  232. package/build/tool-naming.js +0 -24
  233. package/build/truncate.d.ts +0 -57
  234. package/build/truncate.js +0 -142
  235. package/build/types.d.ts +0 -117
  236. package/build/types.js +0 -20
  237. package/build/util/claude-config.d.ts +0 -32
  238. package/build/util/claude-config.js +0 -84
  239. package/build/util/hook-config.d.ts +0 -27
  240. package/build/util/hook-config.js +0 -76
  241. package/build/util/jsonc.d.ts +0 -14
  242. package/build/util/jsonc.js +0 -104
  243. package/build/util/plugin-cache-integrity.d.ts +0 -51
  244. package/build/util/plugin-cache-integrity.js +0 -146
  245. package/build/util/project-dir.d.ts +0 -149
  246. package/build/util/project-dir.js +0 -340
  247. package/build/util/sibling-mcp.d.ts +0 -79
  248. package/build/util/sibling-mcp.js +0 -181
  249. package/cli.bundle.mjs +0 -1235
  250. package/configs/antigravity/GEMINI.md +0 -68
  251. package/configs/antigravity/mcp_config.json +0 -7
  252. package/configs/antigravity-cli/hooks/hooks.json +0 -37
  253. package/configs/antigravity-cli/hooks.json +0 -37
  254. package/configs/antigravity-cli/mcp_config.json +0 -10
  255. package/configs/antigravity-cli/plugin.json +0 -14
  256. package/configs/antigravity-cli/rules/context-mode.md +0 -77
  257. package/configs/antigravity-cli/skills/context-mode/SKILL.md +0 -77
  258. package/configs/claude-code/CLAUDE.md +0 -91
  259. package/configs/codex/AGENTS.md +0 -99
  260. package/configs/codex/config.toml +0 -8
  261. package/configs/codex/hooks.json +0 -47
  262. package/configs/copilot-cli/.github/plugin/plugin.json +0 -23
  263. package/configs/copilot-cli/.mcp.json +0 -12
  264. package/configs/copilot-cli/README.md +0 -47
  265. package/configs/copilot-cli/hooks.json +0 -41
  266. package/configs/copilot-cli/skills/context-mode/SKILL.md +0 -38
  267. package/configs/cursor/context-mode.mdc +0 -76
  268. package/configs/cursor/hooks.json +0 -21
  269. package/configs/cursor/mcp.json +0 -7
  270. package/configs/gemini-cli/GEMINI.md +0 -88
  271. package/configs/gemini-cli/mcp.json +0 -7
  272. package/configs/gemini-cli/settings.json +0 -60
  273. package/configs/jetbrains-copilot/copilot-instructions.md +0 -80
  274. package/configs/jetbrains-copilot/hooks.json +0 -16
  275. package/configs/jetbrains-copilot/mcp.json +0 -7
  276. package/configs/kilo/AGENTS.md +0 -84
  277. package/configs/kilo/kilo.json +0 -6
  278. package/configs/kimi/hooks.json +0 -54
  279. package/configs/kiro/KIRO.md +0 -84
  280. package/configs/kiro/agent.json +0 -18
  281. package/configs/kiro/mcp.json +0 -7
  282. package/configs/omp/SYSTEM.md +0 -85
  283. package/configs/omp/mcp.json +0 -7
  284. package/configs/openclaw/AGENTS.md +0 -87
  285. package/configs/openclaw/openclaw.json +0 -13
  286. package/configs/opencode/AGENTS.md +0 -84
  287. package/configs/opencode/opencode.json +0 -6
  288. package/configs/pi/AGENTS.md +0 -3
  289. package/configs/qwen-code/QWEN.md +0 -91
  290. package/configs/vscode-copilot/copilot-instructions.md +0 -80
  291. package/configs/vscode-copilot/hooks.json +0 -16
  292. package/configs/vscode-copilot/mcp.json +0 -7
  293. package/configs/zed/AGENTS.md +0 -68
  294. package/hooks/antigravity-cli/payload.mjs +0 -98
  295. package/hooks/antigravity-cli/posttooluse.mjs +0 -138
  296. package/hooks/antigravity-cli/pretooluse.mjs +0 -78
  297. package/hooks/antigravity-cli/stop.mjs +0 -58
  298. package/hooks/auto-injection.mjs +0 -102
  299. package/hooks/cache-heal-utils.mjs +0 -379
  300. package/hooks/codex/platform.mjs +0 -1
  301. package/hooks/codex/posttooluse.mjs +0 -66
  302. package/hooks/codex/precompact.mjs +0 -70
  303. package/hooks/codex/pretooluse.mjs +0 -42
  304. package/hooks/codex/sessionstart.mjs +0 -121
  305. package/hooks/codex/stop.mjs +0 -138
  306. package/hooks/codex/userpromptsubmit.mjs +0 -75
  307. package/hooks/copilot-cli/posttooluse.mjs +0 -79
  308. package/hooks/copilot-cli/precompact.mjs +0 -66
  309. package/hooks/copilot-cli/pretooluse.mjs +0 -41
  310. package/hooks/copilot-cli/sessionstart.mjs +0 -121
  311. package/hooks/copilot-cli/stop.mjs +0 -59
  312. package/hooks/copilot-cli/userpromptsubmit.mjs +0 -77
  313. package/hooks/core/codex-caps.mjs +0 -112
  314. package/hooks/core/formatters.mjs +0 -356
  315. package/hooks/core/mcp-ready.mjs +0 -109
  316. package/hooks/core/platform-detect.mjs +0 -49
  317. package/hooks/core/routing.mjs +0 -1017
  318. package/hooks/core/stdin.mjs +0 -90
  319. package/hooks/core/tool-naming.mjs +0 -57
  320. package/hooks/cursor/afteragentresponse.mjs +0 -74
  321. package/hooks/cursor/hooks.json +0 -31
  322. package/hooks/cursor/posttooluse.mjs +0 -72
  323. package/hooks/cursor/pretooluse.mjs +0 -26
  324. package/hooks/cursor/sessionstart.mjs +0 -97
  325. package/hooks/cursor/stop.mjs +0 -48
  326. package/hooks/ensure-deps.mjs +0 -254
  327. package/hooks/formatters/claude-code.mjs +0 -113
  328. package/hooks/formatters/cursor.mjs +0 -37
  329. package/hooks/formatters/gemini-cli.mjs +0 -55
  330. package/hooks/formatters/vscode-copilot.mjs +0 -55
  331. package/hooks/gemini-cli/aftermodel.mjs +0 -70
  332. package/hooks/gemini-cli/aftertool.mjs +0 -61
  333. package/hooks/gemini-cli/beforeagent.mjs +0 -99
  334. package/hooks/gemini-cli/beforetool.mjs +0 -27
  335. package/hooks/gemini-cli/precompress.mjs +0 -55
  336. package/hooks/gemini-cli/sessionstart.mjs +0 -137
  337. package/hooks/heal-partial-install.mjs +0 -712
  338. package/hooks/jetbrains-copilot/posttooluse.mjs +0 -61
  339. package/hooks/jetbrains-copilot/precompact.mjs +0 -55
  340. package/hooks/jetbrains-copilot/pretooluse.mjs +0 -27
  341. package/hooks/jetbrains-copilot/sessionstart.mjs +0 -124
  342. package/hooks/kimi/platform.mjs +0 -1
  343. package/hooks/kimi/posttooluse.mjs +0 -72
  344. package/hooks/kimi/precompact.mjs +0 -80
  345. package/hooks/kimi/pretooluse.mjs +0 -42
  346. package/hooks/kimi/sessionend.mjs +0 -61
  347. package/hooks/kimi/sessionstart.mjs +0 -113
  348. package/hooks/kimi/stop.mjs +0 -132
  349. package/hooks/kimi/userpromptsubmit.mjs +0 -90
  350. package/hooks/kiro/agentspawn.mjs +0 -97
  351. package/hooks/kiro/posttooluse.mjs +0 -51
  352. package/hooks/kiro/pretooluse.mjs +0 -64
  353. package/hooks/kiro/userpromptsubmit.mjs +0 -88
  354. package/hooks/normalize-hooks.mjs +0 -323
  355. package/hooks/platform-bridge.mjs +0 -340
  356. package/hooks/posttooluse.mjs +0 -187
  357. package/hooks/precompact.mjs +0 -100
  358. package/hooks/pretooluse.mjs +0 -227
  359. package/hooks/qwen-code/platform.mjs +0 -1
  360. package/hooks/qwen-code/stop.mjs +0 -168
  361. package/hooks/routing-block.mjs +0 -105
  362. package/hooks/run-hook.mjs +0 -95
  363. package/hooks/security.bundle.mjs +0 -2
  364. package/hooks/session-attribution.bundle.mjs +0 -1
  365. package/hooks/session-db.bundle.mjs +0 -144
  366. package/hooks/session-directive.mjs +0 -520
  367. package/hooks/session-extract.bundle.mjs +0 -3
  368. package/hooks/session-helpers.mjs +0 -428
  369. package/hooks/session-loaders.mjs +0 -448
  370. package/hooks/session-snapshot.bundle.mjs +0 -32
  371. package/hooks/sessionstart.mjs +0 -464
  372. package/hooks/stop.mjs +0 -82
  373. package/hooks/suppress-stderr.mjs +0 -25
  374. package/hooks/userpromptsubmit.mjs +0 -108
  375. package/hooks/vscode-copilot/posttooluse.mjs +0 -61
  376. package/hooks/vscode-copilot/precompact.mjs +0 -55
  377. package/hooks/vscode-copilot/pretooluse.mjs +0 -27
  378. package/hooks/vscode-copilot/sessionstart.mjs +0 -129
  379. package/openclaw.plugin.json +0 -38
  380. package/scripts/heal-better-sqlite3.mjs +0 -430
  381. package/scripts/heal-installed-plugins.mjs +0 -598
  382. package/scripts/plugin-cache-integrity.mjs +0 -248
  383. package/scripts/postinstall.mjs +0 -384
  384. package/server.bundle.mjs +0 -1161
  385. package/skills/.ignore +0 -7
  386. package/skills/context-mode/SKILL.md +0 -300
  387. package/skills/context-mode/references/anti-patterns.md +0 -283
  388. package/skills/context-mode/references/patterns-javascript.md +0 -298
  389. package/skills/context-mode/references/patterns-python.md +0 -304
  390. package/skills/context-mode/references/patterns-shell.md +0 -277
  391. package/skills/ctx-index/SKILL.md +0 -46
  392. package/skills/ctx-insight/SKILL.md +0 -24
  393. package/skills/ctx-purge/SKILL.md +0 -49
  394. package/skills/ctx-search/SKILL.md +0 -35
  395. package/start.mjs +0 -616
@@ -1,301 +0,0 @@
1
- /**
2
- * adapters/kiro — Kiro IDE/CLI platform adapter.
3
- *
4
- * Implements HookAdapter for Kiro's hooks-capable paradigm (json-stdio).
5
- *
6
- * Kiro specifics:
7
- * - Hooks via agent config files (~/.kiro/agents/<name>.json)
8
- * - Config: ~/.kiro/settings/mcp.json (JSON format)
9
- * - MCP: full support via mcpServers in mcp.json
10
- * - Hook exit codes: 0=allow, 2=block
11
- * - Cannot modify tool input (exit codes only)
12
- * - Session dir: ~/.kiro/context-mode/sessions/
13
- * - Routing file: KIRO.md
14
- *
15
- * Sources:
16
- * - MCP config: https://kiro.dev/docs/mcp/configuration/
17
- * - clientInfo.name: https://github.com/kirodotdev/Kiro/issues/5205 ("Kiro CLI")
18
- * - CLI hooks: https://kiro.dev/docs/cli/custom-agents/configuration-reference#hooks-field
19
- */
20
- import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
21
- import { resolve, dirname } from "node:path";
22
- import { fileURLToPath } from "node:url";
23
- import { homedir } from "node:os";
24
- import { BaseAdapter } from "../base.js";
25
- import { HOOK_TYPES as KIRO_HOOK_TYPES, PRE_TOOL_USE_MATCHER_PATTERN as KIRO_PRE_TOOL_USE_MATCHER_PATTERN, buildHookCommand as buildKiroHookCommand, isContextModeHook as isKiroContextModeHook, } from "./hooks.js";
26
- // ─────────────────────────────────────────────────────────
27
- // Adapter implementation
28
- // ─────────────────────────────────────────────────────────
29
- export class KiroAdapter extends BaseAdapter {
30
- constructor() {
31
- super([".kiro"]);
32
- }
33
- name = "Kiro";
34
- paradigm = "json-stdio";
35
- capabilities = {
36
- preToolUse: true,
37
- postToolUse: true,
38
- preCompact: false,
39
- sessionStart: true, // Kiro agentSpawn = SessionStart equivalent
40
- canModifyArgs: false, // Kiro CLI uses exit codes, can't modify input
41
- canModifyOutput: false,
42
- canInjectSessionContext: true, // agentSpawn returns additionalContext via JSON stdout
43
- };
44
- // ── Input parsing ──────────────────────────────────────
45
- parsePreToolUseInput(raw) {
46
- const input = raw;
47
- return {
48
- toolName: input.tool_name ?? "",
49
- toolInput: input.tool_input ?? {},
50
- sessionId: `pid-${process.ppid}`,
51
- projectDir: input.cwd ?? process.cwd(),
52
- raw,
53
- };
54
- }
55
- parsePostToolUseInput(raw) {
56
- const input = raw;
57
- const toolResponse = input.tool_response;
58
- return {
59
- toolName: input.tool_name ?? "",
60
- toolInput: input.tool_input ?? {},
61
- toolOutput: typeof toolResponse === "string"
62
- ? toolResponse
63
- : JSON.stringify(toolResponse ?? ""),
64
- sessionId: `pid-${process.ppid}`,
65
- projectDir: input.cwd ?? process.cwd(),
66
- raw,
67
- };
68
- }
69
- parsePreCompactInput(_raw) {
70
- throw new Error("Kiro does not support PreCompact hooks");
71
- }
72
- parseSessionStartInput(raw) {
73
- // Kiro maps agentSpawn -> SessionStart. Stdin shape mirrors codex/CC.
74
- const input = (raw ?? {});
75
- const source = input.source ?? "startup";
76
- return {
77
- source,
78
- sessionId: `pid-${process.ppid}`,
79
- projectDir: input.cwd ?? process.cwd(),
80
- raw,
81
- };
82
- }
83
- // ── Response formatting ────────────────────────────────
84
- formatPreToolUseResponse(response) {
85
- // Kiro CLI uses exit codes — this format is for adapter interface completeness.
86
- // The actual hook script handles exit codes directly.
87
- switch (response.decision) {
88
- case "deny":
89
- return { exitCode: 2, stderr: response.reason ?? "Blocked by context-mode" };
90
- case "context":
91
- return { exitCode: 0, stdout: response.additionalContext ?? "" };
92
- default:
93
- return undefined; // allow — no output needed
94
- }
95
- }
96
- formatPostToolUseResponse(_response) {
97
- return undefined; // PostToolUse is non-blocking
98
- }
99
- formatPreCompactResponse(_response) {
100
- return undefined;
101
- }
102
- formatSessionStartResponse(response) {
103
- // Kiro agentSpawn returns the same hookSpecificOutput shape as CC SessionStart.
104
- if (!response?.context)
105
- return undefined;
106
- return {
107
- hookSpecificOutput: {
108
- hookEventName: "agentSpawn",
109
- additionalContext: response.context,
110
- },
111
- };
112
- }
113
- // ── Configuration ──────────────────────────────────────
114
- getSettingsPath() {
115
- return resolve(homedir(), ".kiro", "settings", "mcp.json");
116
- }
117
- /**
118
- * Kiro stores per-project context under .kiro/ (steering files, etc).
119
- * Auto-memory + rule detection use this project-relative dir, returned as
120
- * an absolute path resolved against `projectDir` (or `process.cwd()`).
121
- * (Settings/MCP config still live under ~/.kiro/.)
122
- */
123
- getConfigDir(projectDir) {
124
- return resolve(projectDir ?? process.cwd(), ".kiro");
125
- }
126
- getInstructionFiles() {
127
- return ["KIRO.md"];
128
- }
129
- generateHookConfig(pluginRoot) {
130
- // Kiro CLI hook config format: { <hookName>: [{ matcher, command }] }
131
- // Note: This generates the entries for agent config files (~/.kiro/agents/*.json).
132
- return {
133
- [KIRO_HOOK_TYPES.PRE_TOOL_USE]: [{
134
- matcher: KIRO_PRE_TOOL_USE_MATCHER_PATTERN,
135
- hooks: [{ type: "command", command: buildKiroHookCommand(KIRO_HOOK_TYPES.PRE_TOOL_USE, pluginRoot) }],
136
- }],
137
- [KIRO_HOOK_TYPES.POST_TOOL_USE]: [{
138
- matcher: "*",
139
- hooks: [{ type: "command", command: buildKiroHookCommand(KIRO_HOOK_TYPES.POST_TOOL_USE, pluginRoot) }],
140
- }],
141
- [KIRO_HOOK_TYPES.AGENT_SPAWN]: [{
142
- matcher: "*",
143
- hooks: [{ type: "command", command: buildKiroHookCommand(KIRO_HOOK_TYPES.AGENT_SPAWN, pluginRoot) }],
144
- }],
145
- [KIRO_HOOK_TYPES.USER_PROMPT_SUBMIT]: [{
146
- matcher: "*",
147
- hooks: [{ type: "command", command: buildKiroHookCommand(KIRO_HOOK_TYPES.USER_PROMPT_SUBMIT, pluginRoot) }],
148
- }],
149
- };
150
- }
151
- readSettings() {
152
- try {
153
- const raw = readFileSync(this.getSettingsPath(), "utf-8");
154
- return JSON.parse(raw);
155
- }
156
- catch {
157
- return null;
158
- }
159
- }
160
- writeSettings(settings) {
161
- const settingsPath = this.getSettingsPath();
162
- mkdirSync(dirname(settingsPath), { recursive: true });
163
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
164
- }
165
- // ── Diagnostics (doctor) ─────────────────────────────────
166
- validateHooks(pluginRoot) {
167
- const results = [];
168
- const defaultAgent = resolve(homedir(), ".kiro", "agents", "default.json");
169
- try {
170
- const config = JSON.parse(readFileSync(defaultAgent, "utf-8"));
171
- const hooks = config.hooks ?? {};
172
- // Check required hooks
173
- for (const hookType of [KIRO_HOOK_TYPES.PRE_TOOL_USE]) {
174
- const entries = hooks[hookType] ?? [];
175
- const found = entries.some((e) => isKiroContextModeHook(e, hookType));
176
- results.push({
177
- check: `Hook: ${hookType}`,
178
- status: found ? "pass" : "fail",
179
- message: found
180
- ? `context-mode ${hookType} hook found`
181
- : `context-mode ${hookType} hook not configured`,
182
- ...(found ? {} : { fix: `Run: context-mode upgrade` }),
183
- });
184
- }
185
- // Check optional hooks
186
- for (const hookType of [KIRO_HOOK_TYPES.POST_TOOL_USE]) {
187
- const entries = hooks[hookType] ?? [];
188
- const found = entries.some((e) => isKiroContextModeHook(e, hookType));
189
- results.push({
190
- check: `Hook: ${hookType}`,
191
- status: found ? "pass" : "warn",
192
- message: found
193
- ? `context-mode ${hookType} hook found`
194
- : `context-mode ${hookType} hook not configured (optional)`,
195
- });
196
- }
197
- }
198
- catch {
199
- results.push({
200
- check: "Hook configuration",
201
- status: "warn",
202
- message: "Could not read ~/.kiro/agents/default.json",
203
- fix: "Run: context-mode upgrade",
204
- });
205
- }
206
- return results;
207
- }
208
- checkPluginRegistration() {
209
- try {
210
- const raw = readFileSync(this.getSettingsPath(), "utf-8");
211
- const config = JSON.parse(raw);
212
- const mcpServers = config?.mcpServers ?? {};
213
- if ("context-mode" in mcpServers) {
214
- return {
215
- check: "MCP registration",
216
- status: "pass",
217
- message: "context-mode found in mcpServers config",
218
- };
219
- }
220
- return {
221
- check: "MCP registration",
222
- status: "fail",
223
- message: "context-mode not found in mcpServers",
224
- fix: "Add context-mode to mcpServers in ~/.kiro/settings/mcp.json",
225
- };
226
- }
227
- catch {
228
- return {
229
- check: "MCP registration",
230
- status: "warn",
231
- message: "Could not read ~/.kiro/settings/mcp.json",
232
- };
233
- }
234
- }
235
- getInstalledVersion() {
236
- try {
237
- const pkgPath = resolve(homedir(), ".kiro", "extensions", "context-mode", "package.json");
238
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
239
- return pkg.version ?? "unknown";
240
- }
241
- catch {
242
- return "not installed";
243
- }
244
- }
245
- // ── Upgrade ────────────────────────────────────────────
246
- configureAllHooks(pluginRoot) {
247
- const changes = [];
248
- const configDir = resolve(homedir(), ".kiro", "agents");
249
- const defaultAgent = resolve(configDir, "default.json");
250
- try {
251
- mkdirSync(configDir, { recursive: true });
252
- let config = {};
253
- try {
254
- config = JSON.parse(readFileSync(defaultAgent, "utf-8"));
255
- }
256
- catch {
257
- // No existing config — create new
258
- }
259
- const hooks = (config.hooks ?? {});
260
- // Hooks to add: [hookType, matcher]
261
- const hookSpecs = [
262
- [KIRO_HOOK_TYPES.PRE_TOOL_USE, KIRO_PRE_TOOL_USE_MATCHER_PATTERN],
263
- [KIRO_HOOK_TYPES.POST_TOOL_USE, "*"],
264
- [KIRO_HOOK_TYPES.AGENT_SPAWN, "*"],
265
- [KIRO_HOOK_TYPES.USER_PROMPT_SUBMIT, "*"],
266
- ];
267
- for (const [hookType, matcher] of hookSpecs) {
268
- const entries = (hooks[hookType] ?? []);
269
- if (!entries.some(e => isKiroContextModeHook(e, hookType))) {
270
- entries.push({
271
- matcher,
272
- command: buildKiroHookCommand(hookType, pluginRoot),
273
- });
274
- hooks[hookType] = entries;
275
- changes.push(`Added ${hookType} hook to ${defaultAgent}`);
276
- }
277
- }
278
- config.hooks = hooks;
279
- writeFileSync(defaultAgent, JSON.stringify(config, null, 2), "utf-8");
280
- }
281
- catch (err) {
282
- changes.push(`Failed to configure hooks: ${err.message}`);
283
- }
284
- return changes;
285
- }
286
- setHookPermissions(_pluginRoot) {
287
- return [];
288
- }
289
- updatePluginRegistry(_pluginRoot, _version) {
290
- // Kiro plugin registry is managed via mcp.json
291
- }
292
- getRoutingInstructions() {
293
- const instructionsPath = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "configs", "kiro", "KIRO.md");
294
- try {
295
- return readFileSync(instructionsPath, "utf-8");
296
- }
297
- catch {
298
- return "# context-mode\n\nUse context-mode MCP tools (execute, execute_file, batch_execute, fetch_and_index, search) instead of run_command/view_file for data-heavy operations.";
299
- }
300
- }
301
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * adapters/omp — Oh My Pi (OMP) platform adapter.
3
- *
4
- * OMP integration facts (verified against can1357/oh-my-pi @ v3.20.1):
5
- * - MCP config: `~/.omp/agent/mcp.json` (global) or `<project>/.omp/mcp.json`
6
- * (project), per `packages/utils/src/dirs.ts` `getMCPConfigPath()` and
7
- * `docs/mcp-config.md` "Preferred config locations".
8
- * - Agent-dir env override: `PI_CODING_AGENT_DIR` — `packages/utils/src/dirs.ts`:
9
- * `let dirs = new DirResolver(process.env.PI_CODING_AGENT_DIR);`
10
- * (No `OMP_*` runtime env exists; `.env`-file `OMP_*` keys are mirrored to
11
- * `PI_*` BEFORE process.env is read.)
12
- * - System-prompt file: `SYSTEM.md` (project `.omp/SYSTEM.md` precedence,
13
- * global `~/.omp/agent/SYSTEM.md` fallback). NOT `PI.md` — no `PI.md`
14
- * loader exists upstream. OMP also auto-discovers `AGENTS.md` via
15
- * `packages/coding-agent/src/discovery/agents-md.ts`.
16
- * - Hook surface: OMP DOES expose pre/post tool-call hooks
17
- * (`~/.omp/agent/hooks/{pre,post}/*.ts`, `omp.on("tool_call", ...)`).
18
- * This adapter ships MCP-only delivery for now; wiring native OMP
19
- * hooks is future work tracked separately.
20
- *
21
- * Why a dedicated adapter rather than reusing pi:
22
- * OMP and Pi share a runtime surface but different storage roots
23
- * (`~/.omp/agent/` vs `~/.pi/`). Without an OMP adapter, OMP users
24
- * running through a Claude-installed harness silently land their
25
- * context-mode data under `~/.claude/context-mode/` (issue #473).
26
- */
27
- import { BaseAdapter } from "../base.js";
28
- import type { HookAdapter, HookParadigm, PlatformCapabilities, DiagnosticResult, PreToolUseEvent, PostToolUseEvent, PreCompactEvent, SessionStartEvent, PreToolUseResponse, PostToolUseResponse, PreCompactResponse, SessionStartResponse, HookRegistration } from "../types.js";
29
- export declare class OMPAdapter extends BaseAdapter implements HookAdapter {
30
- constructor();
31
- readonly name = "OMP";
32
- readonly paradigm: HookParadigm;
33
- readonly capabilities: PlatformCapabilities;
34
- parsePreToolUseInput(_raw: unknown): PreToolUseEvent;
35
- parsePostToolUseInput(_raw: unknown): PostToolUseEvent;
36
- parsePreCompactInput(_raw: unknown): PreCompactEvent;
37
- parseSessionStartInput(_raw: unknown): SessionStartEvent;
38
- formatPreToolUseResponse(_response: PreToolUseResponse): unknown;
39
- formatPostToolUseResponse(_response: PostToolUseResponse): unknown;
40
- formatPreCompactResponse(_response: PreCompactResponse): unknown;
41
- formatSessionStartResponse(_response: SessionStartResponse): unknown;
42
- /**
43
- * Resolve OMP agent root, honoring `PI_CODING_AGENT_DIR` when set
44
- * (the upstream OMP convention — see `packages/utils/src/dirs.ts`)
45
- * and falling back to `~/.omp/agent`.
46
- */
47
- private getAgentDir;
48
- getSettingsPath(): string;
49
- /**
50
- * OMP nests its config under the agent dir. Always absolute.
51
- * `_projectDir` accepted for interface symmetry but unused — home-rooted.
52
- */
53
- getConfigDir(_projectDir?: string): string;
54
- getInstructionFiles(): string[];
55
- generateHookConfig(_pluginRoot: string): HookRegistration;
56
- readSettings(): Record<string, unknown> | null;
57
- writeSettings(settings: Record<string, unknown>): void;
58
- validateHooks(_pluginRoot: string): DiagnosticResult[];
59
- checkPluginRegistration(): DiagnosticResult;
60
- getInstalledVersion(): string;
61
- configureAllHooks(_pluginRoot: string): string[];
62
- setHookPermissions(_pluginRoot: string): string[];
63
- updatePluginRegistry(_pluginRoot: string, _version: string): void;
64
- getRoutingInstructions(): string;
65
- }
@@ -1,182 +0,0 @@
1
- /**
2
- * adapters/omp — Oh My Pi (OMP) platform adapter.
3
- *
4
- * OMP integration facts (verified against can1357/oh-my-pi @ v3.20.1):
5
- * - MCP config: `~/.omp/agent/mcp.json` (global) or `<project>/.omp/mcp.json`
6
- * (project), per `packages/utils/src/dirs.ts` `getMCPConfigPath()` and
7
- * `docs/mcp-config.md` "Preferred config locations".
8
- * - Agent-dir env override: `PI_CODING_AGENT_DIR` — `packages/utils/src/dirs.ts`:
9
- * `let dirs = new DirResolver(process.env.PI_CODING_AGENT_DIR);`
10
- * (No `OMP_*` runtime env exists; `.env`-file `OMP_*` keys are mirrored to
11
- * `PI_*` BEFORE process.env is read.)
12
- * - System-prompt file: `SYSTEM.md` (project `.omp/SYSTEM.md` precedence,
13
- * global `~/.omp/agent/SYSTEM.md` fallback). NOT `PI.md` — no `PI.md`
14
- * loader exists upstream. OMP also auto-discovers `AGENTS.md` via
15
- * `packages/coding-agent/src/discovery/agents-md.ts`.
16
- * - Hook surface: OMP DOES expose pre/post tool-call hooks
17
- * (`~/.omp/agent/hooks/{pre,post}/*.ts`, `omp.on("tool_call", ...)`).
18
- * This adapter ships MCP-only delivery for now; wiring native OMP
19
- * hooks is future work tracked separately.
20
- *
21
- * Why a dedicated adapter rather than reusing pi:
22
- * OMP and Pi share a runtime surface but different storage roots
23
- * (`~/.omp/agent/` vs `~/.pi/`). Without an OMP adapter, OMP users
24
- * running through a Claude-installed harness silently land their
25
- * context-mode data under `~/.claude/context-mode/` (issue #473).
26
- */
27
- import { readFileSync, writeFileSync, mkdirSync, } from "node:fs";
28
- import { resolve, dirname } from "node:path";
29
- import { homedir } from "node:os";
30
- import { BaseAdapter } from "../base.js";
31
- // ─────────────────────────────────────────────────────────
32
- // Adapter implementation
33
- // ─────────────────────────────────────────────────────────
34
- export class OMPAdapter extends BaseAdapter {
35
- constructor() {
36
- super([".omp"]);
37
- }
38
- name = "OMP";
39
- paradigm = "mcp-only";
40
- capabilities = {
41
- preToolUse: false,
42
- postToolUse: false,
43
- preCompact: false,
44
- sessionStart: false,
45
- canModifyArgs: false,
46
- canModifyOutput: false,
47
- canInjectSessionContext: false,
48
- };
49
- // ── Input parsing ──────────────────────────────────────
50
- // OMP does not support hooks. These methods exist to satisfy the
51
- // interface contract but will throw if called.
52
- parsePreToolUseInput(_raw) {
53
- throw new Error("OMP hooks not wired by this adapter (MCP-only delivery)");
54
- }
55
- parsePostToolUseInput(_raw) {
56
- throw new Error("OMP hooks not wired by this adapter (MCP-only delivery)");
57
- }
58
- parsePreCompactInput(_raw) {
59
- throw new Error("OMP hooks not wired by this adapter (MCP-only delivery)");
60
- }
61
- parseSessionStartInput(_raw) {
62
- throw new Error("OMP hooks not wired by this adapter (MCP-only delivery)");
63
- }
64
- // ── Response formatting ────────────────────────────────
65
- // OMP does not support hooks. Return undefined for all responses.
66
- formatPreToolUseResponse(_response) {
67
- return undefined;
68
- }
69
- formatPostToolUseResponse(_response) {
70
- return undefined;
71
- }
72
- formatPreCompactResponse(_response) {
73
- return undefined;
74
- }
75
- formatSessionStartResponse(_response) {
76
- return undefined;
77
- }
78
- // ── Configuration ──────────────────────────────────────
79
- /**
80
- * Resolve OMP agent root, honoring `PI_CODING_AGENT_DIR` when set
81
- * (the upstream OMP convention — see `packages/utils/src/dirs.ts`)
82
- * and falling back to `~/.omp/agent`.
83
- */
84
- getAgentDir() {
85
- return process.env.PI_CODING_AGENT_DIR
86
- ?? resolve(homedir(), ".omp", "agent");
87
- }
88
- getSettingsPath() {
89
- return resolve(this.getAgentDir(), "mcp.json");
90
- }
91
- /**
92
- * OMP nests its config under the agent dir. Always absolute.
93
- * `_projectDir` accepted for interface symmetry but unused — home-rooted.
94
- */
95
- getConfigDir(_projectDir) {
96
- return this.getAgentDir();
97
- }
98
- getInstructionFiles() {
99
- // SYSTEM.md is the OMP-native system-prompt file (see
100
- // can1357/oh-my-pi README "Custom System Prompt"). AGENTS.md is also
101
- // auto-discovered by the universal discovery layer.
102
- return ["SYSTEM.md", "AGENTS.md"];
103
- }
104
- generateHookConfig(_pluginRoot) {
105
- return {};
106
- }
107
- readSettings() {
108
- try {
109
- const raw = readFileSync(this.getSettingsPath(), "utf-8");
110
- return JSON.parse(raw);
111
- }
112
- catch {
113
- return null;
114
- }
115
- }
116
- writeSettings(settings) {
117
- const settingsPath = this.getSettingsPath();
118
- mkdirSync(dirname(settingsPath), { recursive: true });
119
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
120
- }
121
- // ── Diagnostics (doctor) ─────────────────────────────────
122
- validateHooks(_pluginRoot) {
123
- return [
124
- {
125
- check: "Hook support",
126
- status: "warn",
127
- message: "context-mode delivers via MCP for OMP. " +
128
- "Native OMP pre/post tool-call hooks are not yet wired by this adapter.",
129
- },
130
- ];
131
- }
132
- checkPluginRegistration() {
133
- try {
134
- const raw = readFileSync(this.getSettingsPath(), "utf-8");
135
- const config = JSON.parse(raw);
136
- const mcpServers = config?.mcpServers ?? {};
137
- if ("context-mode" in mcpServers) {
138
- return {
139
- check: "MCP registration",
140
- status: "pass",
141
- message: "context-mode found in mcpServers config",
142
- };
143
- }
144
- return {
145
- check: "MCP registration",
146
- status: "fail",
147
- message: "context-mode not found in mcpServers",
148
- fix: `Add context-mode to mcpServers in ${this.getSettingsPath()}`,
149
- };
150
- }
151
- catch {
152
- return {
153
- check: "MCP registration",
154
- status: "warn",
155
- message: `Could not read ${this.getSettingsPath()}`,
156
- };
157
- }
158
- }
159
- getInstalledVersion() {
160
- try {
161
- const pkgPath = resolve(this.getAgentDir(), "extensions", "context-mode", "package.json");
162
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
163
- return pkg.version ?? "unknown";
164
- }
165
- catch {
166
- return "not installed";
167
- }
168
- }
169
- // ── Upgrade ────────────────────────────────────────────
170
- configureAllHooks(_pluginRoot) {
171
- return [];
172
- }
173
- setHookPermissions(_pluginRoot) {
174
- return [];
175
- }
176
- updatePluginRegistry(_pluginRoot, _version) {
177
- // OMP MCP server registry is managed via mcp.json
178
- }
179
- getRoutingInstructions() {
180
- return "# context-mode\n\nUse context-mode MCP tools (execute, execute_file, batch_execute, fetch_and_index, search) instead of run_command/view_file for data-heavy operations.";
181
- }
182
- }
@@ -1,81 +0,0 @@
1
- /**
2
- * Oh My Pi (OMP) plugin entry point for context-mode.
3
- *
4
- * Mirrors the Pi extension shape (`src/adapters/pi/extension.ts`) for
5
- * the four OMP hook events that materially protect the context window
6
- * and persist session continuity:
7
- *
8
- * - session_start — initialize the session row in our DB
9
- * - tool_call — hard-block curl/wget/inline-HTTP in bash
10
- * - tool_result — extract structured events into the session DB
11
- * - session_before_compact — persist a resume snapshot before compaction
12
- *
13
- * Loaded by OMP via the `omp` (or `pi`) field in package.json — see
14
- * upstream loader at refs/platforms/oh-my-pi/packages/coding-agent/src/
15
- * extensibility/plugins/loader.ts:75:
16
- * `const manifest: PluginManifest | undefined = pluginPkg.omp || pluginPkg.pi;`
17
- * Hook factory contract from refs/.../extensibility/hooks/types.ts:809:
18
- * `export type HookFactory = (pi: HookAPI) => void;`
19
- *
20
- * OMP differs from Pi in two ways that justify a dedicated plugin file:
21
- * 1. Storage roots at ~/.omp/context-mode/ via OMPAdapter, not ~/.pi/
22
- * 2. OMP has native MCP support (mcp.json), so no MCP bridge is needed
23
- * — the bridge that Pi's extension ships (mcp-bridge.ts) is dead weight
24
- * under OMP and is intentionally omitted here.
25
- */
26
- export declare function _resetOmpPluginStateForTests(): void;
27
- /**
28
- * Return the current session ID picked by the most recent session_start
29
- * handler. Test-only — production code reads `_sessionId` directly via
30
- * the closure. The shared SQLite DB at `~/.omp/context-mode/` survives
31
- * between tests, so `getLatestSessionId()` cannot disambiguate which
32
- * row belongs to "this" test when multiple tests insert in the same
33
- * second; tests use this getter instead.
34
- */
35
- export declare function _getOmpPluginSessionIdForTests(): string;
36
- type ToolCallEvent = {
37
- toolName: string;
38
- toolCallId?: string;
39
- input?: Record<string, unknown>;
40
- };
41
- type ToolResultEvent = {
42
- toolName: string;
43
- toolCallId?: string;
44
- input?: Record<string, unknown>;
45
- content?: Array<{
46
- type: string;
47
- text?: string;
48
- }>;
49
- isError?: boolean;
50
- };
51
- type ToolCallEventResult = {
52
- block?: boolean;
53
- reason?: string;
54
- };
55
- type TurnEndEvent = {
56
- type?: string;
57
- message?: unknown;
58
- messages?: unknown;
59
- };
60
- type HookEventCtx = Record<string, unknown> | undefined;
61
- type HookHandler<E, R = void> = (event: E, ctx: HookEventCtx) => R | undefined | Promise<R | undefined>;
62
- export interface MinimalHookAPI {
63
- on(event: "session_start", handler: HookHandler<{
64
- type: "session_start";
65
- }>): void;
66
- on(event: "session_before_compact", handler: HookHandler<{
67
- type: "session_before_compact";
68
- }>): void;
69
- on(event: "tool_call", handler: HookHandler<ToolCallEvent, ToolCallEventResult>): void;
70
- on(event: "tool_result", handler: HookHandler<ToolResultEvent>): void;
71
- on(event: "turn_end", handler: HookHandler<TurnEndEvent>): void;
72
- on(event: string, handler: (...args: unknown[]) => unknown): void;
73
- }
74
- /**
75
- * OMP plugin default export. Called once by the OMP runtime per
76
- * upstream `extensibility/plugins/loader.ts` after `omp plugin install
77
- * context-mode`. Subsequent `pi.on(...)` registrations route the four
78
- * lifecycle events to our SessionDB-backed handlers below.
79
- */
80
- export default function ompPlugin(pi: MinimalHookAPI): void;
81
- export {};