@wrongstack/core 0.297.0 → 0.298.0
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/dist/chronicle/index.js +126 -22
- package/dist/chronicle/project-server-client.d.ts +12 -0
- package/dist/chronicle/project-server-protocol.d.ts +22 -0
- package/dist/chronicle/project-server.js +238 -157
- package/dist/coordination/agents/index.js +136 -1
- package/dist/coordination/agents/role-skills.d.ts +3 -2
- package/dist/coordination/brain-trace.d.ts +2 -1
- package/dist/coordination/director/director-task-registry.d.ts +12 -0
- package/dist/coordination/fleet-supervisor.d.ts +21 -0
- package/dist/coordination/index.d.ts +23 -21
- package/dist/coordination/index.js +16493 -16068
- package/dist/coordination/mail-tools.d.ts +3 -3
- package/dist/coordination/mailbox-credential-store.d.ts +22 -2
- package/dist/coordination/mailbox-credential-throttle.d.ts +63 -0
- package/dist/coordination/mailbox-project-server-client.d.ts +16 -0
- package/dist/coordination/mailbox-project-server-protocol.d.ts +43 -5
- package/dist/coordination/mailbox-project-server.js +508 -253
- package/dist/coordination/provider-status-tracker.d.ts +2 -0
- package/dist/coordination/remote-mailbox-credential-store.d.ts +5 -5
- package/dist/coordination/remote-mailbox.d.ts +8 -4
- package/dist/coordination/sqlite-mailbox-credentials.d.ts +11 -0
- package/dist/core/fallback-profile-manager.d.ts +14 -0
- package/dist/core/index.js +451 -137
- package/dist/core/instruction-bundle.d.ts +12 -0
- package/dist/core/system-prompt-builder.d.ts +14 -0
- package/dist/core/system-prompt-skill-bodies.d.ts +1 -1
- package/dist/core/system-prompt-skill-text.d.ts +1 -2
- package/dist/defaults/index.js +2081 -1102
- package/dist/design/index.js +47 -8
- package/dist/execution/design-materialize.d.ts +22 -0
- package/dist/execution/index.js +495 -248
- package/dist/execution/skill-loader.d.ts +10 -1
- package/dist/execution/tool-error-taxonomy.d.ts +31 -0
- package/dist/execution/tool-executor.d.ts +1 -0
- package/dist/goal/index.js +3 -1
- package/dist/hooks/index.js +5 -0
- package/dist/hq/auth-audit.d.ts +6 -0
- package/dist/hq/auth-store.d.ts +59 -3
- package/dist/hq/index.js +401 -101
- package/dist/hq/kanban-store.d.ts +3 -0
- package/dist/hq/protocol/core.d.ts +3 -15
- package/dist/hq/protocol/envelope.d.ts +29 -0
- package/dist/hq/protocol/governance.d.ts +34 -0
- package/dist/hq/protocol/project.d.ts +3 -0
- package/dist/hq/protocol/resume.d.ts +1 -1
- package/dist/hq/protocol.d.ts +9 -8
- package/dist/hq/protocol.js +675 -0
- package/dist/index.js +8518 -6416
- package/dist/infrastructure/index.js +198 -101
- package/dist/kernel/events/session-events.d.ts +3 -0
- package/dist/kernel/events/tool-events.d.ts +3 -1
- package/dist/models/index.js +1 -1
- package/dist/observability/index.js +27 -0
- package/dist/observability/prometheus.d.ts +11 -0
- package/dist/plugin/index.d.ts +5 -1
- package/dist/plugin/index.js +950 -509
- package/dist/plugins/review-store-maintenance.d.ts +26 -0
- package/dist/plugins/review-types.d.ts +6 -0
- package/dist/security/capabilities.d.ts +45 -1
- package/dist/security/error-sanitize.d.ts +49 -0
- package/dist/security/file-permissions.d.ts +41 -0
- package/dist/security/index.d.ts +9 -6
- package/dist/security/index.js +3007 -2032
- package/dist/security/permission-policy.d.ts +55 -3
- package/dist/security/secret-vault.d.ts +17 -0
- package/dist/security/totp.d.ts +86 -0
- package/dist/skills/frontmatter.d.ts +12 -1
- package/dist/skills/github-fetcher.d.ts +48 -0
- package/dist/skills/index.js +137 -26
- package/dist/skills/limits.d.ts +19 -0
- package/dist/skills/skill-installer.d.ts +13 -0
- package/dist/storage/index.js +928 -732
- package/dist/storage/provider-config-watcher.d.ts +1 -0
- package/dist/storage/session-helpers.d.ts +1 -0
- package/dist/storage/session-store.d.ts +9 -2
- package/dist/storage/session-workspace-checkpoints.d.ts +5 -0
- package/dist/tools/fallback-manage-tools.d.ts +6 -0
- package/dist/tools/index.js +287 -131
- package/dist/tools/mcp-use.d.ts +1 -1
- package/dist/types/blocks.d.ts +7 -0
- package/dist/types/config/autonomy.d.ts +12 -3
- package/dist/types/config/mcp-features.d.ts +9 -1
- package/dist/types/config/root.d.ts +10 -4
- package/dist/types/context-window.d.ts +15 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/secret-vault.d.ts +8 -0
- package/dist/types/session.d.ts +2 -0
- package/dist/types/skill.d.ts +56 -0
- package/dist/types/tool-executor.d.ts +2 -0
- package/dist/utils/env-typed.d.ts +64 -0
- package/dist/utils/glob-match.d.ts +21 -1
- package/dist/utils/heap-watchdog.js +1 -1
- package/dist/utils/incoming-images.d.ts +19 -0
- package/dist/utils/index.d.ts +15 -12
- package/dist/utils/index.js +3083 -2801
- package/dist/utils/path-segment.d.ts +29 -0
- package/dist/utils/win32-cmd.d.ts +25 -0
- package/dist/worktree/index.js +5 -0
- package/package.json +8 -3
- package/skills/chimera/SKILL.md +16 -4
- package/skills/data-governance/SKILL.md +92 -0
- package/skills/wrongstack-kanban/SKILL.md +125 -64
- package/dist/agent-status-helpers.d.ts.map +0 -1
- package/dist/agent-status-tracker.d.ts.map +0 -1
- package/dist/boot.d.ts.map +0 -1
- package/dist/chronicle/context.d.ts.map +0 -1
- package/dist/chronicle/decision-adapter.d.ts.map +0 -1
- package/dist/chronicle/domain-adapter.d.ts.map +0 -1
- package/dist/chronicle/event-hash.d.ts.map +0 -1
- package/dist/chronicle/file-observer.d.ts.map +0 -1
- package/dist/chronicle/health-monitor.d.ts.map +0 -1
- package/dist/chronicle/identity.d.ts.map +0 -1
- package/dist/chronicle/index.d.ts.map +0 -1
- package/dist/chronicle/index.js.map +0 -7
- package/dist/chronicle/journal.d.ts.map +0 -1
- package/dist/chronicle/legacy-journal-import.d.ts.map +0 -1
- package/dist/chronicle/metrics-store.d.ts.map +0 -1
- package/dist/chronicle/partition-filename.d.ts.map +0 -1
- package/dist/chronicle/partition-range-cache.d.ts.map +0 -1
- package/dist/chronicle/process-adapter.d.ts.map +0 -1
- package/dist/chronicle/project-access.d.ts.map +0 -1
- package/dist/chronicle/project-server-client.d.ts.map +0 -1
- package/dist/chronicle/project-server-endpoint.d.ts.map +0 -1
- package/dist/chronicle/project-server-protocol.d.ts.map +0 -1
- package/dist/chronicle/project-server.d.ts.map +0 -1
- package/dist/chronicle/project-server.js.map +0 -7
- package/dist/chronicle/prompt-manifest.d.ts.map +0 -1
- package/dist/chronicle/provider-adapter.d.ts.map +0 -1
- package/dist/chronicle/query.d.ts.map +0 -1
- package/dist/chronicle/review-adapter.d.ts.map +0 -1
- package/dist/chronicle/rollup-adapter.d.ts.map +0 -1
- package/dist/chronicle/sink.d.ts.map +0 -1
- package/dist/chronicle/sqlite-journal.d.ts.map +0 -1
- package/dist/chronicle/sqlite-query.d.ts.map +0 -1
- package/dist/chronicle/stream-adapter.d.ts.map +0 -1
- package/dist/chronicle/tool-adapter.d.ts.map +0 -1
- package/dist/chronicle/types.d.ts.map +0 -1
- package/dist/coordination/adaptive-concurrency.d.ts.map +0 -1
- package/dist/coordination/agent-bridge.d.ts.map +0 -1
- package/dist/coordination/agent-monitor.d.ts.map +0 -1
- package/dist/coordination/agent-subagent-runner.d.ts.map +0 -1
- package/dist/coordination/agents/agent-prompts.d.ts.map +0 -1
- package/dist/coordination/agents/index.d.ts.map +0 -1
- package/dist/coordination/agents/index.js.map +0 -7
- package/dist/coordination/agents/phase1-discovery.d.ts.map +0 -1
- package/dist/coordination/agents/phase2-planning.d.ts.map +0 -1
- package/dist/coordination/agents/phase3-build.d.ts.map +0 -1
- package/dist/coordination/agents/phase3-techstack.d.ts.map +0 -1
- package/dist/coordination/agents/phase3-wave1-platform.d.ts.map +0 -1
- package/dist/coordination/agents/phase3-wave2-meta.d.ts.map +0 -1
- package/dist/coordination/agents/phase4-verify.d.ts.map +0 -1
- package/dist/coordination/agents/phase5-review.d.ts.map +0 -1
- package/dist/coordination/agents/phase6-domain.d.ts.map +0 -1
- package/dist/coordination/agents/phase7-knowledge.d.ts.map +0 -1
- package/dist/coordination/agents/phase8-delivery.d.ts.map +0 -1
- package/dist/coordination/agents/phase8-wave3-products.d.ts.map +0 -1
- package/dist/coordination/agents/phase9-meta.d.ts.map +0 -1
- package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-config-validation.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-consolidation.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-files.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-identity-types.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-identity.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-knowledge-manifests.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-learning-entries.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-learning-normalize.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-learning-policy.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-learning-structured.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-paths.d.ts.map +0 -1
- package/dist/coordination/agents/project-agent-profile.d.ts.map +0 -1
- package/dist/coordination/agents/role-skills.d.ts.map +0 -1
- package/dist/coordination/agents/types.d.ts.map +0 -1
- package/dist/coordination/agents.d.ts.map +0 -1
- package/dist/coordination/auto-extend.d.ts.map +0 -1
- package/dist/coordination/autonomous-brain.d.ts.map +0 -1
- package/dist/coordination/autonomous-coordinator.d.ts.map +0 -1
- package/dist/coordination/brain-cache.d.ts.map +0 -1
- package/dist/coordination/brain-heuristics.d.ts.map +0 -1
- package/dist/coordination/brain-ledger.d.ts.map +0 -1
- package/dist/coordination/brain-monitor.d.ts.map +0 -1
- package/dist/coordination/brain-rules.d.ts.map +0 -1
- package/dist/coordination/brain-telemetry.d.ts.map +0 -1
- package/dist/coordination/brain-trace.d.ts.map +0 -1
- package/dist/coordination/brain.d.ts.map +0 -1
- package/dist/coordination/change-manager.d.ts.map +0 -1
- package/dist/coordination/checkpoint-wiring.d.ts.map +0 -1
- package/dist/coordination/collab-bus.d.ts.map +0 -1
- package/dist/coordination/collab-debug-types.d.ts.map +0 -1
- package/dist/coordination/collab-debug.d.ts.map +0 -1
- package/dist/coordination/collab-director-host.d.ts.map +0 -1
- package/dist/coordination/commit-safety.d.ts.map +0 -1
- package/dist/coordination/consensus-protocol.d.ts.map +0 -1
- package/dist/coordination/coordinator/error-classifier.d.ts.map +0 -1
- package/dist/coordination/delegate-tool.d.ts.map +0 -1
- package/dist/coordination/dep-watcher-bridge.d.ts.map +0 -1
- package/dist/coordination/dep-watcher.d.ts.map +0 -1
- package/dist/coordination/director/director-btw-notes.d.ts.map +0 -1
- package/dist/coordination/director/director-budget-policy.d.ts.map +0 -1
- package/dist/coordination/director/director-collab.d.ts.map +0 -1
- package/dist/coordination/director/director-errors.d.ts.map +0 -1
- package/dist/coordination/director/director-task-registry.d.ts.map +0 -1
- package/dist/coordination/director/director-toolset.d.ts.map +0 -1
- package/dist/coordination/director-basic-tools.d.ts.map +0 -1
- package/dist/coordination/director-collab-tools.d.ts.map +0 -1
- package/dist/coordination/director-host-contracts.d.ts.map +0 -1
- package/dist/coordination/director-input-helpers.d.ts.map +0 -1
- package/dist/coordination/director-kanban-queue-helpers.d.ts.map +0 -1
- package/dist/coordination/director-options.d.ts.map +0 -1
- package/dist/coordination/director-prompts.d.ts.map +0 -1
- package/dist/coordination/director-quality-gate-tool.d.ts.map +0 -1
- package/dist/coordination/director-session.d.ts.map +0 -1
- package/dist/coordination/director-spawn-model.d.ts.map +0 -1
- package/dist/coordination/director-tools.d.ts.map +0 -1
- package/dist/coordination/director.d.ts.map +0 -1
- package/dist/coordination/dispatcher.d.ts.map +0 -1
- package/dist/coordination/file-author-tracker.d.ts.map +0 -1
- package/dist/coordination/fleet-bus.d.ts.map +0 -1
- package/dist/coordination/fleet-event-validation.d.ts.map +0 -1
- package/dist/coordination/fleet-manager.d.ts.map +0 -1
- package/dist/coordination/fleet-spawn.d.ts.map +0 -1
- package/dist/coordination/fleet-status-tool.d.ts.map +0 -1
- package/dist/coordination/fleet-supervisor.d.ts.map +0 -1
- package/dist/coordination/fleet.d.ts.map +0 -1
- package/dist/coordination/global-mailbox-completion.d.ts.map +0 -1
- package/dist/coordination/global-mailbox-paths.d.ts.map +0 -1
- package/dist/coordination/icoordinator.d.ts.map +0 -1
- package/dist/coordination/ifleet-manager.d.ts.map +0 -1
- package/dist/coordination/in-memory-transport.d.ts.map +0 -1
- package/dist/coordination/index.d.ts.map +0 -1
- package/dist/coordination/index.js.map +0 -7
- package/dist/coordination/knowledge-graph.d.ts.map +0 -1
- package/dist/coordination/large-answer-store.d.ts.map +0 -1
- package/dist/coordination/mail-tools.d.ts.map +0 -1
- package/dist/coordination/mailbox-actions.d.ts.map +0 -1
- package/dist/coordination/mailbox-auth-types.d.ts.map +0 -1
- package/dist/coordination/mailbox-codecs.d.ts.map +0 -1
- package/dist/coordination/mailbox-constants.d.ts.map +0 -1
- package/dist/coordination/mailbox-credential-store.d.ts.map +0 -1
- package/dist/coordination/mailbox-events.d.ts.map +0 -1
- package/dist/coordination/mailbox-health.d.ts.map +0 -1
- package/dist/coordination/mailbox-hooks.d.ts.map +0 -1
- package/dist/coordination/mailbox-http-auth.d.ts.map +0 -1
- package/dist/coordination/mailbox-http-rate-limit.d.ts.map +0 -1
- package/dist/coordination/mailbox-http-router.d.ts.map +0 -1
- package/dist/coordination/mailbox-http-validation.d.ts.map +0 -1
- package/dist/coordination/mailbox-message-codec.d.ts.map +0 -1
- package/dist/coordination/mailbox-parse-state.d.ts.map +0 -1
- package/dist/coordination/mailbox-project-server-client.d.ts.map +0 -1
- package/dist/coordination/mailbox-project-server-endpoint.d.ts.map +0 -1
- package/dist/coordination/mailbox-project-server-protocol.d.ts.map +0 -1
- package/dist/coordination/mailbox-project-server.d.ts.map +0 -1
- package/dist/coordination/mailbox-project-server.js.map +0 -7
- package/dist/coordination/mailbox-receipt-folding.d.ts.map +0 -1
- package/dist/coordination/mailbox-registry-codec.d.ts.map +0 -1
- package/dist/coordination/mailbox-retention-state.d.ts.map +0 -1
- package/dist/coordination/mailbox-status-mappers.d.ts.map +0 -1
- package/dist/coordination/mailbox-tool.d.ts.map +0 -1
- package/dist/coordination/mailbox-type-properties.d.ts.map +0 -1
- package/dist/coordination/mailbox-types.d.ts.map +0 -1
- package/dist/coordination/model-matrix.d.ts.map +0 -1
- package/dist/coordination/multi-agent-coordinator.d.ts.map +0 -1
- package/dist/coordination/multi-agent-timeout.d.ts.map +0 -1
- package/dist/coordination/null-fleet-bus.d.ts.map +0 -1
- package/dist/coordination/package-author-tracker.d.ts.map +0 -1
- package/dist/coordination/package-outdated-watcher.d.ts.map +0 -1
- package/dist/coordination/provider-status-tracker.d.ts.map +0 -1
- package/dist/coordination/remote-mailbox-credential-store.d.ts.map +0 -1
- package/dist/coordination/remote-mailbox.d.ts.map +0 -1
- package/dist/coordination/single-instance-mailbox.d.ts.map +0 -1
- package/dist/coordination/spawn-budget.d.ts.map +0 -1
- package/dist/coordination/sqlite-mailbox-compaction.d.ts.map +0 -1
- package/dist/coordination/sqlite-mailbox-credentials.d.ts.map +0 -1
- package/dist/coordination/sqlite-mailbox-rows.d.ts.map +0 -1
- package/dist/coordination/sqlite-mailbox-schema.d.ts.map +0 -1
- package/dist/coordination/sqlite-mailbox.d.ts.map +0 -1
- package/dist/coordination/subagent-budget.d.ts.map +0 -1
- package/dist/coordination/subagent-nicknames.d.ts.map +0 -1
- package/dist/coordination/subagent-result-tool.d.ts.map +0 -1
- package/dist/coordination/task-auctioneer.d.ts.map +0 -1
- package/dist/coordination/task-dag.d.ts.map +0 -1
- package/dist/coordination/techstack-mailbox-consumer.d.ts.map +0 -1
- package/dist/coordination/transport.d.ts.map +0 -1
- package/dist/coordination/worktree-task-runner.d.ts.map +0 -1
- package/dist/core/agent-internals.d.ts.map +0 -1
- package/dist/core/agent-loop.d.ts.map +0 -1
- package/dist/core/agent-response.d.ts.map +0 -1
- package/dist/core/agent-tools.d.ts.map +0 -1
- package/dist/core/agent-types.d.ts.map +0 -1
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/btw.d.ts.map +0 -1
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/continue-intent.d.ts.map +0 -1
- package/dist/core/continue-to-next-iteration.d.ts.map +0 -1
- package/dist/core/conversation-state.d.ts.map +0 -1
- package/dist/core/fallback-model.d.ts.map +0 -1
- package/dist/core/fallback-profile-manager.d.ts.map +0 -1
- package/dist/core/fleet-pulse.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -7
- package/dist/core/input-builder.d.ts.map +0 -1
- package/dist/core/instruction-bundle.d.ts.map +0 -1
- package/dist/core/iteration-limit.d.ts.map +0 -1
- package/dist/core/mailbox-loop.d.ts.map +0 -1
- package/dist/core/model-availability-calendar.d.ts.map +0 -1
- package/dist/core/model-ref.d.ts.map +0 -1
- package/dist/core/model-ref.js.map +0 -7
- package/dist/core/modes/brief.d.ts.map +0 -1
- package/dist/core/modes/default.d.ts.map +0 -1
- package/dist/core/modes/teach.d.ts.map +0 -1
- package/dist/core/provider-runner.d.ts.map +0 -1
- package/dist/core/queued-messages.d.ts.map +0 -1
- package/dist/core/request-provider-binding.d.ts.map +0 -1
- package/dist/core/run-env.d.ts.map +0 -1
- package/dist/core/streaming-response-builder.d.ts.map +0 -1
- package/dist/core/system-prompt-blocks.d.ts.map +0 -1
- package/dist/core/system-prompt-builder.d.ts.map +0 -1
- package/dist/core/system-prompt-environment-probes.d.ts.map +0 -1
- package/dist/core/system-prompt-environment.d.ts.map +0 -1
- package/dist/core/system-prompt-memory-skills.d.ts.map +0 -1
- package/dist/core/system-prompt-plan.d.ts.map +0 -1
- package/dist/core/system-prompt-shell.d.ts.map +0 -1
- package/dist/core/system-prompt-skill-bodies.d.ts.map +0 -1
- package/dist/core/system-prompt-skill-text.d.ts.map +0 -1
- package/dist/defaults/index.d.ts.map +0 -1
- package/dist/defaults/index.js.map +0 -7
- package/dist/design/index.d.ts.map +0 -1
- package/dist/design/index.js.map +0 -7
- package/dist/execution/auto-compaction-middleware.d.ts.map +0 -1
- package/dist/execution/autonomous-runner.d.ts.map +0 -1
- package/dist/execution/autonomy-brain.d.ts.map +0 -1
- package/dist/execution/autonomy-prompt-contributor.d.ts.map +0 -1
- package/dist/execution/brain-chain.d.ts.map +0 -1
- package/dist/execution/brain-circuit.d.ts.map +0 -1
- package/dist/execution/brain-evaluation.d.ts.map +0 -1
- package/dist/execution/brain-runtime-constants.d.ts.map +0 -1
- package/dist/execution/brain-runtime.d.ts.map +0 -1
- package/dist/execution/compaction-core.d.ts.map +0 -1
- package/dist/execution/compaction-scoring.d.ts.map +0 -1
- package/dist/execution/compaction-summary-cache.d.ts.map +0 -1
- package/dist/execution/compactor.d.ts.map +0 -1
- package/dist/execution/council-brain.d.ts.map +0 -1
- package/dist/execution/council-orchestrator.d.ts.map +0 -1
- package/dist/execution/council-personas.d.ts.map +0 -1
- package/dist/execution/council-profiles.d.ts.map +0 -1
- package/dist/execution/council-prompts.d.ts.map +0 -1
- package/dist/execution/council-resolution.d.ts.map +0 -1
- package/dist/execution/design-color.d.ts.map +0 -1
- package/dist/execution/design-detect.d.ts.map +0 -1
- package/dist/execution/design-kit-loader.d.ts.map +0 -1
- package/dist/execution/design-materialize.d.ts.map +0 -1
- package/dist/execution/design-project-store.d.ts.map +0 -1
- package/dist/execution/design-tune.d.ts.map +0 -1
- package/dist/execution/design-verify.d.ts.map +0 -1
- package/dist/execution/enhance-recovery.d.ts.map +0 -1
- package/dist/execution/error-handler.d.ts.map +0 -1
- package/dist/execution/eternal-autonomy-types.d.ts.map +0 -1
- package/dist/execution/eternal-autonomy.d.ts.map +0 -1
- package/dist/execution/goal-preamble.d.ts.map +0 -1
- package/dist/execution/index.d.ts.map +0 -1
- package/dist/execution/index.js.map +0 -7
- package/dist/execution/intelligent-compactor.d.ts.map +0 -1
- package/dist/execution/model-runtime.d.ts.map +0 -1
- package/dist/execution/one-shot-llm.d.ts.map +0 -1
- package/dist/execution/parallel-eternal-engine.d.ts.map +0 -1
- package/dist/execution/prompt-enhancer.d.ts.map +0 -1
- package/dist/execution/prompt-enhancer.js.map +0 -7
- package/dist/execution/prompt-loader.d.ts.map +0 -1
- package/dist/execution/provider-runner-impl.d.ts.map +0 -1
- package/dist/execution/regex-patterns.d.ts.map +0 -1
- package/dist/execution/retry-policy.d.ts.map +0 -1
- package/dist/execution/selective-compactor.d.ts.map +0 -1
- package/dist/execution/skill-loader.d.ts.map +0 -1
- package/dist/execution/strategy-compactor.d.ts.map +0 -1
- package/dist/execution/subagent-compaction.d.ts.map +0 -1
- package/dist/execution/tool-executor-logging.d.ts.map +0 -1
- package/dist/execution/tool-executor-results.d.ts.map +0 -1
- package/dist/execution/tool-executor-stream.d.ts.map +0 -1
- package/dist/execution/tool-executor-support.d.ts.map +0 -1
- package/dist/execution/tool-executor.d.ts.map +0 -1
- package/dist/extension/extension-points.d.ts.map +0 -1
- package/dist/extension/index.d.ts.map +0 -1
- package/dist/extension/index.js.map +0 -7
- package/dist/extension/registry.d.ts.map +0 -1
- package/dist/fleet-notifier.d.ts.map +0 -1
- package/dist/goal/checkpoint.d.ts.map +0 -1
- package/dist/goal/goal-assessor.d.ts.map +0 -1
- package/dist/goal/goal-planner.d.ts.map +0 -1
- package/dist/goal/goal-runner.d.ts.map +0 -1
- package/dist/goal/index.d.ts.map +0 -1
- package/dist/goal/index.js.map +0 -7
- package/dist/goal/phase-board-mutations.d.ts.map +0 -1
- package/dist/goal/phase-graph-builder.d.ts.map +0 -1
- package/dist/goal/phase-orchestrator-integration.d.ts.map +0 -1
- package/dist/goal/phase-orchestrator-queries.d.ts.map +0 -1
- package/dist/goal/phase-orchestrator-runtime.d.ts.map +0 -1
- package/dist/goal/phase-orchestrator-types.d.ts.map +0 -1
- package/dist/goal/phase-orchestrator.d.ts.map +0 -1
- package/dist/goal/phase-store.d.ts.map +0 -1
- package/dist/goal/types.d.ts.map +0 -1
- package/dist/hooks/http-executor.d.ts.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -7
- package/dist/hooks/registry.d.ts.map +0 -1
- package/dist/hooks/runner.d.ts.map +0 -1
- package/dist/hooks/shell-executor.d.ts.map +0 -1
- package/dist/hooks/shell-hooks-equal.d.ts.map +0 -1
- package/dist/hq/alerts.d.ts.map +0 -1
- package/dist/hq/auth-audit.d.ts.map +0 -1
- package/dist/hq/auth-store.d.ts.map +0 -1
- package/dist/hq/bootstrap-store.d.ts.map +0 -1
- package/dist/hq/brain-bridge.d.ts.map +0 -1
- package/dist/hq/bridge-context.d.ts.map +0 -1
- package/dist/hq/commands.d.ts.map +0 -1
- package/dist/hq/cost-bridge.d.ts.map +0 -1
- package/dist/hq/exposure.d.ts.map +0 -1
- package/dist/hq/factory.d.ts.map +0 -1
- package/dist/hq/fleet-bridge.d.ts.map +0 -1
- package/dist/hq/index.d.ts.map +0 -1
- package/dist/hq/index.js.map +0 -7
- package/dist/hq/kanban-store.d.ts.map +0 -1
- package/dist/hq/mailbox-mapper.d.ts.map +0 -1
- package/dist/hq/persistence/event-log.d.ts.map +0 -1
- package/dist/hq/persistence/jsonl-io.d.ts.map +0 -1
- package/dist/hq/persistence/simple-log.d.ts.map +0 -1
- package/dist/hq/persistence/snapshot-store.d.ts.map +0 -1
- package/dist/hq/persistence/timeseries-store.d.ts.map +0 -1
- package/dist/hq/persistence.d.ts.map +0 -1
- package/dist/hq/protocol/brain.d.ts.map +0 -1
- package/dist/hq/protocol/browser.d.ts.map +0 -1
- package/dist/hq/protocol/client.d.ts.map +0 -1
- package/dist/hq/protocol/core.d.ts.map +0 -1
- package/dist/hq/protocol/fleet.d.ts.map +0 -1
- package/dist/hq/protocol/kanban.d.ts.map +0 -1
- package/dist/hq/protocol/mailbox.d.ts.map +0 -1
- package/dist/hq/protocol/mcp.d.ts.map +0 -1
- package/dist/hq/protocol/peer.d.ts.map +0 -1
- package/dist/hq/protocol/project.d.ts.map +0 -1
- package/dist/hq/protocol/resume.d.ts.map +0 -1
- package/dist/hq/protocol/session.d.ts.map +0 -1
- package/dist/hq/protocol/tool.d.ts.map +0 -1
- package/dist/hq/protocol.d.ts.map +0 -1
- package/dist/hq/publisher.d.ts.map +0 -1
- package/dist/hq/redaction.d.ts.map +0 -1
- package/dist/hq/session-bridge.d.ts.map +0 -1
- package/dist/hq/tool-bridge.d.ts.map +0 -1
- package/dist/hq/transcript-mapper.d.ts.map +0 -1
- package/dist/hq/worktree-bridge.d.ts.map +0 -1
- package/dist/hq/write-queues.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -7
- package/dist/infrastructure/context-manager.d.ts.map +0 -1
- package/dist/infrastructure/index.d.ts.map +0 -1
- package/dist/infrastructure/index.js.map +0 -7
- package/dist/infrastructure/logger.d.ts.map +0 -1
- package/dist/infrastructure/mcp-servers.d.ts.map +0 -1
- package/dist/infrastructure/path-resolver.d.ts.map +0 -1
- package/dist/infrastructure/provider-cache-ledger.d.ts.map +0 -1
- package/dist/infrastructure/token-counter.d.ts.map +0 -1
- package/dist/kernel/container.d.ts.map +0 -1
- package/dist/kernel/events/agent-events.d.ts.map +0 -1
- package/dist/kernel/events/brain-events.d.ts.map +0 -1
- package/dist/kernel/events/file-events.d.ts.map +0 -1
- package/dist/kernel/events/fleet-events.d.ts.map +0 -1
- package/dist/kernel/events/memory-events.d.ts.map +0 -1
- package/dist/kernel/events/network-events.d.ts.map +0 -1
- package/dist/kernel/events/process-events.d.ts.map +0 -1
- package/dist/kernel/events/provider-events.d.ts.map +0 -1
- package/dist/kernel/events/sdd-events.d.ts.map +0 -1
- package/dist/kernel/events/session-events.d.ts.map +0 -1
- package/dist/kernel/events/tool-events.d.ts.map +0 -1
- package/dist/kernel/events/worktree-events.d.ts.map +0 -1
- package/dist/kernel/events.d.ts.map +0 -1
- package/dist/kernel/index.d.ts.map +0 -1
- package/dist/kernel/index.js.map +0 -7
- package/dist/kernel/pipeline.d.ts.map +0 -1
- package/dist/kernel/run-controller.d.ts.map +0 -1
- package/dist/kernel/tokens.d.ts.map +0 -1
- package/dist/mailbox-attach.d.ts.map +0 -1
- package/dist/middleware/collab-pause.d.ts.map +0 -1
- package/dist/models/alibaba-token-plan-catalog.d.ts.map +0 -1
- package/dist/models/codex-catalog.d.ts.map +0 -1
- package/dist/models/index.d.ts.map +0 -1
- package/dist/models/index.js.map +0 -7
- package/dist/models/llm-selector.d.ts.map +0 -1
- package/dist/models/mode-store.d.ts.map +0 -1
- package/dist/models/model-intelligence.d.ts.map +0 -1
- package/dist/models/model-router.d.ts.map +0 -1
- package/dist/models/models-registry.d.ts.map +0 -1
- package/dist/models/provider-model-resolve.d.ts.map +0 -1
- package/dist/notifications/index.d.ts.map +0 -1
- package/dist/notifications/index.js.map +0 -7
- package/dist/notifications/notifier-impl.d.ts.map +0 -1
- package/dist/notifications/notifier.d.ts.map +0 -1
- package/dist/notifications/types.d.ts.map +0 -1
- package/dist/observability/event-bridge.d.ts.map +0 -1
- package/dist/observability/health.d.ts.map +0 -1
- package/dist/observability/index.d.ts.map +0 -1
- package/dist/observability/index.js.map +0 -7
- package/dist/observability/metrics.d.ts.map +0 -1
- package/dist/observability/network-telemetry.d.ts.map +0 -1
- package/dist/observability/otel-tracer.d.ts.map +0 -1
- package/dist/observability/otlp-metrics.d.ts.map +0 -1
- package/dist/observability/otlp-traces.d.ts.map +0 -1
- package/dist/observability/process-telemetry.d.ts.map +0 -1
- package/dist/observability/prometheus.d.ts.map +0 -1
- package/dist/observability/redact-command.d.ts.map +0 -1
- package/dist/observability/tracer.d.ts.map +0 -1
- package/dist/plugin/api.d.ts.map +0 -1
- package/dist/plugin/config.d.ts.map +0 -1
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js.map +0 -7
- package/dist/plugin/loader.d.ts.map +0 -1
- package/dist/plugins/auto-review-plugin.d.ts.map +0 -1
- package/dist/plugins/chimera-plugin.d.ts.map +0 -1
- package/dist/plugins/prompts-plugin.d.ts.map +0 -1
- package/dist/plugins/review-claim-registry.d.ts.map +0 -1
- package/dist/plugins/review-context-builder.d.ts.map +0 -1
- package/dist/plugins/review-finding-commands.d.ts.map +0 -1
- package/dist/plugins/review-finding-integration.d.ts.map +0 -1
- package/dist/plugins/review-finding-parser.d.ts.map +0 -1
- package/dist/plugins/review-finding-store.d.ts.map +0 -1
- package/dist/plugins/review-finding-types.d.ts.map +0 -1
- package/dist/plugins/review-report-integration.d.ts.map +0 -1
- package/dist/plugins/review-report-store.d.ts.map +0 -1
- package/dist/plugins/review-report-types.d.ts.map +0 -1
- package/dist/plugins/review-types.d.ts.map +0 -1
- package/dist/plugins/skills-plugin.d.ts.map +0 -1
- package/dist/plugins/sync-plugin.d.ts.map +0 -1
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/prompt-installer.d.ts.map +0 -1
- package/dist/prompts/prompt-manifest-store.d.ts.map +0 -1
- package/dist/registry/index.d.ts.map +0 -1
- package/dist/registry/index.js.map +0 -7
- package/dist/registry/provider-registry.d.ts.map +0 -1
- package/dist/registry/slash-command-registry.d.ts.map +0 -1
- package/dist/registry/tool-registry.d.ts.map +0 -1
- package/dist/replay/hash.d.ts.map +0 -1
- package/dist/replay/index.d.ts.map +0 -1
- package/dist/replay/index.js.map +0 -7
- package/dist/replay/replay-provider-runner.d.ts.map +0 -1
- package/dist/security/capabilities.d.ts.map +0 -1
- package/dist/security/config-secrets.d.ts.map +0 -1
- package/dist/security/directory-permission-policy.d.ts.map +0 -1
- package/dist/security/directory-policy-schema.d.ts.map +0 -1
- package/dist/security/index.d.ts.map +0 -1
- package/dist/security/index.js.map +0 -7
- package/dist/security/kanban-boundary.d.ts.map +0 -1
- package/dist/security/permission-policy-schema.d.ts.map +0 -1
- package/dist/security/permission-policy.d.ts.map +0 -1
- package/dist/security/readonly-permission-policy.d.ts.map +0 -1
- package/dist/security/secret-scrubber.d.ts.map +0 -1
- package/dist/security/secret-vault.d.ts.map +0 -1
- package/dist/security/trust-boundary.d.ts.map +0 -1
- package/dist/security/yolo-risk.d.ts.map +0 -1
- package/dist/session-registry-atomic-file.d.ts.map +0 -1
- package/dist/session-registry-types.d.ts.map +0 -1
- package/dist/session-registry.d.ts.map +0 -1
- package/dist/skills/foreign-sources.d.ts.map +0 -1
- package/dist/skills/frontmatter.d.ts.map +0 -1
- package/dist/skills/github-fetcher.d.ts.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js.map +0 -7
- package/dist/skills/limits.d.ts.map +0 -1
- package/dist/skills/manifest-store.d.ts.map +0 -1
- package/dist/skills/registry/github-direct-adapter.d.ts.map +0 -1
- package/dist/skills/registry/registry-adapter.d.ts.map +0 -1
- package/dist/skills/registry/skills-sh-adapter.d.ts.map +0 -1
- package/dist/skills/skill-generator.d.ts.map +0 -1
- package/dist/skills/skill-installer.d.ts.map +0 -1
- package/dist/storage/annotations-store.d.ts.map +0 -1
- package/dist/storage/attachment-store.d.ts.map +0 -1
- package/dist/storage/cloud-sync.d.ts.map +0 -1
- package/dist/storage/completed-work-checkpoint.d.ts.map +0 -1
- package/dist/storage/config-loader/bootstrap.d.ts.map +0 -1
- package/dist/storage/config-loader/default-repair.d.ts.map +0 -1
- package/dist/storage/config-loader/defaults.d.ts.map +0 -1
- package/dist/storage/config-loader/diagnostics.d.ts.map +0 -1
- package/dist/storage/config-loader/env-overrides.d.ts.map +0 -1
- package/dist/storage/config-loader/in-project-policy.d.ts.map +0 -1
- package/dist/storage/config-loader/inline-provider-models.d.ts.map +0 -1
- package/dist/storage/config-loader/legacy-sage-migration.d.ts.map +0 -1
- package/dist/storage/config-loader/path-identity.d.ts.map +0 -1
- package/dist/storage/config-loader/types.d.ts.map +0 -1
- package/dist/storage/config-loader/validation.d.ts.map +0 -1
- package/dist/storage/config-loader.d.ts.map +0 -1
- package/dist/storage/config-migration.d.ts.map +0 -1
- package/dist/storage/config-store.d.ts.map +0 -1
- package/dist/storage/director-state.d.ts.map +0 -1
- package/dist/storage/file-session-writer.d.ts.map +0 -1
- package/dist/storage/goal-coordination.d.ts.map +0 -1
- package/dist/storage/goal-kanban.d.ts.map +0 -1
- package/dist/storage/goal-store.d.ts.map +0 -1
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js.map +0 -7
- package/dist/storage/input-history-store.d.ts.map +0 -1
- package/dist/storage/memory-backend.d.ts.map +0 -1
- package/dist/storage/memory-consolidator.d.ts.map +0 -1
- package/dist/storage/memory-graph-backend.d.ts.map +0 -1
- package/dist/storage/plan-store.d.ts.map +0 -1
- package/dist/storage/plan-templates.d.ts.map +0 -1
- package/dist/storage/prompt-store.d.ts.map +0 -1
- package/dist/storage/prompt-usage-store.d.ts.map +0 -1
- package/dist/storage/provider-config-watcher.d.ts.map +0 -1
- package/dist/storage/queue-store.d.ts.map +0 -1
- package/dist/storage/recovery-lock.d.ts.map +0 -1
- package/dist/storage/replay-log-store.d.ts.map +0 -1
- package/dist/storage/session-analyzer.d.ts.map +0 -1
- package/dist/storage/session-checkpoint-cas.d.ts.map +0 -1
- package/dist/storage/session-event-bridge.d.ts.map +0 -1
- package/dist/storage/session-helpers.d.ts.map +0 -1
- package/dist/storage/session-id-resolver.d.ts.map +0 -1
- package/dist/storage/session-id.d.ts.map +0 -1
- package/dist/storage/session-read-scrubber.d.ts.map +0 -1
- package/dist/storage/session-reader.d.ts.map +0 -1
- package/dist/storage/session-recovery.d.ts.map +0 -1
- package/dist/storage/session-resume-validation.d.ts.map +0 -1
- package/dist/storage/session-rewind-apply.d.ts.map +0 -1
- package/dist/storage/session-rewinder.d.ts.map +0 -1
- package/dist/storage/session-store/delete-session-artifacts.d.ts.map +0 -1
- package/dist/storage/session-store/delete-session-guards.d.ts.map +0 -1
- package/dist/storage/session-store/directory-scan.d.ts.map +0 -1
- package/dist/storage/session-store/directory-session-files.d.ts.map +0 -1
- package/dist/storage/session-store/events.d.ts.map +0 -1
- package/dist/storage/session-store/fork-session.d.ts.map +0 -1
- package/dist/storage/session-store/index-reader.d.ts.map +0 -1
- package/dist/storage/session-store/load-cache.d.ts.map +0 -1
- package/dist/storage/session-store/load-session-data.d.ts.map +0 -1
- package/dist/storage/session-store/paths.d.ts.map +0 -1
- package/dist/storage/session-store/prune-helpers.d.ts.map +0 -1
- package/dist/storage/session-store/replay.d.ts.map +0 -1
- package/dist/storage/session-store/search-events.d.ts.map +0 -1
- package/dist/storage/session-store/shard-manifest.d.ts.map +0 -1
- package/dist/storage/session-store/summary-builder.d.ts.map +0 -1
- package/dist/storage/session-store/summary-header.d.ts.map +0 -1
- package/dist/storage/session-store/types.d.ts.map +0 -1
- package/dist/storage/session-store.d.ts.map +0 -1
- package/dist/storage/session-summary.d.ts.map +0 -1
- package/dist/storage/session-tool-call-ends.d.ts.map +0 -1
- package/dist/storage/session-writer-scrubber.d.ts.map +0 -1
- package/dist/storage/session-writer-truncate.d.ts.map +0 -1
- package/dist/storage/storage-concurrency.d.ts.map +0 -1
- package/dist/storage/task-store.d.ts.map +0 -1
- package/dist/storage/todos-checkpoint.d.ts.map +0 -1
- package/dist/storage/tool-audit-log.d.ts.map +0 -1
- package/dist/tasking/index.d.ts.map +0 -1
- package/dist/tasking/index.js.map +0 -7
- package/dist/tasking/task-store.d.ts.map +0 -1
- package/dist/tasking/task-tracker.d.ts.map +0 -1
- package/dist/tools/council-tool.d.ts.map +0 -1
- package/dist/tools/fallback-chain-manage-tool.d.ts.map +0 -1
- package/dist/tools/fallback-favorite-manage-tool.d.ts.map +0 -1
- package/dist/tools/fallback-manage-helpers.d.ts.map +0 -1
- package/dist/tools/fallback-manage-tool-options.d.ts.map +0 -1
- package/dist/tools/fallback-manage-tools.d.ts.map +0 -1
- package/dist/tools/fallback-model-ref-parse.d.ts.map +0 -1
- package/dist/tools/fallback-provider-key-store.d.ts.map +0 -1
- package/dist/tools/fallback-system-config-view-tool.d.ts.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js.map +0 -7
- package/dist/tools/mcp-control.d.ts.map +0 -1
- package/dist/tools/mcp-use.d.ts.map +0 -1
- package/dist/tools/one-shot-llm-tool.d.ts.map +0 -1
- package/dist/tools/plugin-manager.d.ts.map +0 -1
- package/dist/types/agent-bridge.d.ts.map +0 -1
- package/dist/types/attachment.d.ts.map +0 -1
- package/dist/types/autonomy.d.ts.map +0 -1
- package/dist/types/blocks.d.ts.map +0 -1
- package/dist/types/compactor.d.ts.map +0 -1
- package/dist/types/config/autonomy.d.ts.map +0 -1
- package/dist/types/config/context.d.ts.map +0 -1
- package/dist/types/config/fleet-chat.d.ts.map +0 -1
- package/dist/types/config/mcp-features.d.ts.map +0 -1
- package/dist/types/config/providers.d.ts.map +0 -1
- package/dist/types/config/root.d.ts.map +0 -1
- package/dist/types/config/runtime.d.ts.map +0 -1
- package/dist/types/config/skills-fleet-brain.d.ts.map +0 -1
- package/dist/types/config/tools.d.ts.map +0 -1
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/context-evidence.d.ts.map +0 -1
- package/dist/types/context-window.d.ts.map +0 -1
- package/dist/types/council.d.ts.map +0 -1
- package/dist/types/default-config.d.ts.map +0 -1
- package/dist/types/design-kit.d.ts.map +0 -1
- package/dist/types/error-handler.d.ts.map +0 -1
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/file-event-record.d.ts.map +0 -1
- package/dist/types/hooks.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -7
- package/dist/types/input-reader.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/memory.d.ts.map +0 -1
- package/dist/types/messages.d.ts.map +0 -1
- package/dist/types/mode-prompts.d.ts.map +0 -1
- package/dist/types/mode.d.ts.map +0 -1
- package/dist/types/models-registry.d.ts.map +0 -1
- package/dist/types/multi-agent.d.ts.map +0 -1
- package/dist/types/observability.d.ts.map +0 -1
- package/dist/types/one-shot-llm.d.ts.map +0 -1
- package/dist/types/path-resolver.d.ts.map +0 -1
- package/dist/types/permission.d.ts.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/prompt-registry.d.ts.map +0 -1
- package/dist/types/prompt.d.ts.map +0 -1
- package/dist/types/provider-runner.d.ts.map +0 -1
- package/dist/types/provider.d.ts.map +0 -1
- package/dist/types/quota-regex.d.ts.map +0 -1
- package/dist/types/renderer.d.ts.map +0 -1
- package/dist/types/retry-policy.d.ts.map +0 -1
- package/dist/types/secret-scrubber.d.ts.map +0 -1
- package/dist/types/secret-vault.d.ts.map +0 -1
- package/dist/types/selector.d.ts.map +0 -1
- package/dist/types/session-markers.d.ts.map +0 -1
- package/dist/types/session-markers.js.map +0 -7
- package/dist/types/session-reader.d.ts.map +0 -1
- package/dist/types/session-rewinder.d.ts.map +0 -1
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/side-effect.d.ts.map +0 -1
- package/dist/types/skill.d.ts.map +0 -1
- package/dist/types/slash-command.d.ts.map +0 -1
- package/dist/types/spec.d.ts.map +0 -1
- package/dist/types/system-prompt-contributor.d.ts.map +0 -1
- package/dist/types/system-prompt.d.ts.map +0 -1
- package/dist/types/task-graph.d.ts.map +0 -1
- package/dist/types/token-counter.d.ts.map +0 -1
- package/dist/types/tool-executor.d.ts.map +0 -1
- package/dist/types/tool-markers.d.ts.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/types/utility-types.d.ts.map +0 -1
- package/dist/utils/assert-never.d.ts.map +0 -1
- package/dist/utils/atomic-write.d.ts.map +0 -1
- package/dist/utils/cache-key.d.ts.map +0 -1
- package/dist/utils/child-env.d.ts.map +0 -1
- package/dist/utils/color.d.ts.map +0 -1
- package/dist/utils/compaction-preview.d.ts.map +0 -1
- package/dist/utils/config-backup.d.ts.map +0 -1
- package/dist/utils/config-json.d.ts.map +0 -1
- package/dist/utils/connectivity.d.ts.map +0 -1
- package/dist/utils/context-breakdown.d.ts.map +0 -1
- package/dist/utils/context-evidence.d.ts.map +0 -1
- package/dist/utils/continuous-memory-profiler.d.ts.map +0 -1
- package/dist/utils/crash-shield.d.ts.map +0 -1
- package/dist/utils/deep-merge.d.ts.map +0 -1
- package/dist/utils/diff.d.ts.map +0 -1
- package/dist/utils/error.d.ts.map +0 -1
- package/dist/utils/error.js.map +0 -7
- package/dist/utils/expect-defined.d.ts.map +0 -1
- package/dist/utils/expect-defined.js.map +0 -7
- package/dist/utils/glob-expand.d.ts.map +0 -1
- package/dist/utils/glob-match.d.ts.map +0 -1
- package/dist/utils/heap-watchdog-types.d.ts.map +0 -1
- package/dist/utils/heap-watchdog.d.ts.map +0 -1
- package/dist/utils/heap-watchdog.js.map +0 -7
- package/dist/utils/incoming-images.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -7
- package/dist/utils/instruction-file.d.ts.map +0 -1
- package/dist/utils/ip-guard.d.ts.map +0 -1
- package/dist/utils/json-repair.d.ts.map +0 -1
- package/dist/utils/json-schema-validate.d.ts.map +0 -1
- package/dist/utils/lru-cache.d.ts.map +0 -1
- package/dist/utils/memory-flight-recorder.d.ts.map +0 -1
- package/dist/utils/merge-custom-models.d.ts.map +0 -1
- package/dist/utils/merge-models-payload.d.ts.map +0 -1
- package/dist/utils/message-invariants.d.ts.map +0 -1
- package/dist/utils/newline-normalize.d.ts.map +0 -1
- package/dist/utils/perf-profile.d.ts.map +0 -1
- package/dist/utils/pid.d.ts.map +0 -1
- package/dist/utils/project-identity.d.ts.map +0 -1
- package/dist/utils/project-watch.d.ts.map +0 -1
- package/dist/utils/regex-guard.d.ts.map +0 -1
- package/dist/utils/safe-json.d.ts.map +0 -1
- package/dist/utils/sage-output-block.d.ts.map +0 -1
- package/dist/utils/session-scoped-path.d.ts.map +0 -1
- package/dist/utils/sleep.d.ts.map +0 -1
- package/dist/utils/slug.d.ts.map +0 -1
- package/dist/utils/socket-path.d.ts.map +0 -1
- package/dist/utils/sqlite-warning.d.ts.map +0 -1
- package/dist/utils/string.d.ts.map +0 -1
- package/dist/utils/task-format.d.ts.map +0 -1
- package/dist/utils/term.d.ts.map +0 -1
- package/dist/utils/todos-format.d.ts.map +0 -1
- package/dist/utils/token-estimate.d.ts.map +0 -1
- package/dist/utils/tool-description-mode.d.ts.map +0 -1
- package/dist/utils/tool-name.d.ts.map +0 -1
- package/dist/utils/tool-output-serializer.d.ts.map +0 -1
- package/dist/utils/tool-result-render-mode.d.ts.map +0 -1
- package/dist/utils/tool-subject.d.ts.map +0 -1
- package/dist/utils/tool-wire-compact.d.ts.map +0 -1
- package/dist/utils/tree-kill.d.ts.map +0 -1
- package/dist/utils/tree-kill.js.map +0 -7
- package/dist/utils/ulid.d.ts.map +0 -1
- package/dist/utils/walk-ignore.d.ts.map +0 -1
- package/dist/utils/wstack-paths.d.ts.map +0 -1
- package/dist/worktree/index.d.ts.map +0 -1
- package/dist/worktree/index.js.map +0 -7
- package/dist/worktree/worktree-git.d.ts.map +0 -1
- package/dist/worktree/worktree-managed-ops.d.ts.map +0 -1
- package/dist/worktree/worktree-manager.d.ts.map +0 -1
- package/dist/worktree/worktree-types.d.ts.map +0 -1
package/dist/hq/index.js
CHANGED
|
@@ -1,10 +1,83 @@
|
|
|
1
|
-
// src/hq/protocol/
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
// src/hq/protocol/governance.ts
|
|
2
|
+
var SIGNAL_LEVELS = /* @__PURE__ */ new Set([
|
|
3
|
+
"healthy",
|
|
4
|
+
"notice",
|
|
5
|
+
"warning",
|
|
6
|
+
"unavailable"
|
|
7
|
+
]);
|
|
8
|
+
var SIGNAL_CODES = /* @__PURE__ */ new Set([
|
|
9
|
+
"attachment_broker_healthy",
|
|
10
|
+
"attachment_broker_initializing",
|
|
11
|
+
"attachment_broker_status_unavailable",
|
|
12
|
+
"attachment_broker_degraded",
|
|
13
|
+
"attachment_broker_audit_unhealthy",
|
|
14
|
+
"attachment_broker_revocation_pending",
|
|
15
|
+
"attachment_broker_stopped",
|
|
16
|
+
"broker_missing",
|
|
17
|
+
"broker_invalid",
|
|
18
|
+
"connection_failed",
|
|
19
|
+
"request_rejected",
|
|
20
|
+
"unexpected_response"
|
|
21
|
+
]);
|
|
22
|
+
var OPERATOR_ACTIONS = /* @__PURE__ */ new Set(["none", "observe", "investigate"]);
|
|
23
|
+
var BROKER_STATES = /* @__PURE__ */ new Set(["idle", "active", "retry_wait", "stopped"]);
|
|
24
|
+
var BROKER_HEALTH = /* @__PURE__ */ new Set(["initializing", "healthy", "degraded", "stopped"]);
|
|
25
|
+
function isNonNegativeInteger(value) {
|
|
26
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
27
|
+
}
|
|
28
|
+
function hasOnlyKeys(value, allowed) {
|
|
29
|
+
const allowedKeys = new Set(allowed);
|
|
30
|
+
return Object.keys(value).every((key) => allowedKeys.has(key));
|
|
31
|
+
}
|
|
32
|
+
function isHqGovernanceSnapshotPayload(value) {
|
|
33
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
34
|
+
const payload = value;
|
|
35
|
+
if (!hasOnlyKeys(payload, [
|
|
36
|
+
"schemaVersion",
|
|
37
|
+
"projectId",
|
|
38
|
+
"observedAt",
|
|
39
|
+
"available",
|
|
40
|
+
"signal",
|
|
41
|
+
"daemon",
|
|
42
|
+
"attachmentBroker"
|
|
43
|
+
]) || payload.schemaVersion !== 1 || typeof payload.projectId !== "string" || payload.projectId.length === 0 || typeof payload.observedAt !== "string" || typeof payload.available !== "boolean" || typeof payload.signal !== "object" || payload.signal === null || Array.isArray(payload.signal)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const signal = payload.signal;
|
|
47
|
+
if (!hasOnlyKeys(signal, ["level", "code", "operatorAction", "executionDisposition"]) || !SIGNAL_LEVELS.has(signal.level) || !SIGNAL_CODES.has(signal.code) || !OPERATOR_ACTIONS.has(signal.operatorAction) || signal.executionDisposition !== "continue") {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (payload.available === false && (signal.level !== "unavailable" || payload.daemon !== void 0 || payload.attachmentBroker !== void 0) || payload.available === true && signal.level === "unavailable") {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (payload.daemon !== void 0) {
|
|
54
|
+
if (typeof payload.daemon !== "object" || payload.daemon === null || Array.isArray(payload.daemon)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const daemon = payload.daemon;
|
|
58
|
+
if (!hasOnlyKeys(daemon, ["pid", "startedAt"]) || !isNonNegativeInteger(daemon.pid) || typeof daemon.startedAt !== "string") {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (payload.attachmentBroker !== void 0 && payload.attachmentBroker !== null) {
|
|
63
|
+
if (typeof payload.attachmentBroker !== "object" || Array.isArray(payload.attachmentBroker)) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const broker = payload.attachmentBroker;
|
|
67
|
+
if (!hasOnlyKeys(broker, [
|
|
68
|
+
"state",
|
|
69
|
+
"health",
|
|
70
|
+
"consecutiveFailures",
|
|
71
|
+
"pendingRevocations",
|
|
72
|
+
"auditHealthy",
|
|
73
|
+
"expiresAt",
|
|
74
|
+
"nextActionAt"
|
|
75
|
+
]) || !BROKER_STATES.has(broker.state) || !BROKER_HEALTH.has(broker.health) || !isNonNegativeInteger(broker.consecutiveFailures) || !isNonNegativeInteger(broker.pendingRevocations) || typeof broker.auditHealthy !== "boolean" || broker.expiresAt !== void 0 && typeof broker.expiresAt !== "string" || broker.nextActionAt !== void 0 && typeof broker.nextActionAt !== "string") {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
8
81
|
|
|
9
82
|
// src/hq/protocol/kanban.ts
|
|
10
83
|
var HQ_KANBAN_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
@@ -85,33 +158,10 @@ function isHqPeerLostPayload(x) {
|
|
|
85
158
|
return true;
|
|
86
159
|
}
|
|
87
160
|
|
|
88
|
-
// src/hq/protocol/
|
|
89
|
-
var
|
|
90
|
-
var HQ_RESUME_GAP_MAX_BYTES = 1048576;
|
|
91
|
-
var HQ_RESUME_GAP_MAX_STALE_MS = 24 * 60 * 60 * 1e3;
|
|
92
|
-
function isHqResumeGapMessage(x) {
|
|
93
|
-
if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
|
|
94
|
-
const v = x;
|
|
95
|
-
if (v.type !== "hq.resume_gap") return false;
|
|
96
|
-
if (!Number.isSafeInteger(v.lastSeqSeen) || v.lastSeqSeen < 0) return false;
|
|
97
|
-
if (!Array.isArray(v.envelopes)) return false;
|
|
98
|
-
if (v.envelopes.length > HQ_RESUME_GAP_MAX_ENVELOPES) return false;
|
|
99
|
-
if (typeof v.truncated !== "boolean") return false;
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
function isHqResumeRejectMessage(x) {
|
|
103
|
-
if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
|
|
104
|
-
const v = x;
|
|
105
|
-
if (v.type !== "hq.resume_reject") return false;
|
|
106
|
-
if (v.reason !== "gap_too_large" && v.reason !== "last_seen_too_old" && v.reason !== "log_unavailable") {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
if (typeof v.detectedAt !== "string" || !Number.isFinite(Date.parse(v.detectedAt))) return false;
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
161
|
+
// src/hq/protocol/envelope.ts
|
|
162
|
+
var HQ_PROTOCOL_VERSION = 1;
|
|
112
163
|
|
|
113
164
|
// src/hq/protocol/core.ts
|
|
114
|
-
var HQ_PROTOCOL_VERSION = 1;
|
|
115
165
|
var KNOWN_HQ_CLIENT_FRAME_TYPES = /* @__PURE__ */ new Set([
|
|
116
166
|
"client.hello",
|
|
117
167
|
"client.event",
|
|
@@ -277,6 +327,7 @@ var KNOWN_HQ_EVENT_PAYLOAD_TYPES = /* @__PURE__ */ new Set([
|
|
|
277
327
|
"client.heartbeat",
|
|
278
328
|
"mcp.health.snapshot",
|
|
279
329
|
"mcp.operation",
|
|
330
|
+
"governance.snapshot",
|
|
280
331
|
"peer.rehydrate",
|
|
281
332
|
"peer.lost"
|
|
282
333
|
]);
|
|
@@ -542,6 +593,8 @@ function parseHqEventPayload(eventType, payload) {
|
|
|
542
593
|
return isHqMcpHealthSnapshotPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
|
|
543
594
|
case "mcp.operation":
|
|
544
595
|
return isHqMcpOperationPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
|
|
596
|
+
case "governance.snapshot":
|
|
597
|
+
return isHqGovernanceSnapshotPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
|
|
545
598
|
case "peer.rehydrate":
|
|
546
599
|
return isHqPeerRehydratePayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
|
|
547
600
|
case "peer.lost":
|
|
@@ -567,6 +620,39 @@ function createHqEventEnvelope(input) {
|
|
|
567
620
|
};
|
|
568
621
|
}
|
|
569
622
|
|
|
623
|
+
// src/hq/protocol/resume.ts
|
|
624
|
+
var HQ_RESUME_GAP_MAX_ENVELOPES = 1e3;
|
|
625
|
+
var HQ_RESUME_GAP_MAX_BYTES = 1048576;
|
|
626
|
+
var HQ_RESUME_GAP_MAX_STALE_MS = 24 * 60 * 60 * 1e3;
|
|
627
|
+
function isHqResumeGapMessage(x) {
|
|
628
|
+
if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
|
|
629
|
+
const v = x;
|
|
630
|
+
if (v.type !== "hq.resume_gap") return false;
|
|
631
|
+
if (!Number.isSafeInteger(v.lastSeqSeen) || v.lastSeqSeen < 0) return false;
|
|
632
|
+
if (!Array.isArray(v.envelopes)) return false;
|
|
633
|
+
if (v.envelopes.length > HQ_RESUME_GAP_MAX_ENVELOPES) return false;
|
|
634
|
+
if (typeof v.truncated !== "boolean") return false;
|
|
635
|
+
return true;
|
|
636
|
+
}
|
|
637
|
+
function isHqResumeRejectMessage(x) {
|
|
638
|
+
if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
|
|
639
|
+
const v = x;
|
|
640
|
+
if (v.type !== "hq.resume_reject") return false;
|
|
641
|
+
if (v.reason !== "gap_too_large" && v.reason !== "last_seen_too_old" && v.reason !== "log_unavailable") {
|
|
642
|
+
return false;
|
|
643
|
+
}
|
|
644
|
+
if (typeof v.detectedAt !== "string" || !Number.isFinite(Date.parse(v.detectedAt))) return false;
|
|
645
|
+
return true;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
// src/hq/protocol/tool.ts
|
|
649
|
+
var DEFAULT_HQ_REDACTION_POLICY = {
|
|
650
|
+
rawContent: true,
|
|
651
|
+
toolArgs: "full",
|
|
652
|
+
paths: "full"
|
|
653
|
+
};
|
|
654
|
+
var HQ_TRANSCRIPT_TEXT_CAP = 16e3;
|
|
655
|
+
|
|
570
656
|
// src/hq/publisher.ts
|
|
571
657
|
import { randomUUID } from "node:crypto";
|
|
572
658
|
import * as v8 from "node:v8";
|
|
@@ -580,61 +666,71 @@ var PATTERNS = [
|
|
|
580
666
|
// strings don't trigger false positives.
|
|
581
667
|
{
|
|
582
668
|
type: "anthropic_key",
|
|
583
|
-
regex: /(?<![A-Za-z0-9])sk-ant-api\d+-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g
|
|
669
|
+
regex: /(?<![A-Za-z0-9])sk-ant-api\d+-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g,
|
|
670
|
+
anchor: "sk-ant-"
|
|
584
671
|
},
|
|
585
|
-
{ type: "openai_key", regex: /(?<![A-Za-z0-9])sk-(?:proj-)?[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g },
|
|
586
|
-
{ type: "github_pat", regex: /(?<![A-Za-z0-9])ghp_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g },
|
|
587
|
-
{ type: "github_pat_v2", regex: /(?<![A-Za-z0-9])github_pat_[A-Za-z0-9_]{50,}(?![A-Za-z0-9])/g },
|
|
588
|
-
{ type: "aws_access_key", regex: /(?<![A-Za-z0-9])AKIA[0-9A-Z]{16}(?![A-Za-z0-9])/g },
|
|
589
|
-
{ type: "gcp_key", regex: /(?<![A-Za-z0-9])AIza[0-9A-Za-z_-]{35}(?![A-Za-z0-9])/g },
|
|
590
|
-
{ type: "slack_token", regex: /(?<![A-Za-z0-9-])xox[abpos]-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g },
|
|
672
|
+
{ type: "openai_key", regex: /(?<![A-Za-z0-9])sk-(?:proj-)?[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g, anchor: "sk-" },
|
|
673
|
+
{ type: "github_pat", regex: /(?<![A-Za-z0-9])ghp_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g, anchor: "ghp_" },
|
|
674
|
+
{ type: "github_pat_v2", regex: /(?<![A-Za-z0-9])github_pat_[A-Za-z0-9_]{50,}(?![A-Za-z0-9])/g, anchor: "github_pat_" },
|
|
675
|
+
{ type: "aws_access_key", regex: /(?<![A-Za-z0-9])AKIA[0-9A-Z]{16}(?![A-Za-z0-9])/g, anchor: "AKIA" },
|
|
676
|
+
{ type: "gcp_key", regex: /(?<![A-Za-z0-9])AIza[0-9A-Za-z_-]{35}(?![A-Za-z0-9])/g, anchor: "AIza" },
|
|
677
|
+
{ type: "slack_token", regex: /(?<![A-Za-z0-9-])xox[abpos]-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g, anchor: "xox" },
|
|
591
678
|
{
|
|
592
679
|
type: "stripe_key",
|
|
593
|
-
regex: /(?<![A-Za-z0-9])sk_(?:live|test)_[A-Za-z0-9]{24,}(?![A-Za-z0-9])/g
|
|
680
|
+
regex: /(?<![A-Za-z0-9])sk_(?:live|test)_[A-Za-z0-9]{24,}(?![A-Za-z0-9])/g,
|
|
681
|
+
anchor: "sk_"
|
|
594
682
|
},
|
|
595
683
|
{
|
|
596
684
|
type: "twilio_sid",
|
|
597
|
-
regex: /(?<![A-Za-z0-9])AC[a-f0-9]{32}(?![A-Za-z0-9])/g
|
|
685
|
+
regex: /(?<![A-Za-z0-9])AC[a-f0-9]{32}(?![A-Za-z0-9])/g,
|
|
686
|
+
anchor: "AC"
|
|
598
687
|
},
|
|
599
688
|
{
|
|
600
689
|
type: "telegram_bot_token",
|
|
601
690
|
// Telegram tokens are of the form bot<digits>:<alphanum> in URL paths
|
|
602
|
-
regex: /\/bot\d+:[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g
|
|
691
|
+
regex: /\/bot\d+:[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
692
|
+
anchor: "/bot"
|
|
603
693
|
},
|
|
604
694
|
{
|
|
605
695
|
type: "jwt",
|
|
606
696
|
// Anchored: look for literal "eyJ" which is unambiguous for JWT header
|
|
607
|
-
regex: /(?<![A-Za-z0-9/+=])eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}(?![A-Za-z0-9/+=])/g
|
|
697
|
+
regex: /(?<![A-Za-z0-9/+=])eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}(?![A-Za-z0-9/+=])/g,
|
|
698
|
+
anchor: "eyJ"
|
|
608
699
|
},
|
|
609
700
|
{
|
|
610
701
|
type: "private_key",
|
|
611
702
|
// Anchored: start must be BEGIN, end must be END with no extra dashes after END
|
|
612
|
-
regex: /(?:^|\n)-----BEGIN (?:RSA|EC|OPENSSH|DSA|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END[^-]*-----(?:\n|$)/g
|
|
703
|
+
regex: /(?:^|\n)-----BEGIN (?:RSA|EC|OPENSSH|DSA|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END[^-]*-----(?:\n|$)/g,
|
|
704
|
+
anchor: "-----BEGIN"
|
|
613
705
|
},
|
|
614
|
-
{ type: "mongodb_uri", regex: /mongodb(?:\+srv)?:\/\/[^\s"'`]+/g },
|
|
615
|
-
{ type: "postgres_uri", regex: /postgres(?:ql)?:\/\/[^\s"'`]+/g },
|
|
616
|
-
{ type: "mysql_uri", regex: /mysql:\/\/[^\s"'`]+/g },
|
|
617
|
-
{ type: "redis_uri", regex: /redis:\/\/[^\s"'`]+/g },
|
|
706
|
+
{ type: "mongodb_uri", regex: /mongodb(?:\+srv)?:\/\/[^\s"'`]+/g, anchor: "mongodb" },
|
|
707
|
+
{ type: "postgres_uri", regex: /postgres(?:ql)?:\/\/[^\s"'`]+/g, anchor: "postgres" },
|
|
708
|
+
{ type: "mysql_uri", regex: /mysql:\/\/[^\s"'`]+/g, anchor: "mysql://" },
|
|
709
|
+
{ type: "redis_uri", regex: /redis:\/\/[^\s"'`]+/g, anchor: "redis://" },
|
|
618
710
|
// AI/ML provider keys — modern LLM services with well-known prefixes
|
|
619
711
|
{
|
|
620
712
|
type: "huggingface_token",
|
|
621
713
|
// HuggingFace tokens: hf_ followed by 34 alphanumeric chars
|
|
622
|
-
regex: /(?<![A-Za-z0-9])hf_[A-Za-z0-9]{34}(?![A-Za-z0-9])/g
|
|
714
|
+
regex: /(?<![A-Za-z0-9])hf_[A-Za-z0-9]{34}(?![A-Za-z0-9])/g,
|
|
715
|
+
anchor: "hf_"
|
|
623
716
|
},
|
|
624
717
|
{
|
|
625
718
|
type: "replicate_token",
|
|
626
719
|
// Replicate tokens: r8_ followed by 40+ alphanumeric chars
|
|
627
|
-
regex: /(?<![A-Za-z0-9])r8_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
|
|
720
|
+
regex: /(?<![A-Za-z0-9])r8_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
|
|
721
|
+
anchor: "r8_"
|
|
628
722
|
},
|
|
629
723
|
{
|
|
630
724
|
type: "perplexity_key",
|
|
631
725
|
// Perplexity API keys: pplx- followed by 40+ alphanumeric chars
|
|
632
|
-
regex: /(?<![A-Za-z0-9])pplx-[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
|
|
726
|
+
regex: /(?<![A-Za-z0-9])pplx-[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
|
|
727
|
+
anchor: "pplx-"
|
|
633
728
|
},
|
|
634
729
|
{
|
|
635
730
|
type: "groq_key",
|
|
636
731
|
// Groq API keys: gsk_ followed by 40+ alphanumeric chars
|
|
637
|
-
regex: /(?<![A-Za-z0-9])gsk_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
|
|
732
|
+
regex: /(?<![A-Za-z0-9])gsk_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
|
|
733
|
+
anchor: "gsk_"
|
|
638
734
|
},
|
|
639
735
|
{
|
|
640
736
|
type: "bearer_token",
|
|
@@ -647,7 +743,8 @@ var PATTERNS = [
|
|
|
647
743
|
// tokens sharing a single delimiter (`Bearer a… Bearer b…`) must both be
|
|
648
744
|
// redacted. A consuming trailing delimiter would eat the separator the
|
|
649
745
|
// next match needs for its leading anchor, leaking the second token.
|
|
650
|
-
regex: /(?:^|[^A-Za-z0-9_.~+/-])Bearer\s+[A-Za-z0-9._~+/-]{12,512}=*(?=$|[^A-Za-z0-9_.~+/-])/g
|
|
746
|
+
regex: /(?:^|[^A-Za-z0-9_.~+/-])Bearer\s+[A-Za-z0-9._~+/-]{12,512}=*(?=$|[^A-Za-z0-9_.~+/-])/g,
|
|
747
|
+
anchor: "Bearer"
|
|
651
748
|
},
|
|
652
749
|
{
|
|
653
750
|
type: "high_entropy_env",
|
|
@@ -663,7 +760,89 @@ var PATTERNS = [
|
|
|
663
760
|
// replacement so the separator between adjacent secrets is preserved
|
|
664
761
|
// rather than collapsed. Capture groups are therefore: 1=leading
|
|
665
762
|
// delimiter, 2=key name, 3=value.
|
|
666
|
-
regex: /(^|\s)([A-Z_]{4,}(?:KEY|TOKEN|SECRET|PASSWORD|PWD))\s*[:=]\s*['"]?([A-Za-z0-9_/+=-]{20,512})['"]?(?=\s|$)/g
|
|
763
|
+
regex: /(^|\s)([A-Z_]{4,}(?:KEY|TOKEN|SECRET|PASSWORD|PWD))\s*[:=]\s*['"]?([A-Za-z0-9_/+=-]{20,512})['"]?(?=\s|$)/g,
|
|
764
|
+
anchor: ["KEY", "TOKEN", "SECRET", "PASSWORD", "PWD"]
|
|
765
|
+
},
|
|
766
|
+
// ── Ported from packages/plugins credential-patterns.ts (WS-034) ─────────
|
|
767
|
+
// The plugin runtime carried 37 patterns while this scrubber — the one that
|
|
768
|
+
// guards session JSONL, chronicle, HQ broadcast, WebUI events and the auth
|
|
769
|
+
// audit — carried 22. The plugin side already had a parity test; it just did
|
|
770
|
+
// not cover core. Most consequential: WrongStack mints `gho_` tokens itself
|
|
771
|
+
// in the Copilot OAuth flow, and `gh[ousr]_` was absent here.
|
|
772
|
+
{
|
|
773
|
+
type: "github_oauth_token",
|
|
774
|
+
regex: /(?<![A-Za-z0-9])gh[ousr]_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g,
|
|
775
|
+
anchor: ["gho_", "ghu_", "ghs_", "ghr_"]
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
type: "gitlab_pat",
|
|
779
|
+
regex: /(?<![A-Za-z0-9])glpat-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
780
|
+
anchor: "glpat-"
|
|
781
|
+
},
|
|
782
|
+
{
|
|
783
|
+
type: "gitlab_runner_token",
|
|
784
|
+
regex: /(?<![A-Za-z0-9])glrt-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
785
|
+
anchor: "glrt-"
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
type: "npm_token",
|
|
789
|
+
regex: /(?<![A-Za-z0-9])npm_[A-Za-z0-9]{36}(?![A-Za-z0-9])/g,
|
|
790
|
+
anchor: "npm_"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
type: "slack_app_token",
|
|
794
|
+
regex: /(?<![A-Za-z0-9-])xapp-\d-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g,
|
|
795
|
+
anchor: "xapp-"
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
type: "slack_webhook",
|
|
799
|
+
regex: /https:\/\/hooks\.slack\.com\/services\/T[A-Za-z0-9_-]+\/B[A-Za-z0-9_-]+\/[A-Za-z0-9]{16,}/g,
|
|
800
|
+
anchor: "hooks.slack.com"
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
type: "sendgrid_key",
|
|
804
|
+
regex: /(?<![A-Za-z0-9])SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
805
|
+
anchor: "SG."
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
type: "digitalocean_token",
|
|
809
|
+
regex: /(?<![A-Za-z0-9])dop_v1_[a-f0-9]{64}(?![A-Za-z0-9])/g,
|
|
810
|
+
anchor: "dop_v1_"
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
type: "doppler_token",
|
|
814
|
+
regex: /(?<![A-Za-z0-9])dp\.(?:pt|st|sa|scim|audit)\.[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
|
|
815
|
+
anchor: "dp."
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
type: "shopify_token",
|
|
819
|
+
regex: /(?<![A-Za-z0-9])shp(?:at|ca|pa|ss)_[a-fA-F0-9]{32}(?![A-Za-z0-9])/g,
|
|
820
|
+
anchor: "shp"
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
type: "docker_pat",
|
|
824
|
+
regex: /(?<![A-Za-z0-9])dckr_pat_[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
825
|
+
anchor: "dckr_pat_"
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
type: "linear_key",
|
|
829
|
+
regex: /(?<![A-Za-z0-9])lin_api_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
|
|
830
|
+
anchor: "lin_api_"
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
type: "atlassian_token",
|
|
834
|
+
regex: /(?<![A-Za-z0-9])ATATT3[A-Za-z0-9_\-=]{40,}(?![A-Za-z0-9_\-=])/g,
|
|
835
|
+
anchor: "ATATT3"
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
type: "square_token",
|
|
839
|
+
regex: /(?<![A-Za-z0-9])(?:sq0(?:atp|csp)-|EAAA)[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
840
|
+
anchor: ["sq0atp-", "sq0csp-", "EAAA"]
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
type: "google_oauth_client_secret",
|
|
844
|
+
regex: /(?<![A-Za-z0-9_-])GOCSPX-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
|
|
845
|
+
anchor: "GOCSPX-"
|
|
667
846
|
}
|
|
668
847
|
];
|
|
669
848
|
var SIMPLE_PATTERNS = PATTERNS.filter((p) => p.type !== "high_entropy_env");
|
|
@@ -672,32 +851,32 @@ var HIGH_ENTROPY_REGEX = PATTERNS.find((p) => p.type === "high_entropy_env").reg
|
|
|
672
851
|
var COMBINED_REPLACEMENTS = SIMPLE_PATTERNS.map((p) => `[REDACTED:${p.type}]`);
|
|
673
852
|
var SCRUB_CHUNK_BYTES = 64 * 1024;
|
|
674
853
|
var SCRUB_OVERLAP_BYTES = 1024;
|
|
854
|
+
var PATTERN_ANCHORS = [
|
|
855
|
+
...new Set(
|
|
856
|
+
PATTERNS.flatMap(
|
|
857
|
+
(pattern) => typeof pattern.anchor === "string" ? [pattern.anchor] : [...pattern.anchor]
|
|
858
|
+
)
|
|
859
|
+
)
|
|
860
|
+
];
|
|
861
|
+
var JSON_KEY_ANCHORS = [
|
|
862
|
+
'"apiKey"',
|
|
863
|
+
'"api_key"',
|
|
864
|
+
'"token"',
|
|
865
|
+
'"secret"',
|
|
866
|
+
'"password"',
|
|
867
|
+
'"authorization"',
|
|
868
|
+
'"bearer"',
|
|
869
|
+
'"private_key"',
|
|
870
|
+
'"access_token"',
|
|
871
|
+
'"refresh_token"',
|
|
872
|
+
'"client_secret"'
|
|
873
|
+
];
|
|
874
|
+
var ALL_ANCHORS = [...PATTERN_ANCHORS, ...JSON_KEY_ANCHORS];
|
|
675
875
|
function hasCredentialAnchors(text) {
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
text.includes("github_pat_") || // GitHub PAT v2
|
|
681
|
-
text.includes("eyJ") || // JWT
|
|
682
|
-
text.includes("AKIA") || // AWS access key
|
|
683
|
-
text.includes("AIza") || // GCP service key
|
|
684
|
-
text.includes("xox") || // Slack token (xoxa/xoxb/xoxp/xoxo/xoxs)
|
|
685
|
-
text.includes("Bearer ") || // Bearer token (space suffix reduces false positives)
|
|
686
|
-
text.includes("/bot") || // Telegram bot token (URL path pattern)
|
|
687
|
-
text.includes("hf_") || // HuggingFace token
|
|
688
|
-
text.includes("r8_") || // Replicate token
|
|
689
|
-
text.includes("pplx-") || // Perplexity API key
|
|
690
|
-
text.includes("gsk_") || // Groq API key
|
|
691
|
-
text.includes("_KEY=") || // High-entropy env vars: API_KEY=, SECRET_KEY=, ...
|
|
692
|
-
text.includes("_TOKEN=") || // ACCESS_TOKEN=, AUTH_TOKEN=, ...
|
|
693
|
-
text.includes("_SECRET=") || // API_SECRET=, CLIENT_SECRET=, ...
|
|
694
|
-
text.includes("_PASSWORD=") || // DB_PASSWORD=, ROOT_PASSWORD=, ...
|
|
695
|
-
text.includes("mongodb://") || text.includes("mongodb+srv://") || text.includes("postgres://") || text.includes("postgresql://") || text.includes("mysql://") || text.includes("redis://") || // JSON-style credential keys: tool outputs often serialise objects as
|
|
696
|
-
// raw JSON strings rather than parsed objects. The value may not start
|
|
697
|
-
// with a recognisable prefix (sk-, ghp_, etc.), so we anchor on common
|
|
698
|
-
// key names. The `"` prefix avoids matching prose that happens to mention
|
|
699
|
-
// these words — JSON serialisation always quotes string keys.
|
|
700
|
-
text.includes('"apiKey"') || text.includes('"api_key"') || text.includes('"token"') || text.includes('"secret"') || text.includes('"password"') || text.includes('"authorization"') || text.includes('"bearer"') || text.includes('"private_key"') || text.includes('"access_token"') || text.includes('"refresh_token"') || text.includes('"client_secret"');
|
|
876
|
+
for (const anchor of ALL_ANCHORS) {
|
|
877
|
+
if (text.includes(anchor)) return true;
|
|
878
|
+
}
|
|
879
|
+
return false;
|
|
701
880
|
}
|
|
702
881
|
var DefaultSecretScrubber = class {
|
|
703
882
|
scrub(text) {
|
|
@@ -901,7 +1080,7 @@ function scrubAndTruncateHqPreview(value, maxLength = 280) {
|
|
|
901
1080
|
return summarizeString(value, maxLength, true);
|
|
902
1081
|
}
|
|
903
1082
|
function visitValue(value, options, key) {
|
|
904
|
-
if (
|
|
1083
|
+
if (key !== void 0 && isSensitiveKey(key)) {
|
|
905
1084
|
return { value: SENSITIVE_FIELD_REPLACEMENT, redacted: true };
|
|
906
1085
|
}
|
|
907
1086
|
if (typeof value === "string") {
|
|
@@ -912,7 +1091,7 @@ function visitValue(value, options, key) {
|
|
|
912
1091
|
if (!options.preserveRawContentKeys && !options.policy.rawContent && key !== void 0 && isRawContentKey(key)) {
|
|
913
1092
|
return { value: RAW_CONTENT_REPLACEMENT, redacted: true };
|
|
914
1093
|
}
|
|
915
|
-
const scrubbed = summarizeString(value, options.maxSummaryLength,
|
|
1094
|
+
const scrubbed = summarizeString(value, options.maxSummaryLength, true);
|
|
916
1095
|
return { value: scrubbed, redacted: scrubbed !== value };
|
|
917
1096
|
}
|
|
918
1097
|
if (value === null || typeof value !== "object") return { value, redacted: false };
|
|
@@ -964,7 +1143,7 @@ function redactHqEvent(event, options = {}) {
|
|
|
964
1143
|
}
|
|
965
1144
|
function summarizeHqToolArgs(value, options = {}) {
|
|
966
1145
|
const policy = resolveHqRedactionPolicy(options.policy);
|
|
967
|
-
if (policy.toolArgs === "full") return value;
|
|
1146
|
+
if (policy.toolArgs === "full") return redactHqValue(value, options).value;
|
|
968
1147
|
if (policy.toolArgs === "none") return "[REDACTED:hq_tool_args]";
|
|
969
1148
|
if (policy.toolArgs === "redacted") return redactHqValue(value, options).value;
|
|
970
1149
|
if (value === null || typeof value !== "object") return redactHqValue(value, options).value;
|
|
@@ -1836,10 +2015,51 @@ function isMissingFileError(error) {
|
|
|
1836
2015
|
|
|
1837
2016
|
// src/hq/auth-store.ts
|
|
1838
2017
|
import { createHash as createHash2, randomBytes, randomUUID as randomUUID2, scrypt, timingSafeEqual } from "node:crypto";
|
|
1839
|
-
import * as fs3 from "node:fs/promises";
|
|
1840
2018
|
import * as syncFs from "node:fs";
|
|
2019
|
+
import * as fs3 from "node:fs/promises";
|
|
1841
2020
|
import * as path4 from "node:path";
|
|
1842
2021
|
|
|
2022
|
+
// src/security/file-permissions.ts
|
|
2023
|
+
import { chmod } from "node:fs/promises";
|
|
2024
|
+
var SECRET_FILE_MODE = 384;
|
|
2025
|
+
async function restrictFilePermissions(filePath, opts) {
|
|
2026
|
+
const label = opts?.label ?? "file-permissions";
|
|
2027
|
+
const warn = opts?.warn ?? ((msg) => console.warn(msg));
|
|
2028
|
+
if (process.platform === "win32") {
|
|
2029
|
+
try {
|
|
2030
|
+
const { execFile } = await import("node:child_process");
|
|
2031
|
+
const { promisify } = await import("node:util");
|
|
2032
|
+
const execFileAsync = promisify(execFile);
|
|
2033
|
+
const user = windowsAccountName();
|
|
2034
|
+
if (!user) {
|
|
2035
|
+
warn(
|
|
2036
|
+
`[${label}] Could not determine the current Windows user for ${filePath}; skipping icacls hardening.`
|
|
2037
|
+
);
|
|
2038
|
+
return;
|
|
2039
|
+
}
|
|
2040
|
+
await execFileAsync("icacls", [filePath, "/inheritance:r", "/grant:r", `${user}:(F)`], {
|
|
2041
|
+
windowsHide: true
|
|
2042
|
+
});
|
|
2043
|
+
} catch {
|
|
2044
|
+
warn(
|
|
2045
|
+
`[${label}] Could not restrict permissions on ${filePath} \u2014 it may be readable by other users on this system.`
|
|
2046
|
+
);
|
|
2047
|
+
}
|
|
2048
|
+
} else {
|
|
2049
|
+
try {
|
|
2050
|
+
await chmod(filePath, SECRET_FILE_MODE);
|
|
2051
|
+
} catch {
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
2054
|
+
}
|
|
2055
|
+
function windowsAccountName() {
|
|
2056
|
+
const username = process.env.USERNAME || process.env.USER;
|
|
2057
|
+
if (!username || username.includes("\0")) return void 0;
|
|
2058
|
+
const domain = process.env.USERDOMAIN;
|
|
2059
|
+
if (domain && !domain.includes("\0")) return `${domain}\\${username}`;
|
|
2060
|
+
return username;
|
|
2061
|
+
}
|
|
2062
|
+
|
|
1843
2063
|
// src/utils/wstack-paths.ts
|
|
1844
2064
|
import { createHash } from "node:crypto";
|
|
1845
2065
|
import * as fs2 from "node:fs";
|
|
@@ -1969,11 +2189,31 @@ function resolveWstackPaths(opts) {
|
|
|
1969
2189
|
}
|
|
1970
2190
|
|
|
1971
2191
|
// src/hq/auth-audit.ts
|
|
1972
|
-
import { appendFileSync, mkdirSync } from "node:fs";
|
|
2192
|
+
import { appendFileSync, readFileSync as readFileSync3, mkdirSync } from "node:fs";
|
|
1973
2193
|
import * as path3 from "node:path";
|
|
1974
2194
|
function hqAuthAuditPath(dataDir) {
|
|
1975
2195
|
return path3.join(dataDir, "auth-audit.jsonl");
|
|
1976
2196
|
}
|
|
2197
|
+
function readHqAuthAuditTail(dataDir, maxEntries = 50) {
|
|
2198
|
+
const filePath = hqAuthAuditPath(dataDir);
|
|
2199
|
+
let content;
|
|
2200
|
+
try {
|
|
2201
|
+
content = readFileSync3(filePath, "utf8");
|
|
2202
|
+
} catch {
|
|
2203
|
+
return [];
|
|
2204
|
+
}
|
|
2205
|
+
const lines = content.trimEnd().split("\n");
|
|
2206
|
+
const tail = lines.slice(-maxEntries);
|
|
2207
|
+
const entries = [];
|
|
2208
|
+
for (const line of tail) {
|
|
2209
|
+
if (!line) continue;
|
|
2210
|
+
try {
|
|
2211
|
+
entries.push(JSON.parse(line));
|
|
2212
|
+
} catch {
|
|
2213
|
+
}
|
|
2214
|
+
}
|
|
2215
|
+
return entries.reverse();
|
|
2216
|
+
}
|
|
1977
2217
|
function appendHqAuthAudit(dataDir, entry, options) {
|
|
1978
2218
|
try {
|
|
1979
2219
|
mkdirSync(dataDir, { recursive: true });
|
|
@@ -2001,6 +2241,20 @@ function resolveHqDataDir(override, env = process.env) {
|
|
|
2001
2241
|
if (!raw) return defaultHqDataDir();
|
|
2002
2242
|
return path4.isAbsolute(raw) ? path4.resolve(raw) : path4.resolve(process.cwd(), raw);
|
|
2003
2243
|
}
|
|
2244
|
+
function hqTokenVerifier(secret) {
|
|
2245
|
+
return createHash2("sha256").update(secret, "utf8").digest("hex");
|
|
2246
|
+
}
|
|
2247
|
+
function hqTokenKey(token) {
|
|
2248
|
+
if (token.verifier !== void 0 && token.verifier.length > 0) return token.verifier;
|
|
2249
|
+
return token.token ? hqTokenVerifier(token.token) : "";
|
|
2250
|
+
}
|
|
2251
|
+
function hashBrowserToken(token) {
|
|
2252
|
+
if (token.verifier !== void 0 && token.verifier.length > 0) {
|
|
2253
|
+
return token.token ? { ...token, token: "" } : token;
|
|
2254
|
+
}
|
|
2255
|
+
if (!token.token) return token;
|
|
2256
|
+
return { ...token, verifier: hqTokenVerifier(token.token), token: "" };
|
|
2257
|
+
}
|
|
2004
2258
|
function isTokenExpired(token, at = Date.now(), clockSkewMs = 0) {
|
|
2005
2259
|
if (token === void 0) return false;
|
|
2006
2260
|
const expiresAt = token.expiresAt;
|
|
@@ -2034,6 +2288,9 @@ function hqAuthContentHash(file) {
|
|
|
2034
2288
|
...file.clientTokens !== void 0 ? { clientTokens: file.clientTokens.map(redactToken) } : {},
|
|
2035
2289
|
...file.passwordHash !== void 0 ? { passwordHash: REDACTED } : {},
|
|
2036
2290
|
...file.cookieSecret !== void 0 ? { cookieSecret: REDACTED } : {},
|
|
2291
|
+
...file.totpSecret !== void 0 ? { totpSecret: REDACTED } : {},
|
|
2292
|
+
...file.totpPendingSecret !== void 0 ? { totpPendingSecret: REDACTED } : {},
|
|
2293
|
+
...file.totpRecoveryCodes !== void 0 ? { totpRecoveryCodes: file.totpRecoveryCodes.map(() => REDACTED) } : {},
|
|
2037
2294
|
...file.alertRules !== void 0 ? { alertRules: file.alertRules } : {}
|
|
2038
2295
|
};
|
|
2039
2296
|
const payload = JSON.stringify(projection);
|
|
@@ -2053,8 +2310,10 @@ async function writeHqRuntimeFile(dataDir, file) {
|
|
|
2053
2310
|
...file,
|
|
2054
2311
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2055
2312
|
};
|
|
2056
|
-
|
|
2057
|
-
|
|
2313
|
+
const target = hqRuntimeFilePath(dataDir);
|
|
2314
|
+
await atomicWrite(target, `${JSON.stringify(payload, null, 2)}
|
|
2315
|
+
`, { mode: SECRET_FILE_MODE });
|
|
2316
|
+
await restrictFilePermissions(target, { label: "hq-runtime" });
|
|
2058
2317
|
}
|
|
2059
2318
|
function isProcessAlive(pid) {
|
|
2060
2319
|
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
@@ -2067,7 +2326,9 @@ function isProcessAlive(pid) {
|
|
|
2067
2326
|
}
|
|
2068
2327
|
function readHqRuntimeFileSync(dataDir) {
|
|
2069
2328
|
try {
|
|
2070
|
-
const parsed = JSON.parse(
|
|
2329
|
+
const parsed = JSON.parse(
|
|
2330
|
+
syncFs.readFileSync(hqRuntimeFilePath(dataDir), "utf8")
|
|
2331
|
+
);
|
|
2071
2332
|
if (typeof parsed.url !== "string" || parsed.url.trim().length === 0) return void 0;
|
|
2072
2333
|
if (typeof parsed.pid === "number" && !isProcessAlive(parsed.pid)) return void 0;
|
|
2073
2334
|
return {
|
|
@@ -2110,10 +2371,17 @@ async function writeHqAuthFile(dataDir, file) {
|
|
|
2110
2371
|
const payload = {
|
|
2111
2372
|
...file,
|
|
2112
2373
|
version: HQ_AUTH_FILE_VERSION,
|
|
2113
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2374
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2375
|
+
// WS-044: browser secrets never touch the disk. Any legacy cleartext in
|
|
2376
|
+
// the incoming file is converted here, so the first write after an
|
|
2377
|
+
// upgrade migrates the whole list — no separate migration step to forget
|
|
2378
|
+
// to run, and no window where an old file stays cleartext because nothing
|
|
2379
|
+
// happened to rewrite it.
|
|
2380
|
+
...file.browserTokens !== void 0 ? { browserTokens: file.browserTokens.map(hashBrowserToken) } : {}
|
|
2114
2381
|
};
|
|
2115
2382
|
await atomicWrite(target, `${JSON.stringify(payload, null, 2)}
|
|
2116
|
-
`, { mode:
|
|
2383
|
+
`, { mode: SECRET_FILE_MODE });
|
|
2384
|
+
await restrictFilePermissions(target, { label: "hq-auth" });
|
|
2117
2385
|
}
|
|
2118
2386
|
async function ensureHqFirstRunAuthFile(dataDir, opts = {}) {
|
|
2119
2387
|
const file = hqAuthFilePath(dataDir);
|
|
@@ -2319,6 +2587,7 @@ function discoverLocalHqEndpoint(options = {}) {
|
|
|
2319
2587
|
const dataDir = resolveHqDataDir(options.dataDir, options.env ?? process.env);
|
|
2320
2588
|
const runtime = readHqRuntimeFileSync(dataDir);
|
|
2321
2589
|
if (runtime === void 0) return void 0;
|
|
2590
|
+
if (!isLoopbackHqUrl(runtime.url)) return void 0;
|
|
2322
2591
|
const token = readFirstClientTokenFromAuthFile(dataDir);
|
|
2323
2592
|
return { url: runtime.url, ...token ? { token } : {} };
|
|
2324
2593
|
}
|
|
@@ -3312,11 +3581,8 @@ function startToolTelemetryBridge(opts) {
|
|
|
3312
3581
|
}
|
|
3313
3582
|
function truncateForSummary(output, policy, max = 280) {
|
|
3314
3583
|
const resolved = resolveHqRedactionPolicy(policy);
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
return `${output.slice(0, max)}\u2026[truncated:${output.length - max}]`;
|
|
3318
|
-
}
|
|
3319
|
-
return scrubAndTruncateHqPreview(output, max) ?? "";
|
|
3584
|
+
const limit = resolved.rawContent ? Math.max(max, HQ_TRANSCRIPT_TEXT_CAP) : max;
|
|
3585
|
+
return scrubAndTruncateHqPreview(output, limit) ?? "";
|
|
3320
3586
|
}
|
|
3321
3587
|
|
|
3322
3588
|
// src/hq/cost-bridge.ts
|
|
@@ -3438,6 +3704,7 @@ var BestEffortLatestQueue = class {
|
|
|
3438
3704
|
};
|
|
3439
3705
|
|
|
3440
3706
|
// src/hq/kanban-store.ts
|
|
3707
|
+
var MAX_HQ_KANBAN_CACHE_PROJECTS = 32;
|
|
3441
3708
|
var HqKanbanStore = class {
|
|
3442
3709
|
dirPath;
|
|
3443
3710
|
cache = /* @__PURE__ */ new Map();
|
|
@@ -3448,14 +3715,18 @@ var HqKanbanStore = class {
|
|
|
3448
3715
|
}
|
|
3449
3716
|
async load(projectId) {
|
|
3450
3717
|
const cached = this.cache.get(projectId);
|
|
3451
|
-
if (cached !== void 0)
|
|
3718
|
+
if (cached !== void 0) {
|
|
3719
|
+
this.cache.delete(projectId);
|
|
3720
|
+
this.cache.set(projectId, cached);
|
|
3721
|
+
return structuredClone(cached);
|
|
3722
|
+
}
|
|
3452
3723
|
try {
|
|
3453
3724
|
const content = await fs6.readFile(this.filePath(projectId), "utf8");
|
|
3454
3725
|
const snapshot = JSON.parse(content);
|
|
3455
3726
|
if (!isHqKanbanSnapshotPayload(snapshot) || snapshot.projectId !== projectId) {
|
|
3456
3727
|
return emptyKanbanSnapshot(projectId);
|
|
3457
3728
|
}
|
|
3458
|
-
this.
|
|
3729
|
+
this.setCached(projectId, snapshot);
|
|
3459
3730
|
return structuredClone(snapshot);
|
|
3460
3731
|
} catch {
|
|
3461
3732
|
return emptyKanbanSnapshot(projectId);
|
|
@@ -3470,11 +3741,13 @@ var HqKanbanStore = class {
|
|
|
3470
3741
|
() => {
|
|
3471
3742
|
if (this.mergeChains.get(incoming.projectId) === next) {
|
|
3472
3743
|
this.mergeChains.delete(incoming.projectId);
|
|
3744
|
+
this.trimCache();
|
|
3473
3745
|
}
|
|
3474
3746
|
},
|
|
3475
3747
|
() => {
|
|
3476
3748
|
if (this.mergeChains.get(incoming.projectId) === next) {
|
|
3477
3749
|
this.mergeChains.delete(incoming.projectId);
|
|
3750
|
+
this.trimCache();
|
|
3478
3751
|
}
|
|
3479
3752
|
}
|
|
3480
3753
|
);
|
|
@@ -3483,7 +3756,8 @@ var HqKanbanStore = class {
|
|
|
3483
3756
|
async mergeNow(incoming) {
|
|
3484
3757
|
const current = await this.load(incoming.projectId);
|
|
3485
3758
|
const records = /* @__PURE__ */ new Map();
|
|
3486
|
-
for (const record of [...current.boards, ...current.tombstones])
|
|
3759
|
+
for (const record of [...current.boards, ...current.tombstones])
|
|
3760
|
+
records.set(record.boardId, record);
|
|
3487
3761
|
for (const record of [...incoming.boards, ...incoming.tombstones]) {
|
|
3488
3762
|
const existing = records.get(record.boardId);
|
|
3489
3763
|
if (existing === void 0 || compareKanbanRecord(record, existing) > 0) {
|
|
@@ -3502,8 +3776,15 @@ var HqKanbanStore = class {
|
|
|
3502
3776
|
}
|
|
3503
3777
|
merged.boards.sort((a, b) => a.boardId.localeCompare(b.boardId));
|
|
3504
3778
|
merged.tombstones.sort((a, b) => a.boardId.localeCompare(b.boardId));
|
|
3505
|
-
this.
|
|
3506
|
-
this.writer(incoming.projectId)
|
|
3779
|
+
this.setCached(incoming.projectId, merged);
|
|
3780
|
+
const writer = this.writer(incoming.projectId);
|
|
3781
|
+
writer.enqueue(merged);
|
|
3782
|
+
void writer.drain().then(() => {
|
|
3783
|
+
if (this.writers.get(incoming.projectId) === writer) {
|
|
3784
|
+
this.writers.delete(incoming.projectId);
|
|
3785
|
+
this.trimCache();
|
|
3786
|
+
}
|
|
3787
|
+
});
|
|
3507
3788
|
return structuredClone(merged);
|
|
3508
3789
|
}
|
|
3509
3790
|
async drain() {
|
|
@@ -3521,6 +3802,21 @@ var HqKanbanStore = class {
|
|
|
3521
3802
|
}
|
|
3522
3803
|
return writer;
|
|
3523
3804
|
}
|
|
3805
|
+
setCached(projectId, snapshot) {
|
|
3806
|
+
this.cache.delete(projectId);
|
|
3807
|
+
this.cache.set(projectId, snapshot);
|
|
3808
|
+
this.trimCache(projectId);
|
|
3809
|
+
}
|
|
3810
|
+
trimCache(protectedProjectId) {
|
|
3811
|
+
if (this.cache.size <= MAX_HQ_KANBAN_CACHE_PROJECTS) return;
|
|
3812
|
+
for (const projectId of this.cache.keys()) {
|
|
3813
|
+
if (this.cache.size <= MAX_HQ_KANBAN_CACHE_PROJECTS) break;
|
|
3814
|
+
if (projectId === protectedProjectId || this.writers.has(projectId) || this.mergeChains.has(projectId)) {
|
|
3815
|
+
continue;
|
|
3816
|
+
}
|
|
3817
|
+
this.cache.delete(projectId);
|
|
3818
|
+
}
|
|
3819
|
+
}
|
|
3524
3820
|
filePath(projectId) {
|
|
3525
3821
|
const safe = createHash4("sha256").update(projectId).digest("hex");
|
|
3526
3822
|
return path6.join(this.dirPath, `${safe}.json`);
|
|
@@ -3780,7 +4076,7 @@ var HqEventLog = class {
|
|
|
3780
4076
|
async appendInternal(events) {
|
|
3781
4077
|
await this.ensureLineCount();
|
|
3782
4078
|
const lines = events.map((event) => JSON.stringify(event)).join("\n") + "\n";
|
|
3783
|
-
await fs8.appendFile(this.filePath, lines, { encoding: "utf8" });
|
|
4079
|
+
await fs8.appendFile(this.filePath, lines, { encoding: "utf8", mode: SECRET_FILE_MODE });
|
|
3784
4080
|
this.lineCount += events.length;
|
|
3785
4081
|
this.byteCount += Buffer.byteLength(lines, "utf8");
|
|
3786
4082
|
if (this.lineCount >= this.maxLines || this.byteCount >= this.maxBytes) {
|
|
@@ -4199,7 +4495,7 @@ var HqTimeseriesStore = class {
|
|
|
4199
4495
|
const lines = snapshot.samples.map((bucket) => JSON.stringify(bucket)).join("\n") + "\n";
|
|
4200
4496
|
await withFileLock(this.filePath, async () => {
|
|
4201
4497
|
this.diskLineCount ??= await countNonEmptyLines(this.filePath);
|
|
4202
|
-
await fs11.appendFile(this.filePath, lines, { encoding: "utf8" });
|
|
4498
|
+
await fs11.appendFile(this.filePath, lines, { encoding: "utf8", mode: SECRET_FILE_MODE });
|
|
4203
4499
|
this.diskLineCount += snapshot.samples.length;
|
|
4204
4500
|
const compactAt = Math.max(this.maxBuckets + 1, this.maxBuckets * 4);
|
|
4205
4501
|
if (this.diskLineCount >= compactAt) {
|
|
@@ -4762,6 +5058,9 @@ export {
|
|
|
4762
5058
|
hqAuthFilePath,
|
|
4763
5059
|
hqEventLogPresetFields,
|
|
4764
5060
|
hqRuntimeFilePath,
|
|
5061
|
+
hqTokenKey,
|
|
5062
|
+
hqTokenVerifier,
|
|
5063
|
+
isHqGovernanceSnapshotPayload,
|
|
4765
5064
|
isHqKanbanSnapshotPayload,
|
|
4766
5065
|
isHqPeerLostPayload,
|
|
4767
5066
|
isHqPeerRehydratePayload,
|
|
@@ -4781,6 +5080,7 @@ export {
|
|
|
4781
5080
|
mutateHqAuthFile,
|
|
4782
5081
|
parseHqEventPayload,
|
|
4783
5082
|
parseHqFrame,
|
|
5083
|
+
readHqAuthAuditTail,
|
|
4784
5084
|
readHqAuthFile,
|
|
4785
5085
|
readHqRuntimeFileSync,
|
|
4786
5086
|
redactHqEvent,
|