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.
- package/CHANGELOG.md +11 -185
- package/LIESMICH.txt +51 -13
- package/README.md +44 -47
- package/agent-spine-plugin/.codex-plugin/plugin.json +16 -4
- package/agent-spine-plugin/CHANGELOG.md +37 -5
- package/agent-spine-plugin/README.md +3 -3
- package/agent-spine-plugin/blun.plugin.json +45 -10
- package/agent-spine-plugin/docs/artifact-evaluation.md +93 -0
- package/agent-spine-plugin/docs/host-integration.md +42 -27
- package/agent-spine-plugin/docs/preflight-recall.md +4 -2
- package/agent-spine-plugin/docs/session-timeline.md +97 -236
- package/agent-spine-plugin/docs/world-model.md +25 -0
- package/agent-spine-plugin/hooks/codex.json +1 -1
- package/agent-spine-plugin/hooks/hooks.json +1 -1
- package/agent-spine-plugin/package.json +1 -3
- package/agent-spine-plugin/scripts/check-hosts.js +3 -3
- package/agent-spine-plugin/scripts/release-check.js +10 -5
- package/agent-spine-plugin/scripts/run-checks.js +4 -1
- package/agent-spine-plugin/scripts/run-tests-hermetic.js +32 -6
- package/agent-spine-plugin/src/cli-learning.js +15 -0
- package/agent-spine-plugin/src/cli.js +2 -0
- package/agent-spine-plugin/src/hook.js +32 -32
- package/agent-spine-plugin/src/lib/action-lesson-recall.js +73 -8
- package/agent-spine-plugin/src/lib/briefing.js +146 -36
- package/agent-spine-plugin/src/lib/channel-continuity.js +19 -0
- package/agent-spine-plugin/src/lib/delivery-agent-usage.js +14 -7
- package/agent-spine-plugin/src/lib/gateway-group-response.js +128 -0
- package/agent-spine-plugin/src/lib/gateway-runs.js +24 -15
- package/agent-spine-plugin/src/lib/hook-briefing-use.js +13 -3
- package/agent-spine-plugin/src/lib/hook-context.js +16 -3
- package/agent-spine-plugin/src/lib/hook-output.js +129 -5
- package/agent-spine-plugin/src/lib/hook-timeline.js +5 -3
- package/agent-spine-plugin/src/lib/indexed-memory.js +2 -2
- package/agent-spine-plugin/src/lib/learning-artifact-evaluator.js +114 -0
- package/agent-spine-plugin/src/lib/learning-context.js +11 -4
- package/agent-spine-plugin/src/lib/learning-measurements.js +2 -2
- package/agent-spine-plugin/src/lib/mcp-runtime.js +89 -3
- package/agent-spine-plugin/src/lib/mcp-source-context.js +12 -2
- package/agent-spine-plugin/src/lib/mcp-timeline-tools.js +91 -8
- package/agent-spine-plugin/src/lib/mcp-world-tools.js +2 -2
- package/agent-spine-plugin/src/lib/owned-file-lock.js +20 -1
- package/agent-spine-plugin/src/lib/persona-runtime.js +2 -2
- package/agent-spine-plugin/src/lib/preflight-delivery-id.js +27 -0
- package/agent-spine-plugin/src/lib/preflight.js +4 -4
- package/agent-spine-plugin/src/lib/session-timeline-codex.js +15 -0
- package/agent-spine-plugin/src/lib/session-timeline-contract.js +12 -4
- package/agent-spine-plugin/src/lib/session-timeline-event-extract.js +36 -7
- package/agent-spine-plugin/src/lib/session-timeline-host-origin.js +13 -10
- package/agent-spine-plugin/src/lib/session-timeline-invocation.js +1 -1
- package/agent-spine-plugin/src/lib/session-timeline-king.js +14 -0
- package/agent-spine-plugin/src/lib/session-timeline-prior.js +18 -12
- package/agent-spine-plugin/src/lib/session-timeline-provider.js +5 -0
- package/agent-spine-plugin/src/lib/session-timeline-query.js +2 -0
- package/agent-spine-plugin/src/lib/session-timeline-results.js +35 -10
- package/agent-spine-plugin/src/lib/session-timeline-source-open.js +30 -0
- package/agent-spine-plugin/src/lib/session-timeline.js +122 -75
- package/agent-spine-plugin/src/lib/source-roots.js +3 -2
- package/agent-spine-plugin/src/lib/task-knowledge-context.js +22 -1
- package/agent-spine-plugin/src/lib/timeline-continuation-update.js +100 -0
- package/agent-spine-plugin/src/lib/timeline-tool-guard.js +30 -7
- package/agent-spine-plugin/src/lib/timeline-user-feedback.js +217 -0
- package/agent-spine-plugin/src/lib/timeline-world-capture.js +233 -0
- package/agent-spine-plugin/src/lib/world-knowledge.js +59 -2
- package/agent-spine-plugin/src/lib/world-model.js +64 -9
- package/agent-spine-plugin/src/worker.js +13 -1
- package/bin/blun.js +43 -28
- package/bin/core-bootstrap.js +5 -4
- package/bin/king.js +43 -28
- package/bin/launcher-mode.js +1 -10
- package/bin/launcher-runtime.js +128 -295
- package/bin/managed-node.js +0 -0
- package/bin/managed-plugin-selection.cjs +0 -1
- package/bin/native-module-repair.js +0 -0
- package/bin/node-runtime.js +0 -0
- package/bin/node-version.js +0 -0
- package/bin/plugin-bootstrap.js +56 -120
- package/bin/private-paths.js +11 -34
- package/bin/standard-tools-bootstrap.js +34 -114
- package/bin/turn-thinking-policy.cjs +3 -11
- package/bin/update-copy.js +200 -0
- package/bin/update-lease.js +0 -0
- package/bin/update-notice.js +136 -289
- package/bin/verify-agent-behavior.cjs +122 -0
- package/bin/verify-agent-components.cjs +104 -0
- package/bin/verify-bundled-agent-sources.cjs +57 -0
- package/blun.mjs +143076 -135288
- package/bundled-agent-sources.json +701 -0
- package/package.json +12 -15
- package/standard-skills/translate-native/README.md +1293 -0
- package/standard-skills/translate-native/SKILL.md +172 -22
- package/standard-skills/translate-native/VERSION +1 -1
- package/standard-skills/translate-native/agents/openai.yaml +18 -0
- package/standard-skills/translate-native/assets/icon.svg +8 -0
- package/standard-skills/translate-native/docs/BLUN_CODE_INTEGRATION.md +76 -0
- package/standard-skills/translate-native/docs/PREMORTEM.md +489 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION.md +2035 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_API.md +1302 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_EVIDENCE_HTTP.md +136 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_HEALTH_HTTP.md +130 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_HTTP_PROVIDER.md +175 -0
- package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_RECEIPT_VERIFIER_HTTP.md +86 -0
- package/standard-skills/translate-native/integrations/AGENT_RULES.md +32 -0
- package/standard-skills/translate-native/integrations/adapters/blun-code-language-guard.js +514 -0
- package/standard-skills/translate-native/integrations/adapters/node-language-guard.js +230 -0
- package/standard-skills/translate-native/integrations/audit_log.py +327 -0
- package/standard-skills/translate-native/integrations/claude_language_hook.js +1536 -0
- package/standard-skills/translate-native/integrations/commercial_localization_profile.py +42 -0
- package/standard-skills/translate-native/integrations/delivery-policy.example.json +28 -0
- package/standard-skills/translate-native/integrations/enforced_delivery.py +543 -0
- package/standard-skills/translate-native/integrations/guard_service.py +435 -0
- package/standard-skills/translate-native/integrations/language_gateway.py +67 -0
- package/standard-skills/translate-native/integrations/mcp_auth_headers.py +198 -0
- package/standard-skills/translate-native/integrations/mcp_http_gateway.py +429 -0
- package/standard-skills/translate-native/integrations/non_language_html_entities.js +1485 -0
- package/standard-skills/translate-native/integrations/pre_output_guard.py +65 -0
- package/standard-skills/translate-native/integrations/task_router.py +101 -0
- package/standard-skills/translate-native/integrations/website_localization.py +401 -0
- package/standard-skills/translate-native/integrations/website_localization_api.py +581 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark.py +1885 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_campaign.py +1772 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_candidate.py +506 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_http.py +400 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_review_store.py +781 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_reviewer_http.py +500 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_runtime.py +1107 -0
- package/standard-skills/translate-native/integrations/website_localization_benchmark_suite.py +463 -0
- package/standard-skills/translate-native/integrations/website_localization_cms.py +2835 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_client.py +875 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_dispatch.py +805 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_http.py +588 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_lifecycle_monitor.py +991 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_receiver.py +1441 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_receiver_runtime.py +414 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_receiver_store.py +1073 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_removal_dispatch.py +865 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_client.py +583 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery.py +964 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_runtime.py +665 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_http.py +1153 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_runtime.py +675 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_source_service.py +1125 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification.py +674 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_http.py +444 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver.py +1469 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver_runtime.py +1142 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_processing_monitor.py +634 -0
- package/standard-skills/translate-native/integrations/website_localization_cms_terminal_receiver_client.py +804 -0
- package/standard-skills/translate-native/integrations/website_localization_deepl_baseline.py +922 -0
- package/standard-skills/translate-native/integrations/website_localization_evidence_http.py +482 -0
- package/standard-skills/translate-native/integrations/website_localization_health.py +1541 -0
- package/standard-skills/translate-native/integrations/website_localization_health_http.py +372 -0
- package/standard-skills/translate-native/integrations/website_localization_http_provider.py +297 -0
- package/standard-skills/translate-native/integrations/website_localization_native_reference_http.py +479 -0
- package/standard-skills/translate-native/integrations/website_localization_native_reference_intake.py +363 -0
- package/standard-skills/translate-native/integrations/website_localization_native_reference_queue.py +1449 -0
- package/standard-skills/translate-native/integrations/website_localization_native_reference_store.py +420 -0
- package/standard-skills/translate-native/integrations/website_localization_quality_profiles.py +235 -0
- package/standard-skills/translate-native/integrations/website_localization_queue.py +671 -0
- package/standard-skills/translate-native/integrations/website_localization_receipt_verifier_http.py +516 -0
- package/standard-skills/translate-native/integrations/website_localization_release.py +928 -0
- package/standard-skills/translate-native/integrations/website_localization_release_coordinator.py +1008 -0
- package/standard-skills/translate-native/integrations/website_localization_runner.py +276 -0
- package/standard-skills/translate-native/integrations/website_localization_runtime.py +862 -0
- package/standard-skills/translate-native/integrations/website_localization_service.py +350 -0
- package/standard-skills/translate-native/integrations/website_localization_supervisor.py +511 -0
- package/standard-skills/translate-native/integrations/website_localization_worker.py +663 -0
- package/standard-skills/translate-native/provenance.json +3 -4
- package/standard-skills/translate-native/references/commercial-localization.md +177 -0
- package/standard-skills/translate-native/scripts/blun_language_guard.py +7 -1
- package/standard-skills/translate-native/scripts/check_commercial_review.py +80 -0
- package/standard-skills/translate-native/scripts/commercial_localization_profile.py +333 -0
- package/standard-tools/language-guard/LICENSE +21 -0
- package/standard-tools/language-guard/VERSION +1 -0
- package/standard-tools/language-guard/blun_language_guard.py +7 -1
- package/standard-tools/language-guard/check_commercial_review.py +80 -0
- package/standard-tools/language-guard/commercial_localization_profile.py +333 -0
- package/standard-tools/language-guard/language_gateway.py +62 -0
- package/standard-tools/language-guard/pre_output_guard.py +64 -0
- package/standard-tools/language-guard/provenance.json +4 -11
- package/standard-tools/manifest.json +34 -11
- package/telegram-plugin/commands/access.md +2 -10
- package/telegram-plugin/dist/bridge.mjs +64041 -687
- package/telegram-plugin/dist/mcp-server.mjs +72810 -9027
- package/telegram-plugin/dist/noise.mjs +28 -63511
- package/agent-spine-plugin/CONTRIBUTING.md +0 -52
- package/agent-spine-plugin/SECURITY.md +0 -47
- package/agent-spine-plugin/docs/assignment-continuation.md +0 -48
- package/agent-spine-plugin/docs/releasing.md +0 -85
- package/agent-spine-plugin/docs/structured-completion.md +0 -67
- package/bin/abort-listener-policy.cjs +0 -43
- package/bin/active-steer-priority-policy.cjs +0 -24
- package/bin/agent-api-http-adapter.mjs +0 -446
- package/bin/agent-api-private-http-server.mjs +0 -288
- package/bin/agent-api-runtime.mjs +0 -252
- package/bin/agent-api-service-environment.mjs +0 -236
- package/bin/agent-api-service-host.mjs +0 -209
- package/bin/agent-api-service-process.mjs +0 -171
- package/bin/agent-api-session-registry.mjs +0 -428
- package/bin/agent-api-tool-broker.cjs +0 -248
- package/bin/agent-api-turn-controller.mjs +0 -461
- package/bin/agent-api-usage-journal.cjs +0 -259
- package/bin/agent-resume-snapshot.cjs +0 -241
- package/bin/agentspine-king-goal-inbox.mjs +0 -111
- package/bin/agentspine-king-goal-intake.mjs +0 -106
- package/bin/approval-rejection-stop.cjs +0 -15
- package/bin/assistant-message-offload-policy.cjs +0 -284
- package/bin/baseline-skill-performance-policy.cjs +0 -39
- package/bin/bash-search-scope-policy.cjs +0 -49
- package/bin/codebase-search-runtime.cjs +0 -23
- package/bin/cognitive-action-checkpoint.cjs +0 -1104
- package/bin/cognitive-attention-delivery.cjs +0 -76
- package/bin/cognitive-attention-policy.cjs +0 -143
- package/bin/cognitive-attention-runtime.cjs +0 -91
- package/bin/cognitive-context-projection.cjs +0 -73
- package/bin/cognitive-cross-portal-acceptance.cjs +0 -443
- package/bin/cognitive-effective-view.cjs +0 -77
- package/bin/cognitive-focus-projection.cjs +0 -206
- package/bin/cognitive-focus-scope.cjs +0 -37
- package/bin/cognitive-goal-autostart-policy.cjs +0 -72
- package/bin/cognitive-goal-time-trigger-controller.cjs +0 -146
- package/bin/cognitive-memory-adapter.cjs +0 -282
- package/bin/cognitive-memory-command.cjs +0 -293
- package/bin/cognitive-memory-provider.cjs +0 -92
- package/bin/cognitive-salience-policy.cjs +0 -159
- package/bin/cognitive-state-store.cjs +0 -508
- package/bin/cognitive-turn-lifecycle.cjs +0 -624
- package/bin/cognitive-work-focus.cjs +0 -180
- package/bin/compaction-history-archive.cjs +0 -166
- package/bin/compaction-history-startup.cjs +0 -50
- package/bin/compaction-model-policy.cjs +0 -31
- package/bin/compaction-stage-policy.cjs +0 -21
- package/bin/compaction-transaction-policy.cjs +0 -122
- package/bin/config-write-dedup-policy.cjs +0 -27
- package/bin/context-budget-ledger.cjs +0 -31
- package/bin/context-doctor-policy.cjs +0 -70
- package/bin/context-insight-policy.cjs +0 -36
- package/bin/context-performance-policy.cjs +0 -19
- package/bin/context-pressure-policy.cjs +0 -20
- package/bin/cron-run-output.cjs +0 -45
- package/bin/cron-run-store.cjs +0 -145
- package/bin/curiosity-scout-policy.cjs +0 -49
- package/bin/default-model-output-budget-policy.cjs +0 -28
- package/bin/durable-task-resume-policy.cjs +0 -130
- package/bin/durable-task-resume-runtime.cjs +0 -117
- package/bin/durable-task-resume-store.cjs +0 -88
- package/bin/editable-tool-approval-policy.cjs +0 -540
- package/bin/editable-tool-approval-runtime.cjs +0 -99
- package/bin/effective-system-prompt-cache-policy.cjs +0 -33
- package/bin/error-memory-performance-policy.cjs +0 -113
- package/bin/file-observation-policy.cjs +0 -133
- package/bin/foreground-output-capture-policy.cjs +0 -41
- package/bin/generated-source-health.cjs +0 -142
- package/bin/glob-pattern-policy.cjs +0 -13
- package/bin/goal-completion-evidence-policy.cjs +0 -120
- package/bin/grep-output-limit-policy.cjs +0 -39
- package/bin/historical-media-projection-policy.cjs +0 -48
- package/bin/history-offload-pressure-policy.cjs +0 -33
- package/bin/html-to-research-markdown.cjs +0 -147
- package/bin/identity-context-policy.cjs +0 -764
- package/bin/identity-journal-policy.cjs +0 -107
- package/bin/input-draft-persistence.cjs +0 -77
- package/bin/king-tui-function-contract.json +0 -33
- package/bin/launcher-restart-policy.cjs +0 -150
- package/bin/live-response-repetition-guard.cjs +0 -196
- package/bin/llm-config-log-dedup-policy.cjs +0 -76
- package/bin/loop-event-record-policy.cjs +0 -174
- package/bin/managed-context-startup-policy.cjs +0 -27
- package/bin/media-activity-layout-policy.cjs +0 -34
- package/bin/media-auto-retrieval-policy.cjs +0 -90
- package/bin/media-result-policy.cjs +0 -59
- package/bin/micro-compaction-policy.cjs +0 -145
- package/bin/mistake-relevance-policy.cjs +0 -319
- package/bin/model-retry-progress-policy.cjs +0 -46
- package/bin/native-large-file-io.cjs +0 -42
- package/bin/native-runtime-cache.cjs +0 -76
- package/bin/natural-presence-policy.cjs +0 -28
- package/bin/noninteractive-shell-env-policy.cjs +0 -19
- package/bin/observer-hooks.cjs +0 -14
- package/bin/outbound-claim-provenance.cjs +0 -150
- package/bin/oversized-context-offload-policy.cjs +0 -86
- package/bin/pending-media-policy.cjs +0 -182
- package/bin/pending-token-estimate-policy.cjs +0 -41
- package/bin/personal-memory-consent-policy.cjs +0 -72
- package/bin/personal-memory-performance-policy.cjs +0 -12
- package/bin/personality-choice-policy.cjs +0 -101
- package/bin/personality-memory-adapter.cjs +0 -379
- package/bin/personality-mode.cjs +0 -46
- package/bin/personality-setup-policy.cjs +0 -197
- package/bin/proactive-compaction-policy.cjs +0 -25
- package/bin/profile-identity-resolution.cjs +0 -136
- package/bin/profile-runtime.cjs +0 -318
- package/bin/profile-tool-exclusion-policy.cjs +0 -37
- package/bin/programmatic-context-isolation.cjs +0 -25
- package/bin/programmatic-tool-runtime.mjs +0 -627
- package/bin/provider-idle-timeout-policy.cjs +0 -14
- package/bin/provider-model-refresh-deadline.cjs +0 -53
- package/bin/provider-model-refresh-policy.cjs +0 -107
- package/bin/rate-limit-recovery-policy.cjs +0 -47
- package/bin/read-batch-policy.cjs +0 -32
- package/bin/read-continuation-policy.cjs +0 -59
- package/bin/recurring-cron-history-policy.cjs +0 -124
- package/bin/relationship-continuity-policy.cjs +0 -143
- package/bin/relationship-curiosity-policy.cjs +0 -107
- package/bin/relationship-learning-policy.cjs +0 -168
- package/bin/release-artifact-freeze-policy.cjs +0 -30
- package/bin/reload-plugin-bootstrap.cjs +0 -18
- package/bin/reload-queue-policy.cjs +0 -38
- package/bin/repeated-assistant-response-policy.cjs +0 -232
- package/bin/repeated-injection-projection.cjs +0 -107
- package/bin/repeated-user-message-projection.cjs +0 -8
- package/bin/research-page-result.cjs +0 -74
- package/bin/retry-checkpoint-policy.cjs +0 -13
- package/bin/runtime-exit-ledger.cjs +0 -144
- package/bin/scoped-cron-run-policy.cjs +0 -358
- package/bin/session-checkpoint-policy.cjs +0 -25
- package/bin/session-compaction-policy.cjs +0 -84
- package/bin/session-replay-policy.cjs +0 -20
- package/bin/session-replay-window-policy.cjs +0 -40
- package/bin/session-resume-checkpoint.cjs +0 -254
- package/bin/session-scrollback-archive.cjs +0 -229
- package/bin/skill-activation-performance-policy.cjs +0 -69
- package/bin/skill-listing-performance-policy.cjs +0 -92
- package/bin/soul-organization-policy.cjs +0 -78
- package/bin/soul-preservation-policy.cjs +0 -20
- package/bin/startup-preferences.cjs +0 -131
- package/bin/streaming-flush-performance-policy.cjs +0 -28
- package/bin/structured-agent-swarm-output.cjs +0 -325
- package/bin/structured-subagent-output.cjs +0 -252
- package/bin/subagent-context-fork-policy.cjs +0 -155
- package/bin/subagent-max-tokens-handoff-policy.cjs +0 -69
- package/bin/subagent-parent-responsiveness.cjs +0 -19
- package/bin/subagent-skill-policy.cjs +0 -206
- package/bin/subagent-timeout-policy.cjs +0 -182
- package/bin/subagent-tool-policy.cjs +0 -60
- package/bin/subagent-usage-rollup-policy.cjs +0 -29
- package/bin/system-prompt-context-policy.cjs +0 -124
- package/bin/system-prompt-token-cache-policy.cjs +0 -60
- package/bin/telegram-addressed-focus.cjs +0 -55
- package/bin/telegram-addressed-priority.cjs +0 -12
- package/bin/telegram-approval-relay.cjs +0 -290
- package/bin/telegram-bot-priority.cjs +0 -17
- package/bin/telegram-console-status-policy.cjs +0 -174
- package/bin/telegram-context-projection-policy.cjs +0 -141
- package/bin/telegram-delivery-lifecycle.cjs +0 -125
- package/bin/telegram-direct-focus-policy.cjs +0 -273
- package/bin/telegram-mcp-compatibility.cjs +0 -49
- package/bin/telegram-media-delivery-policy.cjs +0 -42
- package/bin/telegram-private-conversation-policy.cjs +0 -185
- package/bin/telegram-queue-handoff-policy.cjs +0 -73
- package/bin/telegram-remote-status-policy.cjs +0 -120
- package/bin/telegram-session-queue-runtime.mjs +0 -306
- package/bin/telegram-text-chunk-policy.cjs +0 -63
- package/bin/telegram-truncated-reply-policy.cjs +0 -37
- package/bin/telegram-urgent-policy.cjs +0 -45
- package/bin/telemetry-spool-policy.cjs +0 -57
- package/bin/thinking-activity-status-policy.cjs +0 -132
- package/bin/thinking-only-guard.cjs +0 -80
- package/bin/todo-list-turn-policy.cjs +0 -131
- package/bin/tool-call-loop-policy.cjs +0 -51
- package/bin/tool-file-persistence.cjs +0 -141
- package/bin/tool-result-offload-policy.cjs +0 -359
- package/bin/tool-result-offload-telemetry.cjs +0 -12
- package/bin/tool-schema-token-cache-policy.cjs +0 -41
- package/bin/tool-stream-preview-policy.cjs +0 -9
- package/bin/tui-functional-contract.cjs +0 -55
- package/bin/turn-tool-performance-policy.cjs +0 -486
- package/bin/usage-cache-efficiency-policy.cjs +0 -26
- package/bin/user-home-path-policy.cjs +0 -13
- package/bin/user-message-offload-policy.cjs +0 -103
- package/bin/user-prompt-hook-origin-policy.cjs +0 -34
- package/bin/user-tool-record-policy.cjs +0 -7
- package/bin/validated-learning-insight-policy.cjs +0 -58
- package/bin/validated-learning-outcome-trace.cjs +0 -107
- package/bin/validated-learning-performance-policy.cjs +0 -53
- package/bin/validated-learning-signal.cjs +0 -463
- package/bin/windows-bash-dialect-policy.cjs +0 -25
- package/bin/windows-node-crash-dump.cjs +0 -110
- package/bin/write-continuation-policy.cjs +0 -69
- package/codebase-index/README.md +0 -82
- package/codebase-index/codebase_index.py +0 -470
- package/standard-skills/agent-browser/SKILL.md +0 -19
- package/standard-skills/agent-browser/references/runtime.md +0 -8
- package/standard-skills/blun-session-inspector/SKILL.md +0 -41
- package/standard-skills/blun-session-inspector/scripts/inspect-session.cjs +0 -437
- package/standard-skills/design-taste-frontend/SKILL.md +0 -1206
- package/standard-skills/full-output-enforcement/SKILL.md +0 -49
- package/standard-skills/high-end-visual-design/SKILL.md +0 -98
- package/standard-skills/image-to-code/SKILL.md +0 -1228
- package/standard-skills/industrial-brutalist-ui/SKILL.md +0 -92
- package/standard-skills/minimalist-ui/SKILL.md +0 -85
- package/standard-skills/motion-design-taste/SKILL.md +0 -74
- package/standard-skills/playwright-testing/SKILL.md +0 -19
- package/standard-skills/playwright-testing/references/runtime.md +0 -7
- package/standard-skills/premortem/SKILL.md +0 -148
- package/standard-skills/redesign-existing-projects/SKILL.md +0 -178
- package/standard-skills/research-evidence/SKILL.md +0 -39
- package/standard-skills/research-evidence/references/evidence-format.md +0 -104
- package/standard-skills/research-evidence/scripts/evidence-collection.cjs +0 -260
- package/standard-skills/research-evidence/scripts/score-report.cjs +0 -130
- package/standard-skills/screenshot-lesen/SKILL.md +0 -52
- package/standard-skills/stitch-design-taste/DESIGN.md +0 -121
- package/standard-skills/stitch-design-taste/SKILL.md +0 -184
- package/standard-skills/telegram-channel/SKILL.md +0 -18
- package/standard-skills/telegram-channel/references/runtime.md +0 -7
- package/standard-skills/venture-flywheel/SKILL.md +0 -32
- package/standard-skills/venture-flywheel/identity/project-identity.cjs +0 -146
- package/standard-skills/venture-flywheel/policy/capability-engine.cjs +0 -114
- package/standard-skills/venture-flywheel/policy/repository-trust.cjs +0 -229
- package/standard-skills/venture-flywheel/references/BEISPIELE-phase0.md +0 -146
- package/standard-skills/venture-flywheel/references/CAPABILITY-MAP.md +0 -34
- package/standard-skills/venture-flywheel/references/SPEC-phase0-identity-trust.md +0 -77
- package/standard-skills/venture-flywheel/references/SPEC-phase0-state-events.md +0 -93
- package/standard-skills/venture-flywheel/schemas/capability-decision.schema.json +0 -13
- package/standard-skills/venture-flywheel/schemas/execution-event.schema.json +0 -44
- package/standard-skills/venture-flywheel/schemas/project-identity.schema.json +0 -32
- package/standard-skills/venture-flywheel/schemas/repository-trust.schema.json +0 -57
- package/standard-skills/venture-flywheel/schemas/run-transition.schema.json +0 -59
- package/standard-skills/venture-flywheel/state/execution-event.cjs +0 -191
- package/standard-skills/venture-flywheel/state/task-state-machine.cjs +0 -190
- package/standard-skills/web-lesen/SKILL.md +0 -73
- package/standard-skills/web-lesen/scripts/crawl_public.py +0 -379
- package/standard-skills/windows-mcp/SKILL.md +0 -19
- package/standard-skills/windows-mcp/references/runtime.md +0 -9
- package/telegram-plugin/DELIVERY.md +0 -36
- package/telegram-plugin/bin/telegram-approval-relay.cjs +0 -290
- package/telegram-plugin/bin/telegram-console-status-policy.cjs +0 -175
- package/telegram-plugin/bin/telegram-delivery-lifecycle.cjs +0 -125
- package/telegram-plugin/bin/telegram-direct-reply-policy.cjs +0 -48
- package/telegram-plugin/bin/telegram-launcher-status-queue.cjs +0 -122
- package/telegram-plugin/bin/telegram-private-conversation-policy.cjs +0 -186
- package/telegram-plugin/bin/telegram-remote-status-policy.cjs +0 -121
- package/telegram-plugin/bin/telegram-reply-parts.cjs +0 -149
- package/telegram-plugin/bin/telegram-text-chunk-policy.cjs +0 -63
- package/telegram-plugin/bin/telegram-typing-keepalive.cjs +0 -89
- package/telegram-plugin/compat/mcp-server-fa511cd1.mjs +0 -73825
- /package/{bin → scripts}/fix-node-pty-perms.js +0 -0
|
@@ -1,251 +1,112 @@
|
|
|
1
1
|
# Bounded session timeline and evidence recall
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
small, restart-safe index of redacted objective evidence, not a second
|
|
7
|
-
transcript.
|
|
3
|
+
AgentSpine indexes immutable host transcripts without copying them. Signed
|
|
4
|
+
sidecars contain bounded redacted evidence and opaque references, never text.
|
|
5
|
+
Recall is private, task-scoped, context-only, and grants no authority.
|
|
8
6
|
|
|
9
|
-
## Enrollment
|
|
7
|
+
## Enrollment and retrieval
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
the model.
|
|
17
|
-
|
|
18
|
-
The local owner may then activate that one snapshot explicitly:
|
|
9
|
+
Claude, Codex, and King use separate deny-by-default adapters. Verified
|
|
10
|
+
`UserPromptSubmit` issues a short-lived one-use receipt bound to source,
|
|
11
|
+
provider, session, user, tenant, project, task, optional goal, and derived
|
|
12
|
+
portal/thread route. Model values, partial routes, groups, and unknown visibility
|
|
13
|
+
cannot enroll.
|
|
19
14
|
|
|
20
15
|
```text
|
|
21
16
|
agentspine timeline-receipt --root /path/to/project
|
|
22
17
|
agentspine timeline-enroll --root /path/to/project --receipt asthr_… --confirm-local-timeline
|
|
23
18
|
```
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
never scans or indexes historic transcript content. It is context-only and
|
|
30
|
-
creates no identity, permission, delegation, tool access, approval, or policy
|
|
31
|
-
exception.
|
|
32
|
-
|
|
33
|
-
Every capture and retrieval checks the exact binding again. The profile and
|
|
34
|
-
provider-specific transcript root must be real non-symlinked directories; the source must be a
|
|
35
|
-
single-link regular non-symlinked file below that root. `groupId` must be
|
|
36
|
-
exactly `null`; groups and unknown visibility are excluded from enrollment,
|
|
37
|
-
capture, and recall. Another provider needs its own equivalent verified host
|
|
38
|
-
evidence and does not inherit Claude enrollment by name, transcript text, or
|
|
39
|
-
path convention.
|
|
40
|
-
|
|
41
|
-
If the enrolled transcript changes or grows, the old snapshot is unavailable.
|
|
42
|
-
There is deliberately no append or full-history fallback. A fresh host receipt
|
|
43
|
-
and a new local confirmation renew the immutable snapshot. If a torn local
|
|
44
|
-
enrollment state cannot be repaired, a local owner can discard only that
|
|
45
|
-
sidecar state:
|
|
46
|
-
|
|
47
|
-
```text
|
|
48
|
-
agentspine timeline-enrollment-recover --root /path/to/project --confirm-local-timeline-recovery
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Recovery retains no old source, receipt, or evidence and requires a fresh host
|
|
52
|
-
receipt before another enrollment.
|
|
53
|
-
|
|
54
|
-
## Bounded retrieval
|
|
55
|
-
|
|
56
|
-
Hooks do not scan, backfill, or search historic transcripts. They can expose a
|
|
57
|
-
small freshness/status hint and a continuation capsule only. A matching
|
|
58
|
-
`PreToolUse` guard may revalidate source metadata and a fixed ≤4 KiB prefix to
|
|
59
|
-
reject a changed snapshot; it never extracts history. The only historic reader
|
|
60
|
-
is a bound, on-demand MCP call:
|
|
20
|
+
Enrollment reads fixed metadata and at most 4 KiB. Each operation revalidates
|
|
21
|
+
source, root, provider, and scope; changed bytes invalidate the snapshot. No
|
|
22
|
+
append, broad scan, refresh, retry, or fallback exists. One-use `PreToolUse`
|
|
23
|
+
permits expose:
|
|
61
24
|
|
|
62
25
|
```text
|
|
63
26
|
session_timeline_index(maxBytes)
|
|
64
|
-
session_timeline_search(at | terms)
|
|
65
|
-
|
|
27
|
+
session_timeline_search(at | terms, includePriorSessions, includePriorProviders)
|
|
28
|
+
session_timeline_capture(eventId, at | terms, includePriorSessions, interpretation)
|
|
66
29
|
```
|
|
67
30
|
|
|
68
|
-
Indexing is serialized and
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
The
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
uncompressed native rollout below the verified Codex profile's `sessions`
|
|
151
|
-
directory. It never lists that directory or discovers neighboring sessions.
|
|
152
|
-
Before enrollment, a bounded first-line read (at most 64 KiB) validates the
|
|
153
|
-
`session_meta` record: native session identity, canonical project `cwd`, CLI
|
|
154
|
-
version syntax, and absent/legacy history mode. The per-session transport,
|
|
155
|
-
owner-confirmed enrollment and one-use PreToolUse invocation remain required.
|
|
156
|
-
A Codex lookup leaves native permission decisions to Codex; the lookup adds no
|
|
157
|
-
prompt or permission grant. King/BLUN cannot reuse this adapter through its
|
|
158
|
-
Codex-compatible instruction hierarchy.
|
|
159
|
-
|
|
160
|
-
Only native `response_item` tool outputs (`function_call_output`,
|
|
161
|
-
`custom_tool_call_output`, `mcp_tool_call_output`) become historical result
|
|
162
|
-
candidates. User and assistant messages do not. Results include timestamp,
|
|
163
|
-
content digest, stable session/message references, native `call_id`, and a
|
|
164
|
-
bounded original excerpt. They remain **untrusted historical context**, never
|
|
165
|
-
current test verification, completion evidence or a learning authorization.
|
|
166
|
-
Structured facts and corrections remain in the separate structured knowledge
|
|
167
|
-
view; raw transcripts are not copied there. Conflicting historical outcomes
|
|
168
|
-
are retained rather than combined into a new claim.
|
|
169
|
-
|
|
170
|
-
The search ranks the existing bounded index before opening one selected source.
|
|
171
|
-
Sources must match the same host, project, tenant, user and task; groups,
|
|
172
|
-
unregistered private files, symlink escapes and modified snapshots are excluded.
|
|
173
|
-
A source change makes the snapshot unavailable, including after restart. No
|
|
174
|
-
automatic enrollment refresh, receipt reset or retry follows. Missing history
|
|
175
|
-
must be stated honestly while ordinary authorized work remains possible.
|
|
176
|
-
|
|
177
|
-
Unsupported: compressed, paginated or inherited/forked history; unknown record
|
|
178
|
-
or explicit schema versions; automatic import of a real user's sessions.
|
|
179
|
-
`cli_version` is header provenance, not proof that every version of a
|
|
180
|
-
Codex installation is compatible. The supported structural contract is pinned
|
|
181
|
-
below. A changed host format requires a reviewed adapter and fresh synthetic
|
|
182
|
-
acceptance, not unchecked migration. No Otto/Fredrik live acceptance is implied.
|
|
183
|
-
|
|
184
|
-
### Primary source provenance
|
|
185
|
-
|
|
186
|
-
Inspected 2026-09-06: official [Codex hooks documentation](https://learn.chatgpt.com/docs/hooks)
|
|
187
|
-
provides `session_id` and optional `transcript_path`, and explicitly states that
|
|
188
|
-
the transcript format is not a stable interface. The adapter was independently
|
|
189
|
-
implemented against [openai/codex commit 6af345407d9c2a568da9d01b6c4b81a9e61495c0](https://github.com/openai/codex/tree/6af345407d9c2a568da9d01b6c4b81a9e61495c0),
|
|
190
|
-
Apache-2.0: `codex-rs/rollout/src/lib.rs`,
|
|
191
|
-
`codex-rs/history/src/rollout_payload.rs`, and the protocol definitions
|
|
192
|
-
`protocol.rs` / `models.rs`. That source workspace reports `0.0.0`; it is not an
|
|
193
|
-
installed release-version claim. External sources supplied format evidence
|
|
194
|
-
only; no implementation was copied or executed.
|
|
195
|
-
|
|
196
|
-
Synthetic acceptance exercises native hooks and restarted MCP processes:
|
|
197
|
-
session A stores a measured failure, session B retrieves its exact source after
|
|
198
|
-
compaction, replay/races admit only one invocation, and foreign scope, changed
|
|
199
|
-
sources, model claims, secret-bearing outputs and unknown formats yield no
|
|
200
|
-
verified historical result. Fixtures create their own profiles and sessions.
|
|
201
|
-
|
|
202
|
-
## King native agent-wire contract
|
|
203
|
-
|
|
204
|
-
The `king-agent-wire-jsonl/v1` adapter is separate from both Claude and Codex.
|
|
205
|
-
King may use the Codex-compatible `AGENTS.md` hierarchy for project rules, but
|
|
206
|
-
that does not turn its history into a Codex rollout. The verified King lifecycle
|
|
207
|
-
keeps the runtime host identity as `codex` while binding timeline records to the
|
|
208
|
-
distinct `king` provider.
|
|
209
|
-
|
|
210
|
-
King history is never discovered automatically. The trusted local launcher must
|
|
211
|
-
provide both `AGENTSPINE_KING_TIMELINE_SOURCE`, pointing to the current
|
|
212
|
-
`sessions/.../session_<id>/agents/main/wire.jsonl`, and
|
|
213
|
-
`AGENTSPINE_KING_WIRE_PROTOCOL_VERSION`, matching that file's metadata header.
|
|
214
|
-
The source must remain below the canonical non-symlinked `BLUN_HOME/sessions`
|
|
215
|
-
root. A prompt, model response, MCP argument, remembered fact, or filename alone
|
|
216
|
-
cannot create this mapping. Missing mappings leave history unavailable without
|
|
217
|
-
blocking ordinary host-authorized work.
|
|
218
|
-
|
|
219
|
-
Enrollment reads only the bounded first record. It requires the exact metadata
|
|
220
|
-
shape and configured `protocol_version`, a positive integer creation time, and
|
|
221
|
-
the current session directory. Indexing accepts only the reviewed King record
|
|
222
|
-
types and extracts objective evidence solely from
|
|
223
|
-
`context.append_loop_event` records whose event is `tool.result`. User and
|
|
224
|
-
assistant messages, model claims, unknown records, unknown schema versions, and
|
|
225
|
-
non-text tool outputs create no evidence card. The native `toolCallId` becomes
|
|
226
|
-
the stable message reference; the record time remains the source timestamp.
|
|
227
|
-
|
|
228
|
-
King keeps its own permission decisions. AgentSpine only binds a one-use,
|
|
229
|
-
context-only lookup to the current verified gateway, transport, source, and
|
|
230
|
-
scope. Restart and compaction reuse signed sidecar metadata, then revalidate the
|
|
231
|
-
unchanged original source before any selected line is opened. A protocol change,
|
|
232
|
-
source mutation, replay, foreign project or tenant, group context, or unknown
|
|
233
|
-
record makes recall unavailable and never triggers a retry or enrollment reset.
|
|
234
|
-
|
|
235
|
-
### Primary source provenance
|
|
236
|
-
|
|
237
|
-
Inspected 2026-09-06: [BLUN Code commit fbb97459a3fa2157f8bfea3d24931be63288ab11](https://github.com/Maykbiletti/blun-code/tree/fbb97459a3fa2157f8bfea3d24931be63288ab11),
|
|
238
|
-
application version `1.0.109`, MIT. Its public verification fixture locates the
|
|
239
|
-
main agent wire at `sessions/.../session_<id>/agents/main/wire.jsonl` and reads
|
|
240
|
-
`context.append_loop_event` / `tool.result`; the vendored King runtime type
|
|
241
|
-
surface identifies the reviewed record union and metadata fields. The vendored
|
|
242
|
-
`@blun/king-sdk` contract is version `0.12.1`, MIT. External files were treated
|
|
243
|
-
as untrusted format evidence; no implementation was copied or executed.
|
|
244
|
-
|
|
245
|
-
Synthetic repository acceptance proves A-to-B recall of one measured `FAIL
|
|
246
|
-
0/15` result after restart and compaction, with immutable source bytes and
|
|
247
|
-
stable session/message references. It also covers exact gateway binding,
|
|
248
|
-
wrong protocol, wrong path/scope/provider, replay/race, mutation, and unknown
|
|
249
|
-
records. This does not prove Fredrik's installed launcher supplies these two
|
|
250
|
-
protected mappings, that King enforces a returned block decision, or that a
|
|
251
|
-
live session passed. Those remain separate live-host checks.
|
|
31
|
+
Indexing is serialized and limited to 64 KiB–16 MiB. Search uses an exact UTC
|
|
32
|
+
window or two terms, opens ≤1 ranked source, verifies bounded lines,
|
|
33
|
+
returns at most eight cards, and never widens misses. Prior sessions require the
|
|
34
|
+
exact private route. Cross-provider recall additionally requires
|
|
35
|
+
`AGENTSPINE_TIMELINE_CROSS_PROVIDER=1` and both prior flags while retaining the
|
|
36
|
+
original provider enrollment.
|
|
37
|
+
|
|
38
|
+
Capture consumes a new permit and derives provenance from the reopened source.
|
|
39
|
+
Only allowlisted objective fields enter the existing world model. Direct stdio,
|
|
40
|
+
replay mutation, foreign/group scope, expiry, unsafe state, or changed bytes
|
|
41
|
+
writes nothing. Conflicts remain unresolved; duplicates survive restart.
|
|
42
|
+
|
|
43
|
+
## Natural user-message continuity (development)
|
|
44
|
+
|
|
45
|
+
Authenticated routes may retain 256 native user references without evicting
|
|
46
|
+
objective/strict-correction evidence; the combined cap is 4096. Text and derived
|
|
47
|
+
terms are not indexed. The technical `user message` query selects this lane.
|
|
48
|
+
|
|
49
|
+
Capture rechecks one single-line user message (maximum 2048 UTF-8 bytes), its
|
|
50
|
+
route, and checkpoint. The exact quote becomes an `uninterpreted-user-message`
|
|
51
|
+
assumption with provenance and target—not a fact, correction, completion,
|
|
52
|
+
supersession, permission, or action.
|
|
53
|
+
|
|
54
|
+
One active candidate may receive a source-bound
|
|
55
|
+
`agentspine.timeline-user-feedback-interpretation-request/v1` proposal. Two or
|
|
56
|
+
three same-task candidates accept only an
|
|
57
|
+
`agentspine.timeline-user-feedback-clarification-request/v2` bound to the full
|
|
58
|
+
sorted assertion set. Each candidate keeps its own provider, session, message,
|
|
59
|
+
source digest, message digest and timestamp. Each registered source is reopened
|
|
60
|
+
and rechecked within the capture gate; partial, reordered, changed,
|
|
61
|
+
foreign-scope, unregistered, or larger sets fail. Replay deduplicates and
|
|
62
|
+
competing proposals conflict.
|
|
63
|
+
|
|
64
|
+
Both private `model-suggestion` forms keep model/source provenance, target,
|
|
65
|
+
replaced next step, and `completionVerified:false`; neither mutates continuation
|
|
66
|
+
nor grants authority. Pre-answer recall carries them across restart/compaction.
|
|
67
|
+
Three candidates use lossless field/row encoding. King's
|
|
68
|
+
bounded form shares repeated values and prefixes, so all IDs, messages, times,
|
|
69
|
+
provider, session, and source digest reconstruct within the unchanged 1200-byte
|
|
70
|
+
host field.
|
|
71
|
+
|
|
72
|
+
An objective result may advance continuation only when the same private task
|
|
73
|
+
and route already contain one confirmed
|
|
74
|
+
`agentspine.timeline-continuation-outcome-contract/v1`. The contract fixes the
|
|
75
|
+
exact current step, test label, total, success count, and success state before
|
|
76
|
+
the event. Capture reopens the source, retains the raw measurement, and then
|
|
77
|
+
updates `lastVerifiedStep`; failure keeps the agreed step without retrying,
|
|
78
|
+
while success applies only the contract's explicit next step or terminal state.
|
|
79
|
+
Postdated, stale, conflicting, foreign, superseded, or model-suggested contracts
|
|
80
|
+
cannot advance work. A newer user correction wins because its step no longer
|
|
81
|
+
matches the old contract. Raw contradictory outcomes remain visible uncertainty.
|
|
82
|
+
|
|
83
|
+
The deterministic lane still requires a whole native line beginning
|
|
84
|
+
`Correction: next step:` or `Korrektur: nächster Schritt:` and changes only
|
|
85
|
+
`nextStep` on one same-thread active conflict-free continuation. Ordinary,
|
|
86
|
+
assistant, multiline, stale, unsafe, foreign, and group inputs fail.
|
|
87
|
+
|
|
88
|
+
Repository tests for Claude, Codex, and King are independent. Quotes,
|
|
89
|
+
hypotheticals, negations, old/foreign text, and completion claims remain context.
|
|
90
|
+
Acceptance still needs a genuinely new model session to recognize the job, name
|
|
91
|
+
its result file, apply a natural correction, and ask only on real ambiguity.
|
|
92
|
+
Technical checks do not prove semantics, repetition, tokens, or live behavior.
|
|
93
|
+
|
|
94
|
+
## Integrity and provider formats
|
|
95
|
+
|
|
96
|
+
Signed sidecar, head, and protected anchor detect state-only/mixed rollback. One
|
|
97
|
+
torn generation is lock-repairable; malformed, missing, altered, linked,
|
|
98
|
+
rerooted, racing, or signature-invalid state yields no cards. Detecting a fully
|
|
99
|
+
matching anchor restoration needs an external monotonic anchor. Failure means
|
|
100
|
+
unverified recall, not a work ban or retry loop.
|
|
101
|
+
|
|
102
|
+
`codex-rollout-jsonl/v1` accepts one enrolled uncompressed file below verified
|
|
103
|
+
Codex `sessions` and validates bounded `session_meta`; `king-agent-wire-jsonl/v1`
|
|
104
|
+
requires a protected source/protocol mapping. Unknown, inherited, compressed,
|
|
105
|
+
or changed formats fail closed. Only reviewed native tool results yield
|
|
106
|
+
objective cards; chat never does.
|
|
107
|
+
|
|
108
|
+
Format provenance was inspected on 2026-09-06 in [Codex hooks](https://learn.chatgpt.com/docs/hooks),
|
|
109
|
+
[Codex 6af3454](https://github.com/openai/codex/tree/6af345407d9c2a568da9d01b6c4b81a9e61495c0),
|
|
110
|
+
and [BLUN fbb97459](https://github.com/Maykbiletti/blun-code/tree/fbb97459a3fa2157f8bfea3d24931be63288ab11).
|
|
111
|
+
No source was copied/executed; live mapping, trust, blocking, model use, and
|
|
112
|
+
installation remain separate acceptance boundaries.
|
|
@@ -75,6 +75,31 @@ facts, preferences, decisions, or error lessons and keeps their source reference
|
|
|
75
75
|
Uncertain, stale, superseded, private, foreign, and terminal state is excluded.
|
|
76
76
|
No transcript or source is opened, and the view grants no authority.
|
|
77
77
|
|
|
78
|
+
## Authenticated portal and thread continuity
|
|
79
|
+
|
|
80
|
+
When the gateway starts a portal-bound task, it derives opaque `portalRef` and
|
|
81
|
+
`threadRef` values from the complete authenticated route. The MCP runtime, not
|
|
82
|
+
the model or tool arguments, attaches that pair to structured knowledge whose
|
|
83
|
+
subject is the exact current task. `SessionStart`, `PostCompact`,
|
|
84
|
+
`session_briefing`, and `world_context` then use the same pair. A continuation,
|
|
85
|
+
decision, correction, or error lesson about that task is visible only on that
|
|
86
|
+
route, even when another portal thread uses the same user, project, and task ID.
|
|
87
|
+
|
|
88
|
+
An unbound reader cannot see route-bound task knowledge. Conversely, an
|
|
89
|
+
authenticated portal task does not silently inherit older unbound task-local
|
|
90
|
+
knowledge. Historical records remain byte-valid and stored, but need an
|
|
91
|
+
explicitly reviewed migration rather than an inferred binding. Supersession
|
|
92
|
+
must keep subject, predicate, portal, and thread identical, so a correction in
|
|
93
|
+
one conversation cannot retire another conversation's state.
|
|
94
|
+
|
|
95
|
+
This narrower rule does not trap intentionally portable memory. General user
|
|
96
|
+
preferences and measured project-level lessons that are not assertions about
|
|
97
|
+
the current task retain their existing project/group/privacy scope and may be
|
|
98
|
+
reused across threads. Portal references are not MCP input fields, do not expose
|
|
99
|
+
raw route identifiers, and grant no retrieval, sending, tool, or execution
|
|
100
|
+
right. A host without the authenticated gateway pair gets no portal-bound task
|
|
101
|
+
context.
|
|
102
|
+
|
|
78
103
|
## Privacy and authority
|
|
79
104
|
|
|
80
105
|
Assertions use `private`, `shared`, or exact `group` privacy. A group read rejects private inclusion, sees only its exact group records plus shared records, and cannot observe another group's values. Project-scoped records are visible only in that exact project; unscoped records may follow the same installation across project turns when intentionally read from that root.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"PreToolUse": [
|
|
16
16
|
{
|
|
17
|
-
"matcher": "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__(?:plugin_agent-spine_agent-spine|agent-spine)__session_timeline_(?:index|search))$",
|
|
17
|
+
"matcher": "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__(?:plugin_agent-spine_agent-spine|agent-spine)__session_timeline_(?:index|search|capture))$",
|
|
18
18
|
"hooks": [{ "type": "command", "command": "node \"${PLUGIN_ROOT}/src/hook.js\"", "timeout": 15 }]
|
|
19
19
|
}
|
|
20
20
|
],
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
],
|
|
38
38
|
"PreToolUse": [
|
|
39
39
|
{
|
|
40
|
-
"matcher": "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__plugin_agent-spine_agent-spine__session_timeline_(?:index|search))$",
|
|
40
|
+
"matcher": "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__plugin_agent-spine_agent-spine__session_timeline_(?:index|search|capture))$",
|
|
41
41
|
"hooks": [
|
|
42
42
|
{
|
|
43
43
|
"type": "command",
|
|
@@ -19,15 +19,13 @@
|
|
|
19
19
|
"assets",
|
|
20
20
|
"bin",
|
|
21
21
|
"docs/acceptance.md",
|
|
22
|
-
"docs/
|
|
22
|
+
"docs/artifact-evaluation.md",
|
|
23
23
|
"docs/host-integration.md",
|
|
24
24
|
"docs/preflight-recall.md",
|
|
25
25
|
"docs/preservation-contract.md",
|
|
26
26
|
"docs/quality-gates.md",
|
|
27
|
-
"docs/releasing.md",
|
|
28
27
|
"docs/session-timeline.md",
|
|
29
28
|
"docs/source-roots.md",
|
|
30
|
-
"docs/structured-completion.md",
|
|
31
29
|
"docs/world-model.md",
|
|
32
30
|
"hooks",
|
|
33
31
|
"scripts",
|
|
@@ -5,8 +5,8 @@ import { isAbsolute, relative, resolve } from "node:path";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { installedHostEnvironment } from "./check-install-hook.js";
|
|
7
7
|
|
|
8
|
-
const TIMELINE_PRE_TOOL_MATCHER = "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__plugin_agent-spine_agent-spine__session_timeline_(?:index|search))$";
|
|
9
|
-
const BLUN_TIMELINE_PRE_TOOL_MATCHER = "^(?:Edit|Write|apply_patch|Bash|PowerShell|exec_command|
|
|
8
|
+
const TIMELINE_PRE_TOOL_MATCHER = "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__plugin_agent-spine_agent-spine__session_timeline_(?:index|search|capture))$";
|
|
9
|
+
const BLUN_TIMELINE_PRE_TOOL_MATCHER = "^(?:Edit|Write|apply_patch|Bash|PowerShell|exec_command|mcp__agent-spine__session_timeline_(?:index|search|capture))$";
|
|
10
10
|
|
|
11
11
|
function assert(condition, message) {
|
|
12
12
|
if (!condition) throw new Error(message);
|
|
@@ -168,7 +168,7 @@ export async function checkHosts(root = process.cwd()) {
|
|
|
168
168
|
required: [...commonEvents, "InstructionsLoaded"], commandRoot: "CLAUDE_PLUGIN_ROOT"
|
|
169
169
|
});
|
|
170
170
|
const codexHookInventory = validateHooks(root, codexHooks, { required: commonEvents, commandRoot: "PLUGIN_ROOT",
|
|
171
|
-
matcher: "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__(?:plugin_agent-spine_agent-spine|agent-spine)__session_timeline_(?:index|search))$" });
|
|
171
|
+
matcher: "^(?:Edit|Write|apply_patch|Bash|PowerShell|mcp__(?:plugin_agent-spine_agent-spine|agent-spine)__session_timeline_(?:index|search|capture))$" });
|
|
172
172
|
const blunHookInventory = validateBlunHooks(root, blunManifest.hooks);
|
|
173
173
|
const registrations = await Promise.all([
|
|
174
174
|
initializeServer({ label: "blun", root, variable: "BLUN_PLUGIN_ROOT", server: blunManifest.mcpServers["agent-spine"], version: pkg.version }),
|
|
@@ -5,9 +5,10 @@ import { resolve } from "node:path";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
|
|
7
7
|
const SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
const
|
|
8
|
+
// Includes the bounded user-feedback candidate path; this is not semantic acceptance.
|
|
9
|
+
// Measured code growth before documentation: 1874 packed / 7830 unpacked bytes.
|
|
10
|
+
const MAX_PACKED_BYTES = 544 * 1024;
|
|
11
|
+
const MAX_UNPACKED_BYTES = 2430 * 1024;
|
|
11
12
|
const REQUIRED_PACKAGE_FILES = [
|
|
12
13
|
"blun.plugin.json", ".claude-plugin/plugin.json", ".codex-plugin/plugin.json", ".mcp.json",
|
|
13
14
|
"CHANGELOG.md", "LICENSE", "README.md", "bin/agentspine.js", "bin/agentspine-mcp.js",
|
|
@@ -15,8 +16,12 @@ const REQUIRED_PACKAGE_FILES = [
|
|
|
15
16
|
"src/lib/codex-skill-installation.js", "src/cli-host.js",
|
|
16
17
|
"docs/acceptance.md", "docs/source-roots.md", "docs/preflight-recall.md", "docs/preservation-contract.md",
|
|
17
18
|
"docs/world-model.md", "docs/session-timeline.md", "scripts/run-acceptance.js", "skills/agent-spine/SKILL.md",
|
|
19
|
+
"docs/artifact-evaluation.md", "src/lib/learning-artifact-evaluator.js",
|
|
20
|
+
"src/lib/gateway-group-response.js", "src/lib/channel-continuity.js",
|
|
18
21
|
"src/index.js", "src/mcp.js", "src/lib/mcp-world-tools.js", "src/lib/world-model.js", "src/lib/session-timeline.js",
|
|
19
22
|
"src/lib/session-timeline-auth.js", "src/lib/session-timeline-results.js", "src/lib/session-timeline-state.js", "src/lib/mcp-timeline-tools.js", "src/worker.js",
|
|
23
|
+
"src/lib/timeline-world-capture.js",
|
|
24
|
+
"src/lib/timeline-user-feedback.js",
|
|
20
25
|
"hooks/hooks.json", "hooks/codex.json", "hooks/version.json"
|
|
21
26
|
];
|
|
22
27
|
const FORBIDDEN_PACKAGE_PATHS = [
|
|
@@ -72,8 +77,8 @@ function validatePackageReport(report, version) {
|
|
|
72
77
|
assert(typeof item.filename === "string" && item.filename.endsWith(`-${version}.tgz`), "npm pack filename is not versioned correctly");
|
|
73
78
|
assert(typeof item.integrity === "string" && item.integrity.startsWith("sha512-"), "npm pack did not report SHA-512 integrity");
|
|
74
79
|
assert(Number.isInteger(item.entryCount) && item.entryCount > 0 && item.entryCount <= 500, "npm package file count is outside the release limit");
|
|
75
|
-
assert(Number.isInteger(item.size) && item.size > 0 && item.size <= MAX_PACKED_BYTES, "npm package exceeds the
|
|
76
|
-
assert(Number.isInteger(item.unpackedSize) && item.unpackedSize > 0 && item.unpackedSize <= MAX_UNPACKED_BYTES, "npm package exceeds the
|
|
80
|
+
assert(Number.isInteger(item.size) && item.size > 0 && item.size <= MAX_PACKED_BYTES, "npm package exceeds the 544 KiB packed release limit");
|
|
81
|
+
assert(Number.isInteger(item.unpackedSize) && item.unpackedSize > 0 && item.unpackedSize <= MAX_UNPACKED_BYTES, "npm package exceeds the 2430 KiB unpacked release limit");
|
|
77
82
|
const paths = (item.files || []).map((file) => file.path);
|
|
78
83
|
assert(paths.length === new Set(paths).size, "npm package contains duplicate paths");
|
|
79
84
|
for (const path of REQUIRED_PACKAGE_FILES) assert(paths.includes(path), `npm package is missing required file: ${path}`);
|
|
@@ -7,9 +7,12 @@ import { githubErrorCommand } from "./github-actions.js";
|
|
|
7
7
|
const CHECKS = [
|
|
8
8
|
{ title: "Syntax check", script: "lint" },
|
|
9
9
|
{ title: "Line budget", script: "line-budget" },
|
|
10
|
-
{ title: "Hermetic test suite", script: "test" },
|
|
11
10
|
{ title: "Host manifest check", script: "host:check" },
|
|
11
|
+
// Exercise the copied-bundle hook deadlines before the hermetic suite creates
|
|
12
|
+
// hundreds of short-lived Windows processes. The deadlines and assertions stay
|
|
13
|
+
// unchanged; this removes residual runner load from the installed-host probe.
|
|
12
14
|
{ title: "Installed bundle check", script: "host:install-check" },
|
|
15
|
+
{ title: "Hermetic test suite", script: "test" },
|
|
13
16
|
{ title: "Runtime smoke test", script: "smoke" },
|
|
14
17
|
{ title: "Self audit", script: "audit:self" }
|
|
15
18
|
];
|
|
@@ -9,7 +9,11 @@ import { configuredTestTimeout, runBoundedProcess } from "./hermetic-process.js"
|
|
|
9
9
|
const root = resolve(fileURLToPath(new URL("..", import.meta.url)));
|
|
10
10
|
const base = await mkdtemp(join(tmpdir(), "agentspine-hermetic-tests-"));
|
|
11
11
|
const testFiles = (await readdir(join(root, "test"))).filter((name) => name.endsWith(".test.js")).sort();
|
|
12
|
-
|
|
12
|
+
// Windows process creation and antivirus-backed temporary I/O contend sharply
|
|
13
|
+
// when several hermetic files each spawn MCP children. Preserve the real child
|
|
14
|
+
// deadlines by reducing runner load there, rather than relaxing any deadline.
|
|
15
|
+
const concurrencyCeiling = process.platform === "win32" ? 2 : 4;
|
|
16
|
+
const concurrency = Math.max(1, Math.min(concurrencyCeiling, cpus().length));
|
|
13
17
|
const testTimeoutMs = configuredTestTimeout();
|
|
14
18
|
const slowTestTimeouts = new Map([
|
|
15
19
|
["indexed-memory.test.js", 300_000]
|
|
@@ -51,11 +55,33 @@ async function runOne(file, mode, index) {
|
|
|
51
55
|
async function runMode(mode) {
|
|
52
56
|
const indexed = testFiles.map((file, index) => ({ file, index }));
|
|
53
57
|
const results = [];
|
|
54
|
-
// Installation copies complete bundles
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
const
|
|
58
|
+
// Installation copies complete bundles, while the MCP and route-lifecycle tests
|
|
59
|
+
// start real children with fixed deadlines and host-origin enrollment attests a
|
|
60
|
+
// live source plus signed state. Keep those probes off the shared Windows I/O pool.
|
|
61
|
+
// Both profiles still run them once, with unchanged assertions and limits.
|
|
62
|
+
const isolatedNames = new Set([
|
|
63
|
+
"assignment-continuation-boundaries.test.js",
|
|
64
|
+
"assignment-continuation.test.js",
|
|
65
|
+
"codex-history.test.js",
|
|
66
|
+
"hook-artifact-guards.test.js",
|
|
67
|
+
"hook.test.js",
|
|
68
|
+
"cross-provider-history.test.js",
|
|
69
|
+
"delivery-completion.test.js",
|
|
70
|
+
"hook-briefing-use.test.js",
|
|
71
|
+
"king-history.test.js",
|
|
72
|
+
"lesson-recall.test.js",
|
|
73
|
+
"mcp-bounded-preflight.test.js",
|
|
74
|
+
"mcp-bounded-recovery.test.js",
|
|
75
|
+
"package.test.js",
|
|
76
|
+
"portal-thread-continuity.test.js",
|
|
77
|
+
"mcp.test.js",
|
|
78
|
+
"owned-file-lock.test.js",
|
|
79
|
+
"session-timeline-host-origin.test.js",
|
|
80
|
+
"session-timeline-invocation.test.js",
|
|
81
|
+
"timeline-natural-feedback.test.js"
|
|
82
|
+
]);
|
|
83
|
+
const isolated = indexed.filter(item => isolatedNames.has(item.file));
|
|
84
|
+
const queue = indexed.filter(item => !isolatedNames.has(item.file));
|
|
59
85
|
for (const item of isolated) results.push(await runOne(item.file, mode, item.index));
|
|
60
86
|
async function worker() { while (queue.length) { const item = queue.shift(); results.push(await runOne(item.file, mode, item.index)); } }
|
|
61
87
|
await Promise.all(Array.from({ length: concurrency }, () => worker()));
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { addLearningEvidence, beginLearningRevalidation, configureLearning, deleteLearning, evaluateLearning, learningContext, learningOutcomeStatus, loadLearning, proposeLearning, purgeStaleLearningApplications, purgeStaleLearningMeasurements, recordLearningMeasurement, recordLearningOutcome, registerLearningEvaluation, registerLearningEvaluator, renewLearningValidation, revokeLearningEvaluator, reviewLearning, revokeLearningApplication, revokeLearningDelivery, revokeLearningEvaluation, revokeLearningEvidence, revokeLearningMeasurement, revokeLearningOutcome, revokeLearningTrialFailure, revokeLearningValidation, revokeLearningEvidenceSourceAttestation, rollbackLearning } from "./lib/learning.js";
|
|
2
2
|
import { booleanFlag, evaluatorRootsFlag, hasLearningScope, learningScope, output } from "./cli-common.js";
|
|
3
|
+
import { artifactEvaluationPlan, measureLearningArtifacts } from "./lib/learning-artifact-evaluator.js";
|
|
3
4
|
|
|
4
5
|
export const learningCommands = new Set([
|
|
6
|
+
"learn-artifact-plan",
|
|
7
|
+
"learn-artifact-measure",
|
|
5
8
|
"learn-propose",
|
|
6
9
|
"learn-evidence",
|
|
7
10
|
"learn-evidence-revoke",
|
|
@@ -32,6 +35,18 @@ export const learningCommands = new Set([
|
|
|
32
35
|
]);
|
|
33
36
|
|
|
34
37
|
export async function runLearningCommand({ command, flags, positional, json }) {
|
|
38
|
+
if (command === "learn-artifact-plan" || command === "learn-artifact-measure") {
|
|
39
|
+
const text = flags.checks;
|
|
40
|
+
if (typeof text !== "string" || Buffer.byteLength(text) > 16384) {
|
|
41
|
+
throw new Error("--checks must contain a bounded artifact-checks JSON specification");
|
|
42
|
+
}
|
|
43
|
+
const spec = JSON.parse(text);
|
|
44
|
+
if (command === "learn-artifact-plan") return output(artifactEvaluationPlan(spec), json);
|
|
45
|
+
return output(await measureLearningArtifacts({ root: flags.root || process.cwd(), spec,
|
|
46
|
+
id: positional[0], learningId: flags.learning, evaluationId: flags.evaluation,
|
|
47
|
+
phase: flags.phase, scope: learningScope(flags), evaluatorId: flags.evaluator, runId: flags.run,
|
|
48
|
+
confirmLocalMeasurement: booleanFlag(flags["confirm-local-measurement"]) }), json);
|
|
49
|
+
}
|
|
35
50
|
if (command === "learn-propose") {
|
|
36
51
|
return output(await proposeLearning({
|
|
37
52
|
root: flags.root || process.cwd(), id: positional[0], kind: flags.kind,
|
|
@@ -50,6 +50,8 @@ Usage:
|
|
|
50
50
|
agentspine learn-trial-failure-revoke <trial-failure-id> --reason-code clock-invalid|host-invalid|receipt-invalid|scope-invalid|duplicate|other --reason text --confirm-local-trial-failure-revocation
|
|
51
51
|
agentspine learn-revalidation-start <learning-id> --confirm-local-validation
|
|
52
52
|
agentspine learn-revalidate <learning-id> --measurements id,id --applications id,id --deliveries id,id --confirm-local-validation
|
|
53
|
+
agentspine learn-artifact-plan --checks JSON [--json]
|
|
54
|
+
agentspine learn-artifact-measure <id> --root path --checks JSON --learning id --evaluation id --phase before|after --evaluator id --run id --persona id --user id --tenant id --project id [--task id] [--group id] --confirm-local-measurement [--json]
|
|
53
55
|
agentspine learn-measurement <id> --learning id --evaluation id --phase before|after --metric name --direction higher|lower --value 0..1 --measurement objective|user-feedback|model-suggestion --evaluator id --run id --source-digest sha256 --dataset-digest sha256 --case-count n --confirm-local-measurement
|
|
54
56
|
agentspine learn-measurement-revoke <measurement-id> --reason-code source-invalid|evaluator-invalid|protocol-invalid|duplicate|other --reason text --confirm-local-measurement-revocation
|
|
55
57
|
agentspine learn-application-revoke <application-id> --reason-code preflight-invalid|scope-invalid|projection-invalid|duplicate|other --reason text --confirm-local-application-revocation
|