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,99 +0,0 @@
1
- 'use strict';
2
-
3
- const {
4
- canonicalEditedToolInputJson,
5
- validateEditedToolInputObject,
6
- } = require('./editable-tool-approval-policy.cjs');
7
-
8
- class EditableToolReprepareError extends Error {
9
- constructor(code, message) {
10
- super(message);
11
- this.name = 'EditableToolReprepareError';
12
- this.code = code;
13
- }
14
- }
15
-
16
- function fail(code, message) {
17
- throw new EditableToolReprepareError(code, message);
18
- }
19
-
20
- function buildEditedToolCallPlan({
21
- step,
22
- call,
23
- editedArgs,
24
- editCount,
25
- preflightToolCall,
26
- } = {}) {
27
- if (editCount !== 0) {
28
- fail('EDITED_REPREPARE_ALREADY_EDITED', 'A tool call may be edited at most once.');
29
- }
30
- if (call?.kind !== 'runnable' || call.toolCall === null || typeof call.toolCall !== 'object' || typeof call.toolCall.id !== 'string' || typeof call.toolCall.name !== 'string') {
31
- fail('EDITED_REPREPARE_CALL_INVALID', 'Only a runnable tool call can be re-prepared.');
32
- }
33
- if (!Array.isArray(step?.toolCalls) || typeof preflightToolCall !== 'function') {
34
- fail('EDITED_REPREPARE_CONTEXT_INVALID', 'Edited re-preparation requires the active ordered tool-call list and preflight function.');
35
- }
36
-
37
- const matchingIndexes = [];
38
- for (let index = 0; index < step.toolCalls.length; index += 1) {
39
- if (step.toolCalls[index]?.id === call.toolCall.id) matchingIndexes.push(index);
40
- }
41
- if (matchingIndexes.length === 0) {
42
- fail('EDITED_REPREPARE_IDENTITY_MISSING', 'The edited tool call is absent from the active ordered call list.');
43
- }
44
- if (matchingIndexes.length !== 1) {
45
- fail('EDITED_REPREPARE_IDENTITY_AMBIGUOUS', 'The edited tool-call ID is not unique in the active call list.');
46
- }
47
- const position = matchingIndexes[0];
48
- if (step.toolCalls[position] !== call.toolCall || call.toolName !== call.toolCall.name) {
49
- fail('EDITED_REPREPARE_IDENTITY_CHANGED', 'The active tool-call identity changed before re-preparation.');
50
- }
51
-
52
- const safeEditedArgs = validateEditedToolInputObject(editedArgs);
53
- const patchedToolCall = Object.freeze({
54
- ...call.toolCall,
55
- id: call.toolCall.id,
56
- name: call.toolCall.name,
57
- arguments: canonicalEditedToolInputJson(safeEditedArgs),
58
- });
59
- const patchedToolCalls = step.toolCalls.slice();
60
- patchedToolCalls[position] = patchedToolCall;
61
- const editedStep = {
62
- ...step,
63
- toolCalls: Object.freeze(patchedToolCalls),
64
- };
65
- const repreflight = preflightToolCall(editedStep, patchedToolCall);
66
- if (repreflight === null || typeof repreflight !== 'object') {
67
- fail('EDITED_REPREPARE_PREFLIGHT_INVALID', 'Edited tool preflight returned no result.');
68
- }
69
- if (repreflight.toolCall?.id !== call.toolCall.id || repreflight.toolCall?.name !== call.toolCall.name || repreflight.toolName !== call.toolName) {
70
- fail('EDITED_REPREPARE_IDENTITY_CHANGED', 'Edited preflight changed the immutable tool identity.');
71
- }
72
- if (repreflight.kind === 'rejected') {
73
- return Object.freeze({
74
- kind: 'rejected',
75
- step: editedStep,
76
- call: repreflight,
77
- editCount: 1,
78
- output: repreflight.output,
79
- });
80
- }
81
- if (repreflight.kind !== 'runnable') {
82
- fail('EDITED_REPREPARE_PREFLIGHT_INVALID', 'Edited preflight returned an unsupported call state.');
83
- }
84
- if (repreflight.tool !== call.tool) {
85
- fail('EDITED_REPREPARE_REGISTRY_CHANGED', 'The authoritative tool registry entry changed during edited approval.');
86
- }
87
- return Object.freeze({
88
- kind: 'runnable',
89
- step: editedStep,
90
- call: repreflight,
91
- editCount: 1,
92
- });
93
- }
94
-
95
- module.exports = Object.freeze({
96
- EditableToolReprepareError,
97
- buildEditedToolCallPlan,
98
- });
99
-
@@ -1,33 +0,0 @@
1
- 'use strict';
2
-
3
- function joinSystemPrompt(base, append) {
4
- if (append.length === 0) return base;
5
- return base.length === 0 ? append : `${base}\n\n${append}`;
6
- }
7
-
8
- function createEffectiveSystemPromptResolver(joinPrompts = joinSystemPrompt) {
9
- if (typeof joinPrompts !== 'function') {
10
- throw new TypeError('joinPrompts must be a function');
11
- }
12
-
13
- let initialized = false;
14
- let cachedBase = '';
15
- let cachedAppend = '';
16
- let cachedPrompt = '';
17
-
18
- return function resolveEffectiveSystemPrompt(base, append) {
19
- if (initialized && base === cachedBase && append === cachedAppend) {
20
- return cachedPrompt;
21
- }
22
-
23
- cachedPrompt = joinPrompts(base, append);
24
- cachedBase = base;
25
- cachedAppend = append;
26
- initialized = true;
27
- return cachedPrompt;
28
- };
29
- }
30
-
31
- module.exports = {
32
- createEffectiveSystemPromptResolver,
33
- };
@@ -1,113 +0,0 @@
1
- 'use strict';
2
-
3
- const ERROR_MEMORY_MAX_CHARS = 2_800;
4
- const ERROR_MEMORY_MAX_PATTERNS = 6;
5
- const CORE_PATTERN_NUMBERS = new Set([4, 9, 10, 11]);
6
- const STOP_WORDS = new Set([
7
- 'aber', 'alle', 'alles', 'auch', 'belegt', 'beweis', 'echt', 'echte', 'echten',
8
- 'echter', 'eine', 'einem', 'einen', 'einer', 'das', 'den', 'fuer', 'gegen',
9
- 'haben', 'hier', 'immer',
10
- 'jetzt', 'kann', 'machen', 'mehr', 'nicht', 'noch', 'oder', 'pruefe', 'pruefen',
11
- 'pruefung', 'sein', 'sind', 'soll', 'und', 'vollstaendig', 'vollstaendige',
12
- 'wenn', 'werden', 'with', 'that',
13
- 'this', 'from', 'have', 'into', 'your', 'you', 'the', 'and', 'for', 'are',
14
- ]);
15
-
16
- function normalizedTerms(value) {
17
- return [...new Set(String(value || '')
18
- .normalize('NFKD')
19
- .replace(/\p{M}/gu, '')
20
- .toLowerCase()
21
- .match(/[\p{L}\p{N}_-]{3,}/gu) || [])]
22
- .filter((term) => !STOP_WORDS.has(term));
23
- }
24
-
25
- function fieldMatchesTerm(fieldTerms, term) {
26
- return fieldTerms.some((fieldTerm) => (
27
- fieldTerm === term
28
- || (term.length >= 6 && fieldTerm.includes(term))
29
- || (fieldTerm.length >= 6 && term.includes(fieldTerm))
30
- ));
31
- }
32
-
33
- function selectRelevantErrorMemoryPatterns(patterns, query, options = {}) {
34
- const maxPatterns = Math.max(1, Number(options.maxPatterns) || ERROR_MEMORY_MAX_PATTERNS);
35
- const source = Array.isArray(patterns) ? patterns.filter(Boolean) : [];
36
- if (source.length <= maxPatterns) return source;
37
-
38
- const queryTerms = normalizedTerms(query);
39
- const ranked = source.map((pattern, index) => {
40
- const title = normalizedTerms(pattern.title);
41
- const rule = normalizedTerms(pattern.rule);
42
- const check = normalizedTerms(pattern.check);
43
- let score = 0;
44
- for (const term of queryTerms) {
45
- if (fieldMatchesTerm(title, term)) score += 4;
46
- if (fieldMatchesTerm(rule, term)) score += 2;
47
- if (fieldMatchesTerm(check, term)) score += 1;
48
- }
49
- return { index, pattern, score };
50
- });
51
- const selectedIndexes = new Set(ranked
52
- .filter(({ pattern }) => CORE_PATTERN_NUMBERS.has(Number(pattern.number)))
53
- .map(({ index }) => index));
54
- ranked
55
- .filter(({ index, score }) => !selectedIndexes.has(index) && score > 0)
56
- .sort((left, right) => right.score - left.score || left.index - right.index)
57
- .slice(0, Math.max(0, maxPatterns - selectedIndexes.size))
58
- .forEach(({ index }) => selectedIndexes.add(index));
59
-
60
- if (selectedIndexes.size === 0) {
61
- source.slice(-Math.min(2, maxPatterns)).forEach((pattern) => {
62
- selectedIndexes.add(source.indexOf(pattern));
63
- });
64
- }
65
- return source.filter((pattern, index) => selectedIndexes.has(index)).slice(0, maxPatterns);
66
- }
67
-
68
- function buildCompactErrorMemoryReminder(patterns) {
69
- const lines = [
70
- '<error-memory-check>',
71
- 'Vor Abschluss jede Regel pruefen; Verletzungen korrigieren oder offen benennen.',
72
- ];
73
-
74
- for (const pattern of patterns) {
75
- const check = pattern.check ? ` | Pruefung: ${pattern.check}` : '';
76
- lines.push(`${pattern.number}. ${pattern.rule}${check}`);
77
- }
78
-
79
- lines.push(
80
- 'Arbeitsweise: 3-7 sichtbare Schritte; Werkzeuge proaktiv; nach zwei gleichen Fehlern Ansatz wechseln; Schritte erst nach echtem Nachweis abschliessen; nach Zielerreichung stoppen; Teilerfolg oder Scheitern mit Grund und naechstem Schritt offen melden.',
81
- '</error-memory-check>',
82
- );
83
- return lines.join('\n');
84
- }
85
-
86
- function compactLegacyErrorMemoryReminder(text) {
87
- const source = String(text);
88
- if (!source.includes('<error-memory-check>') || !source.includes(' Regel: ')) return source;
89
-
90
- const lines = source.split(/\r?\n/u);
91
- const patterns = [];
92
- for (let index = 0; index + 1 < lines.length; index += 1) {
93
- const title = lines[index].match(/^\s*(\d+)\.\s+(.+)$/u);
94
- const rule = lines[index + 1].match(/^\s*Regel:\s*(.+)$/u);
95
- if (!title || !rule) continue;
96
- const check = lines[index + 2]?.match(/^\s*Pruefung:\s*(.+)$/u);
97
- patterns.push({
98
- number: Number(title[1]),
99
- title: title[2],
100
- rule: rule[1],
101
- check: check?.[1],
102
- });
103
- }
104
- return patterns.length > 0 ? buildCompactErrorMemoryReminder(patterns) : source;
105
- }
106
-
107
- module.exports = {
108
- ERROR_MEMORY_MAX_PATTERNS,
109
- ERROR_MEMORY_MAX_CHARS,
110
- buildCompactErrorMemoryReminder,
111
- compactLegacyErrorMemoryReminder,
112
- selectRelevantErrorMemoryPatterns,
113
- };
@@ -1,133 +0,0 @@
1
- 'use strict';
2
-
3
- function versionFromStat(stat) {
4
- if (!stat || typeof stat !== 'object') return null;
5
- return [
6
- stat.stDev ?? null,
7
- stat.stIno ?? null,
8
- stat.stSize ?? null,
9
- stat.stMtime ?? null,
10
- ].join(':');
11
- }
12
-
13
- function isNotFoundError(error) {
14
- return error?.code === 'ENOENT' || error?.code === 'ENOTDIR';
15
- }
16
-
17
- function createFileObservationPolicy(options = {}) {
18
- const caseInsensitive = options.pathClass === 'win32';
19
- const observations = new Map();
20
-
21
- function key(filePath) {
22
- const normalized = String(filePath).replaceAll('\\', '/');
23
- return caseInsensitive ? normalized.toLowerCase() : normalized;
24
- }
25
-
26
- function recordPresent(filePath, stat) {
27
- const version = versionFromStat(stat);
28
- if (version === null) throw new TypeError('recordPresent requires a file stat');
29
- observations.set(key(filePath), { kind: 'present', version });
30
- }
31
-
32
- function recordAbsent(filePath) {
33
- observations.set(key(filePath), { kind: 'absent' });
34
- }
35
-
36
- function verifyStableRead(filePath, before, after) {
37
- const beforeVersion = versionFromStat(before);
38
- const afterVersion = versionFromStat(after);
39
- if (beforeVersion === null || afterVersion === null || beforeVersion !== afterVersion) {
40
- return {
41
- allowed: false,
42
- code: 'FS_STALE_VERSION',
43
- error: `File changed while reading "${filePath}". Read it again before editing or overwriting it.`,
44
- };
45
- }
46
- recordPresent(filePath, after);
47
- return { allowed: true, version: afterVersion };
48
- }
49
-
50
- function authorizeEdit(filePath, currentStat) {
51
- const prior = observations.get(key(filePath));
52
- if (currentStat === null) {
53
- return {
54
- allowed: false,
55
- code: prior?.kind === 'absent' ? 'FS_NOT_FOUND' : 'FS_NOT_OBSERVED',
56
- error: prior?.kind === 'absent'
57
- ? `Cannot edit "${filePath}": the last Read confirmed that it does not exist.`
58
- : `Edit requires reading "${filePath}" first. Read the exact target path, then retry.`,
59
- };
60
- }
61
- if (prior === undefined) {
62
- return {
63
- allowed: false,
64
- code: 'FS_NOT_OBSERVED',
65
- error: `Edit requires reading "${filePath}" first. Read the exact target path, then retry.`,
66
- };
67
- }
68
- if (prior.kind !== 'present' || prior.version !== versionFromStat(currentStat)) {
69
- return {
70
- allowed: false,
71
- code: 'FS_STALE_VERSION',
72
- error: `"${filePath}" changed since the last Read. Read it again, then retry the Edit.`,
73
- };
74
- }
75
- return { allowed: true, version: prior.version };
76
- }
77
-
78
- function authorizeWrite(filePath, currentStat) {
79
- const prior = observations.get(key(filePath));
80
- if (currentStat === null) {
81
- if (prior?.kind === 'present') {
82
- return {
83
- allowed: false,
84
- code: 'FS_STALE_VERSION',
85
- error: `"${filePath}" disappeared since the last Read. Read it again before recreating it.`,
86
- };
87
- }
88
- return { allowed: true, version: null, create: true };
89
- }
90
- if (prior === undefined) {
91
- return {
92
- allowed: false,
93
- code: 'FS_NOT_OBSERVED',
94
- error: `Write would replace or append to existing file "${filePath}" without a prior Read. Read it first, then retry.`,
95
- };
96
- }
97
- if (prior.kind !== 'present' || prior.version !== versionFromStat(currentStat)) {
98
- return {
99
- allowed: false,
100
- code: 'FS_STALE_VERSION',
101
- error: `"${filePath}" changed since the last Read. Read it again, then retry the Write.`,
102
- };
103
- }
104
- return { allowed: true, version: prior.version, create: false };
105
- }
106
-
107
- function verifyUnchanged(filePath, expectedVersion, currentStat) {
108
- const currentVersion = versionFromStat(currentStat);
109
- if (expectedVersion === currentVersion) return { allowed: true };
110
- return {
111
- allowed: false,
112
- code: 'FS_STALE_VERSION',
113
- error: expectedVersion === null
114
- ? `"${filePath}" appeared before the new file could be created. Read it before deciding whether to overwrite it.`
115
- : `"${filePath}" changed before the mutation was written. Read it again, then retry.`,
116
- };
117
- }
118
-
119
- return {
120
- authorizeEdit,
121
- authorizeWrite,
122
- recordAbsent,
123
- recordPresent,
124
- verifyStableRead,
125
- verifyUnchanged,
126
- };
127
- }
128
-
129
- module.exports = {
130
- createFileObservationPolicy,
131
- isNotFoundError,
132
- versionFromStat,
133
- };
@@ -1,41 +0,0 @@
1
- 'use strict';
2
-
3
- const MAX_FOREGROUND_CAPTURE_BYTES = 16 * 1024 * 1024;
4
-
5
- function utf8PrefixWithinBytes(text, maxBytes) {
6
- if (maxBytes <= 0 || text.length === 0) return '';
7
- if (Buffer.byteLength(text, 'utf8') <= maxBytes) return text;
8
-
9
- let low = 0;
10
- let high = text.length;
11
- while (low < high) {
12
- const middle = Math.ceil((low + high) / 2);
13
- if (Buffer.byteLength(text.slice(0, middle), 'utf8') <= maxBytes) low = middle;
14
- else high = middle - 1;
15
- }
16
- if (low > 0 && low < text.length) {
17
- const last = text.charCodeAt(low - 1);
18
- if (last >= 0xD800 && last <= 0xDBFF) low -= 1;
19
- }
20
- return text.slice(0, low);
21
- }
22
-
23
- function captureForegroundOutputChunk(text, capturedBytes, maxBytes = MAX_FOREGROUND_CAPTURE_BYTES) {
24
- const observedBytes = Buffer.byteLength(text, 'utf8');
25
- const remainingBytes = Math.max(0, maxBytes - Math.max(0, capturedBytes));
26
- const capturedText = utf8PrefixWithinBytes(text, remainingBytes);
27
- const newCapturedBytes = Buffer.byteLength(capturedText, 'utf8');
28
- return {
29
- capturedText,
30
- observedBytes,
31
- capturedBytes: newCapturedBytes,
32
- droppedBytes: observedBytes - newCapturedBytes,
33
- capped: newCapturedBytes < observedBytes,
34
- };
35
- }
36
-
37
- module.exports = {
38
- MAX_FOREGROUND_CAPTURE_BYTES,
39
- captureForegroundOutputChunk,
40
- utf8PrefixWithinBytes,
41
- };
@@ -1,142 +0,0 @@
1
- 'use strict';
2
-
3
- const path = require('node:path');
4
-
5
- const JAVASCRIPT_LIKE_EXTENSIONS = new Set([
6
- '.cjs',
7
- '.cts',
8
- '.js',
9
- '.jsx',
10
- '.mjs',
11
- '.mts',
12
- '.ts',
13
- '.tsx',
14
- ]);
15
- const DEFAULT_MIN_REPEATS = 8;
16
-
17
- function findDegenerateGeneratedStatementRun(filePath, content, options = {}) {
18
- if (!JAVASCRIPT_LIKE_EXTENSIONS.has(path.extname(filePath).toLowerCase())) return null;
19
- if (typeof content !== 'string' || content.length === 0) return null;
20
-
21
- const minRepeats = Number.isSafeInteger(options.minRepeats) && options.minRepeats >= 2
22
- ? options.minRepeats
23
- : DEFAULT_MIN_REPEATS;
24
- let state = 'code';
25
- let quote = '';
26
- let escaped = false;
27
- let line = 1;
28
- let statementStart = 0;
29
- let statementStartLine = 1;
30
- let parenDepth = 0;
31
- let bracketDepth = 0;
32
- let previous = null;
33
- let runCount = 0;
34
- let runLine = 1;
35
-
36
- const resetBoundary = (nextStart) => {
37
- statementStart = nextStart;
38
- statementStartLine = line;
39
- };
40
- const recordStatement = (end) => {
41
- const raw = content.slice(statementStart, end);
42
- const rawStartLine = statementStartLine;
43
- resetBoundary(end);
44
- const leading = raw.match(/^\s*/u)?.[0] ?? '';
45
- const statementLine = rawStartLine + (leading.match(/\n/gu)?.length ?? 0);
46
- const normalized = raw.replace(/\s+/gu, ' ').trim();
47
- if (normalized.length === 0 || !/[A-Za-z_$]/u.test(normalized)) {
48
- previous = null;
49
- runCount = 0;
50
- return null;
51
- }
52
- if (normalized === previous) runCount += 1;
53
- else {
54
- previous = normalized;
55
- runCount = 1;
56
- runLine = statementLine;
57
- }
58
- if (runCount < minRepeats) return null;
59
- return {
60
- count: runCount,
61
- line: runLine,
62
- preview: normalized.slice(0, 160),
63
- };
64
- };
65
-
66
- for (let index = 0; index < content.length; index += 1) {
67
- const current = content[index] ?? '';
68
- const next = content[index + 1] ?? '';
69
-
70
- if (state === 'line-comment') {
71
- if (current === '\n') {
72
- line += 1;
73
- state = 'code';
74
- }
75
- continue;
76
- }
77
- if (state === 'block-comment') {
78
- if (current === '\n') line += 1;
79
- if (current === '*' && next === '/') {
80
- state = 'code';
81
- index += 1;
82
- }
83
- continue;
84
- }
85
- if (state === 'quote') {
86
- if (current === '\n') line += 1;
87
- if (escaped) {
88
- escaped = false;
89
- continue;
90
- }
91
- if (current === '\\') {
92
- escaped = true;
93
- continue;
94
- }
95
- if (current === quote) {
96
- state = 'code';
97
- quote = '';
98
- }
99
- continue;
100
- }
101
-
102
- if (current === '\n') {
103
- line += 1;
104
- continue;
105
- }
106
- if (current === '/' && next === '/') {
107
- state = 'line-comment';
108
- index += 1;
109
- continue;
110
- }
111
- if (current === '/' && next === '*') {
112
- state = 'block-comment';
113
- index += 1;
114
- continue;
115
- }
116
- if (current === "'" || current === '"' || current === '`') {
117
- state = 'quote';
118
- quote = current;
119
- escaped = false;
120
- continue;
121
- }
122
- if (current === '(') parenDepth += 1;
123
- else if (current === ')') parenDepth = Math.max(0, parenDepth - 1);
124
- else if (current === '[') bracketDepth += 1;
125
- else if (current === ']') bracketDepth = Math.max(0, bracketDepth - 1);
126
- else if ((current === '{' || current === '}') && parenDepth === 0 && bracketDepth === 0) {
127
- previous = null;
128
- runCount = 0;
129
- resetBoundary(index + 1);
130
- } else if (current === ';' && parenDepth === 0 && bracketDepth === 0) {
131
- const finding = recordStatement(index + 1);
132
- if (finding !== null) return finding;
133
- }
134
- }
135
-
136
- return null;
137
- }
138
-
139
- module.exports = {
140
- DEFAULT_MIN_REPEATS,
141
- findDegenerateGeneratedStatementRun,
142
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- function quotedPattern(pattern) {
4
- return `'${pattern.replaceAll("\\", "\\\\").replaceAll("'", "\\'")}'`;
5
- }
6
-
7
- function globPatternError(pattern) {
8
- if (typeof pattern !== "string") return "Invalid glob pattern";
9
- if (!pattern.replaceAll("\\", "/").split("/").includes("..")) return undefined;
10
- return `Path traversal not allowed in glob pattern ${quotedPattern(pattern)}`;
11
- }
12
-
13
- module.exports = { globPatternError };
@@ -1,120 +0,0 @@
1
- 'use strict';
2
-
3
- const {
4
- completionCriterionRef,
5
- normalizeVerificationProof,
6
- } = require('./cognitive-action-checkpoint.cjs');
7
-
8
- function hasCompletionCriterion(goal) {
9
- return typeof goal?.completionCriterion === 'string'
10
- && goal.completionCriterion.trim().length > 0;
11
- }
12
-
13
- function successfulRuntimeEvidence(checkpoint) {
14
- const successfulTools = Number(checkpoint?.evidenceReceipt?.successfulTools);
15
- return Number.isSafeInteger(successfulTools) && successfulTools > 0;
16
- }
17
-
18
- function verificationProofGaps(checkpoint, criterion, expectedProducerRef) {
19
- if (!checkpoint?.verificationProof) {
20
- return ['Bind the completion claim to a successful verification tool from the checkpoint turn.'];
21
- }
22
- try {
23
- const proof = normalizeVerificationProof(
24
- checkpoint.verificationProof,
25
- checkpoint.evidenceReceipt,
26
- { allowLegacy: true },
27
- );
28
- if (proof.criterionRef !== completionCriterionRef(criterion)) {
29
- return ['Bind the completion proof to the active completion criterion.'];
30
- }
31
- if (expectedProducerRef !== undefined && proof.producerRef === undefined) {
32
- return ['Bind the completion proof to the runtime that produced its measurement.'];
33
- }
34
- if (expectedProducerRef !== undefined && proof.producerRef !== expectedProducerRef) {
35
- return ['The completion proof was produced by a different agent session; preserve it as an external report instead of relabelling it as local verification.'];
36
- }
37
- return [];
38
- } catch (error) {
39
- if (/verifier proof requires a sharpnessProof|sharpnessProof must name a distinct verification call/u
40
- .test(String(error?.message ?? ''))) {
41
- return ['A verifier completion needs a distinct current-turn counterexample or mutation call.'];
42
- }
43
- if (/sharpnessProof must match a successful current-turn verification call/u
44
- .test(String(error?.message ?? ''))) {
45
- return ['The verifier sharpness proof does not match a successful current-turn verification call.'];
46
- }
47
- if (/(?:verificationProof|sharpnessProof) kind must match the successful current-turn verification call/u
48
- .test(String(error?.message ?? ''))) {
49
- return ['The completion proof kind exceeds what its exact verification call measured.'];
50
- }
51
- if (/(?:verificationProof|sharpnessProof) scope must match the successful current-turn verification call target/u
52
- .test(String(error?.message ?? ''))) {
53
- return ['Bind the completion proof scope to the exact target measured by its successful current-turn verification call.'];
54
- }
55
- if (/action-only tool/u.test(String(error?.message ?? ''))) {
56
- return ['The completion proof names an action-only tool, not a verification tool.'];
57
- }
58
- if (/successful current-turn (?:tool|verification call)/u.test(String(error?.message ?? ''))) {
59
- return ['The completion proof does not match a successful verification call from the checkpoint turn.'];
60
- }
61
- return ['The completion verification proof is malformed.'];
62
- }
63
- }
64
-
65
- function evaluateGoalCompletionEvidence(goal, options = {}) {
66
- if (!hasCompletionCriterion(goal)) {
67
- return {
68
- required: false,
69
- allPassed: true,
70
- result: 'satisfied',
71
- gaps: [],
72
- };
73
- }
74
-
75
- const checkpoint = goal?.actionCheckpoint;
76
- if (!checkpoint || typeof checkpoint !== 'object' || Array.isArray(checkpoint)) {
77
- return {
78
- required: true,
79
- allPassed: false,
80
- result: 'needs_revision',
81
- gaps: ['Save a verify-phase action checkpoint before completing the goal.'],
82
- };
83
- }
84
-
85
- const gaps = [];
86
- if (checkpoint.phase !== 'verify') {
87
- gaps.push('The latest action checkpoint must be in the verify phase.');
88
- }
89
- if (checkpoint.evidenceBasis !== 'runtime_tool') {
90
- gaps.push('The completion proof must come from a runtime tool.');
91
- }
92
- if (checkpoint.epistemicState !== 'verified') {
93
- gaps.push('The completion proof must be classified as verified.');
94
- }
95
- const hasRuntimeEvidence = successfulRuntimeEvidence(checkpoint);
96
- if (!hasRuntimeEvidence) {
97
- gaps.push('The runtime evidence receipt must contain at least one successful tool result.');
98
- }
99
- if (checkpoint.phase === 'verify'
100
- && checkpoint.evidenceBasis === 'runtime_tool'
101
- && checkpoint.epistemicState === 'verified'
102
- && hasRuntimeEvidence) {
103
- gaps.push(...verificationProofGaps(
104
- checkpoint,
105
- goal.completionCriterion,
106
- options.expectedProducerRef,
107
- ));
108
- }
109
-
110
- return {
111
- required: true,
112
- allPassed: gaps.length === 0,
113
- result: gaps.length === 0 ? 'satisfied' : 'needs_revision',
114
- gaps,
115
- };
116
- }
117
-
118
- module.exports = {
119
- evaluateGoalCompletionEvidence,
120
- };