@ouro.bot/cli 0.1.0-alpha.83 → 0.1.0-alpha.831
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/LICENSE +21 -0
- package/README.md +154 -23
- package/RepairGuide.ouro/agent.json +5 -0
- package/RepairGuide.ouro/psyche/IDENTITY.md +19 -0
- package/RepairGuide.ouro/psyche/SOUL.md +55 -0
- package/RepairGuide.ouro/skills/diagnose-broken-remote.md +63 -0
- package/RepairGuide.ouro/skills/diagnose-stacked-typed-issues.md +35 -0
- package/RepairGuide.ouro/skills/diagnose-sync-blocked.md +54 -0
- package/RepairGuide.ouro/skills/diagnose-vault-expired.md +60 -0
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +4 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +2 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
- package/assets/bluebubbles-host +264 -0
- package/assets/sanctuary-host-launcher.sh +16 -0
- package/changelog.json +5308 -16
- package/deploy/unraid/Dockerfile +54 -0
- package/deploy/unraid/README.txt +2983 -0
- package/deploy/unraid/audit-container-spec.sh +4 -0
- package/deploy/unraid/container-runtime.json +1 -0
- package/deploy/unraid/docker-man-template-transaction.mjs +711 -0
- package/deploy/unraid/docker-man-template-xml.cjs +105 -0
- package/deploy/unraid/migrate-sanctuary-bundle.mjs +60 -0
- package/deploy/unraid/ouro-events/bootstrap-spool.sh +92 -0
- package/deploy/unraid/ouro-events/emit-event.mjs +310 -0
- package/deploy/unraid/ouro-events/emit-usenet-event.sh +54 -0
- package/deploy/unraid/ouro-events/install-usenet-guard.sh +435 -0
- package/deploy/unraid/ouro-events/usenet-health.sh +176 -0
- package/deploy/unraid/sanctuary-acceptance-adapter.sh +43 -0
- package/deploy/unraid/sanctuary-acceptance-contract.json +198 -0
- package/deploy/unraid/sanctuary-acceptance-harness.sh +23 -0
- package/deploy/unraid/sanctuary-authority-installation.json +36 -0
- package/deploy/unraid/sanctuary-authority-service.sh +30 -0
- package/deploy/unraid/sanctuary-deployment-target.mjs +710 -0
- package/deploy/unraid/sanctuary-safe-rename.py +24 -0
- package/deploy/unraid/sanctuary-unit16-host-broker.mjs +2084 -0
- package/deploy/unraid/sanctuary-unit16-run.sh +560 -0
- package/deploy/unraid/sanctuary-unit18-target-audit.sh +27 -0
- package/deploy/unraid/sanctuary.ouro/agent.json +66 -0
- package/deploy/unraid/sanctuary.ouro/arc/README.md +3 -0
- package/deploy/unraid/sanctuary.ouro/bundle-meta.json +5 -0
- package/deploy/unraid/sanctuary.ouro/habits/sanctuary-health.md +8 -0
- package/deploy/unraid/sanctuary.ouro/mcp/media-mcp.mjs +795 -0
- package/deploy/unraid/sanctuary.ouro/provider-readiness.json +11 -0
- package/deploy/unraid/sanctuary.ouro/psyche/ASPIRATIONS.md +5 -0
- package/deploy/unraid/sanctuary.ouro/psyche/IDENTITY.md +5 -0
- package/deploy/unraid/sanctuary.ouro/psyche/LORE.md +15 -0
- package/deploy/unraid/sanctuary.ouro/psyche/SOUL.md +25 -0
- package/deploy/unraid/sanctuary.ouro/psyche/TACIT.md +15 -0
- package/deploy/unraid/sanctuary.ouro/state/policy/steward.json +7 -0
- package/deploy/unraid/sanctuary.ouro/tool-profiles.json +135 -0
- package/deploy/unraid/sanctuary.xml +28 -0
- package/dist/a2a/card.js +57 -0
- package/dist/a2a/client.js +180 -0
- package/dist/a2a/config.js +50 -0
- package/dist/a2a/delegation-stores.js +56 -0
- package/dist/a2a/did-resolution.js +93 -0
- package/dist/a2a/identity.js +170 -0
- package/dist/a2a/inbound-share.js +107 -0
- package/dist/a2a/mission-result-wire.js +196 -0
- package/dist/a2a/onboarding.js +115 -0
- package/dist/a2a/pin-store.js +132 -0
- package/dist/a2a/seen-ledger.js +120 -0
- package/dist/a2a/server.js +604 -0
- package/dist/a2a/task-store.js +69 -0
- package/dist/a2a/transport.js +45 -0
- package/dist/a2a/types.js +3 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +360 -0
- package/dist/arc/episodes.js +118 -0
- package/dist/arc/evolution.js +490 -0
- package/dist/arc/flight-recorder.js +1034 -0
- package/dist/arc/intentions.js +134 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +386 -0
- package/dist/arc/packets.js +336 -0
- package/dist/arc/presence.js +185 -0
- package/dist/arc/task-lifecycle.js +57 -0
- package/dist/commerce/store.js +755 -0
- package/dist/commerce/types.js +3 -0
- package/dist/heart/active-work.js +798 -40
- package/dist/heart/agent-entry.js +252 -3
- package/dist/heart/approval-files.js +113 -0
- package/dist/heart/approval-store.js +960 -0
- package/dist/heart/attachments/image-normalize.js +194 -0
- package/dist/heart/attachments/materialize.js +97 -0
- package/dist/heart/attachments/originals.js +88 -0
- package/dist/heart/attachments/render.js +29 -0
- package/dist/heart/attachments/sources/bluebubbles.js +156 -0
- package/dist/heart/attachments/sources/cli-local-file.js +78 -0
- package/dist/heart/attachments/sources/index.js +18 -0
- package/dist/heart/attachments/sources/telegram.js +71 -0
- package/dist/heart/attachments/store.js +132 -0
- package/dist/heart/attachments/types.js +93 -0
- package/dist/heart/auth/auth-flow.js +495 -0
- package/dist/heart/autonomy-budget.js +478 -0
- package/dist/heart/awaiting/await-alert.js +148 -0
- package/dist/heart/awaiting/await-expiry.js +143 -0
- package/dist/heart/awaiting/await-loader.js +91 -0
- package/dist/heart/awaiting/await-parser.js +149 -0
- package/dist/heart/awaiting/await-runtime-state.js +111 -0
- package/dist/heart/awaiting/await-scheduler.js +382 -0
- package/dist/heart/background-operations.js +281 -0
- package/dist/heart/bridges/manager.js +137 -17
- package/dist/heart/bridges/store.js +14 -2
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +44 -18
- package/dist/heart/config-registry.js +331 -0
- package/dist/heart/config.js +174 -131
- package/dist/heart/context-loss-gauntlet.js +387 -0
- package/dist/heart/context-loss-sentinel.js +1157 -0
- package/dist/heart/core.js +2169 -581
- package/dist/heart/cross-chat-delivery.js +9 -22
- package/dist/heart/daemon/agent-config-check.js +451 -0
- package/dist/heart/daemon/agent-discovery.js +185 -3
- package/dist/heart/daemon/agent-service.js +542 -0
- package/dist/heart/daemon/agentic-repair.js +547 -0
- package/dist/heart/daemon/await-private-wake.js +59 -0
- package/dist/heart/daemon/bluebubbles-cli-integration.js +71 -0
- package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
- package/dist/heart/daemon/bluebubbles-host-protocol.js +433 -0
- package/dist/heart/daemon/bluebubbles-host.js +273 -0
- package/dist/heart/daemon/boot-sync-probe.js +197 -0
- package/dist/heart/daemon/cadence.js +180 -0
- package/dist/heart/daemon/cli-defaults.js +854 -0
- package/dist/heart/daemon/cli-desk.js +322 -0
- package/dist/heart/daemon/cli-exec.js +8822 -0
- package/dist/heart/daemon/cli-help.js +716 -0
- package/dist/heart/daemon/cli-parse.js +2771 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +777 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/connect-bay.js +323 -0
- package/dist/heart/daemon/container-credential-bootstrap.js +273 -0
- package/dist/heart/daemon/container-healthcheck.js +112 -0
- package/dist/heart/daemon/container-runtime.js +97 -0
- package/dist/heart/daemon/container-spec-auditor-main.js +171 -0
- package/dist/heart/daemon/container-spec-auditor.js +229 -0
- package/dist/heart/daemon/daemon-bootstrap-startup.js +115 -0
- package/dist/heart/daemon/daemon-cli.js +29 -2349
- package/dist/heart/daemon/daemon-entry.js +930 -11
- package/dist/heart/daemon/daemon-health.js +186 -0
- package/dist/heart/daemon/daemon-rollup.js +57 -0
- package/dist/heart/daemon/daemon-runtime-sync.js +88 -13
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +2084 -105
- package/dist/heart/daemon/dns-workflow.js +394 -0
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +1755 -0
- package/dist/heart/daemon/freshness.js +345 -0
- package/dist/heart/daemon/habit-private-wake.js +61 -0
- package/dist/heart/daemon/health-monitor.js +142 -11
- package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
- package/dist/heart/daemon/hooks/bundle-meta.js +135 -1
- package/dist/heart/daemon/http-health-probe.js +80 -0
- package/dist/heart/daemon/human-command-screens.js +234 -0
- package/dist/heart/daemon/human-readiness.js +114 -0
- package/dist/heart/daemon/inner-status.js +78 -0
- package/dist/heart/daemon/interactive-repair.js +394 -0
- package/dist/heart/daemon/launchd.js +37 -8
- package/dist/heart/daemon/log-tailer.js +79 -10
- package/dist/heart/daemon/logs-prune.js +132 -0
- package/dist/heart/daemon/mcp-canary.js +524 -0
- package/dist/heart/daemon/message-router.js +65 -5
- package/dist/heart/daemon/migrate-to-desk.js +848 -0
- package/dist/heart/daemon/os-cron-deps.js +135 -0
- package/dist/heart/daemon/os-cron.js +22 -14
- package/dist/heart/daemon/ouro-bot-entry.js +4 -2
- package/dist/heart/daemon/ouro-entry.js +3 -1
- package/dist/heart/daemon/plugin-cli.js +432 -0
- package/dist/heart/daemon/process-manager.js +733 -61
- package/dist/heart/daemon/provider-discovery.js +137 -0
- package/dist/heart/daemon/provider-ping-progress.js +83 -0
- package/dist/heart/daemon/prunable-bundle.js +144 -0
- package/dist/heart/daemon/pulse.js +511 -0
- package/dist/heart/daemon/readiness-repair.js +365 -0
- package/dist/heart/daemon/run-hooks.js +2 -0
- package/dist/heart/daemon/runtime-logging.js +47 -14
- package/dist/heart/daemon/runtime-metadata.js +2 -30
- package/dist/heart/daemon/runtime-mode.js +13 -2
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sanctuary-acceptance-adapter.js +2654 -0
- package/dist/heart/daemon/sanctuary-acceptance-harness.js +1830 -0
- package/dist/heart/daemon/sanctuary-acceptance-marker.js +267 -0
- package/dist/heart/daemon/sanctuary-acceptance-scenarios.js +955 -0
- package/dist/heart/daemon/sanctuary-authority-codec.js +86 -0
- package/dist/heart/daemon/sanctuary-authority-epoch.js +256 -0
- package/dist/heart/daemon/sanctuary-authority-installation.js +140 -0
- package/dist/heart/daemon/sanctuary-authority-ledger.js +241 -0
- package/dist/heart/daemon/sanctuary-authority-root-lifecycle.js +819 -0
- package/dist/heart/daemon/sanctuary-authority-vault-migration.js +79 -0
- package/dist/heart/daemon/sanctuary-bundle-migration.js +729 -0
- package/dist/heart/daemon/sanctuary-host-authority.js +1008 -0
- package/dist/heart/daemon/sanctuary-host-detached-supervisor.js +494 -0
- package/dist/heart/daemon/sanctuary-host-executor.js +670 -0
- package/dist/heart/daemon/sanctuary-host-linux-kernel.js +334 -0
- package/dist/heart/daemon/sanctuary-host-supervisor-entry.js +207 -0
- package/dist/heart/daemon/sanctuary-host-supervisor.js +95 -0
- package/dist/heart/daemon/sanctuary-package-management.js +103 -0
- package/dist/heart/daemon/sanctuary-scheduler-liveness.js +227 -0
- package/dist/heart/daemon/sanctuary-scheduler-origin.js +132 -0
- package/dist/heart/daemon/sanctuary-telegram-authority-entry.js +445 -0
- package/dist/heart/daemon/sanctuary-telegram-authority-gateway.js +585 -0
- package/dist/heart/daemon/sanctuary-telegram-authority-service.js +630 -0
- package/dist/heart/daemon/sense-manager.js +699 -48
- package/dist/heart/daemon/session-id-resolver.js +131 -0
- package/dist/heart/daemon/skill-management-installer.js +1 -1
- package/dist/heart/daemon/socket-client.js +180 -12
- package/dist/heart/daemon/stale-bundle-prune.js +113 -0
- package/dist/heart/daemon/startup-tui.js +339 -0
- package/dist/heart/daemon/supercronic-supervisor.js +282 -0
- package/dist/heart/daemon/task-scheduler.js +117 -39
- package/dist/heart/daemon/terminal-ui.js +499 -0
- package/dist/heart/daemon/thoughts.js +138 -54
- package/dist/heart/daemon/up-progress.js +366 -0
- package/dist/heart/daemon/vault-items.js +56 -0
- package/dist/heart/delegation.js +1 -4
- package/dist/heart/external-events/router.js +1430 -0
- package/dist/heart/frontend-approval-runtime.js +506 -0
- package/dist/heart/frontend-journal.js +215 -0
- package/dist/heart/frontend-session-service.js +237 -0
- package/dist/heart/frontend-socket-client.js +164 -0
- package/dist/heart/frontend-socket.js +400 -0
- package/dist/heart/habits/habit-cancel.js +810 -0
- package/dist/heart/habits/habit-lifecycle.js +1327 -0
- package/dist/heart/habits/habit-migration.js +194 -0
- package/dist/heart/habits/habit-parser.js +278 -0
- package/dist/heart/habits/habit-runtime-state.js +93 -0
- package/dist/heart/habits/habit-scheduler.js +653 -0
- package/dist/heart/habits/habit-session-summary.js +318 -0
- package/dist/heart/habits/habit-session.js +636 -0
- package/dist/heart/{daemon → hatch}/hatch-flow.js +55 -62
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
- package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
- package/dist/heart/{daemon → hatch}/specialist-tools.js +53 -18
- package/dist/heart/identity.js +196 -59
- package/dist/heart/kept-notes.js +289 -0
- package/dist/heart/kicks.js +1 -1
- package/dist/heart/machine-identity.js +161 -0
- package/dist/heart/mail-import-discovery.js +356 -0
- package/dist/heart/mailbox/mailbox-http-hooks.js +98 -0
- package/dist/heart/mailbox/mailbox-http-response.js +7 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +398 -0
- package/dist/heart/mailbox/mailbox-http-static.js +103 -0
- package/dist/heart/mailbox/mailbox-http-transport.js +129 -0
- package/dist/heart/mailbox/mailbox-http.js +99 -0
- package/dist/heart/mailbox/mailbox-read.js +39 -0
- package/dist/heart/mailbox/mailbox-types.js +27 -0
- package/dist/heart/mailbox/mailbox-view.js +197 -0
- package/dist/heart/mailbox/readers/agent-machine.js +428 -0
- package/dist/heart/mailbox/readers/continuity-readers.js +329 -0
- package/dist/heart/mailbox/readers/mail.js +375 -0
- package/dist/heart/mailbox/readers/runtime-readers.js +823 -0
- package/dist/heart/mailbox/readers/sessions.js +231 -0
- package/dist/heart/mailbox/readers/shared.js +111 -0
- package/dist/heart/mcp/mcp-server.js +696 -0
- package/dist/heart/migrate-config.js +100 -0
- package/dist/heart/model-capabilities.js +11 -0
- package/dist/heart/orientation-frame.js +345 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/primitives.js +1 -1
- package/dist/heart/private-runtime/decision-renderer.js +158 -0
- package/dist/heart/private-runtime/index.js +18 -0
- package/dist/heart/private-runtime/ledger.js +221 -0
- package/dist/heart/private-runtime/policy.js +252 -0
- package/dist/heart/private-runtime/types.js +2 -0
- package/dist/heart/progress-story.js +1 -1
- package/dist/heart/provider-attempt.js +137 -0
- package/dist/heart/provider-binding-resolver.js +273 -0
- package/dist/heart/provider-credentials.js +449 -0
- package/dist/heart/provider-failover.js +311 -0
- package/dist/heart/provider-models.js +96 -0
- package/dist/heart/provider-ping.js +265 -0
- package/dist/heart/provider-readiness-cache.js +119 -0
- package/dist/heart/provider-visibility.js +188 -0
- package/dist/heart/providers/anthropic-token.js +131 -0
- package/dist/heart/providers/anthropic.js +173 -60
- package/dist/heart/providers/azure.js +23 -11
- package/dist/heart/providers/error-classification.js +127 -0
- package/dist/heart/providers/github-copilot.js +34 -38
- package/dist/heart/providers/minimax-vlm.js +189 -0
- package/dist/heart/providers/minimax.js +26 -8
- package/dist/heart/providers/openai-codex-token.js +349 -0
- package/dist/heart/providers/openai-codex.js +55 -40
- package/dist/heart/providers/openai-compatible.js +177 -0
- package/dist/heart/run-ledger.js +247 -0
- package/dist/heart/runtime-capability-check.js +170 -0
- package/dist/heart/runtime-credentials.js +607 -0
- package/dist/heart/runtime-cwd.js +87 -0
- package/dist/heart/sense-truth.js +22 -4
- package/dist/heart/session-activity.js +92 -24
- package/dist/heart/session-events.js +1504 -0
- package/dist/heart/session-playback-cli-main.js +5 -0
- package/dist/heart/session-playback-cli.js +36 -0
- package/dist/heart/session-playback.js +231 -0
- package/dist/heart/session-redaction-repair-cli-main.js +31 -0
- package/dist/heart/session-redaction-repair.js +552 -0
- package/dist/heart/session-stats-cli-main.js +5 -0
- package/dist/heart/session-stats.js +183 -0
- package/dist/heart/session-transcript.js +133 -0
- package/dist/heart/start-of-turn-packet.js +372 -0
- package/dist/heart/steward-policy.js +618 -0
- package/dist/heart/streaming.js +604 -207
- package/dist/heart/structured-output.js +196 -0
- package/dist/heart/sync-classification.js +176 -0
- package/dist/heart/sync.js +449 -0
- package/dist/heart/target-resolution.js +11 -7
- package/dist/heart/tempo.js +93 -0
- package/dist/heart/temporal-view.js +41 -0
- package/dist/heart/timeouts.js +101 -0
- package/dist/heart/tool-activity-callbacks.js +59 -0
- package/dist/heart/tool-approval.js +382 -0
- package/dist/heart/tool-description.js +155 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +482 -0
- package/dist/heart/turn-execution-lease.js +30 -0
- package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
- package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
- package/dist/heart/versioning/ouro-path-installer.js +432 -0
- package/dist/heart/versioning/ouro-recovery-launcher.js +76 -0
- package/dist/heart/versioning/ouro-version-manager.js +409 -0
- package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
- package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
- package/dist/heart/versioning/update-hooks.js +154 -0
- package/dist/heart/versioning/version-intent.js +114 -0
- package/dist/heart/work-card.js +380 -0
- package/dist/mailbox-ui/assets/index-Cyv4mw3Y.js +1 -0
- package/dist/mailbox-ui/assets/index-Du_9G9WO.css +1 -0
- package/dist/mailbox-ui/assets/vendor-CcN1XpQ9.js +61 -0
- package/dist/mailbox-ui/index.html +16 -0
- package/dist/mailroom/attention.js +167 -0
- package/dist/mailroom/autonomy.js +209 -0
- package/dist/mailroom/blob-store.js +889 -0
- package/dist/mailroom/body-cache.js +61 -0
- package/dist/mailroom/cache-sync-cli.js +58 -0
- package/dist/mailroom/core.js +803 -0
- package/dist/mailroom/entry.js +160 -0
- package/dist/mailroom/file-store.js +568 -0
- package/dist/mailroom/hosted-cache-sync.js +384 -0
- package/dist/mailroom/mbox-import.js +393 -0
- package/dist/mailroom/migration.js +164 -0
- package/dist/mailroom/outbound.js +380 -0
- package/dist/mailroom/policy.js +263 -0
- package/dist/mailroom/reader.js +292 -0
- package/dist/mailroom/search-cache.js +513 -0
- package/dist/mailroom/search-relevance.js +319 -0
- package/dist/mailroom/smtp-ingress.js +176 -0
- package/dist/mailroom/source-state.js +176 -0
- package/dist/mailroom/thread.js +109 -0
- package/dist/mailroom/travel-extract.js +89 -0
- package/dist/mind/bundle-manifest.js +24 -2
- package/dist/mind/context.js +309 -111
- package/dist/mind/desk-section.js +362 -0
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +68 -77
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/{associative-recall.js → note-search.js} +47 -58
- package/dist/mind/obligation-steering.js +199 -3
- package/dist/mind/pending.js +36 -10
- package/dist/mind/prompt-budget.js +479 -0
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +1050 -189
- package/dist/mind/provenance-trust.js +26 -0
- package/dist/mind/record-paths.js +312 -0
- package/dist/mind/scrutiny.js +173 -0
- package/dist/mind/session-transaction.js +564 -0
- package/dist/nerves/cli-logging.js +7 -1
- package/dist/nerves/coverage/audit-rules.js +15 -6
- package/dist/nerves/coverage/audit.js +28 -2
- package/dist/nerves/coverage/cli.js +1 -1
- package/dist/nerves/coverage/contract.js +5 -5
- package/dist/nerves/coverage/file-completeness.js +139 -5
- package/dist/nerves/coverage/run-artifacts.js +55 -35
- package/dist/nerves/coverage/source-scanner.js +4 -4
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +293 -9
- package/dist/nerves/observation.js +20 -0
- package/dist/nerves/redact.js +79 -0
- package/dist/nerves/review/cli-main.js +5 -0
- package/dist/nerves/review/cli.js +156 -0
- package/dist/nerves/review/core.js +159 -0
- package/dist/nerves/runtime.js +17 -1
- package/dist/repertoire/ado-client.js +15 -56
- package/dist/repertoire/ado-semantic.js +16 -10
- package/dist/repertoire/api-client.js +97 -0
- package/dist/repertoire/bitwarden-store.js +1045 -0
- package/dist/repertoire/bundle-templates.js +71 -0
- package/dist/repertoire/bw-installer.js +180 -0
- package/dist/repertoire/coding/codex-jsonl.js +64 -0
- package/dist/repertoire/coding/context-pack.js +331 -0
- package/dist/repertoire/coding/feedback.js +174 -32
- package/dist/repertoire/coding/index.js +15 -3
- package/dist/repertoire/coding/manager.js +159 -10
- package/dist/repertoire/coding/spawner.js +58 -11
- package/dist/repertoire/coding/tools.js +221 -15
- package/dist/repertoire/coding/workbench-client.js +272 -0
- package/dist/repertoire/coding/workbench-manager.js +346 -0
- package/dist/repertoire/commerce-errors.js +109 -0
- package/dist/repertoire/commerce-self-test.js +156 -0
- package/dist/repertoire/credential-access.js +178 -0
- package/dist/repertoire/desk/classifier.js +362 -0
- package/dist/repertoire/duffel-client.js +185 -0
- package/dist/repertoire/github-client.js +14 -55
- package/dist/repertoire/graph-client.js +11 -52
- package/dist/repertoire/guardrails.js +811 -18
- package/dist/repertoire/mcp-client.js +44 -3
- package/dist/repertoire/mcp-manager.js +427 -139
- package/dist/repertoire/mcp-tools.js +124 -0
- package/dist/repertoire/plugin-mcp.js +175 -0
- package/dist/repertoire/plugins.js +253 -0
- package/dist/repertoire/relationship-authorization.js +322 -0
- package/dist/repertoire/shell-sessions.js +134 -0
- package/dist/repertoire/skills.js +48 -4
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tool-arguments.js +170 -0
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-a2a.js +699 -0
- package/dist/repertoire/tools-attachments.js +322 -0
- package/dist/repertoire/tools-awaiting.js +575 -0
- package/dist/repertoire/tools-base.js +77 -1138
- package/dist/repertoire/tools-bluebubbles.js +2 -0
- package/dist/repertoire/tools-bridge.js +144 -0
- package/dist/repertoire/tools-bundle.js +993 -0
- package/dist/repertoire/tools-commerce.js +253 -0
- package/dist/repertoire/tools-config.js +186 -0
- package/dist/repertoire/tools-continuity.js +575 -0
- package/dist/repertoire/tools-credential.js +383 -0
- package/dist/repertoire/tools-evolution.js +527 -0
- package/dist/repertoire/tools-files.js +344 -0
- package/dist/repertoire/tools-flight.js +290 -0
- package/dist/repertoire/tools-flow.js +119 -0
- package/dist/repertoire/tools-github.js +3 -8
- package/dist/repertoire/tools-habits.js +103 -0
- package/dist/repertoire/tools-mail.js +1828 -0
- package/dist/repertoire/tools-notes.js +485 -0
- package/dist/repertoire/tools-obligations.js +182 -0
- package/dist/repertoire/tools-orientation.js +31 -0
- package/dist/repertoire/tools-record.js +482 -0
- package/dist/repertoire/tools-rsvp.js +139 -0
- package/dist/repertoire/tools-runtime.js +150 -0
- package/dist/repertoire/tools-sanctuary-host.js +202 -0
- package/dist/repertoire/tools-session.js +1133 -0
- package/dist/repertoire/tools-shell.js +149 -0
- package/dist/repertoire/tools-steward-policy.js +119 -0
- package/dist/repertoire/tools-stripe.js +224 -0
- package/dist/repertoire/tools-surface.js +369 -0
- package/dist/repertoire/tools-teams.js +12 -39
- package/dist/repertoire/tools-telegram-contacts.js +37 -0
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-trip.js +982 -0
- package/dist/repertoire/tools-unraid.js +531 -0
- package/dist/repertoire/tools-user-profile.js +146 -0
- package/dist/repertoire/tools-vault.js +40 -0
- package/dist/repertoire/tools-voice.js +145 -0
- package/dist/repertoire/tools.js +494 -148
- package/dist/repertoire/travel-api-client.js +360 -0
- package/dist/repertoire/unraid-client.js +155 -0
- package/dist/repertoire/unraid-restart.js +339 -0
- package/dist/repertoire/user-profile.js +131 -0
- package/dist/repertoire/vault-setup.js +246 -0
- package/dist/repertoire/vault-unlock.js +628 -0
- package/dist/rsvp/aisleplanner-client.js +354 -0
- package/dist/rsvp/cli.js +926 -0
- package/dist/rsvp/config.js +327 -0
- package/dist/rsvp/cutover.js +433 -0
- package/dist/rsvp/diagnostics.js +232 -0
- package/dist/rsvp/diff-renderer.js +176 -0
- package/dist/rsvp/habit-policy.js +110 -0
- package/dist/rsvp/habit-stage.js +123 -0
- package/dist/rsvp/incident-bundle.js +97 -0
- package/dist/rsvp/migration.js +204 -0
- package/dist/rsvp/native-habit-runner.js +630 -0
- package/dist/rsvp/outbound-state.js +628 -0
- package/dist/rsvp/query.js +118 -0
- package/dist/rsvp/replay.js +233 -0
- package/dist/rsvp/snapshot.js +232 -0
- package/dist/rsvp/spend-ledger.js +175 -0
- package/dist/scripts/claude-code-hook.js +41 -0
- package/dist/scripts/claude-code-stop-hook.js +47 -0
- package/dist/senses/a2a-entry.js +115 -0
- package/dist/senses/acp-server.js +386 -0
- package/dist/senses/attention-queue.js +186 -0
- package/dist/senses/await-turn-message.js +58 -0
- package/dist/senses/bluebubbles/active-turns.js +216 -0
- package/dist/senses/bluebubbles/attachment-cache.js +53 -0
- package/dist/senses/bluebubbles/attachment-download.js +137 -0
- package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +355 -40
- package/dist/senses/bluebubbles/context-packet.js +207 -0
- package/dist/senses/bluebubbles/context-smoke.js +144 -0
- package/dist/senses/bluebubbles/entry.js +90 -0
- package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +21 -3
- package/dist/senses/bluebubbles/index.js +3841 -0
- package/dist/senses/bluebubbles/latest-turn.js +311 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -71
- package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +159 -28
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +24 -13
- package/dist/senses/bluebubbles/outbound-state.js +308 -0
- package/dist/senses/bluebubbles/processed-log.js +133 -0
- package/dist/senses/bluebubbles/reaction-policy.js +47 -0
- package/dist/senses/bluebubbles/replay.js +284 -0
- package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
- package/dist/senses/bluebubbles/semantic-receipts.js +1986 -0
- package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
- package/dist/senses/bluebubbles/webhook-registration.js +228 -0
- package/dist/senses/bluebubbles-meta-guard.js +39 -0
- package/dist/senses/cli/bracketed-paste.js +82 -0
- package/dist/senses/cli/image-paste.js +287 -0
- package/dist/senses/cli/image-ref-navigation.js +75 -0
- package/dist/senses/cli/ink-app.js +156 -0
- package/dist/senses/cli/inline-diff.js +64 -0
- package/dist/senses/cli/input-keys.js +174 -0
- package/dist/senses/cli/kill-ring.js +86 -0
- package/dist/senses/cli/message-list.js +51 -0
- package/dist/senses/cli/ouro-tui.js +607 -0
- package/dist/senses/cli/spinner-imperative.js +135 -0
- package/dist/senses/cli/spinner.js +101 -0
- package/dist/senses/cli/status-line.js +60 -0
- package/dist/senses/cli/streaming-markdown.js +526 -0
- package/dist/senses/cli/tool-display.js +85 -0
- package/dist/senses/cli/tool-render.js +85 -0
- package/dist/senses/cli/tui-store.js +241 -0
- package/dist/senses/cli/virtual-list.js +35 -0
- package/dist/senses/cli-entry.js +60 -8
- package/dist/senses/cli.js +604 -320
- package/dist/senses/commands.js +66 -3
- package/dist/senses/context-packet-ledger.js +371 -0
- package/dist/senses/context-packets.js +154 -0
- package/dist/senses/habit-lifecycle-guard.js +24 -0
- package/dist/senses/habit-turn-message.js +160 -0
- package/dist/senses/ingress-evidence.js +2 -0
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +524 -0
- package/dist/senses/pipeline.js +1115 -204
- package/dist/senses/private-runtime-worker.js +859 -0
- package/dist/senses/private-runtime.js +1517 -0
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/root-host-approval-port.js +345 -0
- package/dist/senses/root-host-approval-runtime.js +393 -0
- package/dist/senses/sanctuary-authority-resident.js +102 -0
- package/dist/senses/sanctuary-download-credit-presentation.js +31 -0
- package/dist/senses/sanctuary-full-visibility-contract.js +302 -0
- package/dist/senses/sanctuary-grounding.js +118 -0
- package/dist/senses/sanctuary-health-acceptance-probe-entry.js +12 -0
- package/dist/senses/sanctuary-health-acceptance-probe.js +774 -0
- package/dist/senses/sanctuary-health-runner.js +100 -0
- package/dist/senses/sanctuary-health.js +408 -0
- package/dist/senses/sanctuary-install-state-contract.js +126 -0
- package/dist/senses/sanctuary-interactive-control.js +410 -0
- package/dist/senses/sanctuary-media-catalog-contract.js +297 -0
- package/dist/senses/sanctuary-media-optimization.js +514 -0
- package/dist/senses/sanctuary-runtime.js +340 -0
- package/dist/senses/sanctuary-sab.js +85 -0
- package/dist/senses/sanctuary-storage-optimization-contract.js +32 -0
- package/dist/senses/shared-turn.js +772 -0
- package/dist/senses/surface-tool.js +109 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +519 -218
- package/dist/senses/telegram-admission.js +718 -0
- package/dist/senses/telegram-approval-runtime.js +793 -0
- package/dist/senses/telegram-attachments.js +186 -0
- package/dist/senses/telegram-audit-ledger.js +220 -0
- package/dist/senses/telegram-authority-transport.js +231 -0
- package/dist/senses/telegram-client.js +1749 -0
- package/dist/senses/telegram-effect-adapter.js +896 -0
- package/dist/senses/telegram-entry.js +83 -0
- package/dist/senses/telegram.js +2324 -0
- package/dist/senses/trust-gate.js +104 -9
- package/dist/senses/voice/audio-playback.js +237 -0
- package/dist/senses/voice/audio-routing.js +119 -0
- package/dist/senses/voice/elevenlabs.js +202 -0
- package/dist/senses/voice/floor-control.js +431 -0
- package/dist/senses/voice/floor-controller.js +115 -0
- package/dist/senses/voice/golden-path.js +116 -0
- package/dist/senses/voice/index.js +29 -0
- package/dist/senses/voice/meeting.js +113 -0
- package/dist/senses/voice/outbound.js +190 -0
- package/dist/senses/voice/phone.js +33 -0
- package/dist/senses/voice/playback.js +139 -0
- package/dist/senses/voice/realtime-eval.js +496 -0
- package/dist/senses/voice/realtime-trace.js +531 -0
- package/dist/senses/voice/transcript.js +70 -0
- package/dist/senses/voice/turn.js +191 -0
- package/dist/senses/voice/twilio-phone-runtime.js +807 -0
- package/dist/senses/voice/twilio-phone.js +5031 -0
- package/dist/senses/voice/types.js +2 -0
- package/dist/senses/voice/whisper.js +161 -0
- package/dist/senses/voice-entry.js +81 -0
- package/dist/senses/voice-realtime-eval-command.js +99 -0
- package/dist/senses/voice-realtime-eval-entry.js +21 -0
- package/dist/senses/voice-twilio-entry.js +87 -0
- package/dist/trips/core.js +138 -0
- package/dist/trips/store.js +265 -0
- package/dist/util/frontmatter.js +69 -0
- package/npm-shrinkwrap.json +8138 -0
- package/package.json +72 -13
- package/skills/agent-commerce.md +113 -0
- package/skills/browser-navigation.md +117 -0
- package/skills/commerce-setup-guide.md +116 -0
- package/skills/commerce-setup.md +84 -0
- package/skills/configure-dev-tools.md +99 -0
- package/skills/travel-planning.md +138 -0
- package/dist/heart/daemon/auth-flow.js +0 -430
- package/dist/heart/daemon/ouro-path-installer.js +0 -260
- package/dist/heart/daemon/ouro-version-manager.js +0 -171
- package/dist/heart/daemon/update-hooks.js +0 -138
- package/dist/heart/obligations.js +0 -191
- package/dist/heart/safe-workspace.js +0 -228
- package/dist/heart/session-recall.js +0 -116
- package/dist/mind/friends/channel.js +0 -84
- package/dist/mind/friends/group-context.js +0 -144
- package/dist/mind/friends/resolver.js +0 -84
- package/dist/mind/friends/store-file.js +0 -190
- package/dist/mind/friends/store.js +0 -4
- package/dist/mind/friends/tokens.js +0 -26
- package/dist/mind/friends/trust-explanation.js +0 -74
- package/dist/mind/friends/types.js +0 -29
- package/dist/repertoire/tasks/board.js +0 -134
- package/dist/repertoire/tasks/index.js +0 -224
- package/dist/repertoire/tasks/lifecycle.js +0 -80
- package/dist/repertoire/tasks/middleware.js +0 -65
- package/dist/repertoire/tasks/parser.js +0 -173
- package/dist/repertoire/tasks/scanner.js +0 -132
- package/dist/repertoire/tasks/transitions.js +0 -144
- package/dist/senses/bluebubbles-entry.js +0 -13
- package/dist/senses/bluebubbles.js +0 -1181
- package/dist/senses/debug-activity.js +0 -154
- package/dist/senses/inner-dialog-worker.js +0 -90
- package/dist/senses/inner-dialog.js +0 -525
- package/subagents/README.md +0 -7
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
- /package/dist/{repertoire/tasks/types.js → heart/attachments/sources/adapter.js} +0 -0
- /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
- /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
- /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
- /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
|
@@ -12,11 +12,11 @@ exports.REQUIRED_ENVELOPE_FIELDS = [
|
|
|
12
12
|
"meta",
|
|
13
13
|
];
|
|
14
14
|
exports.SENSITIVE_PATTERNS = [
|
|
15
|
-
/\btoken\s*[:=]/i,
|
|
16
|
-
/\bapi[_-]?key\b/i,
|
|
17
|
-
/\bpassword\b/i,
|
|
18
|
-
/\bsecret\b/i,
|
|
19
|
-
/\bauthorization\b/i,
|
|
15
|
+
/\btoken\b["']?\s*[:=]/i,
|
|
16
|
+
/\bapi[_-]?key\b["']?\s*[:=]/i,
|
|
17
|
+
/\bpassword\b["']?\s*[:=]/i,
|
|
18
|
+
/\bsecret\b["']?\s*[:=]/i,
|
|
19
|
+
/\bauthorization\b["']?\s*[:=]/i,
|
|
20
20
|
];
|
|
21
21
|
function eventKey(component, event) {
|
|
22
22
|
return `${component}:${event}`;
|
|
@@ -10,24 +10,158 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.isTypeOnlyFile = isTypeOnlyFile;
|
|
11
11
|
exports.checkFileCompleteness = checkFileCompleteness;
|
|
12
12
|
/**
|
|
13
|
-
* Determines if a source file is type-only
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Determines if a source file is type-only or a pure assembly/re-export file.
|
|
14
|
+
* Exempt files contain no runtime behavior requiring independent observability.
|
|
15
|
+
*
|
|
16
|
+
* Exempt patterns:
|
|
17
|
+
* - Files with only type/interface/enum declarations
|
|
18
|
+
* - `const ... as const` declarations (frozen compile-time values)
|
|
19
|
+
* - Files whose only executable code is const array spreads (assembly/composition)
|
|
20
|
+
* - Files whose only executable code is re-exports
|
|
17
21
|
*/
|
|
18
22
|
function isTypeOnlyFile(source) {
|
|
19
23
|
const lines = source.split("\n");
|
|
20
24
|
for (const line of lines) {
|
|
21
25
|
const trimmed = line.trim();
|
|
26
|
+
/* v8 ignore start -- regex branches: functionally tested in file-completeness.test.ts @preserve */
|
|
22
27
|
// Skip lines that are const+as-const (type-equivalent frozen values)
|
|
23
28
|
if (/\bconst\s/.test(trimmed) && /\bas\s+const\b/.test(trimmed))
|
|
24
29
|
continue;
|
|
30
|
+
// Skip const declarations that are pure data (arrays, objects, maps, sets)
|
|
31
|
+
if (/\bconst\s+\w+[\s:][^=]*=\s*[\[{]/.test(trimmed))
|
|
32
|
+
continue;
|
|
33
|
+
if (/\bconst\s+\w+[\s:][^=]*=\s*\w+\.map\(/.test(trimmed))
|
|
34
|
+
continue;
|
|
35
|
+
if (/^export\s+const\s+\w+[\s:][^=]*=\s*[\[{]/.test(trimmed))
|
|
36
|
+
continue;
|
|
37
|
+
if (/^export\s+const\s+\w+[\s:][^=]*=\s*\w+\.map\(/.test(trimmed))
|
|
38
|
+
continue;
|
|
39
|
+
if (/\bconst\s+\w+[\s:][^=]*=\s*new\s+(Set|Map)\b/.test(trimmed))
|
|
40
|
+
continue;
|
|
25
41
|
// Check for executable code markers
|
|
26
42
|
if (/\b(function|class|const|let|var)\s/.test(trimmed))
|
|
27
43
|
return false;
|
|
44
|
+
/* v8 ignore stop */
|
|
28
45
|
}
|
|
29
46
|
return true;
|
|
30
47
|
}
|
|
48
|
+
// Sub-modules dispatched through a centralized pattern where the router
|
|
49
|
+
// handles all observability events. These files don't need independent
|
|
50
|
+
// emitNervesEvent calls.
|
|
51
|
+
const DISPATCH_EXEMPT_PATTERNS = [
|
|
52
|
+
"repertoire/tools-files",
|
|
53
|
+
"repertoire/tools-shell",
|
|
54
|
+
"repertoire/tools-notes",
|
|
55
|
+
"repertoire/tools-bridge",
|
|
56
|
+
"repertoire/tools-session",
|
|
57
|
+
"repertoire/tools-continuity",
|
|
58
|
+
"repertoire/tools-surface",
|
|
59
|
+
"repertoire/tools-config",
|
|
60
|
+
"repertoire/tools-base",
|
|
61
|
+
// CLI sub-modules: cli-exec.ts is the router with emitNervesEvent calls;
|
|
62
|
+
// cli-parse, cli-render, cli-help, and their small helpers are pure functions/data with no side effects.
|
|
63
|
+
"daemon/cli-parse",
|
|
64
|
+
"daemon/cli-render",
|
|
65
|
+
"daemon/cli-help",
|
|
66
|
+
"daemon/vault-items",
|
|
67
|
+
// Shared utility modules: pure helpers consumed by modules that own observability.
|
|
68
|
+
"arc/json-store",
|
|
69
|
+
"heart/mail-import-discovery",
|
|
70
|
+
"repertoire/api-client",
|
|
71
|
+
"repertoire/github-client",
|
|
72
|
+
"mind/embedding-provider",
|
|
73
|
+
// Commerce utility module: error classes and pure helpers (no independent side effects).
|
|
74
|
+
"repertoire/commerce-errors",
|
|
75
|
+
// Diary integrity: pure detection utility (pattern matching only). The caller
|
|
76
|
+
// (diary.ts saveDiaryEntry) owns observability via mind.diary_integrity_warning.
|
|
77
|
+
"mind/diary-integrity",
|
|
78
|
+
// Provenance trust: pure classification function (no side effects). Callers
|
|
79
|
+
// (note-search.ts, tools-notes.ts) own observability for note search results.
|
|
80
|
+
"mind/provenance-trust",
|
|
81
|
+
// Log redaction: pure utility consumed by the NDJSON sink (no independent side effects).
|
|
82
|
+
"nerves/redact",
|
|
83
|
+
// Bundle templates: pure constants (gitignore template string, PII
|
|
84
|
+
// directory list). No runtime behavior — consumed by tools-bundle.ts
|
|
85
|
+
// which owns the observability for bundle operations.
|
|
86
|
+
"repertoire/bundle-templates",
|
|
87
|
+
// HTTP health probe: pure HTTP utility factory. The HealthMonitor caller
|
|
88
|
+
// owns observability via daemon.health_result events.
|
|
89
|
+
"daemon/http-health-probe",
|
|
90
|
+
// Rollup decision function: pure decision tree mapping per-agent
|
|
91
|
+
// snapshots + bootstrap-degraded entries + safe-mode flag to a
|
|
92
|
+
// RollupStatus. No side effects. The caller (daemon-entry.ts
|
|
93
|
+
// buildDaemonHealthState → DaemonHealthWriter) owns observability via
|
|
94
|
+
// daemon.health_written when the rolled-up state is persisted.
|
|
95
|
+
"daemon/daemon-rollup",
|
|
96
|
+
// Attachment helper modules: generic file-path/extension utilities and the
|
|
97
|
+
// source registry are pure support seams. The orchestrator/adapters that
|
|
98
|
+
// call them own the observability.
|
|
99
|
+
"heart/attachments/originals",
|
|
100
|
+
"heart/attachments/sources/index",
|
|
101
|
+
"heart/attachments/sources/cli-local-file",
|
|
102
|
+
// Browser-safe Mailbox contract helpers: shared types/formatting helpers
|
|
103
|
+
// consumed by server readers and the UI. Mailbox read/render modules own
|
|
104
|
+
// the observability for these projections.
|
|
105
|
+
"heart/mailbox/mailbox-types",
|
|
106
|
+
// Mail search relevance scorer: pure heuristic function (regex + counter
|
|
107
|
+
// arithmetic). The caller (search-cache.ts searchMailSearchCache) owns
|
|
108
|
+
// observability via senses.mail_search_cache_upserted and friends.
|
|
109
|
+
"mailroom/search-relevance",
|
|
110
|
+
// Mail thread reconstruction: pure graph-walk over decrypted message
|
|
111
|
+
// metadata. Consumers (tools-mail.ts mail_thread handler) own observability.
|
|
112
|
+
"mailroom/thread",
|
|
113
|
+
// Trip ledger crypto helpers: pure RSA/AES envelope construction + slug
|
|
114
|
+
// hashing. The caller (trips/store.ts) owns observability via
|
|
115
|
+
// trips.ledger_created and trips.evidence_attached.
|
|
116
|
+
"trips/core",
|
|
117
|
+
// Mailbox HTTP helper modules: route/static/transport/hook seams are
|
|
118
|
+
// dispatched by mailbox-http.ts, whose server lifecycle owns observability.
|
|
119
|
+
"heart/mailbox/mailbox-http-transport",
|
|
120
|
+
"heart/mailbox/mailbox-http-static",
|
|
121
|
+
"heart/mailbox/mailbox-http-hooks",
|
|
122
|
+
"heart/mailbox/mailbox-http-routes",
|
|
123
|
+
"heart/mailbox/mailbox-http-response",
|
|
124
|
+
// Session playback: read-only debugging CLI for sanitize-pipeline replay.
|
|
125
|
+
// No side effects on the runtime; output is human-readable diagnostics only.
|
|
126
|
+
"heart/session-playback-cli-main",
|
|
127
|
+
"heart/session-playback-cli",
|
|
128
|
+
"heart/session-playback",
|
|
129
|
+
// Nerves review: read-only NDJSON tail/filter CLI for debugging.
|
|
130
|
+
// Diagnostics-only utility; the running daemon owns observability.
|
|
131
|
+
"nerves/review/cli-main",
|
|
132
|
+
"nerves/review/cli",
|
|
133
|
+
"nerves/review/core",
|
|
134
|
+
// Mail body cache: in-process LRU helper. Cache hit/miss observability
|
|
135
|
+
// lives at the caller (tools-mail.ts mail_body handler) which fires
|
|
136
|
+
// repertoire.mail_body_cache_hit on cache reuse.
|
|
137
|
+
"mailroom/body-cache",
|
|
138
|
+
// Session stats: read-only session.json analyzer CLI for debugging.
|
|
139
|
+
// Diagnostics-only utility; output is human-readable summary.
|
|
140
|
+
"heart/session-stats-cli-main",
|
|
141
|
+
"heart/session-stats",
|
|
142
|
+
// Layer 2 sync classifier: pure pattern-matcher mapping (error, context)
|
|
143
|
+
// to a SyncClassification. The orchestrator (boot-sync-probe.ts) owns
|
|
144
|
+
// observability via daemon.boot_sync_probe_start/end events; the
|
|
145
|
+
// post-turn push path (sync.ts) emits its own classification events.
|
|
146
|
+
"heart/sync-classification",
|
|
147
|
+
// Layer 2 timeout wrapper: pure soft/hard timeout abstraction over
|
|
148
|
+
// AbortController + setTimeout. Callers (boot-sync-probe.ts and any
|
|
149
|
+
// future consumer) own observability; the wrapper itself is mechanical.
|
|
150
|
+
"heart/timeouts",
|
|
151
|
+
// Shared frontmatter parser: pure YAML-ish parser used by habit-parser,
|
|
152
|
+
// habit-migration, await-parser, and any other small markdown reader.
|
|
153
|
+
// No side effects of its own; callers emit nerves events around their
|
|
154
|
+
// parse calls (e.g. daemon.habit_parse, daemon.await_parse).
|
|
155
|
+
"util/frontmatter",
|
|
156
|
+
// Legacy-tasks-to-desk migration classifier: pure-data per-file bucketing function.
|
|
157
|
+
// The caller (migrate-to-desk.ts) owns observability via
|
|
158
|
+
// daemon.migrate_to_desk_* events around the runMigrateToDesk() entry
|
|
159
|
+
// points.
|
|
160
|
+
"repertoire/desk/classifier",
|
|
161
|
+
];
|
|
162
|
+
function isDispatchExempt(filePath) {
|
|
163
|
+
return DISPATCH_EXEMPT_PATTERNS.some((pattern) => filePath.includes(pattern));
|
|
164
|
+
}
|
|
31
165
|
/**
|
|
32
166
|
* Check that all production files have at least one emitNervesEvent call.
|
|
33
167
|
*
|
|
@@ -41,7 +175,7 @@ function checkFileCompleteness(filesWithKeys, fileContents) {
|
|
|
41
175
|
const hasKeys = filesWithKeys.has(filePath) && filesWithKeys.get(filePath).length > 0;
|
|
42
176
|
if (hasKeys)
|
|
43
177
|
continue;
|
|
44
|
-
if (isTypeOnlyFile(source)) {
|
|
178
|
+
if (isTypeOnlyFile(source) || isDispatchExempt(filePath)) {
|
|
45
179
|
exempt.push(filePath);
|
|
46
180
|
}
|
|
47
181
|
else {
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.REPO_SLUG = void 0;
|
|
4
4
|
exports.getTestRunsRoot = getTestRunsRoot;
|
|
5
|
+
exports.coverageRunOwner = coverageRunOwner;
|
|
6
|
+
exports.getOwnedTestRunsRoot = getOwnedTestRunsRoot;
|
|
5
7
|
exports.createRunId = createRunId;
|
|
6
8
|
exports.getRunDir = getRunDir;
|
|
7
9
|
exports.writeActiveRun = writeActiveRun;
|
|
@@ -10,68 +12,86 @@ exports.clearActiveRun = clearActiveRun;
|
|
|
10
12
|
exports.writeLatestRun = writeLatestRun;
|
|
11
13
|
exports.readLatestRun = readLatestRun;
|
|
12
14
|
const fs_1 = require("fs");
|
|
13
|
-
const
|
|
15
|
+
const crypto_1 = require("crypto");
|
|
14
16
|
const os_1 = require("os");
|
|
17
|
+
const path_1 = require("path");
|
|
15
18
|
exports.REPO_SLUG = "ouroboros-agent-harness";
|
|
16
19
|
function getTestRunsRoot(repoSlug = exports.REPO_SLUG) {
|
|
17
20
|
return (0, path_1.join)((0, os_1.tmpdir)(), "ouroboros-test-runs", repoSlug);
|
|
18
21
|
}
|
|
22
|
+
function coverageRunOwner(cwd = process.cwd()) {
|
|
23
|
+
const hash = (0, crypto_1.createHash)("sha256").update((0, path_1.resolve)(cwd)).digest("hex").slice(0, 12);
|
|
24
|
+
return `cwd-${hash}`;
|
|
25
|
+
}
|
|
26
|
+
function getOwnedTestRunsRoot(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
27
|
+
return (0, path_1.join)(getTestRunsRoot(repoSlug), coverageRunOwner(cwd));
|
|
28
|
+
}
|
|
19
29
|
function createRunId(now = new Date()) {
|
|
20
30
|
return now.toISOString().replace(/[:.]/g, "-");
|
|
21
31
|
}
|
|
22
|
-
function getRunDir(runId, repoSlug = exports.REPO_SLUG) {
|
|
23
|
-
return (0, path_1.join)(
|
|
32
|
+
function getRunDir(runId, repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
33
|
+
return (0, path_1.join)(getOwnedTestRunsRoot(repoSlug, cwd), runId);
|
|
24
34
|
}
|
|
25
|
-
function getActiveRunPath(repoSlug = exports.REPO_SLUG) {
|
|
26
|
-
return (0, path_1.join)(
|
|
35
|
+
function getActiveRunPath(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
36
|
+
return (0, path_1.join)(getOwnedTestRunsRoot(repoSlug, cwd), ".active-run.json");
|
|
27
37
|
}
|
|
28
|
-
function getLatestRunPath(repoSlug = exports.REPO_SLUG) {
|
|
29
|
-
return (0, path_1.join)(
|
|
38
|
+
function getLatestRunPath(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
39
|
+
return (0, path_1.join)(getOwnedTestRunsRoot(repoSlug, cwd), "latest-run.json");
|
|
30
40
|
}
|
|
31
|
-
function ensureRoot(repoSlug = exports.REPO_SLUG) {
|
|
32
|
-
const root =
|
|
41
|
+
function ensureRoot(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
42
|
+
const root = getOwnedTestRunsRoot(repoSlug, cwd);
|
|
33
43
|
(0, fs_1.mkdirSync)(root, { recursive: true });
|
|
34
44
|
return root;
|
|
35
45
|
}
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
46
|
+
function isValidRunInfo(value, repoSlug, cwd) {
|
|
47
|
+
if (typeof value !== "object" || value === null)
|
|
48
|
+
return false;
|
|
49
|
+
const parsed = value;
|
|
50
|
+
const owner = coverageRunOwner(cwd);
|
|
51
|
+
if (parsed.repo_slug !== repoSlug ||
|
|
52
|
+
parsed.run_owner !== owner ||
|
|
53
|
+
typeof parsed.run_id !== "string" ||
|
|
54
|
+
parsed.run_id.length === 0 ||
|
|
55
|
+
typeof parsed.run_dir !== "string" ||
|
|
56
|
+
parsed.run_dir.length === 0 ||
|
|
57
|
+
typeof parsed.created_at !== "string" ||
|
|
58
|
+
parsed.created_at.length === 0) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const ownerRoot = (0, path_1.resolve)(getOwnedTestRunsRoot(repoSlug, cwd));
|
|
62
|
+
const runDir = (0, path_1.resolve)(parsed.run_dir);
|
|
63
|
+
const relativeRunDir = (0, path_1.relative)(ownerRoot, runDir);
|
|
64
|
+
const isContained = relativeRunDir !== "" && relativeRunDir !== ".." && !relativeRunDir.startsWith(`..${path_1.sep}`) && !(0, path_1.isAbsolute)(relativeRunDir);
|
|
65
|
+
return isContained && runDir === (0, path_1.resolve)(ownerRoot, parsed.run_id);
|
|
39
66
|
}
|
|
40
|
-
function
|
|
41
|
-
const filePath = getActiveRunPath(repoSlug);
|
|
67
|
+
function readRunInfo(filePath, repoSlug, cwd) {
|
|
42
68
|
if (!(0, fs_1.existsSync)(filePath))
|
|
43
69
|
return null;
|
|
44
70
|
try {
|
|
45
71
|
const parsed = JSON.parse((0, fs_1.readFileSync)(filePath, "utf8"));
|
|
46
|
-
|
|
47
|
-
return null;
|
|
48
|
-
return parsed;
|
|
72
|
+
return isValidRunInfo(parsed, repoSlug, cwd) ? parsed : null;
|
|
49
73
|
}
|
|
50
74
|
catch {
|
|
51
75
|
return null;
|
|
52
76
|
}
|
|
53
77
|
}
|
|
54
|
-
function
|
|
55
|
-
|
|
78
|
+
function writeActiveRun(info, cwd = process.cwd()) {
|
|
79
|
+
ensureRoot(info.repo_slug, cwd);
|
|
80
|
+
(0, fs_1.writeFileSync)(getActiveRunPath(info.repo_slug, cwd), JSON.stringify(info, null, 2), "utf8");
|
|
81
|
+
}
|
|
82
|
+
function readActiveRun(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
83
|
+
return readRunInfo(getActiveRunPath(repoSlug, cwd), repoSlug, cwd);
|
|
84
|
+
}
|
|
85
|
+
function clearActiveRun(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
86
|
+
const filePath = getActiveRunPath(repoSlug, cwd);
|
|
56
87
|
if ((0, fs_1.existsSync)(filePath)) {
|
|
57
88
|
(0, fs_1.unlinkSync)(filePath);
|
|
58
89
|
}
|
|
59
90
|
}
|
|
60
|
-
function writeLatestRun(info) {
|
|
61
|
-
ensureRoot(info.repo_slug);
|
|
62
|
-
(0, fs_1.writeFileSync)(getLatestRunPath(info.repo_slug), JSON.stringify(info, null, 2), "utf8");
|
|
91
|
+
function writeLatestRun(info, cwd = process.cwd()) {
|
|
92
|
+
ensureRoot(info.repo_slug, cwd);
|
|
93
|
+
(0, fs_1.writeFileSync)(getLatestRunPath(info.repo_slug, cwd), JSON.stringify(info, null, 2), "utf8");
|
|
63
94
|
}
|
|
64
|
-
function readLatestRun(repoSlug = exports.REPO_SLUG) {
|
|
65
|
-
|
|
66
|
-
if (!(0, fs_1.existsSync)(filePath))
|
|
67
|
-
return null;
|
|
68
|
-
try {
|
|
69
|
-
const parsed = JSON.parse((0, fs_1.readFileSync)(filePath, "utf8"));
|
|
70
|
-
if (!parsed.run_id || !parsed.run_dir)
|
|
71
|
-
return null;
|
|
72
|
-
return parsed;
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
95
|
+
function readLatestRun(repoSlug = exports.REPO_SLUG, cwd = process.cwd()) {
|
|
96
|
+
return readRunInfo(getLatestRunPath(repoSlug, cwd), repoSlug, cwd);
|
|
77
97
|
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Static source scanner for emitNervesEvent calls.
|
|
3
|
+
* Static source scanner for emitNervesEvent and emitNervesEventDurable calls.
|
|
4
4
|
*
|
|
5
5
|
* Extracts component:event keys from production source files by
|
|
6
|
-
* regex-matching
|
|
6
|
+
* regex-matching either static emitter with literal component/event fields.
|
|
7
7
|
* calls. Only accepts static string literals (single or double quotes).
|
|
8
8
|
* Template literals and variable references are rejected.
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.scanSourceForNervesKeys = scanSourceForNervesKeys;
|
|
12
|
-
const EMIT_CALL_RE = /emitNervesEvent
|
|
12
|
+
const EMIT_CALL_RE = /emitNervesEvent(?:Durable)?\s*\(\s*\{([\s\S]*?)\}\s*\)/g;
|
|
13
13
|
function extractStringLiteral(block, field) {
|
|
14
14
|
const re = new RegExp(`${field}\\s*:\\s*(['"])((?:(?!\\1).)+)\\1`);
|
|
15
15
|
const match = re.exec(block);
|
|
16
16
|
return match ? match[2] : null;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* Scan a source file's content for
|
|
19
|
+
* Scan a source file's content for synchronous or durable Nerves calls and extract
|
|
20
20
|
* component:event keys. Only static string literals are accepted.
|
|
21
21
|
*/
|
|
22
22
|
function scanSourceForNervesKeys(source) {
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBufferedSink = createBufferedSink;
|
|
4
|
+
const runtime_1 = require("./runtime");
|
|
5
|
+
const DEFAULT_MAX_SIZE = 1000;
|
|
6
|
+
const DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
7
|
+
function createBufferedSink(inner, options = {}) {
|
|
8
|
+
const maxSize = options.maxSize ?? DEFAULT_MAX_SIZE;
|
|
9
|
+
const ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
|
|
10
|
+
const nowMs = options.nowMs ?? (() => Date.now());
|
|
11
|
+
const buffer = [];
|
|
12
|
+
let dropped = 0;
|
|
13
|
+
let sinkHealthy = true;
|
|
14
|
+
let unhealthySince = null;
|
|
15
|
+
function tryInner(event) {
|
|
16
|
+
try {
|
|
17
|
+
inner(event);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function markUnhealthy() {
|
|
25
|
+
sinkHealthy = false;
|
|
26
|
+
unhealthySince = unhealthySince ?? nowMs();
|
|
27
|
+
}
|
|
28
|
+
function markHealthy() {
|
|
29
|
+
sinkHealthy = true;
|
|
30
|
+
unhealthySince = null;
|
|
31
|
+
}
|
|
32
|
+
function discardBuffer() {
|
|
33
|
+
const count = buffer.length;
|
|
34
|
+
dropped += count;
|
|
35
|
+
buffer.length = 0;
|
|
36
|
+
(0, runtime_1.emitNervesEvent)({
|
|
37
|
+
component: "nerves",
|
|
38
|
+
event: "nerves.buffer_ttl_discard",
|
|
39
|
+
message: `discarded ${count} buffered events after TTL`,
|
|
40
|
+
meta: { discarded: count, ttlMs },
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function checkTtl() {
|
|
44
|
+
if (unhealthySince !== null && nowMs() - unhealthySince > ttlMs) {
|
|
45
|
+
discardBuffer();
|
|
46
|
+
// Reset unhealthySince to now so TTL starts fresh for newly buffered events
|
|
47
|
+
unhealthySince = nowMs();
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
function addToBuffer(event) {
|
|
53
|
+
if (buffer.length >= maxSize) {
|
|
54
|
+
buffer.shift();
|
|
55
|
+
dropped++;
|
|
56
|
+
}
|
|
57
|
+
buffer.push(event);
|
|
58
|
+
}
|
|
59
|
+
function flushBuffer() {
|
|
60
|
+
while (buffer.length > 0) {
|
|
61
|
+
const event = buffer[0];
|
|
62
|
+
if (tryInner(event)) {
|
|
63
|
+
buffer.shift();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
markUnhealthy();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function sink(event) {
|
|
72
|
+
if (!sinkHealthy) {
|
|
73
|
+
checkTtl();
|
|
74
|
+
// Try sending the new event to see if inner has recovered
|
|
75
|
+
if (tryInner(event)) {
|
|
76
|
+
markHealthy();
|
|
77
|
+
flushBuffer();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
addToBuffer(event);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (tryInner(event)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Inner failed
|
|
88
|
+
markUnhealthy();
|
|
89
|
+
addToBuffer(event);
|
|
90
|
+
}
|
|
91
|
+
function flush() {
|
|
92
|
+
if (buffer.length === 0)
|
|
93
|
+
return;
|
|
94
|
+
// Test if inner is recovered by trying the first buffered event
|
|
95
|
+
const first = buffer[0];
|
|
96
|
+
if (tryInner(first)) {
|
|
97
|
+
buffer.shift();
|
|
98
|
+
markHealthy();
|
|
99
|
+
flushBuffer();
|
|
100
|
+
}
|
|
101
|
+
// If still broken, leave buffer intact
|
|
102
|
+
}
|
|
103
|
+
function state() {
|
|
104
|
+
return {
|
|
105
|
+
buffered: buffer.length,
|
|
106
|
+
dropped,
|
|
107
|
+
sinkHealthy,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return { sink, flush, state };
|
|
111
|
+
}
|