context-mode 1.0.169 → 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 (379) 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/cli.d.ts +0 -34
  163. package/build/cli.js +0 -1827
  164. package/build/db-base.d.ts +0 -179
  165. package/build/db-base.js +0 -569
  166. package/build/executor.d.ts +0 -72
  167. package/build/executor.js +0 -678
  168. package/build/exit-classify.d.ts +0 -19
  169. package/build/exit-classify.js +0 -12
  170. package/build/fetch-cache.d.ts +0 -13
  171. package/build/fetch-cache.js +0 -15
  172. package/build/lifecycle.d.ts +0 -124
  173. package/build/lifecycle.js +0 -278
  174. package/build/runPool.d.ts +0 -36
  175. package/build/runPool.js +0 -51
  176. package/build/runtime.d.ts +0 -71
  177. package/build/runtime.js +0 -659
  178. package/build/search/auto-memory.d.ts +0 -47
  179. package/build/search/auto-memory.js +0 -170
  180. package/build/search/ctx-search-schema.d.ts +0 -90
  181. package/build/search/ctx-search-schema.js +0 -135
  182. package/build/search/flood-guard.d.ts +0 -57
  183. package/build/search/flood-guard.js +0 -80
  184. package/build/search/unified.d.ts +0 -56
  185. package/build/search/unified.js +0 -104
  186. package/build/security.d.ts +0 -206
  187. package/build/security.js +0 -780
  188. package/build/server.d.ts +0 -184
  189. package/build/server.js +0 -4563
  190. package/build/session/analytics.d.ts +0 -773
  191. package/build/session/analytics.js +0 -2420
  192. package/build/session/db.d.ts +0 -468
  193. package/build/session/db.js +0 -1308
  194. package/build/session/error-classifier.d.ts +0 -87
  195. package/build/session/error-classifier.js +0 -303
  196. package/build/session/event-emit.d.ts +0 -48
  197. package/build/session/event-emit.js +0 -101
  198. package/build/session/extract.d.ts +0 -333
  199. package/build/session/extract.js +0 -2688
  200. package/build/session/model-prices.json +0 -429
  201. package/build/session/persist-tool-calls.d.ts +0 -54
  202. package/build/session/persist-tool-calls.js +0 -105
  203. package/build/session/pricing.d.ts +0 -64
  204. package/build/session/pricing.js +0 -151
  205. package/build/session/project-attribution.d.ts +0 -73
  206. package/build/session/project-attribution.js +0 -245
  207. package/build/session/purge.d.ts +0 -138
  208. package/build/session/purge.js +0 -240
  209. package/build/session/retrieval-marker.d.ts +0 -39
  210. package/build/session/retrieval-marker.js +0 -65
  211. package/build/session/snapshot.d.ts +0 -46
  212. package/build/session/snapshot.js +0 -532
  213. package/build/store-directory.d.ts +0 -56
  214. package/build/store-directory.js +0 -254
  215. package/build/store.d.ts +0 -147
  216. package/build/store.js +0 -1714
  217. package/build/truncate.d.ts +0 -57
  218. package/build/truncate.js +0 -142
  219. package/build/types.d.ts +0 -117
  220. package/build/types.js +0 -20
  221. package/build/util/claude-config.d.ts +0 -32
  222. package/build/util/claude-config.js +0 -84
  223. package/build/util/hook-config.d.ts +0 -27
  224. package/build/util/hook-config.js +0 -76
  225. package/build/util/jsonc.d.ts +0 -14
  226. package/build/util/jsonc.js +0 -104
  227. package/build/util/plugin-cache-integrity.d.ts +0 -51
  228. package/build/util/plugin-cache-integrity.js +0 -146
  229. package/build/util/project-dir.d.ts +0 -149
  230. package/build/util/project-dir.js +0 -340
  231. package/build/util/sibling-mcp.d.ts +0 -79
  232. package/build/util/sibling-mcp.js +0 -181
  233. package/cli.bundle.mjs +0 -1236
  234. package/configs/antigravity/GEMINI.md +0 -68
  235. package/configs/antigravity/mcp_config.json +0 -7
  236. package/configs/antigravity-cli/hooks/hooks.json +0 -37
  237. package/configs/antigravity-cli/hooks.json +0 -37
  238. package/configs/antigravity-cli/mcp_config.json +0 -10
  239. package/configs/antigravity-cli/plugin.json +0 -14
  240. package/configs/antigravity-cli/rules/context-mode.md +0 -77
  241. package/configs/antigravity-cli/skills/context-mode/SKILL.md +0 -77
  242. package/configs/claude-code/CLAUDE.md +0 -91
  243. package/configs/codex/AGENTS.md +0 -99
  244. package/configs/codex/config.toml +0 -8
  245. package/configs/codex/hooks.json +0 -47
  246. package/configs/copilot-cli/.github/plugin/plugin.json +0 -23
  247. package/configs/copilot-cli/.mcp.json +0 -12
  248. package/configs/copilot-cli/README.md +0 -47
  249. package/configs/copilot-cli/hooks.json +0 -41
  250. package/configs/copilot-cli/skills/context-mode/SKILL.md +0 -38
  251. package/configs/cursor/context-mode.mdc +0 -76
  252. package/configs/cursor/hooks.json +0 -21
  253. package/configs/cursor/mcp.json +0 -7
  254. package/configs/gemini-cli/GEMINI.md +0 -88
  255. package/configs/gemini-cli/mcp.json +0 -7
  256. package/configs/gemini-cli/settings.json +0 -60
  257. package/configs/jetbrains-copilot/copilot-instructions.md +0 -80
  258. package/configs/jetbrains-copilot/hooks.json +0 -16
  259. package/configs/jetbrains-copilot/mcp.json +0 -7
  260. package/configs/kilo/AGENTS.md +0 -84
  261. package/configs/kilo/kilo.json +0 -6
  262. package/configs/kimi/hooks.json +0 -54
  263. package/configs/kiro/KIRO.md +0 -84
  264. package/configs/kiro/agent.json +0 -18
  265. package/configs/kiro/mcp.json +0 -7
  266. package/configs/omp/SYSTEM.md +0 -85
  267. package/configs/omp/mcp.json +0 -7
  268. package/configs/openclaw/AGENTS.md +0 -87
  269. package/configs/openclaw/openclaw.json +0 -13
  270. package/configs/opencode/AGENTS.md +0 -84
  271. package/configs/opencode/opencode.json +0 -6
  272. package/configs/pi/AGENTS.md +0 -3
  273. package/configs/qwen-code/QWEN.md +0 -91
  274. package/configs/vscode-copilot/copilot-instructions.md +0 -80
  275. package/configs/vscode-copilot/hooks.json +0 -16
  276. package/configs/vscode-copilot/mcp.json +0 -7
  277. package/configs/zed/AGENTS.md +0 -68
  278. package/hooks/antigravity-cli/payload.mjs +0 -98
  279. package/hooks/antigravity-cli/posttooluse.mjs +0 -138
  280. package/hooks/antigravity-cli/pretooluse.mjs +0 -78
  281. package/hooks/antigravity-cli/stop.mjs +0 -58
  282. package/hooks/auto-injection.mjs +0 -102
  283. package/hooks/cache-heal-utils.mjs +0 -379
  284. package/hooks/codex/platform.mjs +0 -1
  285. package/hooks/codex/posttooluse.mjs +0 -66
  286. package/hooks/codex/precompact.mjs +0 -70
  287. package/hooks/codex/pretooluse.mjs +0 -42
  288. package/hooks/codex/sessionstart.mjs +0 -121
  289. package/hooks/codex/stop.mjs +0 -138
  290. package/hooks/codex/userpromptsubmit.mjs +0 -75
  291. package/hooks/copilot-cli/posttooluse.mjs +0 -79
  292. package/hooks/copilot-cli/precompact.mjs +0 -66
  293. package/hooks/copilot-cli/pretooluse.mjs +0 -41
  294. package/hooks/copilot-cli/sessionstart.mjs +0 -121
  295. package/hooks/copilot-cli/stop.mjs +0 -59
  296. package/hooks/copilot-cli/userpromptsubmit.mjs +0 -77
  297. package/hooks/core/codex-caps.mjs +0 -112
  298. package/hooks/core/formatters.mjs +0 -356
  299. package/hooks/core/mcp-ready.mjs +0 -109
  300. package/hooks/core/platform-detect.mjs +0 -49
  301. package/hooks/core/routing.mjs +0 -1017
  302. package/hooks/core/stdin.mjs +0 -90
  303. package/hooks/core/tool-naming.mjs +0 -57
  304. package/hooks/cursor/afteragentresponse.mjs +0 -74
  305. package/hooks/cursor/hooks.json +0 -31
  306. package/hooks/cursor/posttooluse.mjs +0 -72
  307. package/hooks/cursor/pretooluse.mjs +0 -26
  308. package/hooks/cursor/sessionstart.mjs +0 -97
  309. package/hooks/cursor/stop.mjs +0 -48
  310. package/hooks/ensure-deps.mjs +0 -254
  311. package/hooks/formatters/claude-code.mjs +0 -113
  312. package/hooks/formatters/cursor.mjs +0 -37
  313. package/hooks/formatters/gemini-cli.mjs +0 -55
  314. package/hooks/formatters/vscode-copilot.mjs +0 -55
  315. package/hooks/gemini-cli/aftermodel.mjs +0 -70
  316. package/hooks/gemini-cli/aftertool.mjs +0 -61
  317. package/hooks/gemini-cli/beforeagent.mjs +0 -99
  318. package/hooks/gemini-cli/beforetool.mjs +0 -27
  319. package/hooks/gemini-cli/precompress.mjs +0 -55
  320. package/hooks/gemini-cli/sessionstart.mjs +0 -137
  321. package/hooks/heal-partial-install.mjs +0 -712
  322. package/hooks/jetbrains-copilot/posttooluse.mjs +0 -61
  323. package/hooks/jetbrains-copilot/precompact.mjs +0 -55
  324. package/hooks/jetbrains-copilot/pretooluse.mjs +0 -27
  325. package/hooks/jetbrains-copilot/sessionstart.mjs +0 -124
  326. package/hooks/kimi/platform.mjs +0 -1
  327. package/hooks/kimi/posttooluse.mjs +0 -72
  328. package/hooks/kimi/precompact.mjs +0 -80
  329. package/hooks/kimi/pretooluse.mjs +0 -42
  330. package/hooks/kimi/sessionend.mjs +0 -61
  331. package/hooks/kimi/sessionstart.mjs +0 -113
  332. package/hooks/kimi/stop.mjs +0 -132
  333. package/hooks/kimi/userpromptsubmit.mjs +0 -90
  334. package/hooks/kiro/agentspawn.mjs +0 -97
  335. package/hooks/kiro/posttooluse.mjs +0 -51
  336. package/hooks/kiro/pretooluse.mjs +0 -64
  337. package/hooks/kiro/userpromptsubmit.mjs +0 -88
  338. package/hooks/normalize-hooks.mjs +0 -323
  339. package/hooks/platform-bridge.mjs +0 -340
  340. package/hooks/posttooluse.mjs +0 -225
  341. package/hooks/precompact.mjs +0 -100
  342. package/hooks/pretooluse.mjs +0 -227
  343. package/hooks/qwen-code/platform.mjs +0 -1
  344. package/hooks/qwen-code/stop.mjs +0 -168
  345. package/hooks/routing-block.mjs +0 -105
  346. package/hooks/run-hook.mjs +0 -95
  347. package/hooks/security.bundle.mjs +0 -2
  348. package/hooks/session-attribution.bundle.mjs +0 -1
  349. package/hooks/session-db.bundle.mjs +0 -144
  350. package/hooks/session-directive.mjs +0 -520
  351. package/hooks/session-extract.bundle.mjs +0 -3
  352. package/hooks/session-helpers.mjs +0 -428
  353. package/hooks/session-loaders.mjs +0 -448
  354. package/hooks/session-snapshot.bundle.mjs +0 -32
  355. package/hooks/sessionstart.mjs +0 -464
  356. package/hooks/stop.mjs +0 -82
  357. package/hooks/suppress-stderr.mjs +0 -25
  358. package/hooks/userpromptsubmit.mjs +0 -108
  359. package/hooks/vscode-copilot/posttooluse.mjs +0 -61
  360. package/hooks/vscode-copilot/precompact.mjs +0 -55
  361. package/hooks/vscode-copilot/pretooluse.mjs +0 -27
  362. package/hooks/vscode-copilot/sessionstart.mjs +0 -129
  363. package/openclaw.plugin.json +0 -38
  364. package/scripts/heal-better-sqlite3.mjs +0 -430
  365. package/scripts/heal-installed-plugins.mjs +0 -598
  366. package/scripts/plugin-cache-integrity.mjs +0 -248
  367. package/scripts/postinstall.mjs +0 -384
  368. package/server.bundle.mjs +0 -1162
  369. package/skills/.ignore +0 -7
  370. package/skills/context-mode/SKILL.md +0 -300
  371. package/skills/context-mode/references/anti-patterns.md +0 -283
  372. package/skills/context-mode/references/patterns-javascript.md +0 -298
  373. package/skills/context-mode/references/patterns-python.md +0 -304
  374. package/skills/context-mode/references/patterns-shell.md +0 -277
  375. package/skills/ctx-index/SKILL.md +0 -46
  376. package/skills/ctx-insight/SKILL.md +0 -24
  377. package/skills/ctx-purge/SKILL.md +0 -49
  378. package/skills/ctx-search/SKILL.md +0 -35
  379. 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;