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