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,333 +0,0 @@
1
- /**
2
- * Session event extraction — pure functions, zero side effects.
3
- * Extracts structured events from Claude Code tool calls and user messages.
4
- *
5
- * All 13 event categories as specified in PRD Section 3.
6
- */
7
- export interface SessionEvent {
8
- /** e.g. "file_read", "file_write", "cwd", "error_tool", "git", "task",
9
- * "decision", "rule", "env", "role", "skill", "subagent", "data", "intent" */
10
- type: string;
11
- /** e.g. "file", "cwd", "error", "git", "task", "decision",
12
- * "rule", "env", "role", "skill", "subagent", "data", "intent" */
13
- category: string;
14
- /** Extracted payload — full data, no truncation */
15
- data: string;
16
- /** 1=critical (rules, files, tasks) … 5=low */
17
- priority: number;
18
- /**
19
- * Optional — bytes context-mode prevented from entering the model context
20
- * window for this event. Currently populated by external_ref when a
21
- * ctx_fetch_and_index tool_response carries the
22
- * `Fetched and indexed N sections (XKB)` preamble.
23
- */
24
- bytes_avoided?: number;
25
- /**
26
- * Optional — bytes the model PAID to ACCESS kept-out content for this event:
27
- * the tool_response byte length of a `ctx_search` / `ctx_fetch_and_index`
28
- * call. This is the OTHER half of the with/without ratio (bytes_avoided is
29
- * the kept-out half). Sandbox compute (ctx_execute/batch/file) is work-output
30
- * and is excluded. Present only when the call is a retrieval call and its
31
- * tool_response is non-empty.
32
- */
33
- bytes_retrieved?: number;
34
- /**
35
- * Optional structured cost/usage fields (Wave 2b). Emitted by
36
- * extractAgentUsage alongside the colon-string `data` so the forward
37
- * envelope can spread them to the platform as typed columns instead of an
38
- * opaque blob. Present only when the source signal is present; cost_usd is
39
- * omitted on a price miss or a zero-token turn.
40
- */
41
- model_id?: string;
42
- input_tokens?: number;
43
- output_tokens?: number;
44
- cache_read_tokens?: number;
45
- cache_creation_tokens?: number;
46
- cost_usd?: number;
47
- /**
48
- * "task_cumulative" on agent_usage events whose tokens are a Task sub-agent's
49
- * usage SUMMED across its whole run (not one turn). The platform buckets these
50
- * as lifetime spend and never prices them per-turn — see
51
- * docs/handoff/cumulative-cost-bug.md.
52
- */
53
- usage_scope?: string;
54
- }
55
- export interface ToolCall {
56
- toolName: string;
57
- toolInput: Record<string, unknown>;
58
- toolResponse?: string;
59
- isError?: boolean;
60
- }
61
- /**
62
- * Hook input shape as received from Claude Code PostToolUse hook stdin.
63
- * Uses snake_case to match the raw hook JSON.
64
- */
65
- export interface HookInput {
66
- tool_name: string;
67
- tool_input: Record<string, unknown>;
68
- tool_response?: string;
69
- /** Optional structured output from the tool (may carry isError) */
70
- tool_output?: {
71
- isError?: boolean;
72
- is_error?: boolean;
73
- };
74
- }
75
- /** Input shape `buildAgentUsageEvent` consumes — re-exported for parser typing. */
76
- export interface AgentUsageCounts {
77
- model_id: string;
78
- input_tokens: number;
79
- output_tokens: number;
80
- cache_creation_tokens: number;
81
- cache_read_tokens: number;
82
- native_cost_usd?: number | null;
83
- }
84
- export { parseKimiUsage, extractKimiUsageSince } from "../adapters/kimi/usage.js";
85
- export { parseQwenUsage, extractQwenUsageSince } from "../adapters/qwen-code/usage.js";
86
- /**
87
- * Pi (oh-my-pi) per-turn usage parser.
88
- *
89
- * Maps a Pi `turn_end` payload (`{ message: AssistantMessage }`) to the
90
- * `buildAgentUsageEvent` input shape, or null when there is nothing to record.
91
- *
92
- * Field provenance (adapter-matrix/pi.md @320261f + cited refs):
93
- * - usage: AssistantMessage.usage (ai/src/types.ts:521 -> catalog/src/types.ts:100-145)
94
- * - model_id: AssistantMessage.model (ai/src/types.ts:510; kept "provider/model" — builder normalizes)
95
- * - input: Usage.input -> input_tokens
96
- * - output: Usage.output -> output_tokens
97
- * - cacheWrite: Usage.cacheWrite -> cache_creation_tokens
98
- * - cacheRead: Usage.cacheRead -> cache_read_tokens
99
- * - native USD: Usage.cost.total -> native_cost_usd (HIGH confidence; no price-table needed)
100
- *
101
- * The event is per-turn incremental (per-response usage; anthropic.ts:1893-1901;
102
- * "for the turn" catalog/types.ts:103), so each turn_end maps to exactly one
103
- * agent_usage event with no cross-turn accumulation.
104
- *
105
- * Algorithmic + null-safe, NO regex. Accepts either the full TurnEndEvent
106
- * (`{ message }`) or a bare AssistantMessage (`{ usage, model }`) so callers
107
- * can pass `event` or `event.message` interchangeably. Returns null when the
108
- * payload is not an assistant message, carries no usage object, or every token
109
- * bucket is zero/absent (an all-zero turn emits no event — matches
110
- * buildAgentUsageEvent's own zero->null contract).
111
- */
112
- export declare function parsePiUsage(payload: unknown): AgentUsageCounts | null;
113
- /**
114
- * openclaw `model.usage` diagnostic-event capture — parseOpenclawUsage.
115
- *
116
- * openclaw exposes a first-class `model.usage` diagnostic event
117
- * (`DiagnosticUsageEvent`, refs/platforms/openclaw/src/infra/diagnostic-events.ts:18-47),
118
- * emitted once per turn and consumed via `onDiagnosticEvent(listener)`
119
- * (diagnostic-events.ts:1156) — the same bus the first-party diagnostics-otel /
120
- * diagnostics-prometheus extensions read.
121
- *
122
- * Field mapping (openclaw → AgentUsageCounts):
123
- * evt.usage.input → input_tokens
124
- * evt.usage.output → output_tokens
125
- * evt.usage.cacheWrite→ cache_creation_tokens (cache-creation)
126
- * evt.usage.cacheRead → cache_read_tokens (cache-read)
127
- * evt.costUsd → native_cost_usd (pre-computed via estimateUsageCost,
128
- * agent-runner.ts:1995 — preferred over catalog)
129
- * evt.model → model_id
130
- *
131
- * CRITICAL: read `evt.usage` (the PER-TURN TOTAL — "Last Turn Total"
132
- * agent-runner.ts:943), NEVER `evt.lastCallUsage` (the last-model-call DELTA,
133
- * diagnostic-events.ts:34-40). Summing both would double-count.
134
- *
135
- * Returns AgentUsageCounts (the buildAgentUsageEvent input shape) or null when
136
- * the event is not a usage event / carries no usage / sums to zero. Pure,
137
- * null-safe, algorithmic — NO regex.
138
- */
139
- export declare function parseOpenclawUsage(payload: unknown): AgentUsageCounts | null;
140
- /**
141
- * opencode per-turn usage parser.
142
- *
143
- * Ground truth: context-mode-platform/docs/prds/2026-06-paid-observability/
144
- * adapter-matrix/opencode.md. opencode tracks usage per *assistant message*; the
145
- * usage-bearing payload reaches a plugin via the `message.updated` bus event,
146
- * whose `event.properties.info` is the full Message. The assistant token shape
147
- * (refs platforms/opencode .../session/message.ts) is:
148
- * info.tokens = { input, output, reasoning, cache: { read, write } }
149
- * info.cost = USD cost for this message
150
- * info.modelID / info.providerID (older refs may expose a single info.model)
151
- *
152
- * Field mapping (refs message.ts):
153
- * tokens.input -> input_tokens
154
- * tokens.output -> output_tokens
155
- * tokens.cache.read -> cache_read_tokens
156
- * tokens.cache.write -> cache_creation_tokens
157
- * modelID/providerID -> model_id (`${providerID}/${modelID}` when both present)
158
- * cost -> native_cost_usd
159
- *
160
- * LAST-STEP-SNAPSHOT CAVEAT (refs processor.ts:717-718): message-level
161
- * `.tokens` is OVERWRITTEN every step-finish, so it holds the LAST step's usage
162
- * — not the turn total. `.cost`, however, ACCUMULATES (`cost += usage.cost`) and
163
- * is the correct cumulative turn cost. We therefore pass `info.cost` through as
164
- * native_cost_usd so the billed $ is exact even though the token snapshot is
165
- * imprecise; the token columns remain best-effort (last-step) telemetry. A true
166
- * turn-total token sum would require summing per-step Step.Ended parts, which the
167
- * `message.updated` payload does not carry — out of scope for this snapshot-based
168
- * capture.
169
- *
170
- * Accepts either the bus event (`{ properties: { info } }`), the wrapped
171
- * `{ event: { properties: { info } } }`, or the bare Message (`info`) so the
172
- * caller can hand us whatever the SDK surfaces. NO regex — pure algorithmic,
173
- * null-safe traversal. Returns null when the payload is not an assistant
174
- * message, carries no tokens object, or every token bucket is zero/absent
175
- * (mirrors buildAgentUsageEvent's zero->null contract).
176
- */
177
- export declare function parseOpencodeUsage(payload: unknown): AgentUsageCounts | null;
178
- /**
179
- * Build a structured `agent_usage` event from summed per-model token counts.
180
- * Emits the colon-string `data` (human/debug + back-compat) AND the structured
181
- * top-level fields the forward envelope spreads to the platform. cost_usd via
182
- * the pricing catalog — omitted on a price miss. Returns null when every token
183
- * bucket is zero/absent (so an all-zero model emits no event).
184
- */
185
- export declare function buildAgentUsageEvent(counts: {
186
- model_id: string;
187
- input_tokens: number;
188
- output_tokens: number;
189
- cache_creation_tokens: number;
190
- cache_read_tokens: number;
191
- /**
192
- * Provider-supplied USD cost for this turn. When a finite number, it is
193
- * preferred over the catalog computation (openclaw / pi / omp / opencode
194
- * ship a native cost — trust the source over our price table). Omit/null to
195
- * derive cost_usd from the pricing catalog.
196
- */
197
- native_cost_usd?: number | null;
198
- }): SessionEvent | null;
199
- /**
200
- * gemini-cli AfterModel usage capture — parse ONE AfterModel hook payload into
201
- * a builder `agent_usage` event (or null). Pure, null-safe, struct-only — NO regex.
202
- *
203
- * Refs (docs/prds/2026-06-paid-observability/adapter-matrix/gemini-cli.md):
204
- * - AfterModel fires per model call inside the gemini-cli stream loop
205
- * (geminiChat.ts:1213); the hook input carries `llm_request` + `llm_response`
206
- * (hooks/types.ts:692-695).
207
- * - `llm_response.usageMetadata` exposes promptTokenCount / candidatesTokenCount
208
- * / totalTokenCount (hookTranslator.ts:60-64).
209
- * - model_id = `response.modelVersion || req.model` (loggingContentGenerator.ts:405,553).
210
- *
211
- * Mapping → builder shape:
212
- * promptTokenCount → input_tokens
213
- * candidatesTokenCount → output_tokens
214
- * thoughtsTokenCount → ADDED into output_tokens (Gemini bills reasoning as output)
215
- * cachedContentTokenCount → cache_read_tokens (when present)
216
- * model_id → response.modelVersion || llm_request.model
217
- *
218
- * CAVEAT — the DECOUPLED AfterModel payload (hookTranslator.ts:60-64) forwards
219
- * only prompt/candidates/total and DROPS cachedContentTokenCount +
220
- * thoughtsTokenCount. We map those two defensively WHEN PRESENT (richer payload
221
- * variant / future fix / OTel-fed input) but never depend on them — the common
222
- * case is input+output only. For full cached/thoughts fidelity the OTel
223
- * `api_response` exporter or the chat-recording JSON is the source of record.
224
- *
225
- * MULTI-CALL TURNS — one user turn that triggers tool calls spans MULTIPLE
226
- * model calls, each AfterModel cumulative within itself. This fn emits ONE
227
- * priced event PER AfterModel call (each call is one billed round-trip).
228
- * Per-userPromptId summation into a single per-turn total is DEFERRED — emitting
229
- * per-call never double-counts, since each call's usageMetadata is the
230
- * authoritative total for that call.
231
- */
232
- export declare function parseGeminiUsage(afterModelPayload: unknown): SessionEvent | null;
233
- /**
234
- * claude-code MAIN-turn usage capture — the dominant-spend path the Task
235
- * subagent capture (extractAgentUsage) misses. Parses the session transcript
236
- * JSONL char-algorithmically (NO regex): each `type:"assistant"` line carries
237
- * `message.usage` + `message.model`, and usage is a per-turn DELTA, so summing
238
- * the assistant turns per model = the exact billed total. `isSidechain:true`
239
- * lines are Task-subagent sidechains written to a SEPARATE transcript (refs:
240
- * sessionStorage.ts:1042) — excluding them keeps the main-turn sum from
241
- * double-counting the separate Task-subagent capture. Emits one structured
242
- * `agent_usage` event per distinct model.
243
- */
244
- export declare function extractTranscriptUsage(transcript: string): SessionEvent[];
245
- /**
246
- * Cursor-aware variant of extractTranscriptUsage for the Stop hook.
247
- *
248
- * The transcript grows every turn and the forward loop forwards ALL passed
249
- * events unconditionally, so re-running extractTranscriptUsage on the whole
250
- * transcript each Stop would double-count every prior turn. This walks only
251
- * the turns NEW since the last Stop, keyed by a per-session high-water cursor
252
- * (the `uuid` of the last assistant turn seen).
253
- *
254
- * - sinceUuid null/empty → process ALL non-sidechain assistant turns.
255
- * - sinceUuid found → process only turns AFTER it (exclusive).
256
- * - sinceUuid set but NOT found (transcript compaction dropped it) → process
257
- * ONLY THE LAST non-sidechain assistant turn. Bounded by design: we never
258
- * re-emit the whole history when the cursor falls off the front.
259
- *
260
- * `cursor` returns the uuid of the LAST non-sidechain assistant turn in the
261
- * transcript (whether or not it carried usage), so the next Stop resumes
262
- * exactly past it. When the transcript has no such turn, the input cursor is
263
- * returned unchanged. Same char-algorithmic JSONL parse (NO regex), same
264
- * sidechain exclusion, same buildAgentUsageEvent emission path.
265
- */
266
- export declare function extractTranscriptUsageSince(transcript: string, sinceUuid: string | null): {
267
- events: SessionEvent[];
268
- cursor: string | null;
269
- };
270
- /** Reset error-resolution state (for testing). */
271
- export declare function resetErrorResolutionState(): void;
272
- /** Reset iteration-loop state (for testing). */
273
- export declare function resetIterationLoopState(): void;
274
- /**
275
- * Extract session events from a PostToolUse hook input.
276
- *
277
- * Accepts the raw hook JSON shape (snake_case keys) as received from stdin.
278
- * Returns an array of zero or more SessionEvents. Never throws.
279
- */
280
- export declare function extractEvents(rawInput: HookInput): SessionEvent[];
281
- /**
282
- * Extract session events from a UserPromptSubmit hook input (user message text).
283
- *
284
- * Handles: decision, role, intent, data categories.
285
- * Returns an array of zero or more SessionEvents. Never throws.
286
- */
287
- export declare function extractUserEvents(message: string): SessionEvent[];
288
- /**
289
- * Issue #4 (new PRD) — SessionStart settings + MCP servers snapshot.
290
- *
291
- * Emits ONE session_settings_snapshot event when ≥1 setting is available
292
- * on the SessionStart input. The data field carries key:value tokens
293
- * (mcp_count, mcp_servers, model, permission_mode) so the platform can
294
- * compute MCP integration counts and primary-model adoption per org.
295
- * mcp_servers list is truncated to first 8 names.
296
- */
297
- export declare function extractSessionSettings(input: unknown): SessionEvent[];
298
- /**
299
- * §11 Layer 1 + Layer 3 — multilingual prompt features.
300
- *
301
- * Reference: context-mode-platform/docs/prds/2026-06-insight-data-flow/
302
- * 11-multilingual-prompt-algorithm.md
303
- *
304
- * Script-agnostic via Unicode property regex (`\p{L}`, `\p{Lu}`,
305
- * `\p{Script=X}`). No per-language tables, no franc/fasttext deps.
306
- * Layer 1 returns 10 numeric/string features; Layer 3 appends a
307
- * `prompt_word_tokens: string[]` array for the platform's streaming
308
- * word-frequency UPSERT.
309
- *
310
- * Privacy: features carry no prose. Layer 3 tokens are deduped
311
- * letter-only words ≥3 chars; platform aggregates by (org_id, week,
312
- * word) so no individual token surfaces in UI.
313
- */
314
- export interface PromptFeatures {
315
- prompt_length: number;
316
- prompt_word_count: number;
317
- prompt_uppercase_ratio: number;
318
- prompt_file_ref_count: number;
319
- prompt_path_ref_count: number;
320
- prompt_script_primary: string | null;
321
- prompt_script_count: number;
322
- prompt_question_glyph_count: number;
323
- prompt_code_block_count: number;
324
- prompt_url_count: number;
325
- prompt_word_tokens: string[];
326
- }
327
- /**
328
- * Verbatim mirror of §11 Layer 1 reference implementation + Layer 3
329
- * token extraction. Uses Unicode property regex per the spec — the
330
- * "no regex" project default does NOT apply here because the spec
331
- * explicitly mandates `\p{Script=X}` for script-agnostic classification.
332
- */
333
- export declare function extractUserPromptFeatures(prompt: unknown): PromptFeatures;