blun-king-cli 9.1.586 → 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 -178
  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 +143078 -135241
  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 -15
  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 -79
  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,252 +0,0 @@
1
- 'use strict';
2
-
3
- const MAX_SCHEMA_BYTES = 16 * 1024;
4
- const MAX_OUTPUT_BYTES = 64 * 1024;
5
- const MAX_SCHEMA_DEPTH = 12;
6
- const MAX_SCHEMA_NODES = 128;
7
- const MAX_ERROR_BYTES = 2048;
8
- const STRUCTURED_SUBAGENT_OUTPUT_ERROR = 'Structured subagent output invalid after one repair attempt';
9
-
10
- const ALLOWED_SCHEMA_KEYS = new Set([
11
- 'type',
12
- 'properties',
13
- 'required',
14
- 'additionalProperties',
15
- 'items',
16
- 'enum',
17
- 'const',
18
- 'minimum',
19
- 'maximum',
20
- 'exclusiveMinimum',
21
- 'exclusiveMaximum',
22
- 'minLength',
23
- 'maxLength',
24
- 'minItems',
25
- 'maxItems',
26
- 'description',
27
- ]);
28
-
29
- const ALLOWED_TYPES = new Set([
30
- 'object',
31
- 'array',
32
- 'string',
33
- 'number',
34
- 'integer',
35
- 'boolean',
36
- 'null',
37
- ]);
38
-
39
- function isPlainObject(value) {
40
- if (value === null || typeof value !== 'object' || Array.isArray(value)) return false;
41
- const prototype = Object.getPrototypeOf(value);
42
- return prototype === Object.prototype || prototype === null;
43
- }
44
-
45
- function boundedText(value, maxBytes = MAX_ERROR_BYTES) {
46
- const text = String(value);
47
- const bytes = Buffer.from(text, 'utf8');
48
- if (bytes.byteLength <= maxBytes) return text;
49
- return `${bytes.subarray(0, Math.max(0, maxBytes - 3)).toString('utf8')}...`;
50
- }
51
-
52
- function assertFiniteNumber(value, path) {
53
- if (typeof value !== 'number' || !Number.isFinite(value)) {
54
- throw new Error(`${path} must be a finite number`);
55
- }
56
- }
57
-
58
- function assertNonNegativeInteger(value, path) {
59
- if (!Number.isInteger(value) || value < 0) {
60
- throw new Error(`${path} must be a non-negative integer`);
61
- }
62
- }
63
-
64
- function inspectSchemaNode(node, path, depth, state) {
65
- if (!isPlainObject(node)) throw new Error(`${path} must be a JSON Schema object`);
66
- if (depth > MAX_SCHEMA_DEPTH) {
67
- throw new Error(`response_format.schema exceeds maximum depth ${MAX_SCHEMA_DEPTH}`);
68
- }
69
- state.nodes += 1;
70
- if (state.nodes > MAX_SCHEMA_NODES) {
71
- throw new Error(`response_format.schema exceeds maximum node count ${MAX_SCHEMA_NODES}`);
72
- }
73
-
74
- for (const key of Object.keys(node)) {
75
- if (!ALLOWED_SCHEMA_KEYS.has(key)) {
76
- throw new Error(`${path}.${key} is not supported in response_format.schema`);
77
- }
78
- }
79
-
80
- if (node.type !== undefined && (!ALLOWED_TYPES.has(node.type) || typeof node.type !== 'string')) {
81
- throw new Error(`${path}.type must be one supported scalar JSON Schema type`);
82
- }
83
- if (node.description !== undefined && typeof node.description !== 'string') {
84
- throw new Error(`${path}.description must be a string`);
85
- }
86
- if (node.properties !== undefined) {
87
- if (!isPlainObject(node.properties)) throw new Error(`${path}.properties must be an object`);
88
- for (const [name, child] of Object.entries(node.properties)) {
89
- inspectSchemaNode(child, `${path}.properties[${JSON.stringify(name)}]`, depth + 1, state);
90
- }
91
- }
92
- if (node.required !== undefined) {
93
- if (!Array.isArray(node.required) || node.required.some((item) => typeof item !== 'string')) {
94
- throw new Error(`${path}.required must be an array of property names`);
95
- }
96
- if (new Set(node.required).size !== node.required.length) {
97
- throw new Error(`${path}.required must not contain duplicate property names`);
98
- }
99
- if (node.required.some((name) => !isPlainObject(node.properties) || !(name in node.properties))) {
100
- throw new Error(`${path}.required may reference only declared properties`);
101
- }
102
- }
103
- if (node.additionalProperties !== undefined && typeof node.additionalProperties !== 'boolean') {
104
- throw new Error(`${path}.additionalProperties must be a boolean`);
105
- }
106
- if (node.items !== undefined) {
107
- inspectSchemaNode(node.items, `${path}.items`, depth + 1, state);
108
- }
109
- if (node.enum !== undefined && (!Array.isArray(node.enum) || node.enum.length === 0)) {
110
- throw new Error(`${path}.enum must be a non-empty array`);
111
- }
112
- for (const key of ['minimum', 'maximum', 'exclusiveMinimum', 'exclusiveMaximum']) {
113
- if (node[key] !== undefined) assertFiniteNumber(node[key], `${path}.${key}`);
114
- }
115
- for (const key of ['minLength', 'maxLength', 'minItems', 'maxItems']) {
116
- if (node[key] !== undefined) assertNonNegativeInteger(node[key], `${path}.${key}`);
117
- }
118
- }
119
-
120
- function prepareStructuredResponseFormat(responseFormat, compileValidator) {
121
- if (responseFormat === undefined) return undefined;
122
- if (!isPlainObject(responseFormat)) throw new Error('response_format must be an object');
123
- const keys = Object.keys(responseFormat);
124
- if (keys.some((key) => key !== 'name' && key !== 'schema')) {
125
- throw new Error('response_format accepts only name and schema');
126
- }
127
- if (typeof responseFormat.name !== 'string' || !/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u.test(responseFormat.name)) {
128
- throw new Error('response_format.name must start with a letter and contain at most 64 letters, digits, underscores, or hyphens');
129
- }
130
- if (!isPlainObject(responseFormat.schema) || responseFormat.schema.type !== 'object') {
131
- throw new Error('response_format.schema root must have type "object"');
132
- }
133
-
134
- let serializedSchema;
135
- try {
136
- serializedSchema = JSON.stringify(responseFormat.schema);
137
- } catch (error) {
138
- throw new Error(`response_format.schema must be JSON-serializable: ${boundedText(error)}`);
139
- }
140
- if (Buffer.byteLength(serializedSchema, 'utf8') > MAX_SCHEMA_BYTES) {
141
- throw new Error(`response_format.schema exceeds ${MAX_SCHEMA_BYTES} bytes`);
142
- }
143
- const schema = JSON.parse(serializedSchema);
144
- inspectSchemaNode(schema, 'response_format.schema', 1, { nodes: 0 });
145
- if (typeof compileValidator !== 'function') throw new Error('response_format validator compiler is unavailable');
146
-
147
- let validator;
148
- try {
149
- validator = compileValidator(schema);
150
- } catch (error) {
151
- throw new Error(`response_format.schema could not be compiled: ${boundedText(error)}`);
152
- }
153
- if (typeof validator !== 'function') throw new Error('response_format validator compiler returned no validator');
154
- return Object.freeze({
155
- name: responseFormat.name,
156
- schema: Object.freeze(schema),
157
- serializedSchema,
158
- validator,
159
- });
160
- }
161
-
162
- function formatValidatorErrors(errors) {
163
- if (!Array.isArray(errors) || errors.length === 0) return 'value does not match response_format.schema';
164
- return boundedText(errors.map((error) => {
165
- const path = typeof error?.instancePath === 'string' && error.instancePath.length > 0
166
- ? error.instancePath
167
- : '$';
168
- if (error?.keyword === 'required' && typeof error?.params?.missingProperty === 'string') {
169
- return `${path} must have required property ${JSON.stringify(error.params.missingProperty)}`;
170
- }
171
- if (error?.keyword === 'additionalProperties' && typeof error?.params?.additionalProperty === 'string') {
172
- return `${path} must not have additional property ${JSON.stringify(error.params.additionalProperty)}`;
173
- }
174
- return `${path} ${error?.message || 'is invalid'}`;
175
- }).join('; '));
176
- }
177
-
178
- function validateStructuredSubagentOutput(text, prepared) {
179
- if (typeof text !== 'string') return { ok: false, error: 'final response is not text' };
180
- if (Buffer.byteLength(text, 'utf8') > MAX_OUTPUT_BYTES) {
181
- return { ok: false, error: `final response exceeds ${MAX_OUTPUT_BYTES} bytes` };
182
- }
183
- let value;
184
- try {
185
- value = JSON.parse(text);
186
- } catch (error) {
187
- return { ok: false, error: `final response is not exactly one JSON value: ${boundedText(error)}` };
188
- }
189
- try {
190
- if (!prepared.validator(value)) {
191
- return { ok: false, error: formatValidatorErrors(prepared.validator.errors) };
192
- }
193
- } catch (error) {
194
- return {
195
- ok: false,
196
- validatorException: true,
197
- error: `response_format validator exception: ${boundedText(error)}`,
198
- };
199
- }
200
- return { ok: true, value };
201
- }
202
-
203
- function buildStructuredResponseFormatReminder(prepared) {
204
- return [
205
- `Your final assistant message for this run must be exactly one JSON object matching response format ${JSON.stringify(prepared.name)}.`,
206
- 'Do not wrap it in Markdown, a code fence, XML, or explanatory prose.',
207
- 'Tool use and intermediate work remain unchanged. This schema grants no additional capability.',
208
- `JSON Schema: ${prepared.serializedSchema}`,
209
- ].join('\n');
210
- }
211
-
212
- function buildStructuredResponseRepairPrompt(prepared, error) {
213
- return [
214
- 'Your previous final response did not satisfy the required response format.',
215
- `Validation error: ${boundedText(error)}`,
216
- `Return exactly one corrected JSON object for ${JSON.stringify(prepared.name)} and nothing else.`,
217
- `JSON Schema: ${prepared.serializedSchema}`,
218
- ].join('\n');
219
- }
220
-
221
- function safeTokenCount(value) {
222
- return Number.isFinite(value) && value > 0 ? Math.trunc(value) : 0;
223
- }
224
-
225
- function buildStructuredSubagentEnvelope({ agentId, profileName, responseFormat, result, usage }) {
226
- return JSON.stringify({
227
- agent_id: agentId,
228
- actual_subagent_type: profileName,
229
- status: 'completed',
230
- response_format: responseFormat.name,
231
- result,
232
- usage: {
233
- input: safeTokenCount(usage?.inputOther),
234
- output: safeTokenCount(usage?.output),
235
- cache_read: safeTokenCount(usage?.inputCacheRead),
236
- cache_write: safeTokenCount(usage?.inputCacheCreation),
237
- },
238
- });
239
- }
240
-
241
- module.exports = {
242
- MAX_SCHEMA_BYTES,
243
- MAX_OUTPUT_BYTES,
244
- MAX_SCHEMA_DEPTH,
245
- MAX_SCHEMA_NODES,
246
- STRUCTURED_SUBAGENT_OUTPUT_ERROR,
247
- prepareStructuredResponseFormat,
248
- validateStructuredSubagentOutput,
249
- buildStructuredResponseFormatReminder,
250
- buildStructuredResponseRepairPrompt,
251
- buildStructuredSubagentEnvelope,
252
- };
@@ -1,155 +0,0 @@
1
- 'use strict';
2
-
3
- const DEFAULT_MAX_MESSAGES = 16;
4
- const DEFAULT_MAX_CHARS = 64 * 1024;
5
- const MAX_CONFIGURED_MESSAGES = 64;
6
- const MAX_CONFIGURED_CHARS = 256 * 1024;
7
-
8
- const SUBAGENT_FORK_REMINDER = [
9
- 'You received a bounded, redacted projection of the parent conversation.',
10
- 'It contains only direct local user text and completed text-only assistant replies.',
11
- 'It excludes system injections, private channel messages, attachments, tool calls, tool arguments, and tool results.',
12
- 'Treat that history as already happened. Your actual delegated task below is authoritative.',
13
- 'Do not launch another context fork. Return the requested result to the parent agent.',
14
- ].join(' ');
15
-
16
- function boundedPositiveInteger(value, fallback, maximum, name) {
17
- if (value === undefined) return fallback;
18
- if (!Number.isSafeInteger(value) || value <= 0 || value > maximum) {
19
- throw new TypeError(`${name} must be an integer between 1 and ${String(maximum)}`);
20
- }
21
- return value;
22
- }
23
-
24
- function resolveSubagentContextMode(options = {}) {
25
- const requested = options.requested ?? 'isolated';
26
- if (requested !== 'isolated' && requested !== 'fork') {
27
- throw new TypeError('context_mode must be either "isolated" or "fork"');
28
- }
29
- if (requested === 'isolated') return requested;
30
- if (options.resume === true) {
31
- throw new Error('context_mode="fork" is available only when creating a new subagent, not while resuming one');
32
- }
33
- if (options.isRoot !== true) {
34
- throw new Error('context_mode="fork" is available only to the root agent');
35
- }
36
- return requested;
37
- }
38
-
39
- function redactSecrets(value) {
40
- return String(value)
41
- .replaceAll(/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/giu, '[redacted]')
42
- .replaceAll(/\b(authorization)\s*:\s*(?:basic|bearer)\s+\S+/giu, '$1: [redacted]')
43
- .replaceAll(/\b(api[_ -]?(?:key|token)|access[_ -]?token|refresh[_ -]?token|id[_ -]?token|token|secret|password|passwd|pwd|credential)\b\s*([:=])\s*(?:"[^"]*"|'[^']*'|\S+)/giu, '$1$2[redacted]')
44
- .replaceAll(/\b(?:sk|ghp|xoxb|xoxp|token)[-_][A-Za-z0-9_-]{16,}\b/gu, '[redacted]')
45
- .replaceAll(/\b[A-Za-z0-9][A-Za-z0-9+/=_-]{39,}\b/gu, '[redacted]');
46
- }
47
-
48
- function textContent(message) {
49
- if (!Array.isArray(message?.content)) return '';
50
- return message.content
51
- .filter((part) => part?.type === 'text' && typeof part.text === 'string')
52
- .map((part) => part.text)
53
- .join('\n')
54
- .trim();
55
- }
56
-
57
- function eligibleMessage(message) {
58
- if (message?.role === 'user') {
59
- if (message.origin?.kind !== 'user') return undefined;
60
- } else if (message?.role === 'assistant') {
61
- if (message.origin !== undefined) return undefined;
62
- if (!Array.isArray(message.toolCalls) || message.toolCalls.length > 0) return undefined;
63
- } else {
64
- return undefined;
65
- }
66
- const text = textContent(message);
67
- if (text.length === 0) return undefined;
68
- return { role: message.role, text: redactSecrets(text) };
69
- }
70
-
71
- function modelMessage(role, text) {
72
- return {
73
- role,
74
- content: [{ type: 'text', text }],
75
- toolCalls: [],
76
- };
77
- }
78
-
79
- function mergeAdjacent(messages) {
80
- const merged = [];
81
- for (const message of messages) {
82
- const previous = merged.at(-1);
83
- if (previous?.role === message.role) {
84
- previous.content[0].text += `\n\n${message.content[0].text}`;
85
- } else {
86
- merged.push(modelMessage(message.role, message.content[0].text));
87
- }
88
- }
89
- while (merged[0]?.role === 'assistant') merged.shift();
90
- return merged;
91
- }
92
-
93
- function emptyProjection() {
94
- return {
95
- messages: [],
96
- sourceMessageCount: 0,
97
- sourceChars: 0,
98
- truncatedOlderContext: false,
99
- };
100
- }
101
-
102
- function projectSubagentForkContext(history, options = {}) {
103
- if (!Array.isArray(history)) throw new TypeError('history must be an array');
104
- const maxMessages = boundedPositiveInteger(
105
- options.maxMessages,
106
- DEFAULT_MAX_MESSAGES,
107
- MAX_CONFIGURED_MESSAGES,
108
- 'maxMessages',
109
- );
110
- const maxChars = boundedPositiveInteger(
111
- options.maxChars,
112
- DEFAULT_MAX_CHARS,
113
- MAX_CONFIGURED_CHARS,
114
- 'maxChars',
115
- );
116
- const eligible = history.map(eligibleMessage).filter((message) => message !== undefined);
117
- const newestUserIndex = eligible.findLastIndex((message) => message.role === 'user');
118
- if (newestUserIndex < 0) return emptyProjection();
119
- const throughCurrentUser = eligible.slice(0, newestUserIndex + 1);
120
- const newestUser = throughCurrentUser.at(-1);
121
- if (newestUser.text.length > maxChars) {
122
- throw new Error(`newest direct user message exceeds the ${String(maxChars)}-character fork context limit`);
123
- }
124
-
125
- const selected = [];
126
- let sourceChars = 0;
127
- let truncatedOlderContext = false;
128
- for (let index = throughCurrentUser.length - 1; index >= 0; index -= 1) {
129
- const message = throughCurrentUser[index];
130
- if (selected.length >= maxMessages || sourceChars + message.text.length > maxChars) {
131
- truncatedOlderContext = true;
132
- break;
133
- }
134
- selected.push(modelMessage(message.role, message.text));
135
- sourceChars += message.text.length;
136
- }
137
- selected.reverse();
138
- const messages = mergeAdjacent(selected);
139
- const retainedMessageCount = selected.length - selected.findIndex((message) => message.role === 'user');
140
- return {
141
- messages,
142
- sourceMessageCount: retainedMessageCount,
143
- sourceChars: messages.reduce((total, message) => total + message.content[0].text.replaceAll('\n\n', '').length, 0),
144
- truncatedOlderContext,
145
- };
146
- }
147
-
148
- module.exports = {
149
- DEFAULT_MAX_CHARS,
150
- DEFAULT_MAX_MESSAGES,
151
- SUBAGENT_FORK_REMINDER,
152
- projectSubagentForkContext,
153
- redactSecrets,
154
- resolveSubagentContextMode,
155
- };
@@ -1,69 +0,0 @@
1
- "use strict";
2
-
3
- const MAX_SUBAGENT_HANDOFF_ATTEMPTS = 1;
4
- const MAX_PARTIAL_HANDOFF_CHARS = 6000;
5
- const SUBAGENT_MAX_TOKENS_ERROR =
6
- "Subagent turn failed before completing its final summary: reason=max_tokens";
7
- const SUBAGENT_MAX_TOKENS_HANDOFF_PROMPT = [
8
- "Your previous turn reached max_tokens before its final handoff.",
9
- "Do not call any tools and do not repeat completed work.",
10
- "Return one concise recovery handoff of at most 1200 words with:",
11
- "1. completed work and concrete findings",
12
- "2. exact files changed or created",
13
- "3. checks already run and their actual results",
14
- "4. unfinished work or blockers",
15
- "5. the exact next action for the parent or this same agent",
16
- "State clearly that the task is incomplete when anything remains.",
17
- ].join("\n");
18
-
19
- function shouldRequestSubagentHandoff(stopReason, attempts) {
20
- return stopReason === "max_tokens"
21
- && Number.isSafeInteger(attempts)
22
- && attempts >= 0
23
- && attempts < MAX_SUBAGENT_HANDOFF_ATTEMPTS;
24
- }
25
-
26
- function isSubagentMaxTokensTurnError(error) {
27
- if (typeof error !== "object" || error === null) return false;
28
- const details = typeof error.details === "object" && error.details !== null
29
- ? error.details
30
- : {};
31
- if (details.emptyResponseKind === "length") return true;
32
- if (details.finishReason === "truncated" || details.rawFinishReason === "length") return true;
33
-
34
- const message = typeof error.message === "string" ? error.message : "";
35
- return /\bmax[_ -]?tokens?\b/iu.test(message)
36
- && /(?:\bno\b|\bwithout\b|did not produce)[^\n.]*\btool(?: call)?\b/iu.test(message);
37
- }
38
-
39
- function boundedPartialHandoff(partialSummary) {
40
- const normalized = typeof partialSummary === "string" ? partialSummary.trim() : "";
41
- if (normalized.length <= MAX_PARTIAL_HANDOFF_CHARS) return normalized;
42
- return `${normalized.slice(0, MAX_PARTIAL_HANDOFF_CHARS)}\n[partial handoff truncated]`;
43
- }
44
-
45
- function buildSubagentMaxTokensFailure(partialSummary) {
46
- const partial = boundedPartialHandoff(partialSummary);
47
- const lines = [
48
- `${SUBAGENT_MAX_TOKENS_ERROR}.`,
49
- "The automatic concise handoff also reached max_tokens.",
50
- ];
51
- if (partial.length > 0) {
52
- lines.push("", "[partial_handoff]", partial, "[/partial_handoff]");
53
- }
54
- lines.push(
55
- "",
56
- "Resume the same subagent instead of starting the task again; its context and completed tool work are preserved.",
57
- );
58
- return lines.join("\n");
59
- }
60
-
61
- module.exports = {
62
- MAX_PARTIAL_HANDOFF_CHARS,
63
- MAX_SUBAGENT_HANDOFF_ATTEMPTS,
64
- SUBAGENT_MAX_TOKENS_ERROR,
65
- SUBAGENT_MAX_TOKENS_HANDOFF_PROMPT,
66
- buildSubagentMaxTokensFailure,
67
- isSubagentMaxTokensTurnError,
68
- shouldRequestSubagentHandoff,
69
- };
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- function resolveSubagentRunMode({ allowBackground, requested }) {
4
- if (allowBackground !== true) {
5
- return {
6
- runInBackground: false,
7
- forcedForParentResponsiveness: false,
8
- };
9
- }
10
-
11
- return {
12
- runInBackground: true,
13
- forcedForParentResponsiveness: requested !== true,
14
- };
15
- }
16
-
17
- module.exports = {
18
- resolveSubagentRunMode,
19
- };