context-mode 1.0.169 → 2.0.0-next.6

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 (382) hide show
  1. package/.claude-plugin/marketplace.json +4 -22
  2. package/.claude-plugin/plugin.json +9 -24
  3. package/.codex-plugin/hooks.json +18 -33
  4. package/.codex-plugin/mcp.json +5 -4
  5. package/.codex-plugin/plugin.json +8 -27
  6. package/SHA256SUMS +37 -0
  7. package/claude-code/skills/ctx-doctor/SKILL.md +6 -0
  8. package/claude-code/skills/ctx-stats/SKILL.md +6 -0
  9. package/claude-code/skills/ctx-upgrade/SKILL.md +6 -0
  10. package/cli.mjs +6859 -0
  11. package/codex/skills/ctx-doctor/SKILL.md +6 -0
  12. package/codex/skills/ctx-stats/SKILL.md +6 -0
  13. package/codex/skills/ctx-upgrade/SKILL.md +6 -0
  14. package/copilot/plugin.json +14 -0
  15. package/fixtures/hook-roundtrip.json +22 -0
  16. package/gemini-extension.json +14 -0
  17. package/hook.mjs +202 -0
  18. package/hooks/claude-code.json +50 -0
  19. package/hooks/codex.json +50 -0
  20. package/hooks/copilot-cli.json +33 -0
  21. package/hooks/hooks.json +16 -111
  22. package/hooks/kiro.json +69 -0
  23. package/hooks/qwen.json +50 -0
  24. package/hooks/vscode.json +40 -0
  25. package/hooks/zcode.json +53 -0
  26. package/opencode/plugin.js +22491 -0
  27. package/package.json +32 -114
  28. package/pi/index.js +50876 -0
  29. package/pi/skills/ctx-doctor/SKILL.md +6 -0
  30. package/pi/skills/ctx-stats/SKILL.md +6 -0
  31. package/pi/skills/ctx-upgrade/SKILL.md +6 -0
  32. package/qwen-extension.json +15 -0
  33. package/run.mjs +5639 -0
  34. package/search.mjs +5639 -0
  35. package/server.mjs +48214 -0
  36. package/skills/ctx-doctor/SKILL.md +3 -19
  37. package/skills/ctx-stats/SKILL.md +3 -23
  38. package/skills/ctx-upgrade/SKILL.md +3 -28
  39. package/.openclaw-plugin/index.ts +0 -12
  40. package/.openclaw-plugin/openclaw.plugin.json +0 -38
  41. package/.openclaw-plugin/package.json +0 -28
  42. package/LICENSE +0 -94
  43. package/README.md +0 -1619
  44. package/bin/statusline.mjs +0 -378
  45. package/build/adapters/antigravity/index.d.ts +0 -51
  46. package/build/adapters/antigravity/index.js +0 -169
  47. package/build/adapters/antigravity-cli/index.d.ts +0 -51
  48. package/build/adapters/antigravity-cli/index.js +0 -342
  49. package/build/adapters/base.d.ts +0 -92
  50. package/build/adapters/base.js +0 -135
  51. package/build/adapters/claude-code/config.d.ts +0 -8
  52. package/build/adapters/claude-code/config.js +0 -8
  53. package/build/adapters/claude-code/hooks.d.ts +0 -106
  54. package/build/adapters/claude-code/hooks.js +0 -183
  55. package/build/adapters/claude-code/index.d.ts +0 -80
  56. package/build/adapters/claude-code/index.js +0 -569
  57. package/build/adapters/claude-code-base.d.ts +0 -49
  58. package/build/adapters/claude-code-base.js +0 -113
  59. package/build/adapters/client-map.d.ts +0 -10
  60. package/build/adapters/client-map.js +0 -42
  61. package/build/adapters/codex/config.d.ts +0 -8
  62. package/build/adapters/codex/config.js +0 -8
  63. package/build/adapters/codex/hooks.d.ts +0 -55
  64. package/build/adapters/codex/hooks.js +0 -64
  65. package/build/adapters/codex/index.d.ts +0 -87
  66. package/build/adapters/codex/index.js +0 -992
  67. package/build/adapters/codex/paths.d.ts +0 -1
  68. package/build/adapters/codex/paths.js +0 -12
  69. package/build/adapters/codex/usage.d.ts +0 -107
  70. package/build/adapters/codex/usage.js +0 -227
  71. package/build/adapters/copilot-base.d.ts +0 -94
  72. package/build/adapters/copilot-base.js +0 -297
  73. package/build/adapters/copilot-cli/hooks.d.ts +0 -33
  74. package/build/adapters/copilot-cli/hooks.js +0 -64
  75. package/build/adapters/copilot-cli/index.d.ts +0 -48
  76. package/build/adapters/copilot-cli/index.js +0 -341
  77. package/build/adapters/cursor/config.d.ts +0 -4
  78. package/build/adapters/cursor/config.js +0 -4
  79. package/build/adapters/cursor/hooks.d.ts +0 -55
  80. package/build/adapters/cursor/hooks.js +0 -82
  81. package/build/adapters/cursor/index.d.ts +0 -64
  82. package/build/adapters/cursor/index.js +0 -517
  83. package/build/adapters/detect.d.ts +0 -136
  84. package/build/adapters/detect.js +0 -623
  85. package/build/adapters/gemini-cli/config.d.ts +0 -8
  86. package/build/adapters/gemini-cli/config.js +0 -8
  87. package/build/adapters/gemini-cli/hooks.d.ts +0 -83
  88. package/build/adapters/gemini-cli/hooks.js +0 -115
  89. package/build/adapters/gemini-cli/index.d.ts +0 -80
  90. package/build/adapters/gemini-cli/index.js +0 -483
  91. package/build/adapters/jetbrains-copilot/config.d.ts +0 -8
  92. package/build/adapters/jetbrains-copilot/config.js +0 -8
  93. package/build/adapters/jetbrains-copilot/hooks.d.ts +0 -59
  94. package/build/adapters/jetbrains-copilot/hooks.js +0 -87
  95. package/build/adapters/jetbrains-copilot/index.d.ts +0 -31
  96. package/build/adapters/jetbrains-copilot/index.js +0 -131
  97. package/build/adapters/kimi/config.d.ts +0 -8
  98. package/build/adapters/kimi/config.js +0 -8
  99. package/build/adapters/kimi/hooks.d.ts +0 -28
  100. package/build/adapters/kimi/hooks.js +0 -34
  101. package/build/adapters/kimi/index.d.ts +0 -66
  102. package/build/adapters/kimi/index.js +0 -537
  103. package/build/adapters/kimi/paths.d.ts +0 -21
  104. package/build/adapters/kimi/paths.js +0 -52
  105. package/build/adapters/kimi/usage.d.ts +0 -82
  106. package/build/adapters/kimi/usage.js +0 -217
  107. package/build/adapters/kiro/hooks.d.ts +0 -61
  108. package/build/adapters/kiro/hooks.js +0 -94
  109. package/build/adapters/kiro/index.d.ts +0 -61
  110. package/build/adapters/kiro/index.js +0 -301
  111. package/build/adapters/omp/index.d.ts +0 -65
  112. package/build/adapters/omp/index.js +0 -182
  113. package/build/adapters/omp/plugin.d.ts +0 -81
  114. package/build/adapters/omp/plugin.js +0 -331
  115. package/build/adapters/omp/usage.d.ts +0 -49
  116. package/build/adapters/omp/usage.js +0 -110
  117. package/build/adapters/openclaw/config.d.ts +0 -8
  118. package/build/adapters/openclaw/config.js +0 -8
  119. package/build/adapters/openclaw/hooks.d.ts +0 -50
  120. package/build/adapters/openclaw/hooks.js +0 -61
  121. package/build/adapters/openclaw/index.d.ts +0 -74
  122. package/build/adapters/openclaw/index.js +0 -439
  123. package/build/adapters/openclaw/mcp-tools.d.ts +0 -54
  124. package/build/adapters/openclaw/mcp-tools.js +0 -207
  125. package/build/adapters/openclaw/plugin.d.ts +0 -141
  126. package/build/adapters/openclaw/plugin.js +0 -818
  127. package/build/adapters/openclaw/session-db.d.ts +0 -55
  128. package/build/adapters/openclaw/session-db.js +0 -88
  129. package/build/adapters/openclaw/usage.d.ts +0 -34
  130. package/build/adapters/openclaw/usage.js +0 -52
  131. package/build/adapters/openclaw/workspace-router.d.ts +0 -29
  132. package/build/adapters/openclaw/workspace-router.js +0 -64
  133. package/build/adapters/opencode/config.d.ts +0 -8
  134. package/build/adapters/opencode/config.js +0 -8
  135. package/build/adapters/opencode/hooks.d.ts +0 -38
  136. package/build/adapters/opencode/hooks.js +0 -50
  137. package/build/adapters/opencode/index.d.ts +0 -67
  138. package/build/adapters/opencode/index.js +0 -463
  139. package/build/adapters/opencode/plugin.d.ts +0 -184
  140. package/build/adapters/opencode/plugin.js +0 -558
  141. package/build/adapters/opencode/zod3tov4.d.ts +0 -1
  142. package/build/adapters/opencode/zod3tov4.js +0 -132
  143. package/build/adapters/pi/extension.d.ts +0 -81
  144. package/build/adapters/pi/extension.js +0 -861
  145. package/build/adapters/pi/index.d.ts +0 -57
  146. package/build/adapters/pi/index.js +0 -173
  147. package/build/adapters/pi/mcp-bridge.d.ts +0 -268
  148. package/build/adapters/pi/mcp-bridge.js +0 -894
  149. package/build/adapters/qwen-code/hooks.d.ts +0 -26
  150. package/build/adapters/qwen-code/hooks.js +0 -29
  151. package/build/adapters/qwen-code/index.d.ts +0 -40
  152. package/build/adapters/qwen-code/index.js +0 -361
  153. package/build/adapters/qwen-code/usage.d.ts +0 -90
  154. package/build/adapters/qwen-code/usage.js +0 -222
  155. package/build/adapters/types.d.ts +0 -360
  156. package/build/adapters/types.js +0 -118
  157. package/build/adapters/vscode-copilot/config.d.ts +0 -8
  158. package/build/adapters/vscode-copilot/config.js +0 -8
  159. package/build/adapters/vscode-copilot/hooks.d.ts +0 -71
  160. package/build/adapters/vscode-copilot/hooks.js +0 -98
  161. package/build/adapters/vscode-copilot/index.d.ts +0 -32
  162. package/build/adapters/vscode-copilot/index.js +0 -222
  163. package/build/adapters/zed/index.d.ts +0 -40
  164. package/build/adapters/zed/index.js +0 -163
  165. package/build/cli.d.ts +0 -34
  166. package/build/cli.js +0 -1827
  167. package/build/db-base.d.ts +0 -179
  168. package/build/db-base.js +0 -569
  169. package/build/executor.d.ts +0 -72
  170. package/build/executor.js +0 -678
  171. package/build/exit-classify.d.ts +0 -19
  172. package/build/exit-classify.js +0 -12
  173. package/build/fetch-cache.d.ts +0 -13
  174. package/build/fetch-cache.js +0 -15
  175. package/build/lifecycle.d.ts +0 -124
  176. package/build/lifecycle.js +0 -278
  177. package/build/runPool.d.ts +0 -36
  178. package/build/runPool.js +0 -51
  179. package/build/runtime.d.ts +0 -71
  180. package/build/runtime.js +0 -659
  181. package/build/search/auto-memory.d.ts +0 -47
  182. package/build/search/auto-memory.js +0 -170
  183. package/build/search/ctx-search-schema.d.ts +0 -90
  184. package/build/search/ctx-search-schema.js +0 -135
  185. package/build/search/flood-guard.d.ts +0 -57
  186. package/build/search/flood-guard.js +0 -80
  187. package/build/search/unified.d.ts +0 -56
  188. package/build/search/unified.js +0 -104
  189. package/build/security.d.ts +0 -206
  190. package/build/security.js +0 -780
  191. package/build/server.d.ts +0 -184
  192. package/build/server.js +0 -4563
  193. package/build/session/analytics.d.ts +0 -773
  194. package/build/session/analytics.js +0 -2420
  195. package/build/session/db.d.ts +0 -468
  196. package/build/session/db.js +0 -1308
  197. package/build/session/error-classifier.d.ts +0 -87
  198. package/build/session/error-classifier.js +0 -303
  199. package/build/session/event-emit.d.ts +0 -48
  200. package/build/session/event-emit.js +0 -101
  201. package/build/session/extract.d.ts +0 -333
  202. package/build/session/extract.js +0 -2688
  203. package/build/session/model-prices.json +0 -429
  204. package/build/session/persist-tool-calls.d.ts +0 -54
  205. package/build/session/persist-tool-calls.js +0 -105
  206. package/build/session/pricing.d.ts +0 -64
  207. package/build/session/pricing.js +0 -151
  208. package/build/session/project-attribution.d.ts +0 -73
  209. package/build/session/project-attribution.js +0 -245
  210. package/build/session/purge.d.ts +0 -138
  211. package/build/session/purge.js +0 -240
  212. package/build/session/retrieval-marker.d.ts +0 -39
  213. package/build/session/retrieval-marker.js +0 -65
  214. package/build/session/snapshot.d.ts +0 -46
  215. package/build/session/snapshot.js +0 -532
  216. package/build/store-directory.d.ts +0 -56
  217. package/build/store-directory.js +0 -254
  218. package/build/store.d.ts +0 -147
  219. package/build/store.js +0 -1714
  220. package/build/truncate.d.ts +0 -57
  221. package/build/truncate.js +0 -142
  222. package/build/types.d.ts +0 -117
  223. package/build/types.js +0 -20
  224. package/build/util/claude-config.d.ts +0 -32
  225. package/build/util/claude-config.js +0 -84
  226. package/build/util/hook-config.d.ts +0 -27
  227. package/build/util/hook-config.js +0 -76
  228. package/build/util/jsonc.d.ts +0 -14
  229. package/build/util/jsonc.js +0 -104
  230. package/build/util/plugin-cache-integrity.d.ts +0 -51
  231. package/build/util/plugin-cache-integrity.js +0 -146
  232. package/build/util/project-dir.d.ts +0 -149
  233. package/build/util/project-dir.js +0 -340
  234. package/build/util/sibling-mcp.d.ts +0 -79
  235. package/build/util/sibling-mcp.js +0 -181
  236. package/cli.bundle.mjs +0 -1236
  237. package/configs/antigravity/GEMINI.md +0 -68
  238. package/configs/antigravity/mcp_config.json +0 -7
  239. package/configs/antigravity-cli/hooks/hooks.json +0 -37
  240. package/configs/antigravity-cli/hooks.json +0 -37
  241. package/configs/antigravity-cli/mcp_config.json +0 -10
  242. package/configs/antigravity-cli/plugin.json +0 -14
  243. package/configs/antigravity-cli/rules/context-mode.md +0 -77
  244. package/configs/antigravity-cli/skills/context-mode/SKILL.md +0 -77
  245. package/configs/claude-code/CLAUDE.md +0 -91
  246. package/configs/codex/AGENTS.md +0 -99
  247. package/configs/codex/config.toml +0 -8
  248. package/configs/codex/hooks.json +0 -47
  249. package/configs/copilot-cli/.github/plugin/plugin.json +0 -23
  250. package/configs/copilot-cli/.mcp.json +0 -12
  251. package/configs/copilot-cli/README.md +0 -47
  252. package/configs/copilot-cli/hooks.json +0 -41
  253. package/configs/copilot-cli/skills/context-mode/SKILL.md +0 -38
  254. package/configs/cursor/context-mode.mdc +0 -76
  255. package/configs/cursor/hooks.json +0 -21
  256. package/configs/cursor/mcp.json +0 -7
  257. package/configs/gemini-cli/GEMINI.md +0 -88
  258. package/configs/gemini-cli/mcp.json +0 -7
  259. package/configs/gemini-cli/settings.json +0 -60
  260. package/configs/jetbrains-copilot/copilot-instructions.md +0 -80
  261. package/configs/jetbrains-copilot/hooks.json +0 -16
  262. package/configs/jetbrains-copilot/mcp.json +0 -7
  263. package/configs/kilo/AGENTS.md +0 -84
  264. package/configs/kilo/kilo.json +0 -6
  265. package/configs/kimi/hooks.json +0 -54
  266. package/configs/kiro/KIRO.md +0 -84
  267. package/configs/kiro/agent.json +0 -18
  268. package/configs/kiro/mcp.json +0 -7
  269. package/configs/omp/SYSTEM.md +0 -85
  270. package/configs/omp/mcp.json +0 -7
  271. package/configs/openclaw/AGENTS.md +0 -87
  272. package/configs/openclaw/openclaw.json +0 -13
  273. package/configs/opencode/AGENTS.md +0 -84
  274. package/configs/opencode/opencode.json +0 -6
  275. package/configs/pi/AGENTS.md +0 -3
  276. package/configs/qwen-code/QWEN.md +0 -91
  277. package/configs/vscode-copilot/copilot-instructions.md +0 -80
  278. package/configs/vscode-copilot/hooks.json +0 -16
  279. package/configs/vscode-copilot/mcp.json +0 -7
  280. package/configs/zed/AGENTS.md +0 -68
  281. package/hooks/antigravity-cli/payload.mjs +0 -98
  282. package/hooks/antigravity-cli/posttooluse.mjs +0 -138
  283. package/hooks/antigravity-cli/pretooluse.mjs +0 -78
  284. package/hooks/antigravity-cli/stop.mjs +0 -58
  285. package/hooks/auto-injection.mjs +0 -102
  286. package/hooks/cache-heal-utils.mjs +0 -379
  287. package/hooks/codex/platform.mjs +0 -1
  288. package/hooks/codex/posttooluse.mjs +0 -66
  289. package/hooks/codex/precompact.mjs +0 -70
  290. package/hooks/codex/pretooluse.mjs +0 -42
  291. package/hooks/codex/sessionstart.mjs +0 -121
  292. package/hooks/codex/stop.mjs +0 -138
  293. package/hooks/codex/userpromptsubmit.mjs +0 -75
  294. package/hooks/copilot-cli/posttooluse.mjs +0 -79
  295. package/hooks/copilot-cli/precompact.mjs +0 -66
  296. package/hooks/copilot-cli/pretooluse.mjs +0 -41
  297. package/hooks/copilot-cli/sessionstart.mjs +0 -121
  298. package/hooks/copilot-cli/stop.mjs +0 -59
  299. package/hooks/copilot-cli/userpromptsubmit.mjs +0 -77
  300. package/hooks/core/codex-caps.mjs +0 -112
  301. package/hooks/core/formatters.mjs +0 -356
  302. package/hooks/core/mcp-ready.mjs +0 -109
  303. package/hooks/core/platform-detect.mjs +0 -49
  304. package/hooks/core/routing.mjs +0 -1017
  305. package/hooks/core/stdin.mjs +0 -90
  306. package/hooks/core/tool-naming.mjs +0 -57
  307. package/hooks/cursor/afteragentresponse.mjs +0 -74
  308. package/hooks/cursor/hooks.json +0 -31
  309. package/hooks/cursor/posttooluse.mjs +0 -72
  310. package/hooks/cursor/pretooluse.mjs +0 -26
  311. package/hooks/cursor/sessionstart.mjs +0 -97
  312. package/hooks/cursor/stop.mjs +0 -48
  313. package/hooks/ensure-deps.mjs +0 -254
  314. package/hooks/formatters/claude-code.mjs +0 -113
  315. package/hooks/formatters/cursor.mjs +0 -37
  316. package/hooks/formatters/gemini-cli.mjs +0 -55
  317. package/hooks/formatters/vscode-copilot.mjs +0 -55
  318. package/hooks/gemini-cli/aftermodel.mjs +0 -70
  319. package/hooks/gemini-cli/aftertool.mjs +0 -61
  320. package/hooks/gemini-cli/beforeagent.mjs +0 -99
  321. package/hooks/gemini-cli/beforetool.mjs +0 -27
  322. package/hooks/gemini-cli/precompress.mjs +0 -55
  323. package/hooks/gemini-cli/sessionstart.mjs +0 -137
  324. package/hooks/heal-partial-install.mjs +0 -712
  325. package/hooks/jetbrains-copilot/posttooluse.mjs +0 -61
  326. package/hooks/jetbrains-copilot/precompact.mjs +0 -55
  327. package/hooks/jetbrains-copilot/pretooluse.mjs +0 -27
  328. package/hooks/jetbrains-copilot/sessionstart.mjs +0 -124
  329. package/hooks/kimi/platform.mjs +0 -1
  330. package/hooks/kimi/posttooluse.mjs +0 -72
  331. package/hooks/kimi/precompact.mjs +0 -80
  332. package/hooks/kimi/pretooluse.mjs +0 -42
  333. package/hooks/kimi/sessionend.mjs +0 -61
  334. package/hooks/kimi/sessionstart.mjs +0 -113
  335. package/hooks/kimi/stop.mjs +0 -132
  336. package/hooks/kimi/userpromptsubmit.mjs +0 -90
  337. package/hooks/kiro/agentspawn.mjs +0 -97
  338. package/hooks/kiro/posttooluse.mjs +0 -51
  339. package/hooks/kiro/pretooluse.mjs +0 -64
  340. package/hooks/kiro/userpromptsubmit.mjs +0 -88
  341. package/hooks/normalize-hooks.mjs +0 -323
  342. package/hooks/platform-bridge.mjs +0 -340
  343. package/hooks/posttooluse.mjs +0 -225
  344. package/hooks/precompact.mjs +0 -100
  345. package/hooks/pretooluse.mjs +0 -227
  346. package/hooks/qwen-code/platform.mjs +0 -1
  347. package/hooks/qwen-code/stop.mjs +0 -168
  348. package/hooks/routing-block.mjs +0 -105
  349. package/hooks/run-hook.mjs +0 -95
  350. package/hooks/security.bundle.mjs +0 -2
  351. package/hooks/session-attribution.bundle.mjs +0 -1
  352. package/hooks/session-db.bundle.mjs +0 -144
  353. package/hooks/session-directive.mjs +0 -520
  354. package/hooks/session-extract.bundle.mjs +0 -3
  355. package/hooks/session-helpers.mjs +0 -428
  356. package/hooks/session-loaders.mjs +0 -448
  357. package/hooks/session-snapshot.bundle.mjs +0 -32
  358. package/hooks/sessionstart.mjs +0 -464
  359. package/hooks/stop.mjs +0 -82
  360. package/hooks/suppress-stderr.mjs +0 -25
  361. package/hooks/userpromptsubmit.mjs +0 -108
  362. package/hooks/vscode-copilot/posttooluse.mjs +0 -61
  363. package/hooks/vscode-copilot/precompact.mjs +0 -55
  364. package/hooks/vscode-copilot/pretooluse.mjs +0 -27
  365. package/hooks/vscode-copilot/sessionstart.mjs +0 -129
  366. package/openclaw.plugin.json +0 -38
  367. package/scripts/heal-better-sqlite3.mjs +0 -430
  368. package/scripts/heal-installed-plugins.mjs +0 -598
  369. package/scripts/plugin-cache-integrity.mjs +0 -248
  370. package/scripts/postinstall.mjs +0 -384
  371. package/server.bundle.mjs +0 -1162
  372. package/skills/.ignore +0 -7
  373. package/skills/context-mode/SKILL.md +0 -300
  374. package/skills/context-mode/references/anti-patterns.md +0 -283
  375. package/skills/context-mode/references/patterns-javascript.md +0 -298
  376. package/skills/context-mode/references/patterns-python.md +0 -304
  377. package/skills/context-mode/references/patterns-shell.md +0 -277
  378. package/skills/ctx-index/SKILL.md +0 -46
  379. package/skills/ctx-insight/SKILL.md +0 -24
  380. package/skills/ctx-purge/SKILL.md +0 -49
  381. package/skills/ctx-search/SKILL.md +0 -35
  382. package/start.mjs +0 -616
@@ -1,207 +0,0 @@
1
- /**
2
- * OpenClaw MCP tool registry.
3
- *
4
- * Catalogs the 11 ctx_* tools that OpenClaw plugin must register via
5
- * api.registerTool(...) so the routing block (which nudges agents toward
6
- * ctx_execute, ctx_search, etc.) actually has tools to call. Without this,
7
- * Phase 7 audit (v1.0.107-adapter-openclaw.json) flagged severity=CRITICAL —
8
- * routing-block premise is broken when the named tools don't exist.
9
- *
10
- * Pattern mirrors the swarmvault MCP plugin
11
- * (refs/plugin-examples/openclaw/swarmvault/packages/engine/src/mcp.ts:46-51):
12
- * server.registerTool(name, { description, inputSchema }, handler)
13
- *
14
- * OpenClaw signature is slightly different — see building-plugins.md:116
15
- * api.registerTool({ name, description, parameters: TypeBox, execute(id, params) })
16
- *
17
- * Tool handlers are intentionally thin shims that delegate to the bundled CLI
18
- * (cli.bundle.mjs) — same fall-through pattern already used by ctx-doctor and
19
- * ctx-upgrade slash commands. This keeps the plugin's blast radius minimal:
20
- * we don't re-export the entire MCP server stack inside OpenClaw's process.
21
- *
22
- * The 11 tools mirror src/server.ts registerTool calls (lines 897, 1226, 1371,
23
- * 1497, 2034, 2256, 2440, 2501, 2592, 2712, 2808).
24
- */
25
- /** Wrap any handler so failures become a well-formed text error rather than crashing. */
26
- function safe(handler) {
27
- return async (_id, params) => {
28
- try {
29
- return await handler(params ?? {});
30
- }
31
- catch (err) {
32
- const message = err instanceof Error ? err.message : String(err);
33
- return {
34
- content: [
35
- {
36
- type: "text",
37
- text: `[context-mode] tool error: ${message}`,
38
- },
39
- ],
40
- };
41
- }
42
- };
43
- }
44
- /** Stub handler — points users at the bundled CLI for full functionality. */
45
- function cliRedirect(toolName) {
46
- return safe(async () => ({
47
- content: [
48
- {
49
- type: "text",
50
- text: `[context-mode] ${toolName} is exposed via the bundled context-mode CLI. Run 'context-mode ${toolName}' or invoke the MCP server directly. This OpenClaw stub registers the tool name so the routing block remains valid; full execution requires the standalone MCP transport.`,
51
- },
52
- ],
53
- }));
54
- }
55
- /**
56
- * The 11 ctx_* tool definitions registered into OpenClaw via api.registerTool.
57
- * Names + descriptions mirror src/server.ts registerTool blocks 1:1 so prompts
58
- * referencing them (routing block, AGENTS.md) resolve to real callable tools.
59
- */
60
- export const OPENCLAW_TOOL_DEFS = [
61
- {
62
- name: "ctx_execute",
63
- description: "Execute code in a sandboxed subprocess. Only stdout enters context. Prefer over Bash for any command producing >20 lines.",
64
- parameters: {
65
- type: "object",
66
- properties: {
67
- language: { type: "string", description: "Runtime language" },
68
- code: { type: "string", description: "Source code to execute" },
69
- timeout: { type: "number", description: "Max execution time in ms" },
70
- },
71
- required: ["language", "code"],
72
- additionalProperties: true,
73
- },
74
- execute: cliRedirect("ctx_execute"),
75
- },
76
- {
77
- name: "ctx_execute_file",
78
- description: "Execute code with a file path. Only printed summary enters context — raw file stays in sandbox.",
79
- parameters: {
80
- type: "object",
81
- properties: {
82
- path: { type: "string", description: "File path" },
83
- language: { type: "string", description: "Runtime language" },
84
- code: { type: "string", description: "Source code" },
85
- },
86
- required: ["path", "language", "code"],
87
- additionalProperties: true,
88
- },
89
- execute: cliRedirect("ctx_execute_file"),
90
- },
91
- {
92
- name: "ctx_index",
93
- description: "Store content in the FTS5 knowledge base for later search.",
94
- parameters: {
95
- type: "object",
96
- properties: {
97
- content: { type: "string", description: "Text to index" },
98
- source: { type: "string", description: "Descriptive source label" },
99
- },
100
- required: ["content", "source"],
101
- additionalProperties: true,
102
- },
103
- execute: cliRedirect("ctx_index"),
104
- },
105
- {
106
- name: "ctx_search",
107
- description: "Query indexed content via FTS5. Pass all questions as an array in ONE call.",
108
- parameters: {
109
- type: "object",
110
- properties: {
111
- queries: { type: "array", description: "Search queries" },
112
- source: { type: "string", description: "Optional source filter" },
113
- sort: { type: "string", description: "relevance | timeline" },
114
- },
115
- additionalProperties: true,
116
- },
117
- execute: cliRedirect("ctx_search"),
118
- },
119
- {
120
- name: "ctx_fetch_and_index",
121
- description: "Fetch a URL, chunk it, and index — raw HTML never enters context.",
122
- parameters: {
123
- type: "object",
124
- properties: {
125
- url: { type: "string", description: "URL to fetch" },
126
- source: { type: "string", description: "Source label for indexed chunks" },
127
- },
128
- required: ["url"],
129
- additionalProperties: true,
130
- },
131
- execute: cliRedirect("ctx_fetch_and_index"),
132
- },
133
- {
134
- name: "ctx_batch_execute",
135
- description: "Run multiple commands and search queries in ONE call. Primary research tool — replaces 30+ individual calls.",
136
- parameters: {
137
- type: "object",
138
- properties: {
139
- commands: { type: "array", description: "Array of {label, command} objects" },
140
- queries: { type: "array", description: "Search queries to run after indexing" },
141
- },
142
- additionalProperties: true,
143
- },
144
- execute: cliRedirect("ctx_batch_execute"),
145
- },
146
- {
147
- name: "ctx_stats",
148
- description: "Show context-mode session statistics — token consumption and per-tool breakdown.",
149
- parameters: {
150
- type: "object",
151
- properties: {},
152
- additionalProperties: true,
153
- },
154
- execute: cliRedirect("ctx_stats"),
155
- },
156
- {
157
- name: "ctx_doctor",
158
- description: "Run context-mode diagnostics — runtimes, hooks, FTS5, plugin registration.",
159
- parameters: {
160
- type: "object",
161
- properties: {},
162
- additionalProperties: true,
163
- },
164
- execute: cliRedirect("ctx_doctor"),
165
- },
166
- {
167
- name: "ctx_upgrade",
168
- description: "Upgrade context-mode to the latest version.",
169
- parameters: {
170
- type: "object",
171
- properties: {},
172
- additionalProperties: true,
173
- },
174
- execute: cliRedirect("ctx_upgrade"),
175
- },
176
- {
177
- name: "ctx_purge",
178
- description: "DESTRUCTIVE — permanently delete indexed content. CANNOT be undone.\n\n" +
179
- "MUST specify exactly ONE scope:\n" +
180
- " • {confirm:true, sessionId:\"<uuid>\"} → wipes ONLY that session's events + chunks; preserves stats and other sessions\n" +
181
- " • {confirm:true, scope:\"project\"} → wipes ENTIRE project: FTS5 KB + every session DB + stats file\n\n" +
182
- "REFUSED:\n" +
183
- " • confirm:false → 'purge cancelled'\n" +
184
- " • sessionId AND scope:\"project\" together → 'ambiguous — pick one'\n" +
185
- " • scope:\"session\" without sessionId → throws\n" +
186
- " • bare {confirm:true} → DEPRECATED: maps to scope:\"project\" with stderr warning\n\n" +
187
- "Use sessionId for clearing one conversation. Use scope:\"project\" only when the user explicitly resets everything. NEVER call with bare {confirm:true}.",
188
- parameters: {
189
- type: "object",
190
- properties: {},
191
- additionalProperties: true,
192
- },
193
- execute: cliRedirect("ctx_purge"),
194
- },
195
- {
196
- name: "ctx_insight",
197
- description: "Open the hosted context-mode Insight dashboard (context-mode.com/insight) in the browser.",
198
- parameters: {
199
- type: "object",
200
- properties: {},
201
- additionalProperties: true,
202
- },
203
- execute: cliRedirect("ctx_insight"),
204
- },
205
- ];
206
- /** Stable list of tool names — used by tests and manifest validation. */
207
- export const OPENCLAW_TOOL_NAMES = OPENCLAW_TOOL_DEFS.map((def) => def.name);
@@ -1,141 +0,0 @@
1
- /**
2
- * OpenClaw TypeScript plugin entry point for context-mode.
3
- *
4
- * Exports an object with { id, name, configSchema, register(api) } for
5
- * declarative metadata and config validation before code execution.
6
- *
7
- * register(api) registers:
8
- * - before_tool_call hook — Routing enforcement (deny/modify/passthrough)
9
- * - after_tool_call hook — Session event capture
10
- * - command:new hook — Session initialization and cleanup
11
- * - session_start hook — Re-key DB session to OpenClaw's session ID
12
- * - before_compaction hook — Flush events to resume snapshot
13
- * - after_compaction hook — Increment compact count
14
- * - before_prompt_build (p=10) — Resume snapshot injection into system context
15
- * - before_prompt_build (p=5) — Routing instruction injection into system context
16
- * - context-mode engine — Context engine with compaction management
17
- * - /ctx-stats command — Auto-reply command for session statistics
18
- * - /ctx-doctor command — Auto-reply command for diagnostics
19
- * - /ctx-upgrade command — Auto-reply command for upgrade
20
- *
21
- * Loaded by OpenClaw via: openclaw.extensions entry in package.json
22
- *
23
- * OpenClaw plugin paradigm:
24
- * - Plugins export { id, name, configSchema, register(api) } for metadata
25
- * - api.registerHook() for event-driven hooks
26
- * - api.on() for typed lifecycle hooks
27
- * - api.registerContextEngine() for compaction ownership
28
- * - api.registerCommand() for auto-reply slash commands
29
- * - Plugins run in-process with the Gateway (trusted code)
30
- */
31
- import type { OpenClawToolDef } from "./mcp-tools.js";
32
- /** Context for auto-reply command handlers. */
33
- interface CommandContext {
34
- senderId?: string;
35
- channel?: string;
36
- isAuthorizedSender?: boolean;
37
- args?: string;
38
- commandBody?: string;
39
- config?: Record<string, unknown>;
40
- }
41
- interface OpenClawCommandDefinition {
42
- name: string;
43
- description: string;
44
- acceptsArgs?: boolean;
45
- requireAuth?: boolean;
46
- handler: (ctx: CommandContext) => {
47
- text: string;
48
- } | Promise<{
49
- text: string;
50
- }>;
51
- }
52
- /** OpenClaw plugin API provided to the register function. */
53
- interface OpenClawPluginApi {
54
- registerHook?(event: string, handler: (...args: unknown[]) => unknown, meta: {
55
- name: string;
56
- description: string;
57
- }): void;
58
- /**
59
- * Register a typed lifecycle hook.
60
- * Supported names: "session_start", "before_compaction", "after_compaction",
61
- * "before_prompt_build"
62
- */
63
- on(event: string, handler: (...args: unknown[]) => unknown, opts?: {
64
- priority?: number;
65
- }): void;
66
- registerContextEngine?(id: string, factory: () => ContextEngineInstance): void;
67
- registerCommand?: (cmd: OpenClawCommandDefinition) => void;
68
- registerCli?(factory: (ctx: {
69
- program: unknown;
70
- }) => void, meta: {
71
- commands: string[];
72
- }): void;
73
- /**
74
- * Register an agent tool (OpenClaw native registerTool) — see
75
- * refs/platforms/openclaw/docs/plugins/building-plugins.md:116. Optional in
76
- * the type so we degrade silently on legacy hosts that pre-date this API.
77
- */
78
- registerTool?(tool: OpenClawToolDef, opts?: {
79
- optional?: boolean;
80
- }): void;
81
- /**
82
- * Subscribe to the openclaw diagnostic-event bus (`model.usage` carries
83
- * per-turn token usage + pre-computed costUsd — diagnostic-events.ts:1156).
84
- * Some hosts surface `onDiagnosticEvent` directly on the activation `api`;
85
- * others expose it only as a module export from
86
- * `openclaw/plugin-sdk/diagnostic-runtime`. Typed loosely + optional so the
87
- * plugin compiles and runs whether or not the host provides it (the SDK is
88
- * not a dependency of this repo). Returns an unsubscribe function.
89
- */
90
- onDiagnosticEvent?(listener: (evt: unknown) => void): (() => void) | void;
91
- logger?: {
92
- info: (...args: unknown[]) => void;
93
- error: (...args: unknown[]) => void;
94
- debug?: (...args: unknown[]) => void;
95
- warn?: (...args: unknown[]) => void;
96
- };
97
- }
98
- /** Context engine instance returned by the factory. */
99
- interface ContextEngineInstance {
100
- info: {
101
- id: string;
102
- name: string;
103
- ownsCompaction: boolean;
104
- };
105
- ingest(data: unknown): Promise<{
106
- ingested: boolean;
107
- }>;
108
- assemble(ctx: {
109
- messages: unknown[];
110
- }): Promise<{
111
- messages: unknown[];
112
- estimatedTokens: number;
113
- }>;
114
- compact(): Promise<{
115
- ok: boolean;
116
- compacted: boolean;
117
- }>;
118
- }
119
- /**
120
- * OpenClaw plugin definition. The object form provides declarative metadata
121
- * (id, name, configSchema) that OpenClaw can read without executing code.
122
- * register() is called once per agent session with a fresh api object.
123
- * Each call creates isolated closures (db, sessionId, hooks) — no shared state.
124
- */
125
- declare const _default: {
126
- id: string;
127
- name: string;
128
- configSchema: {
129
- type: "object";
130
- properties: {
131
- enabled: {
132
- type: "boolean";
133
- default: boolean;
134
- description: string;
135
- };
136
- };
137
- additionalProperties: boolean;
138
- };
139
- register(api: OpenClawPluginApi): void;
140
- };
141
- export default _default;