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,282 +0,0 @@
1
- 'use strict';
2
-
3
- const { openCognitiveStateStore } = require('./cognitive-state-store.cjs');
4
-
5
- const COGNITIVE_MEMORY_ADAPTER_VERSION = 6;
6
- const KIND_RE = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
7
- const RETENTION_CLASSES = new Set(['operational', 'durable', 'relationship', 'audit']);
8
- const ACCESS_REQUIRED_KEYS = Object.freeze([
9
- 'actorId', 'agentId', 'channelId', 'conversationId', 'permissionContext',
10
- 'portalId', 'requestedScope', 'tenantId', 'userId',
11
- ]);
12
- const ACCESS_OPTIONAL_KEYS = Object.freeze(['identityLink']);
13
- const PERMISSION_REQUIRED_KEYS = Object.freeze(['authority', 'decision', 'receiptId']);
14
- const PERMISSION_OPTIONAL_KEYS = Object.freeze(['identityReceiptId']);
15
- const IDENTITY_LINK_KEYS = Object.freeze([
16
- 'authority', 'canonicalUserId', 'confirmedAt', 'method', 'receiptId',
17
- 'sourcePortal', 'sourceSubjectId', 'status', 'tenantId', 'version',
18
- ]);
19
- const IDENTITY_LINK_AUTHORITIES = new Map([
20
- ['verified_oauth', 'oauth_verifier'],
21
- ['secure_account_link', 'account_link_service'],
22
- ['explicit_confirmed', 'identity_confirmation_service'],
23
- ]);
24
- const REQUIRED_METHODS = Object.freeze([
25
- 'commit',
26
- 'read',
27
- 'hasEvent',
28
- 'verify',
29
- 'claimAttention',
30
- 'authorizeAttention',
31
- 'close',
32
- ]);
33
-
34
- function fail(code) {
35
- const error = new Error(code);
36
- error.code = code;
37
- throw error;
38
- }
39
-
40
- function exactKeys(value, expected) {
41
- return value && typeof value === 'object' && !Array.isArray(value)
42
- && Object.keys(value).sort().join('\0') === [...expected].sort().join('\0');
43
- }
44
-
45
- function requiredAndOptionalKeys(value, required, optional) {
46
- if (!value || typeof value !== 'object' || Array.isArray(value)) return false;
47
- const allowed = new Set([...required, ...optional]);
48
- return required.every((key) => Object.prototype.hasOwnProperty.call(value, key))
49
- && Object.keys(value).every((key) => allowed.has(key));
50
- }
51
-
52
- function safeId(value) {
53
- const text = String(value ?? '').trim();
54
- return KIND_RE.test(text) ? text : '';
55
- }
56
-
57
- function normalizeIdentityLink(access, normalized) {
58
- const link = access.identityLink;
59
- const identityReceiptId = normalized.permissionContext.identityReceiptId;
60
- if (normalized.userId === normalized.actorId) {
61
- if (link !== undefined || identityReceiptId !== undefined) fail('COGNITIVE_IDENTITY_LINK_INVALID');
62
- return undefined;
63
- }
64
- if (link === undefined || link === null) fail('COGNITIVE_IDENTITY_LINK_REQUIRED');
65
- if (!exactKeys(link, IDENTITY_LINK_KEYS)) fail('COGNITIVE_IDENTITY_LINK_INVALID');
66
- if (String(link.status ?? '') === 'revoked') fail('COGNITIVE_IDENTITY_LINK_REVOKED');
67
- const method = String(link.method ?? '');
68
- const normalizedLink = {
69
- version: Number(link.version),
70
- tenantId: safeId(link.tenantId),
71
- canonicalUserId: safeId(link.canonicalUserId),
72
- sourcePortal: safeId(link.sourcePortal),
73
- sourceSubjectId: safeId(link.sourceSubjectId),
74
- method,
75
- status: String(link.status ?? ''),
76
- confirmedAt: String(link.confirmedAt ?? '').trim(),
77
- authority: safeId(link.authority),
78
- receiptId: safeId(link.receiptId),
79
- };
80
- if (normalizedLink.version !== 1 || normalizedLink.status !== 'active'
81
- || Number.isNaN(Date.parse(normalizedLink.confirmedAt))
82
- || IDENTITY_LINK_AUTHORITIES.get(method) !== normalizedLink.authority
83
- || normalizedLink.tenantId !== normalized.tenantId
84
- || normalizedLink.canonicalUserId !== normalized.userId
85
- || normalizedLink.sourcePortal !== normalized.portalId
86
- || normalizedLink.sourceSubjectId !== normalized.actorId
87
- || !identityReceiptId || normalizedLink.receiptId !== identityReceiptId) {
88
- fail('COGNITIVE_IDENTITY_LINK_INVALID');
89
- }
90
- const canonicalScope = `relationship:${normalized.userId}:private`;
91
- const personalScope = `user:${normalized.userId}:private`;
92
- if ((normalized.requestedScope.startsWith('relationship:') && normalized.requestedScope !== canonicalScope)
93
- || (normalized.requestedScope.startsWith('user:') && normalized.requestedScope !== personalScope)) {
94
- fail('COGNITIVE_IDENTITY_SCOPE_MISMATCH');
95
- }
96
- return Object.freeze({
97
- ...normalizedLink,
98
- confirmedAt: new Date(normalizedLink.confirmedAt).toISOString(),
99
- });
100
- }
101
-
102
- function normalizeMemoryAccess(access, request) {
103
- if (!requiredAndOptionalKeys(access, ACCESS_REQUIRED_KEYS, ACCESS_OPTIONAL_KEYS)
104
- || !requiredAndOptionalKeys(
105
- access.permissionContext,
106
- PERMISSION_REQUIRED_KEYS,
107
- PERMISSION_OPTIONAL_KEYS,
108
- )) {
109
- fail('COGNITIVE_MEMORY_ACCESS_INVALID');
110
- }
111
- const normalized = {
112
- tenantId: safeId(access.tenantId),
113
- userId: safeId(access.userId),
114
- actorId: safeId(access.actorId),
115
- agentId: safeId(access.agentId),
116
- portalId: safeId(access.portalId),
117
- channelId: safeId(access.channelId),
118
- conversationId: safeId(access.conversationId),
119
- requestedScope: safeId(access.requestedScope),
120
- permissionContext: {
121
- authority: safeId(access.permissionContext.authority),
122
- decision: String(access.permissionContext.decision ?? ''),
123
- receiptId: safeId(access.permissionContext.receiptId),
124
- ...(Object.prototype.hasOwnProperty.call(access.permissionContext, 'identityReceiptId')
125
- ? { identityReceiptId: safeId(access.permissionContext.identityReceiptId) }
126
- : {}),
127
- },
128
- };
129
- if (!normalized.tenantId || !normalized.userId || !normalized.actorId || !normalized.agentId
130
- || !normalized.portalId || !normalized.channelId || !normalized.conversationId
131
- || !normalized.requestedScope || !normalized.permissionContext.authority
132
- || !normalized.permissionContext.receiptId) fail('COGNITIVE_MEMORY_ACCESS_INVALID');
133
- if (normalized.permissionContext.decision !== 'passed') fail('COGNITIVE_MEMORY_ACCESS_DENIED');
134
- const requestTenant = safeId(request?.tenantId);
135
- const requestAgent = safeId(request?.agentId ?? request?.candidate?.responsible_agent ?? request?.claimedBy);
136
- if (!requestTenant || !requestAgent
137
- || requestTenant !== normalized.tenantId || requestAgent !== normalized.agentId) {
138
- fail('COGNITIVE_MEMORY_ACCESS_SCOPE_MISMATCH');
139
- }
140
- const identityLink = normalizeIdentityLink(access, normalized);
141
- if (identityLink) normalized.identityLink = identityLink;
142
- normalized.permissionContext = Object.freeze(normalized.permissionContext);
143
- return Object.freeze(normalized);
144
- }
145
-
146
- function isInternalAgentAccess(access) {
147
- return access.userId === access.agentId
148
- && access.actorId === access.agentId
149
- && access.portalId === 'cli'
150
- && access.channelId === 'runtime'
151
- && access.requestedScope === 'agent:memory'
152
- && access.permissionContext.authority === 'runtime_internal'
153
- && access.permissionContext.receiptId === access.conversationId;
154
- }
155
-
156
- function assertVisibleScope(scope, access) {
157
- if (!isInternalAgentAccess(access) && safeId(scope) !== access.requestedScope) {
158
- fail('COGNITIVE_MEMORY_VISIBILITY_DENIED');
159
- }
160
- }
161
-
162
- function assertCommitAccess(input, access) {
163
- if (Number.isNaN(Date.parse(String(input?.occurredAt ?? '')))
164
- || Number.isNaN(Date.parse(String(input?.receivedAt ?? '')))
165
- || !RETENTION_CLASSES.has(String(input?.retentionClass ?? ''))) {
166
- fail('COGNITIVE_MEMORY_EVENT_ENVELOPE_INVALID');
167
- }
168
- if (isInternalAgentAccess(access)) return;
169
- if (!Array.isArray(input?.observations) || input.observations.length < 1) {
170
- fail('COGNITIVE_MEMORY_VISIBILITY_DENIED');
171
- }
172
- for (const observation of input.observations) assertVisibleScope(observation?.scope, access);
173
- if (safeId(input?.source?.provider) !== access.portalId
174
- || safeId(input?.source?.channel_id) !== access.channelId
175
- || safeId(input?.source?.actor_id) !== access.actorId
176
- || safeId(input?.source?.context_id) !== access.conversationId) {
177
- fail('COGNITIVE_MEMORY_SOURCE_MISMATCH');
178
- }
179
- }
180
-
181
- function projectReadableState(state, access) {
182
- if (isInternalAgentAccess(access)) return state;
183
- if (!state || typeof state !== 'object' || !Array.isArray(state.observations)) {
184
- fail('COGNITIVE_MEMORY_ADAPTER_INVALID');
185
- }
186
- return {
187
- ...state,
188
- observations: state.observations.filter((item) => safeId(item?.scope) === access.requestedScope),
189
- };
190
- }
191
-
192
- function assertCognitiveMemoryAdapter(adapter) {
193
- if (!adapter || typeof adapter !== 'object' || Array.isArray(adapter)) {
194
- fail('COGNITIVE_MEMORY_ADAPTER_INVALID');
195
- }
196
- if (adapter.contractVersion !== COGNITIVE_MEMORY_ADAPTER_VERSION) {
197
- fail('COGNITIVE_MEMORY_ADAPTER_VERSION_UNSUPPORTED');
198
- }
199
- if (!KIND_RE.test(String(adapter.kind ?? ''))
200
- || REQUIRED_METHODS.some((method) => typeof adapter[method] !== 'function')) {
201
- fail('COGNITIVE_MEMORY_ADAPTER_INVALID');
202
- }
203
- return adapter;
204
- }
205
-
206
- function guardCognitiveMemoryAdapter(adapter) {
207
- const raw = assertCognitiveMemoryAdapter(adapter);
208
- const guarded = {
209
- contractVersion: raw.contractVersion,
210
- kind: raw.kind,
211
- commit: (input, access) => {
212
- const normalizedAccess = normalizeMemoryAccess(access, input);
213
- assertCommitAccess(input, normalizedAccess);
214
- return raw.commit(input, normalizedAccess);
215
- },
216
- read: (input, access) => {
217
- const normalizedAccess = normalizeMemoryAccess(access, input);
218
- return projectReadableState(raw.read(input, normalizedAccess), normalizedAccess);
219
- },
220
- hasEvent: (input, access) => {
221
- if (!exactKeys(input, ['agentId', 'eventId', 'tenantId', 'visibilityScope'])
222
- || !safeId(input.eventId) || !safeId(input.visibilityScope)) {
223
- fail('COGNITIVE_MEMORY_ACCESS_INVALID');
224
- }
225
- const normalizedAccess = normalizeMemoryAccess(access, input);
226
- assertVisibleScope(input.visibilityScope, normalizedAccess);
227
- return raw.hasEvent(input, normalizedAccess);
228
- },
229
- verify: (input, access) => {
230
- const normalizedAccess = normalizeMemoryAccess(access, input);
231
- const result = raw.verify(input, normalizedAccess);
232
- if (isInternalAgentAccess(normalizedAccess)) return result;
233
- if (!result || typeof result.valid !== 'boolean') fail('COGNITIVE_MEMORY_ADAPTER_INVALID');
234
- return { valid: result.valid };
235
- },
236
- claimAttention: (input, access) => {
237
- const normalizedAccess = normalizeMemoryAccess(access, input);
238
- assertVisibleScope(input?.candidate?.evidence_scope, normalizedAccess);
239
- return raw.claimAttention(input, normalizedAccess);
240
- },
241
- authorizeAttention: (input, access) => {
242
- const normalizedAccess = normalizeMemoryAccess(access, input);
243
- assertVisibleScope(input?.candidate?.evidence_scope, normalizedAccess);
244
- return raw.authorizeAttention(input, normalizedAccess);
245
- },
246
- close: () => raw.close(),
247
- };
248
- return Object.freeze(guarded);
249
- }
250
-
251
- function createLocalCognitiveMemoryAdapter({ home } = {}) {
252
- const store = openCognitiveStateStore({ home });
253
- return guardCognitiveMemoryAdapter({
254
- contractVersion: COGNITIVE_MEMORY_ADAPTER_VERSION,
255
- kind: 'local-cognitive-event-store',
256
- commit: (input) => store.commit(input),
257
- read: (input, access) => store.read({
258
- ...input,
259
- visibilityScope: isInternalAgentAccess(access) ? 'agent:memory' : access.requestedScope,
260
- }),
261
- hasEvent: (input) => store.hasEvent(input),
262
- verify: (input) => store.verify(input),
263
- claimAttention: (input) => store.claimAttention(input),
264
- authorizeAttention: (input) => store.authorizeAttention(input),
265
- close: () => store.close(),
266
- });
267
- }
268
-
269
- function openCognitiveMemoryAdapter({ home, adapter } = {}) {
270
- return adapter === undefined
271
- ? createLocalCognitiveMemoryAdapter({ home })
272
- : guardCognitiveMemoryAdapter(adapter);
273
- }
274
-
275
- module.exports = {
276
- COGNITIVE_MEMORY_ADAPTER_VERSION,
277
- REQUIRED_METHODS,
278
- assertCognitiveMemoryAdapter,
279
- createLocalCognitiveMemoryAdapter,
280
- normalizeMemoryAccess,
281
- openCognitiveMemoryAdapter,
282
- };
@@ -1,293 +0,0 @@
1
- 'use strict';
2
-
3
- const crypto = require('node:crypto');
4
- const { createRuntimeCognitiveTurnLifecycle } = require('./cognitive-turn-lifecycle.cjs');
5
- const { resolveCognitiveEvidenceGroup } = require('./cognitive-effective-view.cjs');
6
- const {
7
- renderCognitiveCrossPortalAcceptance,
8
- runCognitiveCrossPortalAcceptance,
9
- } = require('./cognitive-cross-portal-acceptance.cjs');
10
-
11
- const FOCUS_DOMAINS = new Set(['self', 'team', 'goal', 'open_thread', 'next_trigger', 'expected_evidence']);
12
- const POSITIVE_ID_RE = /^[1-9]\d*$/u;
13
- const NUMERIC_CHAT_ID_RE = /^-?\d+$/u;
14
-
15
- function fail(code) {
16
- const error = new Error(code);
17
- error.code = code;
18
- throw error;
19
- }
20
-
21
- function clean(value, max) {
22
- const text = String(value ?? '').replace(/[\u0000-\u001f\u007f]+/gu, ' ').replace(/\s+/gu, ' ').trim();
23
- return text && text.length <= max ? text : '';
24
- }
25
-
26
- function digestId(prefix, values) {
27
- return `${prefix}-${crypto.createHash('sha256').update(values.join('\0')).digest('hex').slice(0, 40)}`;
28
- }
29
-
30
- function isCognitiveMemoryCommand(args) {
31
- const action = String(args ?? '').trim().split(/\s+/u, 1)[0].toLowerCase();
32
- return action === 'focus' || action === 'core' || action === 'correct'
33
- || action === 'delete' || action === 'acceptance';
34
- }
35
-
36
- function parseCognitiveMemoryCommand(args) {
37
- const text = String(args ?? '').trim();
38
- if (text.toLowerCase() === 'focus') return { action: 'focus' };
39
- if (/^core(?:\s+--json)?$/iu.test(text)) {
40
- return { action: 'core', json: /\s+--json$/iu.test(text) };
41
- }
42
- if (/^acceptance(?:\s+--json)?$/iu.test(text)) {
43
- return { action: 'acceptance', json: /\s+--json$/iu.test(text) };
44
- }
45
- const correction = /^correct\s+(\S+)\s+(.+)$/iu.exec(text);
46
- if (correction) {
47
- const target = clean(correction[1], 128);
48
- const value = clean(correction[2], 512);
49
- if (target && value) return { action: 'correct', target, value };
50
- }
51
- const deletion = /^delete\s+(\S+)$/iu.exec(text);
52
- if (deletion) {
53
- const target = clean(deletion[1], 128);
54
- if (target) return { action: 'delete', target };
55
- }
56
- fail('COGNITIVE_COMMAND_USAGE');
57
- }
58
-
59
- function normalizeObservation(item, index) {
60
- const domain = String(item?.domain ?? '');
61
- const key = clean(item?.key, 128);
62
- const value = clean(item?.value, 512);
63
- const scope = clean(item?.scope, 128);
64
- const observationId = clean(item?.observation_id, 128);
65
- const supersedes = item?.supersedes == null ? null : clean(item.supersedes, 128);
66
- const withdraws = item?.withdraws == null ? null : clean(item.withdraws, 128);
67
- const confidence = Number(item?.confidence);
68
- const occurredAt = Date.parse(String(item?.occurred_at ?? ''));
69
- if (!FOCUS_DOMAINS.has(domain) || !key || !value || !scope || scope === 'runtime' || !observationId
70
- || !Number.isFinite(confidence) || confidence < 0 || confidence > 1 || !Number.isFinite(occurredAt)) return null;
71
- return {
72
- domain,
73
- key,
74
- value,
75
- scope,
76
- observationId,
77
- supersedes,
78
- withdraws,
79
- confidence,
80
- occurredAt,
81
- occurredAtIso: new Date(occurredAt).toISOString(),
82
- source: item?.source,
83
- index,
84
- };
85
- }
86
-
87
- function normalizedFocusObservations(state) {
88
- return (state?.observations ?? []).map(normalizeObservation).filter(Boolean);
89
- }
90
-
91
- function effectiveFocusObservations(state) {
92
- const groups = new Map();
93
- normalizedFocusObservations(state).forEach((normalized) => {
94
- const groupKey = `${normalized.scope}\0${normalized.domain}\0${normalized.key}`;
95
- const entries = groups.get(groupKey) ?? [];
96
- entries.push(normalized);
97
- groups.set(groupKey, entries);
98
- });
99
- const active = [];
100
- for (const entries of groups.values()) {
101
- const resolved = resolveCognitiveEvidenceGroup(entries);
102
- if (resolved !== null) active.push(resolved);
103
- }
104
- return active.sort((left, right) => right.occurredAt - left.occurredAt
105
- || left.domain.localeCompare(right.domain) || left.key.localeCompare(right.key));
106
- }
107
-
108
- function observationsVisibleToSource(items, telegram) {
109
- if (telegram === null) return items;
110
- return items.filter((item) => !item.scope.startsWith('relationship:')
111
- || item.scope === telegram.relationshipScope);
112
- }
113
-
114
- function resolveTarget(items, selector) {
115
- const exact = items.find((item) => item.observationId === selector);
116
- if (exact) return exact;
117
- const matches = selector.length < 6 ? [] : items.filter((item) => item.observationId.startsWith(selector));
118
- if (matches.length === 1) return matches[0];
119
- if (matches.length > 1) fail('COGNITIVE_COMMAND_TARGET_AMBIGUOUS');
120
- fail('COGNITIVE_COMMAND_TARGET_INACTIVE');
121
- }
122
-
123
- function matchesRevisionReplay(items, target, command, commandSource) {
124
- return items.some((item) => {
125
- const linked = command.action === 'correct'
126
- ? item.supersedes === target.observationId && item.value === command.value
127
- : item.withdraws === target.observationId && item.value === 'withdrawn';
128
- return linked
129
- && item.source?.provider === commandSource.source.provider
130
- && item.source?.channel_id === commandSource.source.channelId
131
- && item.source?.actor_id === commandSource.source.actorId
132
- && item.source?.context_id === commandSource.source.contextId
133
- && item.source?.message_id === commandSource.source.messageId
134
- && item.occurredAtIso === commandSource.occurredAt;
135
- });
136
- }
137
-
138
- function normalizeTelegramSource(source) {
139
- if (source === undefined) return null;
140
- const userId = String(source?.userId ?? '').trim();
141
- const chatId = String(source?.chatId ?? '').trim();
142
- const messageId = String(source?.messageId ?? '').trim();
143
- if (!POSITIVE_ID_RE.test(userId) || !NUMERIC_CHAT_ID_RE.test(chatId) || !POSITIVE_ID_RE.test(messageId)) {
144
- fail('COGNITIVE_COMMAND_SOURCE_INVALID');
145
- }
146
- if (userId !== chatId) fail('COGNITIVE_COMMAND_PRIVATE_REQUIRED');
147
- const occurredAt = String(source?.occurredAt ?? '').trim();
148
- const timestamp = Number.isNaN(Date.parse(occurredAt)) ? null : new Date(occurredAt).toISOString();
149
- return {
150
- requestId: digestId('tgrequest', [userId, chatId, messageId]),
151
- occurredAt: timestamp,
152
- relationshipScope: `relationship:telegram-${userId}:private`,
153
- source: {
154
- provider: 'telegram',
155
- channelId: 'direct',
156
- actorId: `tg_user_${userId}`,
157
- contextId: `tg_chat_${chatId}`,
158
- messageId: `tg_message_${messageId}`,
159
- },
160
- };
161
- }
162
-
163
- function assertPrivateTelegramMemorySource(source) {
164
- normalizeTelegramSource(source);
165
- }
166
-
167
- function localSource({ env, sessionId, occurredAt, nonce }) {
168
- const actor = clean(env.USERNAME ?? env.USER ?? 'local_user', 48).replace(/[^A-Za-z0-9._:-]+/gu, '_') || 'local_user';
169
- const session = clean(sessionId, 96) || 'local_session';
170
- const unique = clean(nonce, 96) || crypto.randomUUID();
171
- return {
172
- requestId: digestId('clirequest', [actor, session, unique]),
173
- occurredAt,
174
- source: {
175
- provider: 'cli',
176
- channelId: 'terminal',
177
- actorId: digestId('localuser', [actor]),
178
- contextId: digestId('clisession', [session]),
179
- messageId: digestId('cliinput', [unique]),
180
- },
181
- };
182
- }
183
-
184
- function openLifecycle(env, lifecycleFactory) {
185
- const home = String(env.BLUN_HOME ?? '').trim();
186
- const agentName = String(env.BLUN_AGENT_ID ?? env.BLUN_PROFILE ?? 'main').trim();
187
- if (!home || !agentName) fail('COGNITIVE_COMMAND_RUNTIME_INVALID');
188
- return lifecycleFactory({
189
- home,
190
- agentName,
191
- ...(env.BLUN_IDENTITY_TENANT_ID === undefined ? {} : { tenantId: env.BLUN_IDENTITY_TENANT_ID }),
192
- ...(env.BLUN_AGENT_ID === undefined ? {} : { agentId: env.BLUN_AGENT_ID }),
193
- });
194
- }
195
-
196
- function formatFocus(items) {
197
- if (items.length === 0) return '/memory focus (0)';
198
- const selected = items.slice(0, 8);
199
- const lines = selected.map((item) => `${item.observationId} | ${item.domain}:${item.key.slice(0, 64)} | ${item.scope.slice(0, 64)} | ${item.value.slice(0, 160)}`);
200
- const suffix = items.length > selected.length ? `\n... ${items.length - selected.length} more` : '';
201
- return `/memory focus (${items.length})\n${lines.join('\n')}${suffix}`;
202
- }
203
-
204
- function formatCore(status) {
205
- const state = status.crossPortal.status === 'blocked-profile-local'
206
- ? 'LOCAL_ONLY'
207
- : status.crossPortal.status === 'blocked-profile-derived-identity'
208
- ? 'IDENTITY_BLOCKED' : 'CONFIGURED_UNVERIFIED';
209
- const crossPortal = status.crossPortal.status === 'blocked-profile-local'
210
- ? 'BLOCKED profile-local fallback'
211
- : status.crossPortal.status === 'blocked-profile-derived-identity'
212
- ? 'BLOCKED profile-derived identity'
213
- : 'UNVERIFIED configured provider';
214
- return [
215
- `/memory core ${state}`,
216
- `adapter: ${status.adapter.kind} (contract ${status.adapter.contractVersion})`,
217
- `identity: ${status.identity.mode}`,
218
- `integrity: ${status.integrity.valid ? 'PASS' : 'FAIL'}`,
219
- `cross-portal: ${crossPortal}; evidence ${status.crossPortal.evidence}`,
220
- ].join('\n');
221
- }
222
-
223
- function runCognitiveMemoryCommand({
224
- args,
225
- env = process.env,
226
- channelSource,
227
- sessionId,
228
- now = () => new Date().toISOString(),
229
- nonce,
230
- lifecycleFactory = createRuntimeCognitiveTurnLifecycle,
231
- } = {}) {
232
- const command = parseCognitiveMemoryCommand(args);
233
- if (command.action === 'acceptance') {
234
- const report = runCognitiveCrossPortalAcceptance();
235
- return command.json ? JSON.stringify(report) : renderCognitiveCrossPortalAcceptance(report);
236
- }
237
- const telegram = normalizeTelegramSource(channelSource);
238
- const lifecycle = openLifecycle(env, lifecycleFactory);
239
- try {
240
- if (command.action === 'core') {
241
- const status = lifecycle.memoryStatus();
242
- return command.json ? JSON.stringify(status) : formatCore(status);
243
- }
244
- const state = lifecycle.read();
245
- const all = observationsVisibleToSource(normalizedFocusObservations(state), telegram);
246
- const active = observationsVisibleToSource(effectiveFocusObservations(state), telegram);
247
- if (command.action === 'focus') return formatFocus(active);
248
- const occurredAt = String(now());
249
- if (Number.isNaN(Date.parse(occurredAt))) fail('COGNITIVE_COMMAND_RUNTIME_INVALID');
250
- const commandSource = telegram ?? localSource({
251
- env,
252
- sessionId,
253
- occurredAt: new Date(occurredAt).toISOString(),
254
- nonce,
255
- });
256
- if (commandSource.occurredAt === null) commandSource.occurredAt = new Date(occurredAt).toISOString();
257
- const selected = resolveTarget(all, command.target);
258
- const target = active.find((item) => item.observationId === selected.observationId);
259
- if (target === undefined) {
260
- if (matchesRevisionReplay(all, selected, command, commandSource)) {
261
- const verb = command.action === 'correct' ? 'corrected' : 'deleted';
262
- return `/memory ${verb} ${selected.observationId} (already applied)`;
263
- }
264
- fail('COGNITIVE_COMMAND_TARGET_INACTIVE');
265
- }
266
- const common = {
267
- requestId: commandSource.requestId,
268
- targetObservationId: target.observationId,
269
- domain: target.domain,
270
- key: target.key,
271
- scope: target.scope,
272
- authority: 'runtime_user_prompt_hook',
273
- confirmation: 'explicit_user_request',
274
- occurredAt: commandSource.occurredAt,
275
- source: commandSource.source,
276
- };
277
- const result = command.action === 'correct'
278
- ? lifecycle.correctFocusObservation({ ...common, value: command.value })
279
- : lifecycle.withdrawFocusObservation(common);
280
- const verb = command.action === 'correct' ? 'corrected' : 'deleted';
281
- return `/memory ${verb} ${target.observationId}${result.idempotent ? ' (already applied)' : ''}`;
282
- } finally {
283
- lifecycle.close();
284
- }
285
- }
286
-
287
- module.exports = {
288
- assertPrivateTelegramMemorySource,
289
- effectiveFocusObservations,
290
- isCognitiveMemoryCommand,
291
- parseCognitiveMemoryCommand,
292
- runCognitiveMemoryCommand,
293
- };
@@ -1,92 +0,0 @@
1
- 'use strict';
2
-
3
- const fs = require('node:fs');
4
- const path = require('node:path');
5
- const {
6
- COGNITIVE_MEMORY_ADAPTER_VERSION,
7
- assertCognitiveMemoryAdapter,
8
- } = require('./cognitive-memory-adapter.cjs');
9
-
10
- const PROVIDER_ENV = 'BLUN_COGNITIVE_MEMORY_ADAPTER_MODULE';
11
- const SAFE_ID_RE = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
12
-
13
- function fail(code) {
14
- const error = new Error(code);
15
- error.code = code;
16
- throw error;
17
- }
18
-
19
- function canonicalFile(input) {
20
- const configured = String(input ?? '').trim();
21
- if (!configured || !path.isAbsolute(configured)) fail('COGNITIVE_MEMORY_PROVIDER_PATH_INVALID');
22
- const resolved = path.resolve(configured);
23
- let stat;
24
- let canonical;
25
- try {
26
- stat = fs.lstatSync(resolved);
27
- canonical = fs.realpathSync(resolved);
28
- } catch {
29
- fail('COGNITIVE_MEMORY_PROVIDER_PATH_INVALID');
30
- }
31
- if (!stat.isFile() || stat.isSymbolicLink()
32
- || path.normalize(canonical).toLowerCase() !== path.normalize(resolved).toLowerCase()) {
33
- fail('COGNITIVE_MEMORY_PROVIDER_PATH_INVALID');
34
- }
35
- return canonical;
36
- }
37
-
38
- function boundedContext({ home, tenantId, agentId, agentName }) {
39
- const tenant = String(tenantId ?? '').trim();
40
- const agent = String(agentId ?? '').trim();
41
- const name = String(agentName ?? '').trim();
42
- let canonicalHome;
43
- try {
44
- const stat = fs.lstatSync(path.resolve(String(home ?? '')));
45
- canonicalHome = fs.realpathSync(path.resolve(String(home ?? '')));
46
- if (!stat.isDirectory() || stat.isSymbolicLink()) fail('COGNITIVE_MEMORY_PROVIDER_CONTEXT_INVALID');
47
- } catch (error) {
48
- if (error?.code === 'COGNITIVE_MEMORY_PROVIDER_CONTEXT_INVALID') throw error;
49
- fail('COGNITIVE_MEMORY_PROVIDER_CONTEXT_INVALID');
50
- }
51
- if (!SAFE_ID_RE.test(tenant) || !SAFE_ID_RE.test(agent) || !name || name.length > 128
52
- || /[\u0000-\u001f\u007f]/u.test(name)) {
53
- fail('COGNITIVE_MEMORY_PROVIDER_CONTEXT_INVALID');
54
- }
55
- return Object.freeze({
56
- contractVersion: COGNITIVE_MEMORY_ADAPTER_VERSION,
57
- home: canonicalHome,
58
- tenantId: tenant,
59
- agentId: agent,
60
- agentName: name,
61
- });
62
- }
63
-
64
- function loadConfiguredCognitiveMemoryAdapter({
65
- modulePath,
66
- env = process.env,
67
- home,
68
- tenantId,
69
- agentId,
70
- agentName,
71
- } = {}) {
72
- const configured = modulePath === undefined ? env?.[PROVIDER_ENV] : modulePath;
73
- if (!String(configured ?? '').trim()) return undefined;
74
- const providerPath = canonicalFile(configured);
75
- const provider = require(providerPath);
76
- if (!provider || typeof provider.createCognitiveMemoryAdapter !== 'function') {
77
- fail('COGNITIVE_MEMORY_PROVIDER_FACTORY_REQUIRED');
78
- }
79
- const adapter = provider.createCognitiveMemoryAdapter(boundedContext({
80
- home,
81
- tenantId,
82
- agentId,
83
- agentName,
84
- }));
85
- if (adapter && typeof adapter.then === 'function') fail('COGNITIVE_MEMORY_PROVIDER_ASYNC_UNSUPPORTED');
86
- return assertCognitiveMemoryAdapter(adapter);
87
- }
88
-
89
- module.exports = {
90
- PROVIDER_ENV,
91
- loadConfiguredCognitiveMemoryAdapter,
92
- };