blun-king-cli 9.1.587 → 9.1.588

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 (436) hide show
  1. package/CHANGELOG.md +11 -185
  2. package/LIESMICH.txt +51 -13
  3. package/README.md +44 -47
  4. package/agent-spine-plugin/.codex-plugin/plugin.json +16 -4
  5. package/agent-spine-plugin/CHANGELOG.md +37 -5
  6. package/agent-spine-plugin/README.md +3 -3
  7. package/agent-spine-plugin/blun.plugin.json +45 -10
  8. package/agent-spine-plugin/docs/artifact-evaluation.md +93 -0
  9. package/agent-spine-plugin/docs/host-integration.md +42 -27
  10. package/agent-spine-plugin/docs/preflight-recall.md +4 -2
  11. package/agent-spine-plugin/docs/session-timeline.md +97 -236
  12. package/agent-spine-plugin/docs/world-model.md +25 -0
  13. package/agent-spine-plugin/hooks/codex.json +1 -1
  14. package/agent-spine-plugin/hooks/hooks.json +1 -1
  15. package/agent-spine-plugin/package.json +1 -3
  16. package/agent-spine-plugin/scripts/check-hosts.js +3 -3
  17. package/agent-spine-plugin/scripts/release-check.js +10 -5
  18. package/agent-spine-plugin/scripts/run-checks.js +4 -1
  19. package/agent-spine-plugin/scripts/run-tests-hermetic.js +32 -6
  20. package/agent-spine-plugin/src/cli-learning.js +15 -0
  21. package/agent-spine-plugin/src/cli.js +2 -0
  22. package/agent-spine-plugin/src/hook.js +32 -32
  23. package/agent-spine-plugin/src/lib/action-lesson-recall.js +73 -8
  24. package/agent-spine-plugin/src/lib/briefing.js +146 -36
  25. package/agent-spine-plugin/src/lib/channel-continuity.js +19 -0
  26. package/agent-spine-plugin/src/lib/delivery-agent-usage.js +14 -7
  27. package/agent-spine-plugin/src/lib/gateway-group-response.js +128 -0
  28. package/agent-spine-plugin/src/lib/gateway-runs.js +24 -15
  29. package/agent-spine-plugin/src/lib/hook-briefing-use.js +13 -3
  30. package/agent-spine-plugin/src/lib/hook-context.js +16 -3
  31. package/agent-spine-plugin/src/lib/hook-output.js +129 -5
  32. package/agent-spine-plugin/src/lib/hook-timeline.js +5 -3
  33. package/agent-spine-plugin/src/lib/indexed-memory.js +2 -2
  34. package/agent-spine-plugin/src/lib/learning-artifact-evaluator.js +114 -0
  35. package/agent-spine-plugin/src/lib/learning-context.js +11 -4
  36. package/agent-spine-plugin/src/lib/learning-measurements.js +2 -2
  37. package/agent-spine-plugin/src/lib/mcp-runtime.js +89 -3
  38. package/agent-spine-plugin/src/lib/mcp-source-context.js +12 -2
  39. package/agent-spine-plugin/src/lib/mcp-timeline-tools.js +91 -8
  40. package/agent-spine-plugin/src/lib/mcp-world-tools.js +2 -2
  41. package/agent-spine-plugin/src/lib/owned-file-lock.js +20 -1
  42. package/agent-spine-plugin/src/lib/persona-runtime.js +2 -2
  43. package/agent-spine-plugin/src/lib/preflight-delivery-id.js +27 -0
  44. package/agent-spine-plugin/src/lib/preflight.js +4 -4
  45. package/agent-spine-plugin/src/lib/session-timeline-codex.js +15 -0
  46. package/agent-spine-plugin/src/lib/session-timeline-contract.js +12 -4
  47. package/agent-spine-plugin/src/lib/session-timeline-event-extract.js +36 -7
  48. package/agent-spine-plugin/src/lib/session-timeline-host-origin.js +13 -10
  49. package/agent-spine-plugin/src/lib/session-timeline-invocation.js +1 -1
  50. package/agent-spine-plugin/src/lib/session-timeline-king.js +14 -0
  51. package/agent-spine-plugin/src/lib/session-timeline-prior.js +18 -12
  52. package/agent-spine-plugin/src/lib/session-timeline-provider.js +5 -0
  53. package/agent-spine-plugin/src/lib/session-timeline-query.js +2 -0
  54. package/agent-spine-plugin/src/lib/session-timeline-results.js +35 -10
  55. package/agent-spine-plugin/src/lib/session-timeline-source-open.js +30 -0
  56. package/agent-spine-plugin/src/lib/session-timeline.js +122 -75
  57. package/agent-spine-plugin/src/lib/source-roots.js +3 -2
  58. package/agent-spine-plugin/src/lib/task-knowledge-context.js +22 -1
  59. package/agent-spine-plugin/src/lib/timeline-continuation-update.js +100 -0
  60. package/agent-spine-plugin/src/lib/timeline-tool-guard.js +30 -7
  61. package/agent-spine-plugin/src/lib/timeline-user-feedback.js +217 -0
  62. package/agent-spine-plugin/src/lib/timeline-world-capture.js +233 -0
  63. package/agent-spine-plugin/src/lib/world-knowledge.js +59 -2
  64. package/agent-spine-plugin/src/lib/world-model.js +64 -9
  65. package/agent-spine-plugin/src/worker.js +13 -1
  66. package/bin/blun.js +43 -28
  67. package/bin/core-bootstrap.js +5 -4
  68. package/bin/king.js +43 -28
  69. package/bin/launcher-mode.js +1 -10
  70. package/bin/launcher-runtime.js +128 -295
  71. package/bin/managed-node.js +0 -0
  72. package/bin/managed-plugin-selection.cjs +0 -1
  73. package/bin/native-module-repair.js +0 -0
  74. package/bin/node-runtime.js +0 -0
  75. package/bin/node-version.js +0 -0
  76. package/bin/plugin-bootstrap.js +56 -120
  77. package/bin/private-paths.js +11 -34
  78. package/bin/standard-tools-bootstrap.js +34 -114
  79. package/bin/turn-thinking-policy.cjs +3 -11
  80. package/bin/update-copy.js +200 -0
  81. package/bin/update-lease.js +0 -0
  82. package/bin/update-notice.js +136 -289
  83. package/bin/verify-agent-behavior.cjs +122 -0
  84. package/bin/verify-agent-components.cjs +104 -0
  85. package/bin/verify-bundled-agent-sources.cjs +57 -0
  86. package/blun.mjs +143076 -135288
  87. package/bundled-agent-sources.json +701 -0
  88. package/package.json +12 -15
  89. package/standard-skills/translate-native/README.md +1293 -0
  90. package/standard-skills/translate-native/SKILL.md +172 -22
  91. package/standard-skills/translate-native/VERSION +1 -1
  92. package/standard-skills/translate-native/agents/openai.yaml +18 -0
  93. package/standard-skills/translate-native/assets/icon.svg +8 -0
  94. package/standard-skills/translate-native/docs/BLUN_CODE_INTEGRATION.md +76 -0
  95. package/standard-skills/translate-native/docs/PREMORTEM.md +489 -0
  96. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION.md +2035 -0
  97. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_API.md +1302 -0
  98. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_EVIDENCE_HTTP.md +136 -0
  99. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_HEALTH_HTTP.md +130 -0
  100. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_HTTP_PROVIDER.md +175 -0
  101. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_RECEIPT_VERIFIER_HTTP.md +86 -0
  102. package/standard-skills/translate-native/integrations/AGENT_RULES.md +32 -0
  103. package/standard-skills/translate-native/integrations/adapters/blun-code-language-guard.js +514 -0
  104. package/standard-skills/translate-native/integrations/adapters/node-language-guard.js +230 -0
  105. package/standard-skills/translate-native/integrations/audit_log.py +327 -0
  106. package/standard-skills/translate-native/integrations/claude_language_hook.js +1536 -0
  107. package/standard-skills/translate-native/integrations/commercial_localization_profile.py +42 -0
  108. package/standard-skills/translate-native/integrations/delivery-policy.example.json +28 -0
  109. package/standard-skills/translate-native/integrations/enforced_delivery.py +543 -0
  110. package/standard-skills/translate-native/integrations/guard_service.py +435 -0
  111. package/standard-skills/translate-native/integrations/language_gateway.py +67 -0
  112. package/standard-skills/translate-native/integrations/mcp_auth_headers.py +198 -0
  113. package/standard-skills/translate-native/integrations/mcp_http_gateway.py +429 -0
  114. package/standard-skills/translate-native/integrations/non_language_html_entities.js +1485 -0
  115. package/standard-skills/translate-native/integrations/pre_output_guard.py +65 -0
  116. package/standard-skills/translate-native/integrations/task_router.py +101 -0
  117. package/standard-skills/translate-native/integrations/website_localization.py +401 -0
  118. package/standard-skills/translate-native/integrations/website_localization_api.py +581 -0
  119. package/standard-skills/translate-native/integrations/website_localization_benchmark.py +1885 -0
  120. package/standard-skills/translate-native/integrations/website_localization_benchmark_campaign.py +1772 -0
  121. package/standard-skills/translate-native/integrations/website_localization_benchmark_candidate.py +506 -0
  122. package/standard-skills/translate-native/integrations/website_localization_benchmark_http.py +400 -0
  123. package/standard-skills/translate-native/integrations/website_localization_benchmark_review_store.py +781 -0
  124. package/standard-skills/translate-native/integrations/website_localization_benchmark_reviewer_http.py +500 -0
  125. package/standard-skills/translate-native/integrations/website_localization_benchmark_runtime.py +1107 -0
  126. package/standard-skills/translate-native/integrations/website_localization_benchmark_suite.py +463 -0
  127. package/standard-skills/translate-native/integrations/website_localization_cms.py +2835 -0
  128. package/standard-skills/translate-native/integrations/website_localization_cms_client.py +875 -0
  129. package/standard-skills/translate-native/integrations/website_localization_cms_dispatch.py +805 -0
  130. package/standard-skills/translate-native/integrations/website_localization_cms_http.py +588 -0
  131. package/standard-skills/translate-native/integrations/website_localization_cms_lifecycle_monitor.py +991 -0
  132. package/standard-skills/translate-native/integrations/website_localization_cms_receiver.py +1441 -0
  133. package/standard-skills/translate-native/integrations/website_localization_cms_receiver_runtime.py +414 -0
  134. package/standard-skills/translate-native/integrations/website_localization_cms_receiver_store.py +1073 -0
  135. package/standard-skills/translate-native/integrations/website_localization_cms_removal_dispatch.py +865 -0
  136. package/standard-skills/translate-native/integrations/website_localization_cms_source_client.py +583 -0
  137. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery.py +964 -0
  138. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_runtime.py +665 -0
  139. package/standard-skills/translate-native/integrations/website_localization_cms_source_http.py +1153 -0
  140. package/standard-skills/translate-native/integrations/website_localization_cms_source_runtime.py +675 -0
  141. package/standard-skills/translate-native/integrations/website_localization_cms_source_service.py +1125 -0
  142. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification.py +674 -0
  143. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_http.py +444 -0
  144. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver.py +1469 -0
  145. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver_runtime.py +1142 -0
  146. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_processing_monitor.py +634 -0
  147. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_receiver_client.py +804 -0
  148. package/standard-skills/translate-native/integrations/website_localization_deepl_baseline.py +922 -0
  149. package/standard-skills/translate-native/integrations/website_localization_evidence_http.py +482 -0
  150. package/standard-skills/translate-native/integrations/website_localization_health.py +1541 -0
  151. package/standard-skills/translate-native/integrations/website_localization_health_http.py +372 -0
  152. package/standard-skills/translate-native/integrations/website_localization_http_provider.py +297 -0
  153. package/standard-skills/translate-native/integrations/website_localization_native_reference_http.py +479 -0
  154. package/standard-skills/translate-native/integrations/website_localization_native_reference_intake.py +363 -0
  155. package/standard-skills/translate-native/integrations/website_localization_native_reference_queue.py +1449 -0
  156. package/standard-skills/translate-native/integrations/website_localization_native_reference_store.py +420 -0
  157. package/standard-skills/translate-native/integrations/website_localization_quality_profiles.py +235 -0
  158. package/standard-skills/translate-native/integrations/website_localization_queue.py +671 -0
  159. package/standard-skills/translate-native/integrations/website_localization_receipt_verifier_http.py +516 -0
  160. package/standard-skills/translate-native/integrations/website_localization_release.py +928 -0
  161. package/standard-skills/translate-native/integrations/website_localization_release_coordinator.py +1008 -0
  162. package/standard-skills/translate-native/integrations/website_localization_runner.py +276 -0
  163. package/standard-skills/translate-native/integrations/website_localization_runtime.py +862 -0
  164. package/standard-skills/translate-native/integrations/website_localization_service.py +350 -0
  165. package/standard-skills/translate-native/integrations/website_localization_supervisor.py +511 -0
  166. package/standard-skills/translate-native/integrations/website_localization_worker.py +663 -0
  167. package/standard-skills/translate-native/provenance.json +3 -4
  168. package/standard-skills/translate-native/references/commercial-localization.md +177 -0
  169. package/standard-skills/translate-native/scripts/blun_language_guard.py +7 -1
  170. package/standard-skills/translate-native/scripts/check_commercial_review.py +80 -0
  171. package/standard-skills/translate-native/scripts/commercial_localization_profile.py +333 -0
  172. package/standard-tools/language-guard/LICENSE +21 -0
  173. package/standard-tools/language-guard/VERSION +1 -0
  174. package/standard-tools/language-guard/blun_language_guard.py +7 -1
  175. package/standard-tools/language-guard/check_commercial_review.py +80 -0
  176. package/standard-tools/language-guard/commercial_localization_profile.py +333 -0
  177. package/standard-tools/language-guard/language_gateway.py +62 -0
  178. package/standard-tools/language-guard/pre_output_guard.py +64 -0
  179. package/standard-tools/language-guard/provenance.json +4 -11
  180. package/standard-tools/manifest.json +34 -11
  181. package/telegram-plugin/commands/access.md +2 -10
  182. package/telegram-plugin/dist/bridge.mjs +64041 -687
  183. package/telegram-plugin/dist/mcp-server.mjs +72810 -9027
  184. package/telegram-plugin/dist/noise.mjs +28 -63511
  185. package/agent-spine-plugin/CONTRIBUTING.md +0 -52
  186. package/agent-spine-plugin/SECURITY.md +0 -47
  187. package/agent-spine-plugin/docs/assignment-continuation.md +0 -48
  188. package/agent-spine-plugin/docs/releasing.md +0 -85
  189. package/agent-spine-plugin/docs/structured-completion.md +0 -67
  190. package/bin/abort-listener-policy.cjs +0 -43
  191. package/bin/active-steer-priority-policy.cjs +0 -24
  192. package/bin/agent-api-http-adapter.mjs +0 -446
  193. package/bin/agent-api-private-http-server.mjs +0 -288
  194. package/bin/agent-api-runtime.mjs +0 -252
  195. package/bin/agent-api-service-environment.mjs +0 -236
  196. package/bin/agent-api-service-host.mjs +0 -209
  197. package/bin/agent-api-service-process.mjs +0 -171
  198. package/bin/agent-api-session-registry.mjs +0 -428
  199. package/bin/agent-api-tool-broker.cjs +0 -248
  200. package/bin/agent-api-turn-controller.mjs +0 -461
  201. package/bin/agent-api-usage-journal.cjs +0 -259
  202. package/bin/agent-resume-snapshot.cjs +0 -241
  203. package/bin/agentspine-king-goal-inbox.mjs +0 -111
  204. package/bin/agentspine-king-goal-intake.mjs +0 -106
  205. package/bin/approval-rejection-stop.cjs +0 -15
  206. package/bin/assistant-message-offload-policy.cjs +0 -284
  207. package/bin/baseline-skill-performance-policy.cjs +0 -39
  208. package/bin/bash-search-scope-policy.cjs +0 -49
  209. package/bin/codebase-search-runtime.cjs +0 -23
  210. package/bin/cognitive-action-checkpoint.cjs +0 -1104
  211. package/bin/cognitive-attention-delivery.cjs +0 -76
  212. package/bin/cognitive-attention-policy.cjs +0 -143
  213. package/bin/cognitive-attention-runtime.cjs +0 -91
  214. package/bin/cognitive-context-projection.cjs +0 -73
  215. package/bin/cognitive-cross-portal-acceptance.cjs +0 -443
  216. package/bin/cognitive-effective-view.cjs +0 -77
  217. package/bin/cognitive-focus-projection.cjs +0 -206
  218. package/bin/cognitive-focus-scope.cjs +0 -37
  219. package/bin/cognitive-goal-autostart-policy.cjs +0 -72
  220. package/bin/cognitive-goal-time-trigger-controller.cjs +0 -146
  221. package/bin/cognitive-memory-adapter.cjs +0 -282
  222. package/bin/cognitive-memory-command.cjs +0 -293
  223. package/bin/cognitive-memory-provider.cjs +0 -92
  224. package/bin/cognitive-salience-policy.cjs +0 -159
  225. package/bin/cognitive-state-store.cjs +0 -508
  226. package/bin/cognitive-turn-lifecycle.cjs +0 -624
  227. package/bin/cognitive-work-focus.cjs +0 -180
  228. package/bin/compaction-history-archive.cjs +0 -166
  229. package/bin/compaction-history-startup.cjs +0 -50
  230. package/bin/compaction-model-policy.cjs +0 -31
  231. package/bin/compaction-stage-policy.cjs +0 -21
  232. package/bin/compaction-transaction-policy.cjs +0 -122
  233. package/bin/config-write-dedup-policy.cjs +0 -27
  234. package/bin/context-budget-ledger.cjs +0 -31
  235. package/bin/context-doctor-policy.cjs +0 -70
  236. package/bin/context-insight-policy.cjs +0 -36
  237. package/bin/context-performance-policy.cjs +0 -19
  238. package/bin/context-pressure-policy.cjs +0 -20
  239. package/bin/cron-run-output.cjs +0 -45
  240. package/bin/cron-run-store.cjs +0 -145
  241. package/bin/curiosity-scout-policy.cjs +0 -49
  242. package/bin/default-model-output-budget-policy.cjs +0 -28
  243. package/bin/durable-task-resume-policy.cjs +0 -130
  244. package/bin/durable-task-resume-runtime.cjs +0 -117
  245. package/bin/durable-task-resume-store.cjs +0 -88
  246. package/bin/editable-tool-approval-policy.cjs +0 -540
  247. package/bin/editable-tool-approval-runtime.cjs +0 -99
  248. package/bin/effective-system-prompt-cache-policy.cjs +0 -33
  249. package/bin/error-memory-performance-policy.cjs +0 -113
  250. package/bin/file-observation-policy.cjs +0 -133
  251. package/bin/foreground-output-capture-policy.cjs +0 -41
  252. package/bin/generated-source-health.cjs +0 -142
  253. package/bin/glob-pattern-policy.cjs +0 -13
  254. package/bin/goal-completion-evidence-policy.cjs +0 -120
  255. package/bin/grep-output-limit-policy.cjs +0 -39
  256. package/bin/historical-media-projection-policy.cjs +0 -48
  257. package/bin/history-offload-pressure-policy.cjs +0 -33
  258. package/bin/html-to-research-markdown.cjs +0 -147
  259. package/bin/identity-context-policy.cjs +0 -764
  260. package/bin/identity-journal-policy.cjs +0 -107
  261. package/bin/input-draft-persistence.cjs +0 -77
  262. package/bin/king-tui-function-contract.json +0 -33
  263. package/bin/launcher-restart-policy.cjs +0 -150
  264. package/bin/live-response-repetition-guard.cjs +0 -196
  265. package/bin/llm-config-log-dedup-policy.cjs +0 -76
  266. package/bin/loop-event-record-policy.cjs +0 -174
  267. package/bin/managed-context-startup-policy.cjs +0 -27
  268. package/bin/media-activity-layout-policy.cjs +0 -34
  269. package/bin/media-auto-retrieval-policy.cjs +0 -90
  270. package/bin/media-result-policy.cjs +0 -59
  271. package/bin/micro-compaction-policy.cjs +0 -145
  272. package/bin/mistake-relevance-policy.cjs +0 -319
  273. package/bin/model-retry-progress-policy.cjs +0 -46
  274. package/bin/native-large-file-io.cjs +0 -42
  275. package/bin/native-runtime-cache.cjs +0 -76
  276. package/bin/natural-presence-policy.cjs +0 -28
  277. package/bin/noninteractive-shell-env-policy.cjs +0 -19
  278. package/bin/observer-hooks.cjs +0 -14
  279. package/bin/outbound-claim-provenance.cjs +0 -150
  280. package/bin/oversized-context-offload-policy.cjs +0 -86
  281. package/bin/pending-media-policy.cjs +0 -182
  282. package/bin/pending-token-estimate-policy.cjs +0 -41
  283. package/bin/personal-memory-consent-policy.cjs +0 -72
  284. package/bin/personal-memory-performance-policy.cjs +0 -12
  285. package/bin/personality-choice-policy.cjs +0 -101
  286. package/bin/personality-memory-adapter.cjs +0 -379
  287. package/bin/personality-mode.cjs +0 -46
  288. package/bin/personality-setup-policy.cjs +0 -197
  289. package/bin/proactive-compaction-policy.cjs +0 -25
  290. package/bin/profile-identity-resolution.cjs +0 -136
  291. package/bin/profile-runtime.cjs +0 -318
  292. package/bin/profile-tool-exclusion-policy.cjs +0 -37
  293. package/bin/programmatic-context-isolation.cjs +0 -25
  294. package/bin/programmatic-tool-runtime.mjs +0 -627
  295. package/bin/provider-idle-timeout-policy.cjs +0 -14
  296. package/bin/provider-model-refresh-deadline.cjs +0 -53
  297. package/bin/provider-model-refresh-policy.cjs +0 -107
  298. package/bin/rate-limit-recovery-policy.cjs +0 -47
  299. package/bin/read-batch-policy.cjs +0 -32
  300. package/bin/read-continuation-policy.cjs +0 -59
  301. package/bin/recurring-cron-history-policy.cjs +0 -124
  302. package/bin/relationship-continuity-policy.cjs +0 -143
  303. package/bin/relationship-curiosity-policy.cjs +0 -107
  304. package/bin/relationship-learning-policy.cjs +0 -168
  305. package/bin/release-artifact-freeze-policy.cjs +0 -30
  306. package/bin/reload-plugin-bootstrap.cjs +0 -18
  307. package/bin/reload-queue-policy.cjs +0 -38
  308. package/bin/repeated-assistant-response-policy.cjs +0 -232
  309. package/bin/repeated-injection-projection.cjs +0 -107
  310. package/bin/repeated-user-message-projection.cjs +0 -8
  311. package/bin/research-page-result.cjs +0 -74
  312. package/bin/retry-checkpoint-policy.cjs +0 -13
  313. package/bin/runtime-exit-ledger.cjs +0 -144
  314. package/bin/scoped-cron-run-policy.cjs +0 -358
  315. package/bin/session-checkpoint-policy.cjs +0 -25
  316. package/bin/session-compaction-policy.cjs +0 -84
  317. package/bin/session-replay-policy.cjs +0 -20
  318. package/bin/session-replay-window-policy.cjs +0 -40
  319. package/bin/session-resume-checkpoint.cjs +0 -254
  320. package/bin/session-scrollback-archive.cjs +0 -229
  321. package/bin/skill-activation-performance-policy.cjs +0 -69
  322. package/bin/skill-listing-performance-policy.cjs +0 -92
  323. package/bin/soul-organization-policy.cjs +0 -78
  324. package/bin/soul-preservation-policy.cjs +0 -20
  325. package/bin/startup-preferences.cjs +0 -131
  326. package/bin/streaming-flush-performance-policy.cjs +0 -28
  327. package/bin/structured-agent-swarm-output.cjs +0 -325
  328. package/bin/structured-subagent-output.cjs +0 -252
  329. package/bin/subagent-context-fork-policy.cjs +0 -155
  330. package/bin/subagent-max-tokens-handoff-policy.cjs +0 -69
  331. package/bin/subagent-parent-responsiveness.cjs +0 -19
  332. package/bin/subagent-skill-policy.cjs +0 -206
  333. package/bin/subagent-timeout-policy.cjs +0 -182
  334. package/bin/subagent-tool-policy.cjs +0 -60
  335. package/bin/subagent-usage-rollup-policy.cjs +0 -29
  336. package/bin/system-prompt-context-policy.cjs +0 -124
  337. package/bin/system-prompt-token-cache-policy.cjs +0 -60
  338. package/bin/telegram-addressed-focus.cjs +0 -55
  339. package/bin/telegram-addressed-priority.cjs +0 -12
  340. package/bin/telegram-approval-relay.cjs +0 -290
  341. package/bin/telegram-bot-priority.cjs +0 -17
  342. package/bin/telegram-console-status-policy.cjs +0 -174
  343. package/bin/telegram-context-projection-policy.cjs +0 -141
  344. package/bin/telegram-delivery-lifecycle.cjs +0 -125
  345. package/bin/telegram-direct-focus-policy.cjs +0 -273
  346. package/bin/telegram-mcp-compatibility.cjs +0 -49
  347. package/bin/telegram-media-delivery-policy.cjs +0 -42
  348. package/bin/telegram-private-conversation-policy.cjs +0 -185
  349. package/bin/telegram-queue-handoff-policy.cjs +0 -73
  350. package/bin/telegram-remote-status-policy.cjs +0 -120
  351. package/bin/telegram-session-queue-runtime.mjs +0 -306
  352. package/bin/telegram-text-chunk-policy.cjs +0 -63
  353. package/bin/telegram-truncated-reply-policy.cjs +0 -37
  354. package/bin/telegram-urgent-policy.cjs +0 -45
  355. package/bin/telemetry-spool-policy.cjs +0 -57
  356. package/bin/thinking-activity-status-policy.cjs +0 -132
  357. package/bin/thinking-only-guard.cjs +0 -80
  358. package/bin/todo-list-turn-policy.cjs +0 -131
  359. package/bin/tool-call-loop-policy.cjs +0 -51
  360. package/bin/tool-file-persistence.cjs +0 -141
  361. package/bin/tool-result-offload-policy.cjs +0 -359
  362. package/bin/tool-result-offload-telemetry.cjs +0 -12
  363. package/bin/tool-schema-token-cache-policy.cjs +0 -41
  364. package/bin/tool-stream-preview-policy.cjs +0 -9
  365. package/bin/tui-functional-contract.cjs +0 -55
  366. package/bin/turn-tool-performance-policy.cjs +0 -486
  367. package/bin/usage-cache-efficiency-policy.cjs +0 -26
  368. package/bin/user-home-path-policy.cjs +0 -13
  369. package/bin/user-message-offload-policy.cjs +0 -103
  370. package/bin/user-prompt-hook-origin-policy.cjs +0 -34
  371. package/bin/user-tool-record-policy.cjs +0 -7
  372. package/bin/validated-learning-insight-policy.cjs +0 -58
  373. package/bin/validated-learning-outcome-trace.cjs +0 -107
  374. package/bin/validated-learning-performance-policy.cjs +0 -53
  375. package/bin/validated-learning-signal.cjs +0 -463
  376. package/bin/windows-bash-dialect-policy.cjs +0 -25
  377. package/bin/windows-node-crash-dump.cjs +0 -110
  378. package/bin/write-continuation-policy.cjs +0 -69
  379. package/codebase-index/README.md +0 -82
  380. package/codebase-index/codebase_index.py +0 -470
  381. package/standard-skills/agent-browser/SKILL.md +0 -19
  382. package/standard-skills/agent-browser/references/runtime.md +0 -8
  383. package/standard-skills/blun-session-inspector/SKILL.md +0 -41
  384. package/standard-skills/blun-session-inspector/scripts/inspect-session.cjs +0 -437
  385. package/standard-skills/design-taste-frontend/SKILL.md +0 -1206
  386. package/standard-skills/full-output-enforcement/SKILL.md +0 -49
  387. package/standard-skills/high-end-visual-design/SKILL.md +0 -98
  388. package/standard-skills/image-to-code/SKILL.md +0 -1228
  389. package/standard-skills/industrial-brutalist-ui/SKILL.md +0 -92
  390. package/standard-skills/minimalist-ui/SKILL.md +0 -85
  391. package/standard-skills/motion-design-taste/SKILL.md +0 -74
  392. package/standard-skills/playwright-testing/SKILL.md +0 -19
  393. package/standard-skills/playwright-testing/references/runtime.md +0 -7
  394. package/standard-skills/premortem/SKILL.md +0 -148
  395. package/standard-skills/redesign-existing-projects/SKILL.md +0 -178
  396. package/standard-skills/research-evidence/SKILL.md +0 -39
  397. package/standard-skills/research-evidence/references/evidence-format.md +0 -104
  398. package/standard-skills/research-evidence/scripts/evidence-collection.cjs +0 -260
  399. package/standard-skills/research-evidence/scripts/score-report.cjs +0 -130
  400. package/standard-skills/screenshot-lesen/SKILL.md +0 -52
  401. package/standard-skills/stitch-design-taste/DESIGN.md +0 -121
  402. package/standard-skills/stitch-design-taste/SKILL.md +0 -184
  403. package/standard-skills/telegram-channel/SKILL.md +0 -18
  404. package/standard-skills/telegram-channel/references/runtime.md +0 -7
  405. package/standard-skills/venture-flywheel/SKILL.md +0 -32
  406. package/standard-skills/venture-flywheel/identity/project-identity.cjs +0 -146
  407. package/standard-skills/venture-flywheel/policy/capability-engine.cjs +0 -114
  408. package/standard-skills/venture-flywheel/policy/repository-trust.cjs +0 -229
  409. package/standard-skills/venture-flywheel/references/BEISPIELE-phase0.md +0 -146
  410. package/standard-skills/venture-flywheel/references/CAPABILITY-MAP.md +0 -34
  411. package/standard-skills/venture-flywheel/references/SPEC-phase0-identity-trust.md +0 -77
  412. package/standard-skills/venture-flywheel/references/SPEC-phase0-state-events.md +0 -93
  413. package/standard-skills/venture-flywheel/schemas/capability-decision.schema.json +0 -13
  414. package/standard-skills/venture-flywheel/schemas/execution-event.schema.json +0 -44
  415. package/standard-skills/venture-flywheel/schemas/project-identity.schema.json +0 -32
  416. package/standard-skills/venture-flywheel/schemas/repository-trust.schema.json +0 -57
  417. package/standard-skills/venture-flywheel/schemas/run-transition.schema.json +0 -59
  418. package/standard-skills/venture-flywheel/state/execution-event.cjs +0 -191
  419. package/standard-skills/venture-flywheel/state/task-state-machine.cjs +0 -190
  420. package/standard-skills/web-lesen/SKILL.md +0 -73
  421. package/standard-skills/web-lesen/scripts/crawl_public.py +0 -379
  422. package/standard-skills/windows-mcp/SKILL.md +0 -19
  423. package/standard-skills/windows-mcp/references/runtime.md +0 -9
  424. package/telegram-plugin/DELIVERY.md +0 -36
  425. package/telegram-plugin/bin/telegram-approval-relay.cjs +0 -290
  426. package/telegram-plugin/bin/telegram-console-status-policy.cjs +0 -175
  427. package/telegram-plugin/bin/telegram-delivery-lifecycle.cjs +0 -125
  428. package/telegram-plugin/bin/telegram-direct-reply-policy.cjs +0 -48
  429. package/telegram-plugin/bin/telegram-launcher-status-queue.cjs +0 -122
  430. package/telegram-plugin/bin/telegram-private-conversation-policy.cjs +0 -186
  431. package/telegram-plugin/bin/telegram-remote-status-policy.cjs +0 -121
  432. package/telegram-plugin/bin/telegram-reply-parts.cjs +0 -149
  433. package/telegram-plugin/bin/telegram-text-chunk-policy.cjs +0 -63
  434. package/telegram-plugin/bin/telegram-typing-keepalive.cjs +0 -89
  435. package/telegram-plugin/compat/mcp-server-fa511cd1.mjs +0 -73825
  436. /package/{bin → scripts}/fix-node-pty-perms.js +0 -0
@@ -1,437 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
-
4
- const fs = require('node:fs');
5
- const os = require('node:os');
6
- const path = require('node:path');
7
- const readline = require('node:readline');
8
-
9
- function fail(code, details) {
10
- process.stderr.write(`${JSON.stringify({ error: code, ...details })}\n`);
11
- process.exitCode = 1;
12
- }
13
-
14
- function parseArgs(argv) {
15
- const options = {
16
- blunHome: process.env.BLUN_HOME || path.join(os.homedir(), '.blun'),
17
- profile: 'default',
18
- list: null,
19
- includeMetadata: false,
20
- selector: null,
21
- };
22
-
23
- for (let index = 0; index < argv.length; index += 1) {
24
- const argument = argv[index];
25
- if (argument === '--blun-home') {
26
- options.blunHome = argv[index += 1];
27
- } else if (argument === '--profile') {
28
- options.profile = argv[index += 1];
29
- } else if (argument === '--list') {
30
- const raw = argv[index + 1];
31
- if (raw && !raw.startsWith('--')) index += 1;
32
- options.list = raw && !raw.startsWith('--') ? Number(raw) : 20;
33
- } else if (argument === '--include-metadata') {
34
- options.includeMetadata = true;
35
- } else if (argument.startsWith('--')) {
36
- throw new Error(`unknown_option:${argument}`);
37
- } else if (options.selector === null) {
38
- options.selector = argument;
39
- } else {
40
- throw new Error('too_many_session_selectors');
41
- }
42
- }
43
-
44
- if (!options.blunHome) throw new Error('missing_blun_home');
45
- if (!/^[a-z0-9][a-z0-9_-]{0,31}$/u.test(options.profile)) throw new Error('invalid_profile');
46
- if (options.list !== null && (!Number.isInteger(options.list) || options.list < 1 || options.list > 1000)) {
47
- throw new Error('invalid_list_limit');
48
- }
49
- if (options.list === null && !options.selector) throw new Error('missing_session_selector');
50
- return options;
51
- }
52
-
53
- async function readJsonLines(filePath, onRecord, onWarning) {
54
- const input = fs.createReadStream(filePath, { encoding: 'utf8' });
55
- const lines = readline.createInterface({ input, crlfDelay: Infinity });
56
- let lineNumber = 0;
57
- for await (const line of lines) {
58
- lineNumber += 1;
59
- if (!line.trim()) continue;
60
- try {
61
- const record = JSON.parse(line);
62
- if (!record || typeof record !== 'object' || Array.isArray(record)) {
63
- onWarning({ code: 'unsupported_record', line: lineNumber });
64
- continue;
65
- }
66
- await onRecord(record, lineNumber);
67
- } catch {
68
- onWarning({ code: 'invalid_json', line: lineNumber });
69
- }
70
- }
71
- }
72
-
73
- async function loadSessionIndex(profileRoot) {
74
- const indexPath = path.join(profileRoot, 'session_index.jsonl');
75
- if (!fs.existsSync(indexPath)) throw new Error('session_index_not_found');
76
- const sessions = new Map();
77
- const warnings = [];
78
- await readJsonLines(indexPath, (entry) => {
79
- if (typeof entry.sessionId !== 'string' || typeof entry.sessionDir !== 'string') {
80
- warnings.push({ scope: 'session_index', code: 'invalid_session_entry' });
81
- return;
82
- }
83
- sessions.set(entry.sessionId, entry);
84
- }, (warning) => warnings.push({ scope: 'session_index', ...warning }));
85
- return { sessions: [...sessions.values()], warnings };
86
- }
87
-
88
- function sessionModifiedTime(sessionDir) {
89
- try {
90
- return fs.statSync(sessionDir).mtime.toISOString();
91
- } catch {
92
- return null;
93
- }
94
- }
95
-
96
- function isPathInside(parent, candidate) {
97
- const relative = path.relative(path.resolve(parent), path.resolve(candidate));
98
- return relative !== ''
99
- && relative !== '..'
100
- && !relative.startsWith(`..${path.sep}`)
101
- && !path.isAbsolute(relative);
102
- }
103
-
104
- function requireSafeSessionPath(profileRoot, sessionDir) {
105
- if (!isPathInside(path.join(profileRoot, 'sessions'), sessionDir)) {
106
- throw new Error('unsafe_session_path');
107
- }
108
- }
109
-
110
- function agentWireFiles(sessionDir) {
111
- const agentsDir = path.join(sessionDir, 'agents');
112
- if (!fs.existsSync(agentsDir)) return [];
113
- return fs.readdirSync(agentsDir, { withFileTypes: true })
114
- .filter((entry) => entry.isDirectory())
115
- .map((entry) => ({
116
- agent: entry.name,
117
- wirePath: path.join(agentsDir, entry.name, 'wire.jsonl'),
118
- }))
119
- .filter((entry) => fs.existsSync(entry.wirePath))
120
- .sort((left, right) => left.agent.localeCompare(right.agent));
121
- }
122
-
123
- function emptyUsage() {
124
- return {
125
- records: 0,
126
- input_other: 0,
127
- input_cache_read: 0,
128
- input_cache_creation: 0,
129
- input_total: 0,
130
- output: 0,
131
- };
132
- }
133
-
134
- function emptyCompactions() {
135
- return { begun: 0, applied: 0, completed: 0, cancelled: 0, compacted_records: 0 };
136
- }
137
-
138
- function numberValue(value) {
139
- return Number.isFinite(Number(value)) ? Number(value) : 0;
140
- }
141
-
142
- function emptyTokenSeries() {
143
- return { total: 0, min: null, max: null, last: null };
144
- }
145
-
146
- function addTokenValue(series, value) {
147
- series.total += value;
148
- series.min = series.min === null ? value : Math.min(series.min, value);
149
- series.max = series.max === null ? value : Math.max(series.max, value);
150
- series.last = value;
151
- }
152
-
153
- function usageValue(usage, camelName, snakeName) {
154
- return numberValue(usage?.[camelName] ?? usage?.[snakeName]);
155
- }
156
-
157
- async function summarizeWire(agent, wirePath, warnings) {
158
- const summary = {
159
- agent,
160
- records: 0,
161
- first_time: null,
162
- last_time: null,
163
- turn_prompts: 0,
164
- turn_steers: 0,
165
- turn_cancellations: 0,
166
- messages: 0,
167
- loop_events: 0,
168
- provider_steps_started: 0,
169
- provider_steps_finished: 0,
170
- tool_calls: 0,
171
- tool_results: 0,
172
- top_tools: [],
173
- usage: emptyUsage(),
174
- full_compactions: emptyCompactions(),
175
- };
176
- const toolCounts = new Map();
177
-
178
- await readJsonLines(wirePath, (record) => {
179
- summary.records += 1;
180
- const time = numberValue(record.time ?? record.created_at);
181
- if (time > 0) {
182
- summary.first_time = summary.first_time === null ? time : Math.min(summary.first_time, time);
183
- summary.last_time = summary.last_time === null ? time : Math.max(summary.last_time, time);
184
- }
185
-
186
- if (record.type === 'turn.prompt') summary.turn_prompts += 1;
187
- else if (record.type === 'turn.steer') summary.turn_steers += 1;
188
- else if (record.type === 'turn.cancel') summary.turn_cancellations += 1;
189
- else if (record.type === 'context.append_message') summary.messages += 1;
190
- else if (record.type === 'context.append_loop_event') {
191
- summary.loop_events += 1;
192
- if (record.event?.type === 'step.begin') summary.provider_steps_started += 1;
193
- else if (record.event?.type === 'step.end') summary.provider_steps_finished += 1;
194
- else if (record.event?.type === 'tool.call') {
195
- summary.tool_calls += 1;
196
- const name = typeof record.event.name === 'string' && record.event.name ? record.event.name : '<unknown>';
197
- toolCounts.set(name, (toolCounts.get(name) || 0) + 1);
198
- } else if (record.event?.type === 'tool.result') summary.tool_results += 1;
199
- } else if (record.type === 'usage.record') {
200
- const usage = record.usage || {};
201
- const inputOther = usageValue(usage, 'inputOther', 'input_other');
202
- const inputCacheRead = usageValue(usage, 'inputCacheRead', 'input_cache_read');
203
- const inputCacheCreation = usageValue(usage, 'inputCacheCreation', 'input_cache_creation');
204
- summary.usage.records += 1;
205
- summary.usage.input_other += inputOther;
206
- summary.usage.input_cache_read += inputCacheRead;
207
- summary.usage.input_cache_creation += inputCacheCreation;
208
- summary.usage.input_total += inputOther + inputCacheRead + inputCacheCreation;
209
- summary.usage.output += usageValue(usage, 'output', 'output_tokens');
210
- } else if (record.type === 'full_compaction.begin') summary.full_compactions.begun += 1;
211
- else if (record.type === 'context.apply_compaction') {
212
- summary.full_compactions.applied += 1;
213
- summary.full_compactions.compacted_records += numberValue(record.compactedCount ?? record.compacted_count);
214
- } else if (record.type === 'full_compaction.complete') summary.full_compactions.completed += 1;
215
- else if (record.type === 'full_compaction.cancel') summary.full_compactions.cancelled += 1;
216
- }, (warning) => warnings.push({ scope: 'wire', agent, ...warning }));
217
-
218
- summary.top_tools = [...toolCounts.entries()]
219
- .map(([name, calls]) => ({ name, calls }))
220
- .sort((left, right) => right.calls - left.calls || left.name.localeCompare(right.name));
221
- return summary;
222
- }
223
-
224
- function addUsage(target, source) {
225
- for (const key of Object.keys(target)) target[key] += source[key];
226
- }
227
-
228
- function addCompactions(target, source) {
229
- for (const key of Object.keys(target)) target[key] += source[key];
230
- }
231
-
232
- function combineAgents(agents) {
233
- const totals = {
234
- records: 0,
235
- turn_prompts: 0,
236
- turn_steers: 0,
237
- turn_cancellations: 0,
238
- messages: 0,
239
- loop_events: 0,
240
- provider_steps_started: 0,
241
- provider_steps_finished: 0,
242
- tool_calls: 0,
243
- tool_results: 0,
244
- top_tools: [],
245
- usage: emptyUsage(),
246
- full_compactions: emptyCompactions(),
247
- };
248
- const toolCounts = new Map();
249
- const numericKeys = [
250
- 'records',
251
- 'turn_prompts',
252
- 'turn_steers',
253
- 'turn_cancellations',
254
- 'messages',
255
- 'loop_events',
256
- 'provider_steps_started',
257
- 'provider_steps_finished',
258
- 'tool_calls',
259
- 'tool_results',
260
- ];
261
-
262
- for (const agent of agents) {
263
- for (const key of numericKeys) totals[key] += agent[key];
264
- addUsage(totals.usage, agent.usage);
265
- addCompactions(totals.full_compactions, agent.full_compactions);
266
- for (const tool of agent.top_tools) toolCounts.set(tool.name, (toolCounts.get(tool.name) || 0) + tool.calls);
267
- }
268
- totals.top_tools = [...toolCounts.entries()]
269
- .map(([name, calls]) => ({ name, calls }))
270
- .sort((left, right) => right.calls - left.calls || left.name.localeCompare(right.name));
271
- return totals;
272
- }
273
-
274
- async function summarizeTelemetry(telemetryDir, sessionId, warnings) {
275
- const summary = {
276
- micro_compactions: 0,
277
- full_compaction_failures: 0,
278
- offloaded_tool_results: 0,
279
- offloaded_output_chars: 0,
280
- truncated_tool_results: 0,
281
- truncated_tool_arguments: 0,
282
- truncated_tool_argument_tokens_saved: 0,
283
- };
284
- if (!fs.existsSync(telemetryDir)) return summary;
285
-
286
- const files = fs.readdirSync(telemetryDir, { withFileTypes: true })
287
- .filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl'))
288
- .map((entry) => ({ name: entry.name, filePath: path.join(telemetryDir, entry.name) }));
289
- for (const file of files) {
290
- await readJsonLines(file.filePath, (record) => {
291
- if (record.session_id !== sessionId) return;
292
- if (record.event === 'micro_compaction_finished') {
293
- summary.micro_compactions += 1;
294
- summary.truncated_tool_results += numberValue(record.properties?.truncated_tool_result_count);
295
- summary.truncated_tool_arguments += numberValue(record.properties?.truncated_tool_argument_count);
296
- summary.truncated_tool_argument_tokens_saved += Math.max(0,
297
- numberValue(record.properties?.truncated_tool_argument_tokens_before)
298
- - numberValue(record.properties?.truncated_tool_argument_tokens_after));
299
- } else if (record.event === 'compaction_failed') {
300
- summary.full_compaction_failures += 1;
301
- } else if (record.event === 'tool_result_offloaded') {
302
- summary.offloaded_tool_results += 1;
303
- summary.offloaded_output_chars += numberValue(record.properties?.output_size_chars);
304
- }
305
- }, (warning) => warnings.push({ scope: 'telemetry', file: file.name, ...warning }));
306
- }
307
- return summary;
308
- }
309
-
310
- async function summarizeToolSchemas(logPath) {
311
- const summary = {
312
- requests: 0,
313
- deferred_requests: 0,
314
- suppression_reasons: [],
315
- eligible_schema_tokens: emptyTokenSeries(),
316
- selected_schema_tokens: emptyTokenSeries(),
317
- estimated_schema_tokens_avoided: 0,
318
- last: null,
319
- };
320
- if (!fs.existsSync(logPath)) return summary;
321
-
322
- const reasonCounts = new Map();
323
- const input = fs.createReadStream(logPath, { encoding: 'utf8' });
324
- const lines = readline.createInterface({ input, crlfDelay: Infinity });
325
- for await (const line of lines) {
326
- if (!line.includes('turn request tools')) continue;
327
- const values = Object.fromEntries(
328
- [...line.matchAll(/\b(toolSuppressionReason|eligibleToolCount|selectedToolCount|deferredToolCount|eligibleToolSchemaTokens|selectedToolSchemaTokens)=([^\s]+)/gu)]
329
- .map((match) => [match[1], match[2]]),
330
- );
331
- const numericKeys = [
332
- 'eligibleToolCount',
333
- 'selectedToolCount',
334
- 'deferredToolCount',
335
- 'eligibleToolSchemaTokens',
336
- 'selectedToolSchemaTokens',
337
- ];
338
- if (!values.toolSuppressionReason || !numericKeys.every((key) => /^\d+$/u.test(values[key] || ''))) continue;
339
-
340
- const eligibleToolCount = Number(values.eligibleToolCount);
341
- const selectedToolCount = Number(values.selectedToolCount);
342
- const deferredToolCount = Number(values.deferredToolCount);
343
- const eligibleSchemaTokens = Number(values.eligibleToolSchemaTokens);
344
- const selectedSchemaTokens = Number(values.selectedToolSchemaTokens);
345
- summary.requests += 1;
346
- if (deferredToolCount > 0) summary.deferred_requests += 1;
347
- reasonCounts.set(values.toolSuppressionReason, (reasonCounts.get(values.toolSuppressionReason) || 0) + 1);
348
- addTokenValue(summary.eligible_schema_tokens, eligibleSchemaTokens);
349
- addTokenValue(summary.selected_schema_tokens, selectedSchemaTokens);
350
- summary.estimated_schema_tokens_avoided += Math.max(0, eligibleSchemaTokens - selectedSchemaTokens);
351
- summary.last = {
352
- eligible_tool_count: eligibleToolCount,
353
- selected_tool_count: selectedToolCount,
354
- deferred_tool_count: deferredToolCount,
355
- eligible_schema_tokens: eligibleSchemaTokens,
356
- selected_schema_tokens: selectedSchemaTokens,
357
- };
358
- }
359
- summary.suppression_reasons = [...reasonCounts.entries()]
360
- .map(([reason, requests]) => ({ reason, requests }))
361
- .sort((left, right) => right.requests - left.requests || left.reason.localeCompare(right.reason));
362
- return summary;
363
- }
364
-
365
- function listSessions(options, profileRoot, sessions, warnings) {
366
- const listed = sessions
367
- .filter((entry) => {
368
- try {
369
- requireSafeSessionPath(profileRoot, entry.sessionDir);
370
- return true;
371
- } catch {
372
- warnings.push({ scope: 'session_index', code: 'unsafe_session_path', session_id: entry.sessionId });
373
- return false;
374
- }
375
- })
376
- .map((entry) => {
377
- const item = {
378
- session_id: entry.sessionId,
379
- agents: agentWireFiles(entry.sessionDir).length,
380
- last_modified: sessionModifiedTime(entry.sessionDir),
381
- };
382
- if (options.includeMetadata) {
383
- item.session_dir = entry.sessionDir;
384
- item.work_dir = entry.workDir || null;
385
- }
386
- return item;
387
- })
388
- .sort((left, right) => String(right.last_modified).localeCompare(String(left.last_modified)))
389
- .slice(0, options.list);
390
- return { mode: 'list', profile: options.profile, sessions: listed, warnings };
391
- }
392
-
393
- async function inspectSession(options, profileRoot, sessions, inheritedWarnings) {
394
- const matches = sessions.filter((entry) => entry.sessionId === options.selector || entry.sessionId.startsWith(options.selector));
395
- if (matches.length === 0) throw new Error('session_not_found');
396
- if (matches.length > 1) throw new Error('ambiguous_session_prefix');
397
- const entry = matches[0];
398
- requireSafeSessionPath(profileRoot, entry.sessionDir);
399
- const warnings = [...inheritedWarnings];
400
- const wires = agentWireFiles(entry.sessionDir);
401
- if (wires.length === 0) warnings.push({ scope: 'session', code: 'wire_not_found' });
402
- const agents = [];
403
- for (const wire of wires) agents.push(await summarizeWire(wire.agent, wire.wirePath, warnings));
404
-
405
- const result = {
406
- mode: 'summary',
407
- profile: options.profile,
408
- session_id: entry.sessionId,
409
- agents,
410
- totals: combineAgents(agents),
411
- telemetry: await summarizeTelemetry(path.join(options.blunHome, 'telemetry'), entry.sessionId, warnings),
412
- tool_schemas: await summarizeToolSchemas(path.join(entry.sessionDir, 'logs', 'blun.log')),
413
- warnings,
414
- };
415
- if (options.includeMetadata) {
416
- result.session_dir = entry.sessionDir;
417
- result.work_dir = entry.workDir || null;
418
- }
419
- return result;
420
- }
421
-
422
- async function main() {
423
- let options;
424
- try {
425
- options = parseArgs(process.argv.slice(2));
426
- const profileRoot = path.join(options.blunHome, 'profile', options.profile);
427
- const { sessions, warnings } = await loadSessionIndex(profileRoot);
428
- const result = options.list !== null
429
- ? listSessions(options, profileRoot, sessions, warnings)
430
- : await inspectSession(options, profileRoot, sessions, warnings);
431
- process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
432
- } catch (error) {
433
- fail(String(error?.message || error), options?.selector ? { selector: options.selector } : {});
434
- }
435
- }
436
-
437
- void main();