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,470 +0,0 @@
1
- #!/usr/bin/env python3
2
- """codebase-index — lokaler semantischer Index ueber einen Git-Code-Baum.
3
-
4
- F1-Bau nach Konzept (handoffs/codebase-verstaendnis-lokal-konzept.md),
5
- Auflagen Dieter 43102:
6
- - Streaming in vorallokierte float32-Matrix (memmap), KEINE Vektoren-Liste
7
- (Run-3-Befund: Liste trieb RAM-Spitze auf 10,5 GB).
8
- - Inkrementell: Content-Hash je Datei im Manifest, Delta statt Vollindex.
9
- - Query mit Frische-Auskunft + Selbstauskunft in JEDER Antwort.
10
- - Query-Fehlschlag-Log lokal (query-log.jsonl) — der Moat.
11
-
12
- Aufruf:
13
- python codebase_index.py build <repo>
14
- python codebase_index.py update <repo>
15
- python codebase_index.py query <repo> "<frage>" [--top 5]
16
- python codebase_index.py sample <repo>
17
-
18
- Index-Ort: ~/.blun/codebase-index/<workspace-hash>/ (sichtbar, mit Rueckweg).
19
- """
20
- import hashlib
21
- import json
22
- import os
23
- import subprocess
24
- import sys
25
- import time
26
- from datetime import datetime, timezone
27
-
28
- import numpy as np
29
-
30
- CODE_EXT = (
31
- ".ts", ".tsx", ".js", ".mjs", ".cjs", ".py", ".html", ".css",
32
- ".json", ".md", ".toml", ".yml", ".yaml", ".sh", ".ps1", ".sql",
33
- )
34
- CHUNK_SIZE = 1000
35
- CHUNK_OVERLAP = 100
36
- EMBED_DIM = 384
37
- BATCH = 256
38
- MODEL_NAME = "BAAI/bge-small-en-v1.5"
39
- JINA_CODE_MODEL_NAME = "jinaai/jina-embeddings-v2-base-code"
40
- KNOWN_MODELS = {
41
- MODEL_NAME: 384,
42
- JINA_CODE_MODEL_NAME: 768,
43
- }
44
- MODEL_ALIASES = {
45
- "bge": MODEL_NAME,
46
- "jina-code": JINA_CODE_MODEL_NAME,
47
- }
48
- AUTO_MODEL_ORDER = (JINA_CODE_MODEL_NAME, MODEL_NAME)
49
-
50
- # Iteration 2 (Dieter 43135): Rausch-Filter — Backup-Kopien und Vendor-
51
- # Buelle machten 66% aller Index-Rows aus und dominieren Top-5.
52
- EXCLUDE_PREFIXES = ("backup-", "vendor/")
53
-
54
- # Aktives Modell + Dim zur Laufzeit (wird per --model ueberschrieben).
55
- _active_model_name = MODEL_NAME
56
- _active_dim = EMBED_DIM
57
-
58
- # Stichprobe V3 (Dieter 43141): Fragen PARAPHRASIERT aus gelesenem
59
- # Dateiinhalt — keine wörtlichen Bezeichner/Funktionsnamen/Kommentare aus
60
- # den Dateien (misst semantische Suche, nicht Wortgleichheit).
61
- # api-chat.js: routet Chat-Nachrichten ans Modell, Fallback-Kette, Stream.
62
- # terminal-manager.js: startet Shell-Prozesse mit Sandbox-/Approval-Modi.
63
- # renderer-view-shell.js: wechselt Login-/Willkommens-/Chat-Ansicht.
64
- SAMPLE_QUERIES = [
65
- ("how are conversation messages routed to the right model with a fallback chain", "api-chat"),
66
- ("starting sandboxed shell processes with approval modes and output history", "terminal-manager"),
67
- ("switching between sign-in screen, welcome page and main conversation view", "renderer-view-shell"),
68
- ]
69
-
70
- SELSTAUSKUNFT = (
71
- "HINWEIS: semantischer Index, kann falsch liegen — Fundstelle vor "
72
- "Verwendung in der Datei verifizieren."
73
- )
74
-
75
-
76
- def canonical_repo_path(repo: str) -> str:
77
- return os.path.normcase(os.path.realpath(os.path.abspath(repo)))
78
-
79
-
80
- def index_root() -> str:
81
- return os.path.join(os.path.expanduser("~"), ".blun", "codebase-index")
82
-
83
-
84
- def index_dir(repo: str) -> str:
85
- raw = canonical_repo_path(repo) + "|" + _active_model_name
86
- key = hashlib.sha256(raw.encode()).hexdigest()[:12]
87
- return os.path.join(index_root(), key)
88
-
89
-
90
- def normalize_model_selector(selector: str) -> str:
91
- if selector == "auto":
92
- return selector
93
- model = MODEL_ALIASES.get(selector, selector)
94
- if model not in KNOWN_MODELS:
95
- allowed = ", ".join(("auto", *MODEL_ALIASES, *KNOWN_MODELS))
96
- raise ValueError(f"Unsupported index model {selector!r}; choose one of: {allowed}")
97
- return model
98
-
99
-
100
- def find_existing_indexes(repo: str) -> list[tuple[str, dict]]:
101
- root = index_root()
102
- if not os.path.isdir(root):
103
- return []
104
- canonical_repo = canonical_repo_path(repo)
105
- canonical_root = os.path.realpath(root)
106
- candidates = []
107
- for entry in os.scandir(root):
108
- if not entry.is_dir(follow_symlinks=False):
109
- continue
110
- directory = os.path.realpath(entry.path)
111
- try:
112
- if os.path.commonpath((canonical_root, directory)) != canonical_root:
113
- continue
114
- except ValueError:
115
- continue
116
- manifest_path = os.path.join(directory, "manifest.json")
117
- vectors_path = os.path.join(directory, "vectors.npy")
118
- if not os.path.isfile(manifest_path) or not os.path.isfile(vectors_path):
119
- continue
120
- try:
121
- manifest = load_manifest(directory)
122
- except (OSError, ValueError, TypeError):
123
- continue
124
- model = manifest.get("model")
125
- if model not in KNOWN_MODELS or manifest.get("dim") != KNOWN_MODELS[model]:
126
- continue
127
- manifest_repo = manifest.get("repo")
128
- if not isinstance(manifest_repo, str):
129
- continue
130
- if canonical_repo_path(manifest_repo) != canonical_repo:
131
- continue
132
- candidates.append((directory, manifest))
133
- return sorted(candidates, key=lambda item: item[0])
134
-
135
-
136
- def resolve_existing_index(repo: str, selector: str = "auto") -> tuple[str, dict]:
137
- requested = normalize_model_selector(selector)
138
- candidates = find_existing_indexes(repo)
139
- model_order = AUTO_MODEL_ORDER if requested == "auto" else (requested,)
140
- for model in model_order:
141
- matches = [item for item in candidates if item[1]["model"] == model]
142
- if matches:
143
- return max(
144
- matches,
145
- key=lambda item: (str(item[1].get("built_at", "")), item[0]),
146
- )
147
- available = sorted({item[1]["model"] for item in candidates})
148
- suffix = f"; available for this repository: {', '.join(available)}" if available else ""
149
- raise FileNotFoundError(
150
- f"No compatible codebase index for {os.path.abspath(repo)!r} and selector {selector!r}{suffix}"
151
- )
152
-
153
-
154
- def activate_model(model: str, dim: int | None = None) -> None:
155
- global _active_model_name, _active_dim
156
- normalized = normalize_model_selector(model)
157
- if normalized == "auto":
158
- raise ValueError("auto can select an existing index only; it cannot build a new one")
159
- expected_dim = KNOWN_MODELS[normalized]
160
- if dim is not None and dim != expected_dim:
161
- raise ValueError(
162
- f"Index dimension {dim} does not match {normalized} ({expected_dim})"
163
- )
164
- _active_model_name = normalized
165
- _active_dim = expected_dim
166
-
167
-
168
- def git_files(repo: str) -> list[str]:
169
- out = subprocess.run(
170
- ["git", "ls-files"], cwd=repo, capture_output=True, text=True, check=True
171
- ).stdout.splitlines()
172
- return [
173
- f for f in out
174
- if f.lower().endswith(CODE_EXT) and not f.startswith(EXCLUDE_PREFIXES)
175
- ]
176
-
177
-
178
- def git_head(repo: str) -> str:
179
- return subprocess.run(
180
- ["git", "rev-parse", "--short", "HEAD"],
181
- cwd=repo, capture_output=True, text=True, check=True,
182
- ).stdout.strip()
183
-
184
-
185
- def sha_file(path: str) -> str:
186
- h = hashlib.sha256()
187
- with open(path, "rb") as fh:
188
- for block in iter(lambda: fh.read(1 << 20), b""):
189
- h.update(block)
190
- return h.hexdigest()
191
-
192
-
193
- def chunk_text(text: str) -> list[str]:
194
- step = CHUNK_SIZE - CHUNK_OVERLAP
195
- return [
196
- text[i : i + CHUNK_SIZE]
197
- for i in range(0, len(text), step)
198
- if text[i : i + CHUNK_SIZE].strip()
199
- ]
200
-
201
-
202
- def load_model():
203
- from fastembed import TextEmbedding
204
-
205
- return TextEmbedding(_active_model_name)
206
-
207
-
208
- def collect_chunks(repo: str, files: list[str]):
209
- """Liest Dateien, liefert (texts, meta, file_spans, read_errors)."""
210
- texts, meta, spans, read_errors = [], [], {}, 0
211
- for rel in files:
212
- try:
213
- with open(os.path.join(repo, rel), encoding="utf-8", errors="replace") as fh:
214
- chunks = chunk_text(fh.read())
215
- except OSError:
216
- read_errors += 1
217
- continue
218
- start = len(texts)
219
- for idx, chunk in enumerate(chunks):
220
- texts.append(chunk)
221
- meta.append(f"{rel}#{idx}")
222
- spans[rel] = [start, len(texts)]
223
- return texts, meta, spans, read_errors
224
-
225
-
226
- def embed_into(model, texts: list[str], matrix, offset: int) -> None:
227
- """Streamt Embeddings batchweise DIREKT in die (vorallokierte) Matrix."""
228
- for i in range(0, len(texts), BATCH):
229
- vecs = list(model.embed(texts[i : i + BATCH]))
230
- matrix[offset + i : offset + i + len(vecs)] = np.asarray(
231
- vecs, dtype=np.float32
232
- )
233
- if i % (BATCH * 8) == 0:
234
- print(f"PROGRESS embedded={offset + i}", flush=True)
235
-
236
-
237
- def write_matrix(dirpath: str, total: int):
238
- return np.lib.format.open_memmap(
239
- os.path.join(dirpath, "vectors.npy"),
240
- mode="w+", dtype=np.float32, shape=(total, _active_dim),
241
- )
242
-
243
-
244
- def save_manifest(dirpath: str, repo: str, files_hashes: dict, spans: dict,
245
- meta: list[str], build_s: float) -> None:
246
- manifest = {
247
- "repo": os.path.abspath(repo),
248
- "head": git_head(repo),
249
- "built_at": datetime.now(timezone.utc).isoformat(),
250
- "model": _active_model_name,
251
- "dim": _active_dim,
252
- "chunk_size": CHUNK_SIZE,
253
- "chunk_overlap": CHUNK_OVERLAP,
254
- "chunks": len(meta),
255
- "build_s": round(build_s, 2),
256
- "files": files_hashes,
257
- "spans": spans,
258
- "meta": meta,
259
- }
260
- with open(os.path.join(dirpath, "manifest.json"), "w", encoding="utf-8") as fh:
261
- json.dump(manifest, fh)
262
-
263
-
264
- def load_manifest(dirpath: str) -> dict:
265
- with open(os.path.join(dirpath, "manifest.json"), encoding="utf-8") as fh:
266
- return json.load(fh)
267
-
268
-
269
- def cmd_build(repo: str) -> None:
270
- t0 = time.perf_counter()
271
- files = git_files(repo)
272
- print(f"BUILD files={len(files)} repo={repo}")
273
- texts, meta, spans, read_errors = collect_chunks(repo, files)
274
- print(f"CHUNKS total={len(texts)} read_errors={read_errors}")
275
-
276
- dirpath = index_dir(repo)
277
- os.makedirs(dirpath, exist_ok=True)
278
- matrix = write_matrix(dirpath, len(texts))
279
- model = load_model()
280
- t_embed = time.perf_counter()
281
- embed_into(model, texts, matrix, 0)
282
- matrix.flush()
283
- build_s = time.perf_counter() - t0
284
- embed_s = time.perf_counter() - t_embed
285
-
286
- hashes = {rel: sha_file(os.path.join(repo, rel)) for rel in spans}
287
- save_manifest(dirpath, repo, hashes, spans, meta, build_s)
288
- mb = len(texts) * _active_dim * 4 / 1e6
289
- print(
290
- f"DONE build_s={build_s:.1f} embed_s={embed_s:.1f} chunks={len(texts)} "
291
- f"index_mb={mb:.1f} dir={dirpath}",
292
- flush=True,
293
- )
294
-
295
-
296
- def cmd_update(repo: str) -> None:
297
- """Delta: geaenderte/neue Dateien neu einbetten, geloeschte entfernen."""
298
- t0 = time.perf_counter()
299
- dirpath = index_dir(repo)
300
- man = load_manifest(dirpath)
301
- old_hashes: dict = man["files"]
302
- old_spans: dict = man["spans"]
303
- old_meta: list[str] = man["meta"]
304
- old_mat = np.load(os.path.join(dirpath, "vectors.npy"))
305
-
306
- files = git_files(repo)
307
- texts_new, meta_new, spans_new, read_errors = collect_chunks(repo, files)
308
- new_hashes = {rel: sha_file(os.path.join(repo, rel)) for rel in spans_new}
309
-
310
- changed = {r for r, h in new_hashes.items() if old_hashes.get(r) != h}
311
- deleted = set(old_hashes) - set(new_hashes)
312
- if not changed and not deleted:
313
- print(f"UPDATE noop delta_s={time.perf_counter() - t0:.1f} head={git_head(repo)}")
314
- return
315
-
316
- # Behaltene Dateien: weder geaendert noch geloescht.
317
- kept_rels = [r for r in old_spans if r not in changed and r not in deleted]
318
-
319
- changed_chunks: dict[str, list[str]] = {}
320
- for rel in sorted(changed):
321
- with open(os.path.join(repo, rel), encoding="utf-8", errors="replace") as fh:
322
- changed_chunks[rel] = chunk_text(fh.read())
323
-
324
- total = sum(old_spans[r][1] - old_spans[r][0] for r in kept_rels) + sum(
325
- len(c) for c in changed_chunks.values()
326
- )
327
- matrix = write_matrix(dirpath, total)
328
- model = load_model()
329
-
330
- spans_out, meta_out, cursor = {}, [], 0
331
- for rel in kept_rels:
332
- a, b = old_spans[rel]
333
- matrix[cursor : cursor + (b - a)] = old_mat[a:b]
334
- spans_out[rel] = [cursor, cursor + (b - a)]
335
- meta_out.extend(old_meta[a:b])
336
- cursor += b - a
337
- for rel in sorted(changed_chunks):
338
- chunks = changed_chunks[rel]
339
- embed_into(model, chunks, matrix, cursor)
340
- spans_out[rel] = [cursor, cursor + len(chunks)]
341
- meta_out.extend(f"{rel}#{i}" for i in range(len(chunks)))
342
- cursor += len(chunks)
343
- matrix.flush()
344
-
345
- save_manifest(dirpath, repo, new_hashes, spans_out, meta_out,
346
- time.perf_counter() - t0)
347
- print(
348
- f"UPDATE changed={len(changed)} deleted={len(deleted)} "
349
- f"delta_s={time.perf_counter() - t0:.1f} chunks={total}",
350
- flush=True,
351
- )
352
-
353
-
354
- def freshness(repo: str, man: dict) -> str:
355
- current = git_head(repo)
356
- same = "== HEAD" if current == man["head"] else f"Index {man['head']} != HEAD {current} — 'update' faellig"
357
- return f"Index-Stand: {man['head']} ({man['built_at']}), {man['chunks']} Chunks | {same}"
358
-
359
-
360
- def cmd_query(repo: str, question: str, top: int, selector: str = "auto") -> int:
361
- dirpath, man = resolve_existing_index(repo, selector)
362
- activate_model(man["model"], man["dim"])
363
- mat = np.load(os.path.join(dirpath, "vectors.npy"))
364
- norms = np.linalg.norm(mat, axis=1, keepdims=True)
365
- mat_n = mat / np.maximum(norms, 1e-12)
366
-
367
- model = load_model()
368
- t0 = time.perf_counter()
369
- qv = np.asarray(list(model.embed([question])), dtype=np.float32)[0]
370
- qv = qv / max(np.linalg.norm(qv), 1e-12)
371
- scores = mat_n @ qv
372
- idx = np.argsort(scores)[::-1][:top]
373
- latency_ms = (time.perf_counter() - t0) * 1000
374
-
375
- hits = [(man["meta"][i], round(float(scores[i]), 4)) for i in idx]
376
- print(SELSTAUSKUNFT)
377
- print(f"Index-Modell: {man['model']}")
378
- print(freshness(repo, man))
379
- for m, s in hits:
380
- print(f" {s:.4f} {m}")
381
- print(f"query_ms={latency_ms:.1f}")
382
-
383
- log_path = os.path.join(dirpath, "query-log.jsonl")
384
- with open(log_path, "a", encoding="utf-8") as fh:
385
- fh.write(json.dumps({
386
- "ts": datetime.now(timezone.utc).isoformat(),
387
- "query": question,
388
- "top": hits,
389
- "query_ms": round(latency_ms, 1),
390
- "index_head": man["head"],
391
- }) + "\n")
392
- return 0
393
-
394
-
395
- def cmd_sample(repo: str, selector: str = "auto") -> int:
396
- """Gate: Stichprobe aus dem Subjekt-Baum, Ziel >= 2/3 in Top-5."""
397
- dirpath, man = resolve_existing_index(repo, selector)
398
- activate_model(man["model"], man["dim"])
399
- mat = np.load(os.path.join(dirpath, "vectors.npy"))
400
- norms = np.linalg.norm(mat, axis=1, keepdims=True)
401
- mat_n = mat / np.maximum(norms, 1e-12)
402
- model = load_model()
403
-
404
- hits_count = 0
405
- for question, expected in SAMPLE_QUERIES:
406
- qv = np.asarray(list(model.embed([question])), dtype=np.float32)[0]
407
- qv = qv / max(np.linalg.norm(qv), 1e-12)
408
- scores = mat_n @ qv
409
- idx = np.argsort(scores)[::-1][:5]
410
- hits = [(man["meta"][i], round(float(scores[i]), 4)) for i in idx]
411
- ok = any(expected in m for m, _ in hits)
412
- hits_count += ok
413
- print(f"SAMPLE {'HIT ' if ok else 'MISS'} {question!r} expected={expected}")
414
- for m, s in hits:
415
- print(f" {s:.4f} {m}")
416
- verdict = "PASS" if hits_count >= 2 else "FAIL"
417
- print(f"SAMPLE_RESULT {hits_count}/3 gate=2/3 -> {verdict}")
418
- return 0 if hits_count >= 2 else 1
419
-
420
-
421
- def main() -> int:
422
- global _active_model_name, _active_dim
423
- if len(sys.argv) < 3:
424
- print(__doc__)
425
- return 2
426
- cmd, repo = sys.argv[1], sys.argv[2]
427
- selector = sys.argv[sys.argv.index("--model") + 1] if "--model" in sys.argv else (
428
- "auto" if cmd in ("query", "sample") else MODEL_NAME
429
- )
430
- if cmd in ("build", "update"):
431
- try:
432
- activate_model(selector)
433
- except ValueError as error:
434
- print(f"MODEL_ERROR {error}")
435
- return 2
436
- from fastembed import TextEmbedding
437
-
438
- dims = {m["model"]: m.get("dim") for m in TextEmbedding.list_supported_models()}
439
- if _active_model_name not in dims:
440
- print(f"MODEL_UNKNOWN {_active_model_name} — nicht im fastembed-Angebot")
441
- return 2
442
- _active_dim = int(dims[_active_model_name])
443
- print(f"MODEL {_active_model_name} dim={_active_dim}")
444
- if cmd == "build":
445
- cmd_build(repo)
446
- return 0
447
- if cmd == "update":
448
- cmd_update(repo)
449
- return 0
450
- if cmd == "query":
451
- top = 5
452
- if "--top" in sys.argv:
453
- top = int(sys.argv[sys.argv.index("--top") + 1])
454
- try:
455
- return cmd_query(repo, sys.argv[3], top, selector)
456
- except (FileNotFoundError, ValueError) as error:
457
- print(f"INDEX_ERROR {error}")
458
- return 2
459
- if cmd == "sample":
460
- try:
461
- return cmd_sample(repo, selector)
462
- except (FileNotFoundError, ValueError) as error:
463
- print(f"INDEX_ERROR {error}")
464
- return 2
465
- print(f"unknown command: {cmd}")
466
- return 2
467
-
468
-
469
- if __name__ == "__main__":
470
- sys.exit(main())
@@ -1,19 +0,0 @@
1
- ---
2
- name: agent-browser
3
- description: Automate and verify browser workflows with the bundled Agent Browser contract while keeping external runtime installation and activation under explicit user control.
4
- ---
5
-
6
- # Agent Browser
7
-
8
- Use this skill when a task needs browser navigation, form interaction, screenshots, DOM inspection, or end-to-end UI verification.
9
-
10
- ## Workflow
11
-
12
- 1. Read [references/runtime.md](references/runtime.md) before selecting the runtime.
13
- 2. Prefer semantic targets and observable page state over coordinate clicks or fixed delays.
14
- 3. Keep an existing user MCP entry authoritative. Never add a second process for the same browser server.
15
- 4. Ask before enabling or downloading an external runtime. A packaged descriptor is not proof that the runtime is installed or running.
16
- 5. Preserve the user's session, credentials, and browser profile unless the task explicitly requires a clean isolated context.
17
- 6. Report the page state, screenshots, console errors, and network evidence actually observed.
18
-
19
- Do not claim a browser workflow passed from source inspection alone.
@@ -1,8 +0,0 @@
1
- # Agent Browser Runtime Contract
2
-
3
- - Tested contract: Agent Browser 0.31.2 or a compatible newer release.
4
- - MCP entrypoint: `agent-browser mcp`.
5
- - The standard descriptor pins `agent-browser@0.31.2` and is disabled until the user opts in.
6
- - The executable is external and is not bundled with BLUN Code. Enabling the descriptor may require a package download.
7
- - The default core MCP profile is sufficient for navigation and inspection. Add broader capabilities only for a named task.
8
- - Reuse an existing equivalent MCP entry. Do not start a duplicate browser process.
@@ -1,41 +0,0 @@
1
- ---
2
- name: blun-session-inspector
3
- description: Inspect local BLUN Code session health read-only. Use when asked about compactions, token usage, tool-call volume, offloaded tool results, provider steps, or a session that appears slow or stuck.
4
- license: MIT
5
- compatibility: designed for BLUN Code
6
- ---
7
-
8
- # BLUN Session Inspector
9
-
10
- Use the bundled script instead of manually reading `wire.jsonl` or telemetry files. It reports counts and timing metadata without returning prompts, system instructions, tool arguments, tool results, private paths, or hidden reasoning.
11
-
12
- In addition to wire and telemetry counts, the summary reads only structured `turn request tools` fields from the session's own BLUN log. It reports eligible, selected, and deferred schema counts, estimated schema tokens avoided, and suppression reasons. Micro-compaction telemetry also reports how many completed tool-call arguments were relieved and the estimated argument tokens saved. Argument contents are never returned. Other log lines are ignored and never emitted.
13
-
14
- Resolve `SKILL_DIR` to the directory containing this file. Do not assume a user-specific installation path.
15
-
16
- List recent sessions:
17
-
18
- ```bash
19
- node "$SKILL_DIR/scripts/inspect-session.cjs" --list 20
20
- ```
21
-
22
- Inspect one session by full ID or unique prefix:
23
-
24
- ```bash
25
- node "$SKILL_DIR/scripts/inspect-session.cjs" SESSION_ID
26
- ```
27
-
28
- Use another profile or app home only when needed:
29
-
30
- ```bash
31
- node "$SKILL_DIR/scripts/inspect-session.cjs" SESSION_ID --profile PROFILE
32
- node "$SKILL_DIR/scripts/inspect-session.cjs" SESSION_ID --blun-home PATH
33
- ```
34
-
35
- Add `--include-metadata` only when the work directory and session directory are relevant. Summarize the JSON instead of pasting it verbatim. Distinguish stored counts from your interpretation, mention warnings, and do not claim that telemetry covers periods before an event was introduced.
36
-
37
- Keep inspection read-only. Never edit, delete, compact, resume, reload, or restart a session as part of diagnosis.
38
-
39
- This skill adopts the read-only, smallest-useful-view approach from the MIT-licensed Deep Agents Thread Inspector while using BLUN Code's append-only wire and telemetry formats.
40
-
41
- Source: https://github.com/langchain-ai/deepagents/tree/main/libs/code/deepagents_code/built_in_skills/deepagents-thread-inspector