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,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"