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,241 +0,0 @@
1
- 'use strict';
2
-
3
- const AGENT_RESUME_SNAPSHOT_SCHEMA_VERSION = 1;
4
- const MAX_TODO_PROGRESS_EVIDENCE = 8;
5
- const MAX_TODO_PROGRESS_EVIDENCE_CHARS = 200;
6
-
7
- function copyJsonObject(value, fallback) {
8
- if (value === undefined) return fallback;
9
- return JSON.parse(JSON.stringify(value));
10
- }
11
-
12
- function normalizeTodoProgressState(value) {
13
- if (value === null || typeof value !== 'object' || Array.isArray(value)) return undefined;
14
- const nonNegativeInteger = (candidate, maximum) => Number.isSafeInteger(candidate)
15
- ? Math.max(0, Math.min(candidate, maximum))
16
- : 0;
17
- const evidenceRevision = nonNegativeInteger(value.evidenceRevision, Number.MAX_SAFE_INTEGER);
18
- return {
19
- workCallsSinceRefresh: nonNegativeInteger(value.workCallsSinceRefresh, 64),
20
- refreshRequired: value.refreshRequired === true,
21
- unchangedRefreshStreak: nonNegativeInteger(value.unchangedRefreshStreak, 3),
22
- recentEvidence: Array.isArray(value.recentEvidence)
23
- ? value.recentEvidence
24
- .filter((entry) => typeof entry === 'string')
25
- .slice(-MAX_TODO_PROGRESS_EVIDENCE)
26
- .map((entry) => entry.slice(0, MAX_TODO_PROGRESS_EVIDENCE_CHARS))
27
- : [],
28
- evidenceRevision,
29
- lastMaintenanceEvidenceRevision: Math.min(
30
- nonNegativeInteger(value.lastMaintenanceEvidenceRevision, Number.MAX_SAFE_INTEGER),
31
- evidenceRevision,
32
- ),
33
- allVisibleWorkCompleted: value.allVisibleWorkCompleted === true,
34
- };
35
- }
36
-
37
- function captureMessageTimes(agent) {
38
- const replayTimes = new Map();
39
- for (const record of agent.replayBuilder.records) {
40
- if (record?.type === 'message' && Number.isFinite(record.time)) {
41
- replayTimes.set(record.message, record.time);
42
- }
43
- }
44
- return agent.context.history.map((message) => {
45
- const time = agent.records.messageTimes?.get(message) ?? replayTimes.get(message);
46
- return Number.isFinite(time) ? time : null;
47
- });
48
- }
49
-
50
- function createAgentResumeSnapshot(agent) {
51
- const userTools = [...agent.tools.userTools.values()].map((tool) => ({
52
- name: tool.name,
53
- description: tool.description,
54
- parameters: tool.parameters,
55
- }));
56
- return {
57
- schemaVersion: AGENT_RESUME_SNAPSHOT_SCHEMA_VERSION,
58
- context: {
59
- history: agent.context.history,
60
- tokenCount: agent.context.tokenCount,
61
- tokenCountCoveredMessageCount: agent.context.tokenCountCoveredMessageCount,
62
- lastAssistantAt: agent.context._lastAssistantAt,
63
- messageTimes: captureMessageTimes(agent),
64
- },
65
- config: {
66
- cwd: agent.config._cwd,
67
- modelAlias: agent.config._modelAlias,
68
- profileName: agent.config._profileName,
69
- thinkingEffort: agent.config._thinkingEffort,
70
- actionStyle: agent.config._actionStyle,
71
- systemPrompt: agent.config._systemPrompt,
72
- },
73
- permission: {
74
- hasModeOverride: agent.permission.modeOverride !== undefined,
75
- modeOverride: agent.permission.modeOverride,
76
- sessionApprovalRulePatterns: [...agent.permission.localSessionApprovalRulePatterns],
77
- },
78
- plan: {
79
- active: agent.planMode._isActive,
80
- id: agent.planMode._planId,
81
- filePath: agent.planMode._planFilePath,
82
- },
83
- swarm: { active: agent.swarmMode.active },
84
- usage: { byModel: agent.usage.byModel },
85
- tools: {
86
- userTools,
87
- enabledTools: [...agent.tools.enabledTools],
88
- mcpAccessPatterns: [...agent.tools.mcpAccessPatterns],
89
- store: agent.tools.store,
90
- allowedTools: agent.tools.allowedTools,
91
- excludedTools: [...agent.tools.excludedTools],
92
- },
93
- todoProgress: normalizeTodoProgressState(agent.goalTodoPolicyState) ?? null,
94
- goal: agent.goal.state ?? null,
95
- turn: {
96
- turnId: agent.turn.turnId,
97
- telegramDeliveryIdentities: agent.turn.telegramDeliveryLedger?.snapshot?.() ?? [],
98
- },
99
- microCompaction: { cutoff: agent.microCompaction.cutoff },
100
- };
101
- }
102
-
103
- function isValidSnapshot(snapshot) {
104
- return snapshot !== null
105
- && typeof snapshot === 'object'
106
- && snapshot.schemaVersion === AGENT_RESUME_SNAPSHOT_SCHEMA_VERSION
107
- && snapshot.context !== null
108
- && typeof snapshot.context === 'object'
109
- && Array.isArray(snapshot.context.history)
110
- && snapshot.config !== null
111
- && typeof snapshot.config === 'object'
112
- && typeof snapshot.config.cwd === 'string'
113
- && snapshot.permission !== null
114
- && typeof snapshot.permission === 'object'
115
- && snapshot.tools !== null
116
- && typeof snapshot.tools === 'object'
117
- && Array.isArray(snapshot.tools.userTools)
118
- && snapshot.turn !== null
119
- && typeof snapshot.turn === 'object';
120
- }
121
-
122
- function restoreAgentResumeSnapshot(agent, snapshot) {
123
- if (!isValidSnapshot(snapshot)) return false;
124
-
125
- const previousRestoring = agent.records._restoring;
126
- agent.records._restoring = { time: Date.now() };
127
- try {
128
- agent.config._cwd = snapshot.config.cwd;
129
- agent.config._modelAlias = snapshot.config.modelAlias;
130
- agent.config._profileName = snapshot.config.profileName;
131
- agent.config._thinkingEffort = snapshot.config.thinkingEffort ?? 'off';
132
- agent.config._actionStyle = snapshot.config.actionStyle ?? 'default';
133
- agent.config._systemPrompt = snapshot.config.systemPrompt ?? '';
134
- agent.kaos.chdir(snapshot.config.cwd);
135
-
136
- agent.context._history = snapshot.context.history;
137
- agent.context._tokenCount = Number.isFinite(snapshot.context.tokenCount)
138
- ? snapshot.context.tokenCount
139
- : 0;
140
- agent.context.tokenCountCoveredMessageCount = Number.isInteger(
141
- snapshot.context.tokenCountCoveredMessageCount,
142
- ) ? Math.max(
143
- 0,
144
- Math.min(snapshot.context.history.length, snapshot.context.tokenCountCoveredMessageCount),
145
- ) : 0;
146
- agent.context._lastAssistantAt = Number.isFinite(snapshot.context.lastAssistantAt)
147
- ? snapshot.context.lastAssistantAt
148
- : null;
149
- const messageTimes = Array.isArray(snapshot.context.messageTimes)
150
- ? snapshot.context.messageTimes
151
- : [];
152
- if (agent.records.messageTimes?.set) {
153
- snapshot.context.history.forEach((message, index) => {
154
- const time = messageTimes[index];
155
- if (Number.isFinite(time)) agent.records.messageTimes.set(message, time);
156
- });
157
- }
158
- agent.context.openSteps.clear();
159
- agent.context.pendingToolResultIds.clear();
160
- agent.context.deferredMessages = [];
161
- agent.context.markPendingTokenEstimateDirty();
162
- agent.injection.onContextClear();
163
-
164
- agent.permission.modeOverride = snapshot.permission.hasModeOverride === true
165
- ? snapshot.permission.modeOverride
166
- : undefined;
167
- agent.permission.localSessionApprovalRulePatterns = new Set(
168
- Array.isArray(snapshot.permission.sessionApprovalRulePatterns)
169
- ? snapshot.permission.sessionApprovalRulePatterns
170
- : [],
171
- );
172
-
173
- agent.planMode._isActive = snapshot.plan?.active === true;
174
- agent.planMode._planId = agent.planMode._isActive ? snapshot.plan?.id ?? null : null;
175
- agent.planMode._planFilePath = agent.planMode._isActive
176
- ? snapshot.plan?.filePath ?? null
177
- : null;
178
- agent.swarmMode.active = snapshot.swarm?.active ?? null;
179
- agent.usage.byModel = copyJsonObject(snapshot.usage?.byModel, {});
180
- agent.usage.currentTurn = undefined;
181
-
182
- agent.tools.userTools.clear();
183
- for (const tool of snapshot.tools.userTools) {
184
- if (!tool || typeof tool.name !== 'string' || !tool.name) continue;
185
- agent.tools.registerUserTool({
186
- name: tool.name,
187
- description: typeof tool.description === 'string' ? tool.description : '',
188
- parameters: tool.parameters ?? { type: 'object' },
189
- });
190
- }
191
- agent.tools.enabledTools = new Set(
192
- Array.isArray(snapshot.tools.enabledTools) ? snapshot.tools.enabledTools : [],
193
- );
194
- agent.tools.mcpAccessPatterns = Array.isArray(snapshot.tools.mcpAccessPatterns)
195
- ? [...snapshot.tools.mcpAccessPatterns]
196
- : [];
197
- agent.tools.store = copyJsonObject(snapshot.tools.store, {});
198
- agent.tools.allowedTools = Array.isArray(snapshot.tools.allowedTools)
199
- ? [...snapshot.tools.allowedTools]
200
- : undefined;
201
- agent.tools.excludedTools = Array.isArray(snapshot.tools.excludedTools)
202
- ? [...snapshot.tools.excludedTools]
203
- : [];
204
- if (agent.config.hasProvider) agent.tools.initializeBuiltinTools();
205
-
206
- agent.goalTodoPolicyState = normalizeTodoProgressState(snapshot.todoProgress);
207
-
208
- agent.goal.state = snapshot.goal === null
209
- ? undefined
210
- : copyJsonObject(snapshot.goal, undefined);
211
- agent.turn.turnId = Number.isInteger(snapshot.turn.turnId) ? snapshot.turn.turnId : -1;
212
- agent.turn.activeTurn = 'resuming';
213
- agent.turn.steerBuffer.length = 0;
214
- agent.turn.telegramDeliveryLedger?.restore?.(snapshot.turn.telegramDeliveryIdentities);
215
- agent.microCompaction.cutoff = Number.isInteger(snapshot.microCompaction?.cutoff)
216
- ? Math.max(0, Math.min(snapshot.context.history.length, snapshot.microCompaction.cutoff))
217
- : 0;
218
-
219
- agent.toolResultBatchOffload.reset(agent.context._history);
220
- agent.userMessageOffload.reset(agent.context._history);
221
- agent.assistantMessageOffload.reset(agent.context._history);
222
- agent.replayBuilder.records = agent.context._history.map((message, index) => {
223
- const time = messageTimes[index];
224
- return Number.isFinite(time)
225
- ? { type: 'message', message, time }
226
- : { type: 'message', message };
227
- });
228
- agent.replayBuilder.frozen = false;
229
- agent.replayBuilder.segmentStart = 0;
230
- return true;
231
- } finally {
232
- agent.records._restoring = previousRestoring;
233
- }
234
- }
235
-
236
- module.exports = {
237
- AGENT_RESUME_SNAPSHOT_SCHEMA_VERSION,
238
- createAgentResumeSnapshot,
239
- normalizeTodoProgressState,
240
- restoreAgentResumeSnapshot,
241
- };
@@ -1,111 +0,0 @@
1
- import { open, lstat, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
2
- import path from 'node:path';
3
-
4
- import { ingestGoalInstruction, parseGoalInstruction } from './agentspine-king-goal-intake.mjs';
5
-
6
- const CHECKPOINT_SCHEMA = 'blun.king-goal-queue-checkpoint/v1';
7
- const MAX_READ_BYTES = 4 * 1024 * 1024;
8
-
9
- function queueIdentity(metadata) {
10
- return `${metadata.dev}:${metadata.ino}:${metadata.birthtimeMs}`;
11
- }
12
-
13
- async function readCheckpoint(filePath) {
14
- try {
15
- const value = JSON.parse(await readFile(filePath, 'utf8'));
16
- if (value?.schema === CHECKPOINT_SCHEMA && typeof value.fileId === 'string'
17
- && Number.isSafeInteger(value.offset) && value.offset >= 0 && Array.isArray(value.accepted)) return value;
18
- } catch (error) {
19
- if (error?.code !== 'ENOENT') throw error;
20
- }
21
- return { schema: CHECKPOINT_SCHEMA, fileId: '', offset: 0, lastMessageId: null, accepted: [] };
22
- }
23
-
24
- async function writeCheckpoint(filePath, value) {
25
- await mkdir(path.dirname(filePath), { recursive: true });
26
- const temporary = `${filePath}.${process.pid}.${Date.now()}.tmp`;
27
- await writeFile(temporary, `${JSON.stringify(value, null, 2)}\n`, {
28
- encoding: 'utf8', flag: 'wx', mode: 0o600,
29
- });
30
- await rename(temporary, filePath);
31
- }
32
-
33
- function parseQueueLine(line) {
34
- let envelope;
35
- try { envelope = JSON.parse(line); } catch { return null; }
36
- if (!envelope || typeof envelope.text !== 'string' || typeof envelope.meta !== 'object') return null;
37
- return envelope;
38
- }
39
-
40
- function isAuthorizedInstruction(envelope, input) {
41
- const addressed = envelope.meta.addressed === true || envelope.meta.addressed === 'true';
42
- return addressed && String(envelope.meta.user_id) === String(input.instructionSenderId)
43
- && String(envelope.meta.chat_id) === String(input.instructionChatId);
44
- }
45
-
46
- async function queueChunk(filePath, checkpoint) {
47
- const metadata = await lstat(filePath);
48
- if (!metadata.isFile() || metadata.isSymbolicLink()) throw new Error('GOAL_QUEUE_NOT_REGULAR');
49
- const fileId = queueIdentity(metadata);
50
- const offset = checkpoint.fileId === fileId && metadata.size >= checkpoint.offset ? checkpoint.offset : 0;
51
- const bytes = Math.min(MAX_READ_BYTES, metadata.size - offset);
52
- if (bytes <= 0) return { fileId, offset, lines: [] };
53
- const handle = await open(filePath, 'r');
54
- try {
55
- const buffer = Buffer.alloc(bytes);
56
- const { bytesRead } = await handle.read(buffer, 0, bytes, offset);
57
- const content = buffer.subarray(0, bytesRead);
58
- const lastNewline = content.lastIndexOf(10);
59
- if (lastNewline < 0) return { fileId, offset, lines: [] };
60
- const complete = content.subarray(0, lastNewline + 1);
61
- return { fileId, offset, lines: complete.toString('utf8').split('\n').slice(0, -1) };
62
- } finally { await handle.close(); }
63
- }
64
-
65
- async function ingestGoalInbox(input) {
66
- const checkpoint = await readCheckpoint(input.checkpointFile);
67
- let cursor = checkpoint.offset;
68
- const results = [];
69
- const chunk = await queueChunk(input.queueFile, checkpoint);
70
- if (chunk.offset !== checkpoint.offset || chunk.fileId !== checkpoint.fileId) cursor = chunk.offset;
71
- for (const line of chunk.lines) {
72
- cursor += Buffer.byteLength(line, 'utf8') + 1;
73
- const envelope = parseQueueLine(line);
74
- if (!envelope || !isAuthorizedInstruction(envelope, input)
75
- || !/\bZIEL-[A-Za-z0-9._-]+\.json\b/u.test(envelope.text)) continue;
76
- try {
77
- const instruction = parseGoalInstruction(envelope.text);
78
- const accepted = checkpoint.accepted.find((item) => item.sha256 === instruction.sha256);
79
- if (accepted) {
80
- results.push({ status: 'duplicate', messageId: String(envelope.meta.message_id),
81
- sha256: instruction.sha256, goal: { goalId: accepted.goalId } });
82
- continue;
83
- }
84
- const ingested = await ingestGoalInstruction({ ...input, instructionText: envelope.text });
85
- results.push({ status: ingested.duplicate ? 'duplicate' : 'ingested',
86
- messageId: String(envelope.meta.message_id), ...ingested });
87
- checkpoint.accepted.push({ sha256: ingested.sha256, goalId: ingested.goal.goalId });
88
- checkpoint.accepted = checkpoint.accepted.slice(-512);
89
- } catch (error) {
90
- results.push({ status: 'rejected', messageId: String(envelope.meta.message_id),
91
- error: String(error?.message || error).slice(0, 200) });
92
- }
93
- }
94
- await writeCheckpoint(input.checkpointFile, {
95
- schema: CHECKPOINT_SCHEMA,
96
- fileId: chunk.fileId,
97
- offset: cursor,
98
- lastMessageId: results.at(-1)?.messageId || checkpoint.lastMessageId || null,
99
- accepted: checkpoint.accepted,
100
- updatedAt: new Date().toISOString(),
101
- });
102
- return results;
103
- }
104
-
105
- export {
106
- CHECKPOINT_SCHEMA,
107
- ingestGoalInbox,
108
- isAuthorizedInstruction,
109
- parseQueueLine,
110
- queueIdentity,
111
- };
@@ -1,106 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { lstat, readFile, realpath } from 'node:fs/promises';
3
- import path from 'node:path';
4
-
5
- const ASSIGNMENT_SCHEMA = 'blun.king-goal-assignment/v1';
6
- const INSTRUCTION_RE = /(ZIEL-[A-Za-z0-9._-]+\.json)\b[^\r\n]{0,200}?\bsha256\b\s*[=:]?\s*([a-f0-9]{64})(?:\s|[),.;]|$)/iu;
7
-
8
- function digest(value) {
9
- return createHash('sha256').update(value).digest('hex');
10
- }
11
-
12
- function parseGoalInstruction(text) {
13
- const match = String(text || '').match(INSTRUCTION_RE);
14
- if (!match) throw new Error('GOAL_INSTRUCTION_REQUIRES_FILE_AND_SHA256');
15
- return Object.freeze({ fileName: match[1], sha256: match[2].toLowerCase() });
16
- }
17
-
18
- function assignmentInput(value) {
19
- if (!value || value.schema !== ASSIGNMENT_SCHEMA || typeof value.goalId !== 'string'
20
- || typeof value.logicalPersonaId !== 'string' || typeof value.successCriterion !== 'string'
21
- || !Array.isArray(value.steps) || value.steps.length === 0) {
22
- throw new Error('GOAL_ASSIGNMENT_INVALID');
23
- }
24
- assertTerminalGoalGate(value.steps);
25
- return value;
26
- }
27
-
28
- function assertTerminalGoalGate(steps) {
29
- const ids = new Set(steps.map((step) => step?.stepId));
30
- if (ids.size !== steps.length || ids.has(undefined)) throw new Error('GOAL_PLAN_STEP_IDS_INVALID');
31
- const dependedOn = new Set(steps.flatMap((step) => Array.isArray(step.dependsOn) ? step.dependsOn : []));
32
- const terminalSteps = steps.filter((step) => !dependedOn.has(step.stepId));
33
- if (terminalSteps.length !== 1 || !terminalSteps[0].execution?.verification) {
34
- throw new Error('GOAL_PLAN_TERMINAL_GATE_REQUIRED');
35
- }
36
- const terminalId = terminalSteps[0].stepId;
37
- const byId = new Map(steps.map((step) => [step.stepId, step]));
38
- const reachesGate = (stepId, seen = new Set()) => {
39
- if (stepId === terminalId) return true;
40
- if (seen.has(stepId)) return false;
41
- seen.add(stepId);
42
- return steps.some((candidate) => Array.isArray(candidate.dependsOn)
43
- && candidate.dependsOn.includes(stepId) && reachesGate(candidate.stepId, new Set(seen)));
44
- };
45
- if ([...byId.keys()].some((stepId) => !reachesGate(stepId))) {
46
- throw new Error('GOAL_PLAN_TERMINAL_GATE_MUST_DEPEND_ON_ALL_STEPS');
47
- }
48
- }
49
-
50
- function inside(directory, candidate) {
51
- const relative = path.relative(directory, candidate);
52
- return relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative);
53
- }
54
-
55
- async function readVerifiedGoalFile(exchangeDirectory, instruction) {
56
- const exchange = await realpath(path.resolve(exchangeDirectory));
57
- const candidate = path.resolve(exchange, instruction.fileName);
58
- if (!inside(exchange, candidate)) throw new Error('GOAL_FILE_OUTSIDE_EXCHANGE');
59
- const metadata = await lstat(candidate);
60
- if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size > 1024 * 1024) {
61
- throw new Error('GOAL_FILE_NOT_REGULAR');
62
- }
63
- const canonical = await realpath(candidate);
64
- if (!inside(exchange, canonical)) throw new Error('GOAL_FILE_OUTSIDE_EXCHANGE');
65
- const payload = await readFile(canonical);
66
- if (digest(payload) !== instruction.sha256) throw new Error('GOAL_FILE_SHA256_MISMATCH');
67
- let value;
68
- try { value = JSON.parse(payload.toString('utf8')); }
69
- catch { throw new Error('GOAL_FILE_INVALID_JSON'); }
70
- return { assignment: assignmentInput(value), filePath: canonical, sha256: instruction.sha256 };
71
- }
72
-
73
- async function ingestGoalInstruction(input) {
74
- const instruction = parseGoalInstruction(input.instructionText);
75
- const verified = await readVerifiedGoalFile(input.exchangeDirectory, instruction);
76
- const value = verified.assignment;
77
- if (value.logicalPersonaId !== input.logicalPersonaId) throw new Error('GOAL_PERSONA_MISMATCH');
78
- if (value.projectId !== input.projectId) throw new Error('GOAL_PROJECT_MISMATCH');
79
- if (value.groupId !== input.groupId || value.ownerSubjectId !== input.ownerSubjectId) {
80
- throw new Error('GOAL_AUTHORITY_MISMATCH');
81
- }
82
- if (value.snapshotSha256 !== input.snapshot.snapshotSha256) throw new Error('GOAL_SNAPSHOT_MISMATCH');
83
- const result = await input.assignGoal({
84
- root: input.snapshot.root,
85
- goalId: value.goalId,
86
- agentId: input.runtimePersonaId,
87
- ownerSubjectId: value.ownerSubjectId,
88
- projectId: value.projectId,
89
- groupId: value.groupId,
90
- priority: value.priority ?? 70,
91
- successCriterion: value.successCriterion,
92
- nextSafeStep: value.nextSafeStep ?? null,
93
- steps: value.steps,
94
- deadline: value.deadline ?? null,
95
- confirmation: 'local-owner-confirmed',
96
- });
97
- return Object.freeze({ ...verified, duplicate: result.duplicate === true, goal: result.goal });
98
- }
99
-
100
- export {
101
- ASSIGNMENT_SCHEMA,
102
- assertTerminalGoalGate,
103
- ingestGoalInstruction,
104
- parseGoalInstruction,
105
- readVerifiedGoalFile,
106
- };
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- function buildApprovalRejectionStop(output) {
4
- return {
5
- syntheticResult: {
6
- output,
7
- isError: true,
8
- stopTurn: true,
9
- },
10
- };
11
- }
12
-
13
- module.exports = {
14
- buildApprovalRejectionStop,
15
- };