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,36 +0,0 @@
1
- /**
2
- * Generic in-flight-capped worker pool.
3
- *
4
- * Used by:
5
- * - runBatchCommands (ctx_batch_execute parallel branch)
6
- * - runBatchFetch (ctx_fetch_and_index batch path)
7
- *
8
- * Returns Promise.allSettled-style results so one job's throw cannot
9
- * strand siblings. Caller maps fulfilled/rejected per index. Output
10
- * order is preserved by input index (not completion order).
11
- *
12
- * Designed to be the SINGLE concurrency primitive for the project —
13
- * all "run N independent operations with at most M in flight" needs
14
- * route here. Avoids the worker-pool copy-paste flagged in the
15
- * concurrency PRD architectural review (finding G).
16
- */
17
- export interface PoolJob<T> {
18
- run(): Promise<T>;
19
- }
20
- export interface RunPoolOptions {
21
- /** Hard concurrency cap (1-N). Auto-clamped to job count. */
22
- concurrency: number;
23
- /** Optional: also clamp by `os.cpus().length` (memory-pressure safety). Default false. */
24
- capByCpuCount?: boolean;
25
- /** Optional: per-settled callback (e.g. for progress reporting / metrics). */
26
- onSettled?: (idx: number, result: PromiseSettledResult<unknown>) => void;
27
- }
28
- export interface RunPoolResult<T> {
29
- /** Per-index settled result, ordered by input index. */
30
- settled: PromiseSettledResult<T>[];
31
- /** Concurrency actually used after all caps applied. */
32
- effectiveConcurrency: number;
33
- /** True when effectiveConcurrency < requested concurrency. */
34
- capped: boolean;
35
- }
36
- export declare function runPool<T>(jobs: PoolJob<T>[], opts: RunPoolOptions): Promise<RunPoolResult<T>>;
@@ -1,51 +0,0 @@
1
- /**
2
- * Generic in-flight-capped worker pool.
3
- *
4
- * Used by:
5
- * - runBatchCommands (ctx_batch_execute parallel branch)
6
- * - runBatchFetch (ctx_fetch_and_index batch path)
7
- *
8
- * Returns Promise.allSettled-style results so one job's throw cannot
9
- * strand siblings. Caller maps fulfilled/rejected per index. Output
10
- * order is preserved by input index (not completion order).
11
- *
12
- * Designed to be the SINGLE concurrency primitive for the project —
13
- * all "run N independent operations with at most M in flight" needs
14
- * route here. Avoids the worker-pool copy-paste flagged in the
15
- * concurrency PRD architectural review (finding G).
16
- */
17
- import { cpus } from "node:os";
18
- export async function runPool(jobs, opts) {
19
- const { concurrency, capByCpuCount = false, onSettled } = opts;
20
- if (jobs.length === 0) {
21
- return { settled: [], effectiveConcurrency: 0, capped: false };
22
- }
23
- const requested = Math.max(1, concurrency);
24
- const cpuCap = capByCpuCount ? Math.max(1, cpus().length) : requested;
25
- const effectiveConcurrency = Math.min(requested, cpuCap, jobs.length);
26
- const capped = effectiveConcurrency < requested;
27
- const settled = new Array(jobs.length);
28
- let nextIdx = 0;
29
- async function worker() {
30
- while (true) {
31
- const idx = nextIdx++;
32
- if (idx >= jobs.length)
33
- return;
34
- try {
35
- const value = await jobs[idx].run();
36
- settled[idx] = { status: "fulfilled", value };
37
- }
38
- catch (err) {
39
- settled[idx] = { status: "rejected", reason: err };
40
- }
41
- onSettled?.(idx, settled[idx]);
42
- }
43
- }
44
- const workers = [];
45
- for (let w = 0; w < effectiveConcurrency; w++)
46
- workers.push(worker());
47
- // allSettled defends against any promise rejection escaping a worker
48
- // (the worker already swallows its own errors, but this is belt-and-braces).
49
- await Promise.allSettled(workers);
50
- return { settled, effectiveConcurrency, capped };
51
- }
@@ -1,179 +0,0 @@
1
- /**
2
- * db-base — Reusable SQLite infrastructure for context-mode packages.
3
- *
4
- * Provides lazy-loading of better-sqlite3, WAL pragma setup, prepared
5
- * statement caching interface, and DB file cleanup helpers. Both
6
- * ContentStore and SessionDB build on top of these primitives.
7
- */
8
- import type DatabaseConstructor from "better-sqlite3";
9
- import type { Database as DatabaseInstance } from "better-sqlite3";
10
- /**
11
- * Explicit interface for cached prepared statements that accept varying
12
- * parameter counts. better-sqlite3's generic `Statement` collapses under
13
- * `ReturnType` to a single-param signature, so we define our own.
14
- */
15
- export interface PreparedStatement {
16
- run(...params: unknown[]): {
17
- changes: number;
18
- lastInsertRowid: number | bigint;
19
- };
20
- get(...params: unknown[]): unknown;
21
- all(...params: unknown[]): unknown[];
22
- iterate(...params: unknown[]): IterableIterator<unknown>;
23
- }
24
- /**
25
- * Wraps a bun:sqlite Database to provide better-sqlite3-compatible API.
26
- * Bridges: .pragma(), multi-statement .exec(), .get() null→undefined.
27
- */
28
- export declare class BunSQLiteAdapter {
29
- #private;
30
- constructor(rawDb: any);
31
- pragma(source: string): any;
32
- exec(sql: string): any;
33
- prepare(sql: string): any;
34
- transaction(fn: (...args: any[]) => any): any;
35
- close(): void;
36
- }
37
- /**
38
- * Wraps node:sqlite's DatabaseSync to provide better-sqlite3-compatible API.
39
- * Bridges: .pragma(), .transaction(). Everything else is passthrough.
40
- * Eliminates native addon SIGSEGV on Linux (nodejs/node#62515).
41
- */
42
- export declare class NodeSQLiteAdapter {
43
- #private;
44
- constructor(rawDb: any);
45
- pragma(source: string): any;
46
- exec(sql: string): any;
47
- prepare(sql: string): any;
48
- transaction(fn: (...args: any[]) => any): any;
49
- close(): void;
50
- }
51
- /**
52
- * Probe whether the supplied node:sqlite DatabaseSync constructor links a
53
- * SQLite build that includes the FTS5 module. Some Node.js Linux builds
54
- * (e.g. v22.14.0 on Ubuntu) ship node:sqlite without FTS5 even though the
55
- * import succeeds, which silently breaks ctx_search/ctx_batch_execute and
56
- * the doctor's FTS5 check (issue #461).
57
- *
58
- * Returns true only when a `CREATE VIRTUAL TABLE … USING fts5(x)` statement
59
- * succeeds. Always returns false on any failure (constructor throw, missing
60
- * module, etc.) so the caller can fall through to better-sqlite3, whose
61
- * bundled SQLite always ships with FTS5.
62
- */
63
- export declare function nodeSqliteHasFts5(DatabaseSync: any): boolean;
64
- /**
65
- * Returns true when the current runtime ships a built-in SQLite binding:
66
- * - Bun has `bun:sqlite` always
67
- * - Node has `node:sqlite` since 22.5 (no flag since 22.13)
68
- *
69
- * Mirrors the helper in hooks/ensure-deps.mjs:61. Exported so the platform
70
- * gate in loadDatabase() can be unit-tested without spawning a child
71
- * process. `versionsOverride` and `bunOverride` are injection points for
72
- * tests — production callers pass nothing.
73
- *
74
- * Widening the gate from `process.platform === "linux"` to this helper is
75
- * required for Node 26 on macOS arm64 (#551): Node 26 removed
76
- * `info.This()` from V8 PropertyCallbackInfo, breaking better-sqlite3
77
- * 12.9.0's native compile. Using node:sqlite sidesteps the native addon
78
- * entirely on every platform that has it.
79
- */
80
- export declare function hasModernSqlite(versionsOverride?: NodeJS.ProcessVersions, bunOverride?: unknown): boolean;
81
- /**
82
- * Lazy-load the SQLite driver for the current runtime.
83
- * Bun → bun:sqlite via BunSQLiteAdapter (issue #45).
84
- * Modern Node (>= 22.5) → node:sqlite via NodeSQLiteAdapter when it ships FTS5 (#228, #461, #551).
85
- * Other Node (or modern Node without FTS5) → better-sqlite3 (native addon).
86
- */
87
- export declare function loadDatabase(): typeof DatabaseConstructor;
88
- /**
89
- * Apply WAL mode and NORMAL synchronous pragma to a database instance.
90
- * Should be called immediately after opening a new database connection.
91
- *
92
- * WAL mode provides:
93
- * - Concurrent readers while a write is in progress
94
- * - Dramatically faster writes (no full-page sync on each commit)
95
- * NORMAL synchronous is safe under WAL and avoids an extra fsync per
96
- * transaction.
97
- */
98
- export declare function applyWALPragmas(db: DatabaseInstance): void;
99
- /**
100
- * Remove orphaned WAL/SHM files when the main DB file doesn't exist.
101
- * On Windows, stale -wal/-shm files from crashed processes cause
102
- * "file is not a database" errors when creating a fresh DB.
103
- */
104
- export declare function cleanOrphanedWALFiles(dbPath: string): void;
105
- /**
106
- * Delete all three SQLite files for a given db path (main, WAL, SHM).
107
- * Silently ignores individual deletion errors so a partial cleanup
108
- * does not abort the rest.
109
- */
110
- export declare function deleteDBFiles(dbPath: string): void;
111
- /**
112
- * Safely close a database connection. Swallows errors so callers can
113
- * always call this in a finally/cleanup path without try/catch.
114
- */
115
- export declare function closeDB(db: DatabaseInstance): void;
116
- /**
117
- * Return the default per-process DB path for context-mode databases.
118
- * Uses the OS temp directory and embeds the current PID so multiple
119
- * server instances never share a file.
120
- */
121
- export declare function defaultDBPath(prefix?: string): string;
122
- /**
123
- * Retry a DB operation with exponential backoff on SQLITE_BUSY errors.
124
- * Catches errors containing "SQLITE_BUSY" or "database is locked" and
125
- * retries up to 3 times with delays: 100ms, 500ms, 2000ms.
126
- * If all retries fail, throws a descriptive error.
127
- * Pass custom delays for testing (e.g., [0, 0, 0] to skip waits).
128
- */
129
- export declare function withRetry<T>(fn: () => T, delays?: number[]): T;
130
- /**
131
- * Detect SQLite corruption errors that warrant a rename-and-recreate.
132
- * Matches SQLITE_CORRUPT, SQLITE_NOTADB, and their human-readable equivalents.
133
- */
134
- export declare function isSQLiteCorruptionError(msg: string): boolean;
135
- /**
136
- * Rename a corrupt DB and its WAL/SHM files so a fresh DB can be created.
137
- * Best-effort — individual rename failures are silently ignored.
138
- */
139
- export declare function renameCorruptDB(dbPath: string): void;
140
- export declare abstract class SQLiteBase {
141
- #private;
142
- /**
143
- * Open (or create) a SQLite DB at `dbPath`.
144
- *
145
- * v1.0.130 — multi-writer is the contract. ALL SQLiteBase consumers
146
- * (SessionDB, ContentStore) may open the same on-disk dbPath from
147
- * multiple processes simultaneously — that is the legitimate multi-
148
- * window UX shape and the WAL handles it natively. SQLITE_BUSY on
149
- * write contention is absorbed by `withRetry()` below (busy_timeout
150
- * = 30000ms inside `new Database(...)`).
151
- *
152
- * v1.0.128 introduced a single-writer guard here as a defense against
153
- * #560. That defense was an over-correction — the actual root causes
154
- * of #560 were #559 (zombie MCP child accumulation) and #561 (Pi
155
- * misdetection writing to the wrong DB path), both fixed in v1.0.128
156
- * + v1.0.129. The single-writer guard broke legitimate multi-window
157
- * users; v1.0.130 rolls it out. See
158
- * docs/adr/0001-sessiondb-multi-writer.md and the v1.0.130 INVARIANT
159
- * block in tests/util/db-base-platform-gate.test.ts for the
160
- * regression-proof anchor (source-pin + behavioural).
161
- */
162
- constructor(dbPath: string);
163
- /** Called once after WAL pragmas are applied. Subclasses run CREATE TABLE/VIRTUAL TABLE here. */
164
- protected abstract initSchema(): void;
165
- /** Called once after schema init. Subclasses compile and cache their prepared statements here. */
166
- protected abstract prepareStatements(): void;
167
- /** Raw database instance — available to subclasses only. */
168
- protected get db(): DatabaseInstance;
169
- /** The path this database was opened from. */
170
- get dbPath(): string;
171
- /** Close the database connection without deleting files. */
172
- close(): void;
173
- protected withRetry<T>(fn: () => T): T;
174
- /**
175
- * Close the connection and delete all associated DB files (main, WAL, SHM).
176
- * Call on process exit or at end of session lifecycle.
177
- */
178
- cleanup(): void;
179
- }