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,298 +0,0 @@
1
- # JavaScript / TypeScript Patterns for execute
2
-
3
- Practical patterns for using `execute` with `language: javascript`.
4
- All examples assume Node.js runtime with native fetch (Node 18+).
5
-
6
- ---
7
-
8
- ## API Response Processing
9
-
10
- ### Fetch and summarize a REST API
11
-
12
- ```javascript
13
- // execute: Analyze API health endpoint
14
- const resp = await fetch('https://api.example.com/health');
15
- const data = await resp.json();
16
-
17
- console.log('=== Service Health ===');
18
- console.log(`Status: ${data.status}`);
19
- console.log(`Uptime: ${data.uptime}`);
20
- console.log(`Timestamp: ${data.timestamp}`);
21
-
22
- if (data.services) {
23
- console.log('\n=== Service Components ===');
24
- for (const [name, info] of Object.entries(data.services)) {
25
- console.log(` ${name}: ${info.status} (latency: ${info.latency_ms}ms)`);
26
- }
27
- }
28
-
29
- if (data.errors && data.errors.length > 0) {
30
- console.log('\n=== Recent Errors ===');
31
- data.errors.slice(0, 10).forEach(e => {
32
- console.log(` [${e.timestamp}] ${e.code}: ${e.message}`);
33
- });
34
- }
35
- ```
36
- > summary_prompt: "Report overall health, list any degraded services, and highlight errors"
37
-
38
- ### Paginated API collection
39
-
40
- ```javascript
41
- // execute: Fetch all open issues from GitHub API
42
- const owner = 'org';
43
- const repo = 'project';
44
- let page = 1;
45
- let allIssues = [];
46
-
47
- while (true) {
48
- const resp = await fetch(
49
- `https://api.github.com/repos/${owner}/${repo}/issues?state=open&per_page=100&page=${page}`,
50
- { headers: { 'Accept': 'application/vnd.github.v3+json' } }
51
- );
52
- const issues = await resp.json();
53
- if (issues.length === 0) break;
54
- allIssues.push(...issues);
55
- page++;
56
- }
57
-
58
- console.log(`Total open issues: ${allIssues.length}\n`);
59
-
60
- // Group by labels
61
- const byLabel = {};
62
- allIssues.forEach(issue => {
63
- issue.labels.forEach(label => {
64
- byLabel[label.name] = (byLabel[label.name] || 0) + 1;
65
- });
66
- });
67
-
68
- console.log('=== Issues by Label ===');
69
- Object.entries(byLabel)
70
- .sort((a, b) => b[1] - a[1])
71
- .forEach(([label, count]) => console.log(` ${label}: ${count}`));
72
-
73
- // Oldest issues
74
- console.log('\n=== 10 Oldest Issues ===');
75
- allIssues
76
- .sort((a, b) => new Date(a.created_at) - new Date(b.created_at))
77
- .slice(0, 10)
78
- .forEach(i => console.log(` #${i.number} (${i.created_at.slice(0,10)}): ${i.title}`));
79
- ```
80
- > summary_prompt: "Summarize issue distribution by label, highlight stale issues, suggest priorities"
81
- > timeout_ms: 30000
82
-
83
- ---
84
-
85
- ## JSON Data Analysis
86
-
87
- ### Analyze a large JSON config file
88
-
89
- ```javascript
90
- const fs = require('fs');
91
- const data = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
92
-
93
- console.log('=== TSConfig Analysis ===');
94
- console.log(`Target: ${data.compilerOptions?.target}`);
95
- console.log(`Module: ${data.compilerOptions?.module}`);
96
- console.log(`Strict: ${data.compilerOptions?.strict}`);
97
- console.log(`Paths aliases: ${Object.keys(data.compilerOptions?.paths || {}).length}`);
98
-
99
- if (data.compilerOptions?.paths) {
100
- console.log('\n=== Path Aliases ===');
101
- for (const [alias, targets] of Object.entries(data.compilerOptions.paths)) {
102
- console.log(` ${alias} -> ${targets.join(', ')}`);
103
- }
104
- }
105
-
106
- if (data.include) console.log(`\nInclude: ${data.include.join(', ')}`);
107
- if (data.exclude) console.log(`Exclude: ${data.exclude.join(', ')}`);
108
- if (data.references) {
109
- console.log(`\nProject References: ${data.references.length}`);
110
- data.references.forEach(r => console.log(` ${r.path}`));
111
- }
112
- ```
113
- > summary_prompt: "Report compiler strictness, module system, and any unusual configuration"
114
-
115
- ### Diff two JSON files
116
-
117
- ```javascript
118
- const fs = require('fs');
119
- const a = JSON.parse(fs.readFileSync('config.prod.json', 'utf8'));
120
- const b = JSON.parse(fs.readFileSync('config.staging.json', 'utf8'));
121
-
122
- function diffObjects(obj1, obj2, path = '') {
123
- const allKeys = new Set([...Object.keys(obj1 || {}), ...Object.keys(obj2 || {})]);
124
- for (const key of allKeys) {
125
- const fullPath = path ? `${path}.${key}` : key;
126
- if (!(key in (obj1 || {}))) {
127
- console.log(`+ ${fullPath}: ${JSON.stringify(obj2[key])}`);
128
- } else if (!(key in (obj2 || {}))) {
129
- console.log(`- ${fullPath}: ${JSON.stringify(obj1[key])}`);
130
- } else if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {
131
- diffObjects(obj1[key], obj2[key], fullPath);
132
- } else if (JSON.stringify(obj1[key]) !== JSON.stringify(obj2[key])) {
133
- console.log(`~ ${fullPath}: ${JSON.stringify(obj1[key])} -> ${JSON.stringify(obj2[key])}`);
134
- }
135
- }
136
- }
137
-
138
- console.log('=== Config Diff: prod vs staging ===');
139
- diffObjects(a, b);
140
- ```
141
- > summary_prompt: "List all configuration differences between prod and staging environments"
142
-
143
- ---
144
-
145
- ## Package.json / Lock File Analysis
146
-
147
- ### Dependency audit
148
-
149
- ```javascript
150
- const fs = require('fs');
151
- const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
152
-
153
- const deps = Object.entries(pkg.dependencies || {});
154
- const devDeps = Object.entries(pkg.devDependencies || {});
155
-
156
- console.log(`Package: ${pkg.name}@${pkg.version}`);
157
- console.log(`Dependencies: ${deps.length}`);
158
- console.log(`DevDependencies: ${devDeps.length}`);
159
-
160
- // Find non-pinned versions
161
- console.log('\n=== Non-Pinned Dependencies ===');
162
- [...deps, ...devDeps].forEach(([name, version]) => {
163
- if (version.startsWith('^') || version.startsWith('~') || version === '*') {
164
- console.log(` ${name}: ${version}`);
165
- }
166
- });
167
-
168
- // Find duplicated categories
169
- console.log('\n=== Scripts ===');
170
- Object.entries(pkg.scripts || {}).forEach(([name, cmd]) => {
171
- console.log(` ${name}: ${cmd}`);
172
- });
173
-
174
- // Workspace detection
175
- if (pkg.workspaces) {
176
- console.log('\n=== Monorepo Workspaces ===');
177
- const ws = Array.isArray(pkg.workspaces) ? pkg.workspaces : pkg.workspaces.packages || [];
178
- ws.forEach(w => console.log(` ${w}`));
179
- }
180
- ```
181
- > summary_prompt: "Report dependency health: unpinned versions, total count, any security concerns from package names"
182
-
183
- ### Lock file drift detection
184
-
185
- ```javascript
186
- const fs = require('fs');
187
- const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
188
-
189
- let lockExists = { npm: false, yarn: false, pnpm: false };
190
- try { fs.accessSync('package-lock.json'); lockExists.npm = true; } catch {}
191
- try { fs.accessSync('yarn.lock'); lockExists.yarn = true; } catch {}
192
- try { fs.accessSync('pnpm-lock.yaml'); lockExists.pnpm = true; } catch {}
193
-
194
- console.log('=== Lock File Status ===');
195
- Object.entries(lockExists).forEach(([mgr, exists]) => {
196
- console.log(` ${mgr}: ${exists ? 'PRESENT' : 'missing'}`);
197
- });
198
-
199
- const activeLocks = Object.entries(lockExists).filter(([, v]) => v);
200
- if (activeLocks.length > 1) {
201
- console.log('\nWARNING: Multiple lock files detected! This causes inconsistent installs.');
202
- }
203
- if (activeLocks.length === 0) {
204
- console.log('\nWARNING: No lock file found! Dependencies are not reproducible.');
205
- }
206
-
207
- // Check engines
208
- if (pkg.engines) {
209
- console.log('\n=== Required Engines ===');
210
- Object.entries(pkg.engines).forEach(([e, v]) => console.log(` ${e}: ${v}`));
211
- }
212
- ```
213
- > summary_prompt: "Report lock file health and any warnings about package management"
214
-
215
- ---
216
-
217
- ## File Content Parsing
218
-
219
- ### Parse and summarize a large markdown file
220
-
221
- ```javascript
222
- const fs = require('fs');
223
- const content = fs.readFileSync('CHANGELOG.md', 'utf8');
224
- const lines = content.split('\n');
225
-
226
- const sections = [];
227
- let currentSection = null;
228
-
229
- for (const line of lines) {
230
- if (line.startsWith('## ')) {
231
- if (currentSection) sections.push(currentSection);
232
- currentSection = { title: line.replace('## ', ''), items: 0, breaking: 0 };
233
- } else if (currentSection && line.startsWith('- ')) {
234
- currentSection.items++;
235
- if (line.toLowerCase().includes('breaking') || line.toLowerCase().includes('BREAKING')) {
236
- currentSection.breaking++;
237
- }
238
- }
239
- }
240
- if (currentSection) sections.push(currentSection);
241
-
242
- console.log(`Total versions: ${sections.length}\n`);
243
- console.log('=== Recent Versions ===');
244
- sections.slice(0, 10).forEach(s => {
245
- const warn = s.breaking > 0 ? ` [${s.breaking} BREAKING]` : '';
246
- console.log(` ${s.title}: ${s.items} changes${warn}`);
247
- });
248
-
249
- const totalBreaking = sections.reduce((sum, s) => sum + s.breaking, 0);
250
- if (totalBreaking > 0) {
251
- console.log(`\nTotal breaking changes across all versions: ${totalBreaking}`);
252
- }
253
- ```
254
- > summary_prompt: "Summarize recent releases, highlight breaking changes, report release cadence"
255
-
256
- ---
257
-
258
- ## Test Output Parsing
259
-
260
- ### Run tests and extract failures
261
-
262
- ```javascript
263
- const { execSync } = require('child_process');
264
-
265
- let output;
266
- try {
267
- output = execSync('npx jest --json 2>/dev/null', { encoding: 'utf8', maxBuffer: 50 * 1024 * 1024 });
268
- } catch (e) {
269
- output = e.stdout || '';
270
- }
271
-
272
- try {
273
- const results = JSON.parse(output);
274
- console.log(`=== Test Results ===`);
275
- console.log(`Suites: ${results.numPassedTestSuites} passed, ${results.numFailedTestSuites} failed`);
276
- console.log(`Tests: ${results.numPassedTests} passed, ${results.numFailedTests} failed`);
277
- console.log(`Time: ${(results.testResults || []).reduce((s, t) => s + (t.endTime - t.startTime), 0)}ms`);
278
-
279
- const failures = (results.testResults || []).filter(t => t.status === 'failed');
280
- if (failures.length > 0) {
281
- console.log('\n=== Failed Tests ===');
282
- failures.forEach(suite => {
283
- console.log(`\nSuite: ${suite.name}`);
284
- (suite.assertionResults || [])
285
- .filter(a => a.status === 'failed')
286
- .forEach(a => {
287
- console.log(` FAIL: ${a.ancestorTitles.join(' > ')} > ${a.title}`);
288
- console.log(` ${(a.failureMessages || []).join('\n ').slice(0, 200)}`);
289
- });
290
- });
291
- }
292
- } catch {
293
- console.log('Could not parse JSON output. Raw output:');
294
- console.log(output.slice(0, 5000));
295
- }
296
- ```
297
- > summary_prompt: "Report test pass/fail counts, list each failing test with its error message"
298
- > timeout_ms: 60000
@@ -1,304 +0,0 @@
1
- # Python Patterns for execute
2
-
3
- Practical patterns for using `execute` with `language: python`.
4
- All examples use Python standard library only (no pip installs required).
5
-
6
- ---
7
-
8
- ## Data Processing with json Module
9
-
10
- ### Analyze a large JSON dataset
11
-
12
- ```python
13
- import json
14
-
15
- with open('data/users.json') as f:
16
- users = json.load(f)
17
-
18
- print(f"Total users: {len(users)}")
19
-
20
- # Group by status
21
- from collections import Counter
22
- statuses = Counter(u.get('status', 'unknown') for u in users)
23
- print("\n=== Users by Status ===")
24
- for status, count in statuses.most_common():
25
- print(f" {status}: {count}")
26
-
27
- # Find anomalies
28
- inactive_with_recent = [
29
- u for u in users
30
- if u.get('status') == 'inactive' and u.get('last_login', '') > '2025-01-01'
31
- ]
32
- if inactive_with_recent:
33
- print(f"\n=== Anomaly: {len(inactive_with_recent)} inactive users with recent logins ===")
34
- for u in inactive_with_recent[:10]:
35
- print(f" {u['email']} - last login: {u['last_login']}")
36
-
37
- # Field completeness
38
- fields = ['name', 'email', 'phone', 'address']
39
- print("\n=== Field Completeness ===")
40
- for field in fields:
41
- filled = sum(1 for u in users if u.get(field))
42
- pct = (filled / len(users)) * 100 if users else 0
43
- print(f" {field}: {filled}/{len(users)} ({pct:.1f}%)")
44
- ```
45
- > summary_prompt: "Report user distribution, data quality issues, and any anomalies found"
46
-
47
- ### Merge and compare two JSON configs
48
-
49
- ```python
50
- import json
51
-
52
- with open('config.default.json') as f:
53
- defaults = json.load(f)
54
- with open('config.local.json') as f:
55
- local = json.load(f)
56
-
57
- def compare(d1, d2, path=""):
58
- diffs = []
59
- all_keys = set(list(d1.keys()) + list(d2.keys()))
60
- for key in sorted(all_keys):
61
- full_path = f"{path}.{key}" if path else key
62
- if key not in d1:
63
- diffs.append(f" + {full_path} = {json.dumps(d2[key])}")
64
- elif key not in d2:
65
- diffs.append(f" - {full_path} = {json.dumps(d1[key])}")
66
- elif isinstance(d1[key], dict) and isinstance(d2[key], dict):
67
- diffs.extend(compare(d1[key], d2[key], full_path))
68
- elif d1[key] != d2[key]:
69
- diffs.append(f" ~ {full_path}: {json.dumps(d1[key])} -> {json.dumps(d2[key])}")
70
- return diffs
71
-
72
- diffs = compare(defaults, local)
73
- print(f"Config differences: {len(diffs)}")
74
- if diffs:
75
- print("\n=== Changes (local overrides) ===")
76
- for d in diffs:
77
- print(d)
78
- else:
79
- print("No differences found — local matches defaults.")
80
- ```
81
- > summary_prompt: "List all local config overrides and flag any potentially dangerous changes"
82
-
83
- ---
84
-
85
- ## CSV / Log File Analysis
86
-
87
- ### Analyze a CSV file
88
-
89
- ```python
90
- import csv
91
- from collections import Counter, defaultdict
92
- from datetime import datetime
93
-
94
- with open('data/transactions.csv') as f:
95
- reader = csv.DictReader(f)
96
- rows = list(reader)
97
-
98
- print(f"Total records: {len(rows)}")
99
- print(f"Columns: {', '.join(rows[0].keys()) if rows else 'none'}")
100
-
101
- # Summary statistics for numeric column
102
- amounts = [float(r['amount']) for r in rows if r.get('amount')]
103
- if amounts:
104
- print(f"\n=== Amount Statistics ===")
105
- print(f" Min: ${min(amounts):,.2f}")
106
- print(f" Max: ${max(amounts):,.2f}")
107
- print(f" Mean: ${sum(amounts)/len(amounts):,.2f}")
108
- print(f" Median: ${sorted(amounts)[len(amounts)//2]:,.2f}")
109
- print(f" Total: ${sum(amounts):,.2f}")
110
-
111
- # Group by category
112
- if 'category' in rows[0]:
113
- by_cat = defaultdict(list)
114
- for r in rows:
115
- by_cat[r['category']].append(float(r.get('amount', 0)))
116
- print("\n=== By Category ===")
117
- for cat, vals in sorted(by_cat.items(), key=lambda x: -sum(x[1])):
118
- print(f" {cat}: {len(vals)} txns, total ${sum(vals):,.2f}")
119
- ```
120
- > summary_prompt: "Summarize transaction patterns, highlight outliers, report category distribution"
121
-
122
- ### Parse application logs
123
-
124
- ```python
125
- import re
126
- from collections import Counter
127
- from datetime import datetime
128
-
129
- error_pattern = re.compile(r'\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\] (\w+): (.+)')
130
-
131
- levels = Counter()
132
- errors_by_type = Counter()
133
- hourly = Counter()
134
-
135
- with open('app.log') as f:
136
- for line in f:
137
- match = error_pattern.match(line.strip())
138
- if match:
139
- timestamp, level, message = match.groups()
140
- levels[level] += 1
141
- hour = timestamp[:13]
142
- hourly[hour] += 1
143
- if level in ('ERROR', 'FATAL'):
144
- # Extract error class
145
- err_type = message.split(':')[0].strip()
146
- errors_by_type[err_type] += 1
147
-
148
- print("=== Log Level Distribution ===")
149
- for level, count in levels.most_common():
150
- print(f" {level}: {count}")
151
-
152
- print("\n=== Top Error Types ===")
153
- for err, count in errors_by_type.most_common(10):
154
- print(f" {err}: {count}")
155
-
156
- print("\n=== Hourly Activity (last 24h) ===")
157
- for hour, count in sorted(hourly.items())[-24:]:
158
- bar = '#' * min(count // 10, 50)
159
- print(f" {hour}: {count:>5} {bar}")
160
- ```
161
- > summary_prompt: "Report error rates, identify the most common failures, and note any traffic spikes"
162
-
163
- ---
164
-
165
- ## Text Extraction and Summarization
166
-
167
- ### Extract TODOs and FIXMEs from codebase
168
-
169
- ```python
170
- import os
171
- import re
172
-
173
- pattern = re.compile(r'(TODO|FIXME|HACK|XXX|WARN)[:\s](.+)', re.IGNORECASE)
174
- results = []
175
-
176
- for root, dirs, files in os.walk('src'):
177
- # Skip node_modules and hidden dirs
178
- dirs[:] = [d for d in dirs if not d.startswith('.') and d != 'node_modules']
179
- for fname in files:
180
- if fname.endswith(('.ts', '.tsx', '.js', '.jsx', '.py')):
181
- filepath = os.path.join(root, fname)
182
- with open(filepath) as f:
183
- for i, line in enumerate(f, 1):
184
- match = pattern.search(line)
185
- if match:
186
- results.append({
187
- 'file': filepath,
188
- 'line': i,
189
- 'type': match.group(1).upper(),
190
- 'text': match.group(2).strip()
191
- })
192
-
193
- from collections import Counter
194
- by_type = Counter(r['type'] for r in results)
195
-
196
- print(f"Total annotations found: {len(results)}\n")
197
- print("=== By Type ===")
198
- for t, c in by_type.most_common():
199
- print(f" {t}: {c}")
200
-
201
- print("\n=== All Items ===")
202
- for r in results:
203
- print(f" [{r['type']}] {r['file']}:{r['line']} — {r['text'][:100]}")
204
- ```
205
- > summary_prompt: "Categorize TODOs by urgency, group by file area, suggest which to address first"
206
-
207
- ### Summarize a large text/markdown file
208
-
209
- ```python
210
- with open('ARCHITECTURE.md') as f:
211
- content = f.read()
212
-
213
- lines = content.split('\n')
214
- print(f"Total lines: {len(lines)}")
215
- print(f"Total words: {len(content.split())}")
216
-
217
- # Extract structure
218
- headings = [(i+1, line) for i, line in enumerate(lines) if line.startswith('#')]
219
- print(f"Sections: {len(headings)}\n")
220
-
221
- print("=== Document Structure ===")
222
- for line_num, heading in headings:
223
- level = len(heading) - len(heading.lstrip('#'))
224
- indent = ' ' * (level - 1)
225
- print(f" {indent}{heading.strip()} (line {line_num})")
226
-
227
- # Extract code blocks
228
- import re
229
- code_blocks = re.findall(r'```(\w+)?', content)
230
- if code_blocks:
231
- from collections import Counter
232
- langs = Counter(b for b in code_blocks if b)
233
- print(f"\n=== Code Blocks: {len(code_blocks)} total ===")
234
- for lang, count in langs.most_common():
235
- print(f" {lang}: {count}")
236
-
237
- # Print first 50 lines for content preview
238
- print("\n=== Content Preview (first 50 lines) ===")
239
- for line in lines[:50]:
240
- print(line)
241
- ```
242
- > summary_prompt: "Summarize the document structure, key architectural decisions, and main components described"
243
-
244
- ---
245
-
246
- ## File Comparison
247
-
248
- ### Compare two source files
249
-
250
- ```python
251
- import difflib
252
-
253
- with open('src/auth/login.ts') as f:
254
- old_lines = f.readlines()
255
- with open('src/auth/login.new.ts') as f:
256
- new_lines = f.readlines()
257
-
258
- diff = list(difflib.unified_diff(old_lines, new_lines, fromfile='login.ts', tofile='login.new.ts', lineterm=''))
259
-
260
- additions = sum(1 for l in diff if l.startswith('+') and not l.startswith('+++'))
261
- deletions = sum(1 for l in diff if l.startswith('-') and not l.startswith('---'))
262
-
263
- print(f"Changes: +{additions} -{deletions}\n")
264
-
265
- if diff:
266
- print("=== Diff ===")
267
- for line in diff:
268
- print(line)
269
- else:
270
- print("Files are identical.")
271
- ```
272
- > summary_prompt: "Describe the functional changes between the old and new versions"
273
-
274
- ### Find duplicate content across files
275
-
276
- ```python
277
- import os
278
- import hashlib
279
- from collections import defaultdict
280
-
281
- file_hashes = defaultdict(list)
282
-
283
- for root, dirs, files in os.walk('src'):
284
- dirs[:] = [d for d in dirs if not d.startswith('.') and d != 'node_modules']
285
- for fname in files:
286
- if fname.endswith(('.ts', '.tsx', '.js', '.jsx')):
287
- filepath = os.path.join(root, fname)
288
- with open(filepath, 'rb') as f:
289
- content_hash = hashlib.md5(f.read()).hexdigest()
290
- file_hashes[content_hash].append(filepath)
291
-
292
- duplicates = {h: files for h, files in file_hashes.items() if len(files) > 1}
293
-
294
- if duplicates:
295
- print(f"Found {len(duplicates)} sets of duplicate files:\n")
296
- for h, files in duplicates.items():
297
- print(f" Hash: {h[:8]}...")
298
- for f in files:
299
- print(f" {f}")
300
- print()
301
- else:
302
- print("No duplicate files found.")
303
- ```
304
- > summary_prompt: "List all duplicate files and suggest which copies to remove"