@openrig/cli 0.7.0 → 0.7.1
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/README.md +9 -8
- package/daemon/assets/claude-statusline-context.cjs +13 -3
- package/daemon/assets/guidance/openrig-seat-skills.md +1 -0
- package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/hooks/claude.json +11 -11
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +9 -8
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus-health.cjs +2 -2
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +9 -6
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +1 -1
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +13 -8
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +19 -4
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +167 -46
- package/daemon/assets/skills/rigs/SKILL.md +2 -1
- package/daemon/context-packs/help/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +206 -28
- package/daemon/context-packs/reference/getting-started.md +65 -6
- package/daemon/context-packs/reference/manifest.yaml +1 -1
- package/daemon/context-packs/reference/rig-spec.md +82 -2
- package/daemon/context-packs/reference/whats-new.md +162 -113
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +1 -1
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +19 -4
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +3 -0
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +2 -2
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +13 -8
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-user/SKILL.md +167 -46
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +94 -26
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.d.ts +2 -1
- package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +10 -3
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +10 -4
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +231 -41
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/community-harness-runtime-adapter.d.ts +21 -2
- package/daemon/dist/adapters/community-harness-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/community-harness-runtime-adapter.js +90 -8
- package/daemon/dist/adapters/community-harness-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts +11 -0
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +59 -16
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js +9 -6
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/stub-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runtime-adapter.js +9 -5
- package/daemon/dist/adapters/stub-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +15 -4
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +68 -26
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/attention-surface.d.ts +14 -0
- package/daemon/dist/attention-surface.d.ts.map +1 -1
- package/daemon/dist/attention-surface.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/daemon-db-path.d.ts +6 -0
- package/daemon/dist/daemon-db-path.d.ts.map +1 -1
- package/daemon/dist/daemon-db-path.js +65 -1
- package/daemon/dist/daemon-db-path.js.map +1 -1
- package/daemon/dist/daemon-shutdown.d.ts.map +1 -1
- package/daemon/dist/daemon-shutdown.js +4 -2
- package/daemon/dist/daemon-shutdown.js.map +1 -1
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +16 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/124_context_usage_watchdog_units.d.ts +4 -0
- package/daemon/dist/db/migrations/124_context_usage_watchdog_units.d.ts.map +1 -0
- package/daemon/dist/db/migrations/124_context_usage_watchdog_units.js +9 -0
- package/daemon/dist/db/migrations/124_context_usage_watchdog_units.js.map +1 -0
- package/daemon/dist/db/migrations/125_node_advisor.d.ts +3 -0
- package/daemon/dist/db/migrations/125_node_advisor.d.ts.map +1 -0
- package/daemon/dist/db/migrations/125_node_advisor.js +8 -0
- package/daemon/dist/db/migrations/125_node_advisor.js.map +1 -0
- package/daemon/dist/db/migrations/127_operation_correlation.d.ts +3 -0
- package/daemon/dist/db/migrations/127_operation_correlation.d.ts.map +1 -0
- package/daemon/dist/db/migrations/127_operation_correlation.js +10 -0
- package/daemon/dist/db/migrations/127_operation_correlation.js.map +1 -0
- package/daemon/dist/db/migrations/128_terminal_policy.d.ts +3 -0
- package/daemon/dist/db/migrations/128_terminal_policy.d.ts.map +1 -0
- package/daemon/dist/db/migrations/128_terminal_policy.js +37 -0
- package/daemon/dist/db/migrations/128_terminal_policy.js.map +1 -0
- package/daemon/dist/db/migrations/129_stream_dispositions.d.ts +10 -0
- package/daemon/dist/db/migrations/129_stream_dispositions.d.ts.map +1 -0
- package/daemon/dist/db/migrations/129_stream_dispositions.js +35 -0
- package/daemon/dist/db/migrations/129_stream_dispositions.js.map +1 -0
- package/daemon/dist/db/migrations/130_stream_subscriptions.d.ts +11 -0
- package/daemon/dist/db/migrations/130_stream_subscriptions.d.ts.map +1 -0
- package/daemon/dist/db/migrations/130_stream_subscriptions.js +33 -0
- package/daemon/dist/db/migrations/130_stream_subscriptions.js.map +1 -0
- package/daemon/dist/db/migrations/131_stream_retention_floor.d.ts +8 -0
- package/daemon/dist/db/migrations/131_stream_retention_floor.d.ts.map +1 -0
- package/daemon/dist/db/migrations/131_stream_retention_floor.js +20 -0
- package/daemon/dist/db/migrations/131_stream_retention_floor.js.map +1 -0
- package/daemon/dist/db/migrations/135_seat_identity_process_evidence.d.ts +3 -0
- package/daemon/dist/db/migrations/135_seat_identity_process_evidence.d.ts.map +1 -0
- package/daemon/dist/db/migrations/135_seat_identity_process_evidence.js +16 -0
- package/daemon/dist/db/migrations/135_seat_identity_process_evidence.js.map +1 -0
- package/daemon/dist/domain/active-occupant.d.ts +3 -0
- package/daemon/dist/domain/active-occupant.d.ts.map +1 -1
- package/daemon/dist/domain/active-occupant.js +6 -2
- package/daemon/dist/domain/active-occupant.js.map +1 -1
- package/daemon/dist/domain/activity-taxonomy.d.ts +3 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
- package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
- package/daemon/dist/domain/agent-activity-store.d.ts +6 -2
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +13 -4
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/agent-manifest.d.ts.map +1 -1
- package/daemon/dist/domain/agent-manifest.js +14 -2
- package/daemon/dist/domain/agent-manifest.js.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts +3 -0
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.js +20 -6
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/daemon/dist/domain/builtin-startup-files.d.ts.map +1 -1
- package/daemon/dist/domain/builtin-startup-files.js +2 -0
- package/daemon/dist/domain/builtin-startup-files.js.map +1 -1
- package/daemon/dist/domain/bundle-behaviour.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-behaviour.js +28 -1
- package/daemon/dist/domain/bundle-behaviour.js.map +1 -1
- package/daemon/dist/domain/claim-service.d.ts +19 -1
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +67 -19
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/classification-attempts.d.ts +4 -1
- package/daemon/dist/domain/classification-attempts.d.ts.map +1 -1
- package/daemon/dist/domain/classification-attempts.js +10 -1
- package/daemon/dist/domain/classification-attempts.js.map +1 -1
- package/daemon/dist/domain/classification-sources.d.ts +38 -0
- package/daemon/dist/domain/classification-sources.d.ts.map +1 -1
- package/daemon/dist/domain/classification-sources.js +24 -1
- package/daemon/dist/domain/classification-sources.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +2 -2
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +8 -7
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +109 -7
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +447 -52
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.d.ts +4 -1
- package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.js +23 -12
- package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.js +33 -15
- package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
- package/daemon/dist/domain/codex-owned-plugin-trust.d.ts +26 -0
- package/daemon/dist/domain/codex-owned-plugin-trust.d.ts.map +1 -0
- package/daemon/dist/domain/codex-owned-plugin-trust.js +187 -0
- package/daemon/dist/domain/codex-owned-plugin-trust.js.map +1 -0
- package/daemon/dist/domain/codex-rebuild-permissions.d.ts +54 -0
- package/daemon/dist/domain/codex-rebuild-permissions.d.ts.map +1 -0
- package/daemon/dist/domain/codex-rebuild-permissions.js +134 -0
- package/daemon/dist/domain/codex-rebuild-permissions.js.map +1 -0
- package/daemon/dist/domain/community-harness-launch-result.d.ts +33 -0
- package/daemon/dist/domain/community-harness-launch-result.d.ts.map +1 -0
- package/daemon/dist/domain/community-harness-launch-result.js +93 -0
- package/daemon/dist/domain/community-harness-launch-result.js.map +1 -0
- package/daemon/dist/domain/community-harness-presets.d.ts +27 -2
- package/daemon/dist/domain/community-harness-presets.d.ts.map +1 -1
- package/daemon/dist/domain/community-harness-presets.js +49 -5
- package/daemon/dist/domain/community-harness-presets.js.map +1 -1
- package/daemon/dist/domain/composer-prompts.d.ts +5 -2
- package/daemon/dist/domain/composer-prompts.d.ts.map +1 -1
- package/daemon/dist/domain/composer-prompts.js +2 -2
- package/daemon/dist/domain/composer-prompts.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +2 -1
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/continuity-policy-materializer.d.ts +1 -0
- package/daemon/dist/domain/continuity-policy-materializer.d.ts.map +1 -1
- package/daemon/dist/domain/continuity-policy-materializer.js +2 -0
- package/daemon/dist/domain/continuity-policy-materializer.js.map +1 -1
- package/daemon/dist/domain/draft-aware-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/draft-aware-delivery.js +1 -1
- package/daemon/dist/domain/draft-aware-delivery.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +7 -6
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/footprint-choice.d.ts +41 -0
- package/daemon/dist/domain/footprint-choice.d.ts.map +1 -0
- package/daemon/dist/domain/footprint-choice.js +42 -0
- package/daemon/dist/domain/footprint-choice.js.map +1 -0
- package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts +3 -0
- package/daemon/dist/domain/gateway/delivery-rules-engine.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/delivery-rules-engine.js +1 -1
- package/daemon/dist/domain/gateway/delivery-rules-engine.js.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.d.ts +32 -0
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +71 -4
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +52 -4
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.d.ts +3 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.js +9 -2
- package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.js +14 -2
- package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +1 -3
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +22 -22
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +4 -7
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.js +1 -1
- package/daemon/dist/domain/generated-file-hygiene.js.map +1 -1
- package/daemon/dist/domain/graph-projection.d.ts +3 -0
- package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
- package/daemon/dist/domain/graph-projection.js +2 -0
- package/daemon/dist/domain/graph-projection.js.map +1 -1
- package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -1
- package/daemon/dist/domain/health-diagnosis.js +14 -6
- package/daemon/dist/domain/health-diagnosis.js.map +1 -1
- package/daemon/dist/domain/hot-potato-enforcer.d.ts +1 -1
- package/daemon/dist/domain/human-questions.d.ts +2 -0
- package/daemon/dist/domain/human-questions.d.ts.map +1 -1
- package/daemon/dist/domain/human-questions.js +5 -0
- package/daemon/dist/domain/human-questions.js.map +1 -1
- package/daemon/dist/domain/kernel-boot.d.ts +5 -1
- package/daemon/dist/domain/kernel-boot.d.ts.map +1 -1
- package/daemon/dist/domain/kernel-boot.js +34 -4
- package/daemon/dist/domain/kernel-boot.js.map +1 -1
- package/daemon/dist/domain/managed-blocks.d.ts +32 -1
- package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
- package/daemon/dist/domain/managed-blocks.js +109 -11
- package/daemon/dist/domain/managed-blocks.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.js +3 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +21 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js +110 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +2 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-model-reader.js +7 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +10 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +24 -5
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts +3 -0
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +60 -2
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/native-resume-probe-evidence.d.ts +19 -0
- package/daemon/dist/domain/native-resume-probe-evidence.d.ts.map +1 -0
- package/daemon/dist/domain/native-resume-probe-evidence.js +37 -0
- package/daemon/dist/domain/native-resume-probe-evidence.js.map +1 -0
- package/daemon/dist/domain/native-resume-probe.d.ts +7 -0
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
- package/daemon/dist/domain/native-resume-probe.js +12 -9
- package/daemon/dist/domain/native-resume-probe.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +49 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +119 -45
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +9 -3
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/occupant-invalidator.d.ts +16 -4
- package/daemon/dist/domain/occupant-invalidator.d.ts.map +1 -1
- package/daemon/dist/domain/occupant-invalidator.js +25 -5
- package/daemon/dist/domain/occupant-invalidator.js.map +1 -1
- package/daemon/dist/domain/operation-correlation.d.ts +78 -0
- package/daemon/dist/domain/operation-correlation.d.ts.map +1 -0
- package/daemon/dist/domain/operation-correlation.js +54 -0
- package/daemon/dist/domain/operation-correlation.js.map +1 -0
- package/daemon/dist/domain/permission-account.d.ts +28 -0
- package/daemon/dist/domain/permission-account.d.ts.map +1 -0
- package/daemon/dist/domain/permission-account.js +102 -0
- package/daemon/dist/domain/permission-account.js.map +1 -0
- package/daemon/dist/domain/permission-drift.d.ts.map +1 -1
- package/daemon/dist/domain/permission-drift.js +11 -7
- package/daemon/dist/domain/permission-drift.js.map +1 -1
- package/daemon/dist/domain/pod-bundle-assembler.d.ts +1 -0
- package/daemon/dist/domain/pod-bundle-assembler.d.ts.map +1 -1
- package/daemon/dist/domain/pod-bundle-assembler.js +25 -0
- package/daemon/dist/domain/pod-bundle-assembler.js.map +1 -1
- package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts +7 -0
- package/daemon/dist/domain/policies/artifact-pool-helpers.d.ts.map +1 -1
- package/daemon/dist/domain/policies/artifact-pool-helpers.js +8 -4
- package/daemon/dist/domain/policies/artifact-pool-helpers.js.map +1 -1
- package/daemon/dist/domain/policies/context-usage-threshold.d.ts.map +1 -1
- package/daemon/dist/domain/policies/context-usage-threshold.js +109 -21
- package/daemon/dist/domain/policies/context-usage-threshold.js.map +1 -1
- package/daemon/dist/domain/policies/edge-artifact-required.d.ts +6 -1
- package/daemon/dist/domain/policies/edge-artifact-required.d.ts.map +1 -1
- package/daemon/dist/domain/policies/edge-artifact-required.js +18 -13
- package/daemon/dist/domain/policies/edge-artifact-required.js.map +1 -1
- package/daemon/dist/domain/policies/mode-scheduled-end.d.ts +2 -0
- package/daemon/dist/domain/policies/mode-scheduled-end.d.ts.map +1 -1
- package/daemon/dist/domain/policies/mode-scheduled-end.js +5 -1
- package/daemon/dist/domain/policies/mode-scheduled-end.js.map +1 -1
- package/daemon/dist/domain/policies/periodic-reminder.d.ts +10 -0
- package/daemon/dist/domain/policies/periodic-reminder.d.ts.map +1 -1
- package/daemon/dist/domain/policies/periodic-reminder.js +11 -6
- package/daemon/dist/domain/policies/periodic-reminder.js.map +1 -1
- package/daemon/dist/domain/policies/types.d.ts +25 -0
- package/daemon/dist/domain/policies/types.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +6 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.js +11 -5
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- package/daemon/dist/domain/profile-resolution-worker.d.ts +7 -0
- package/daemon/dist/domain/profile-resolution-worker.d.ts.map +1 -0
- package/daemon/dist/domain/profile-resolution-worker.js +83 -0
- package/daemon/dist/domain/profile-resolution-worker.js.map +1 -0
- package/daemon/dist/domain/profile-resolver.d.ts +6 -0
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +14 -2
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/project-classifier.d.ts +7 -0
- package/daemon/dist/domain/project-classifier.d.ts.map +1 -1
- package/daemon/dist/domain/project-classifier.js +26 -0
- package/daemon/dist/domain/project-classifier.js.map +1 -1
- package/daemon/dist/domain/provider/subscription-move-report.d.ts +86 -0
- package/daemon/dist/domain/provider/subscription-move-report.d.ts.map +1 -0
- package/daemon/dist/domain/provider/subscription-move-report.js +227 -0
- package/daemon/dist/domain/provider/subscription-move-report.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +6 -35
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +14 -55
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-owner.d.ts +6 -3
- package/daemon/dist/domain/queue-owner.d.ts.map +1 -1
- package/daemon/dist/domain/queue-owner.js +10 -5
- package/daemon/dist/domain/queue-owner.js.map +1 -1
- package/daemon/dist/domain/queue-pickup.d.ts +5 -2
- package/daemon/dist/domain/queue-pickup.d.ts.map +1 -1
- package/daemon/dist/domain/queue-pickup.js +19 -2
- package/daemon/dist/domain/queue-pickup.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +54 -21
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +257 -97
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +18 -0
- package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
- package/daemon/dist/domain/queue-retention.js +74 -0
- package/daemon/dist/domain/queue-retention.js.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.d.ts +2 -0
- package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.js +37 -3
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.d.ts +3 -0
- package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.js +9 -0
- package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
- package/daemon/dist/domain/queue-waiting.d.ts +2 -0
- package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
- package/daemon/dist/domain/queue-waiting.js.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.js +18 -6
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
- package/daemon/dist/domain/reconciler.d.ts +23 -0
- package/daemon/dist/domain/reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/reconciler.js +44 -1
- package/daemon/dist/domain/reconciler.js.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.js +2 -3
- package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
- package/daemon/dist/domain/restore-guidance.d.ts +7 -0
- package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
- package/daemon/dist/domain/restore-guidance.js +20 -8
- package/daemon/dist/domain/restore-guidance.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts +13 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +151 -26
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts +7 -2
- package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.js +28 -7
- package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
- package/daemon/dist/domain/restore-policy.d.ts +4 -0
- package/daemon/dist/domain/restore-policy.d.ts.map +1 -1
- package/daemon/dist/domain/restore-policy.js +11 -0
- package/daemon/dist/domain/restore-policy.js.map +1 -1
- package/daemon/dist/domain/rig-edge-ops.d.ts +58 -0
- package/daemon/dist/domain/rig-edge-ops.d.ts.map +1 -0
- package/daemon/dist/domain/rig-edge-ops.js +113 -0
- package/daemon/dist/domain/rig-edge-ops.js.map +1 -0
- package/daemon/dist/domain/rig-name-override.d.ts +14 -0
- package/daemon/dist/domain/rig-name-override.d.ts.map +1 -0
- package/daemon/dist/domain/rig-name-override.js +38 -0
- package/daemon/dist/domain/rig-name-override.js.map +1 -0
- package/daemon/dist/domain/rig-repository.d.ts +10 -2
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +14 -0
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rig-status-compose.d.ts +1 -1
- package/daemon/dist/domain/rig-status-compose.d.ts.map +1 -1
- package/daemon/dist/domain/rig-status-compose.js +3 -1
- package/daemon/dist/domain/rig-status-compose.js.map +1 -1
- package/daemon/dist/domain/rig-teardown.d.ts +19 -0
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +78 -8
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +10 -0
- package/daemon/dist/domain/rigspec-codec.js.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.d.ts +3 -0
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.js +22 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +30 -2
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +262 -47
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +15 -2
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts +3 -0
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +67 -3
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +20 -1
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js +5 -1
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.d.ts +6 -0
- package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.js +26 -10
- package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts +4 -2
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +13 -5
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.d.ts +19 -0
- package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +60 -6
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-delivery-guard.d.ts +20 -1
- package/daemon/dist/domain/seat-delivery-guard.d.ts.map +1 -1
- package/daemon/dist/domain/seat-delivery-guard.js +66 -11
- package/daemon/dist/domain/seat-delivery-guard.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +8 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +74 -4
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-store.d.ts +11 -1
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-store.js +29 -4
- package/daemon/dist/domain/seat-identity-store.js.map +1 -1
- package/daemon/dist/domain/seat-launch-additions.d.ts +115 -0
- package/daemon/dist/domain/seat-launch-additions.d.ts.map +1 -0
- package/daemon/dist/domain/seat-launch-additions.js +439 -0
- package/daemon/dist/domain/seat-launch-additions.js.map +1 -0
- package/daemon/dist/domain/seat-launch-environment.d.ts +1 -1
- package/daemon/dist/domain/seat-launch-environment.d.ts.map +1 -1
- package/daemon/dist/domain/seat-launch-environment.js +1 -1
- package/daemon/dist/domain/seat-launch-environment.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +79 -4
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +202 -12
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/seat-skill-apply.d.ts +139 -0
- package/daemon/dist/domain/seat-skill-apply.d.ts.map +1 -0
- package/daemon/dist/domain/seat-skill-apply.js +221 -0
- package/daemon/dist/domain/seat-skill-apply.js.map +1 -0
- package/daemon/dist/domain/seat-skill-storage.d.ts +295 -0
- package/daemon/dist/domain/seat-skill-storage.d.ts.map +1 -0
- package/daemon/dist/domain/seat-skill-storage.js +850 -0
- package/daemon/dist/domain/seat-skill-storage.js.map +1 -0
- package/daemon/dist/domain/seat-status-service.d.ts +9 -0
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +15 -3
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/session-registry.d.ts +4 -0
- package/daemon/dist/domain/session-registry.d.ts.map +1 -1
- package/daemon/dist/domain/session-registry.js +13 -0
- package/daemon/dist/domain/session-registry.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +52 -21
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +150 -47
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/skill-catalog.d.ts +16 -0
- package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
- package/daemon/dist/domain/skill-catalog.js +15 -6
- package/daemon/dist/domain/skill-catalog.js.map +1 -1
- package/daemon/dist/domain/skill-discovery.d.ts +17 -2
- package/daemon/dist/domain/skill-discovery.d.ts.map +1 -1
- package/daemon/dist/domain/skill-discovery.js +44 -5
- package/daemon/dist/domain/skill-discovery.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts +26 -2
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +226 -14
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/stream-dispositions.d.ts +51 -0
- package/daemon/dist/domain/stream-dispositions.d.ts.map +1 -0
- package/daemon/dist/domain/stream-dispositions.js +112 -0
- package/daemon/dist/domain/stream-dispositions.js.map +1 -0
- package/daemon/dist/domain/stream-store.d.ts +22 -0
- package/daemon/dist/domain/stream-store.d.ts.map +1 -1
- package/daemon/dist/domain/stream-store.js +49 -6
- package/daemon/dist/domain/stream-store.js.map +1 -1
- package/daemon/dist/domain/stream-subscriptions.d.ts +94 -0
- package/daemon/dist/domain/stream-subscriptions.d.ts.map +1 -0
- package/daemon/dist/domain/stream-subscriptions.js +160 -0
- package/daemon/dist/domain/stream-subscriptions.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +6 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +5 -2
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +2 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js +104 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-sessions.d.ts +9 -0
- package/daemon/dist/domain/terminal/herdr-sessions.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-sessions.js +23 -0
- package/daemon/dist/domain/terminal/herdr-sessions.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +4 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +12 -3
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +42 -17
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/view-composer.js +1 -0
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -1
- package/daemon/dist/domain/terminal-policy.d.ts +80 -0
- package/daemon/dist/domain/terminal-policy.d.ts.map +1 -0
- package/daemon/dist/domain/terminal-policy.js +117 -0
- package/daemon/dist/domain/terminal-policy.js.map +1 -0
- package/daemon/dist/domain/terminal-seat.d.ts +9 -0
- package/daemon/dist/domain/terminal-seat.d.ts.map +1 -0
- package/daemon/dist/domain/terminal-seat.js +37 -0
- package/daemon/dist/domain/terminal-seat.js.map +1 -0
- package/daemon/dist/domain/topology-converge.d.ts +25 -2
- package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
- package/daemon/dist/domain/topology-converge.js +14 -1
- package/daemon/dist/domain/topology-converge.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +58 -2
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/urgent-line.d.ts +4 -0
- package/daemon/dist/domain/urgent-line.d.ts.map +1 -0
- package/daemon/dist/domain/urgent-line.js +7 -0
- package/daemon/dist/domain/urgent-line.js.map +1 -0
- package/daemon/dist/domain/usage-series.d.ts.map +1 -1
- package/daemon/dist/domain/usage-series.js +6 -2
- package/daemon/dist/domain/usage-series.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.js +2 -2
- package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +3 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +73 -1
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/view-projector.d.ts.map +1 -1
- package/daemon/dist/domain/view-projector.js +2 -1
- package/daemon/dist/domain/view-projector.js.map +1 -1
- package/daemon/dist/domain/watchdog-delivery.js +1 -1
- package/daemon/dist/domain/watchdog-delivery.js.map +1 -1
- package/daemon/dist/domain/watchdog-job-update.d.ts +21 -0
- package/daemon/dist/domain/watchdog-job-update.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-job-update.js +143 -0
- package/daemon/dist/domain/watchdog-job-update.js.map +1 -0
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts +63 -7
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.js +190 -21
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts +23 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +46 -13
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-exception-escalation.js +7 -3
- package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
- package/daemon/dist/domain/workflow-projector.d.ts +5 -2
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +16 -7
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts +8 -2
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +30 -7
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workspace/project-read.d.ts +2 -0
- package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/project-read.js +10 -1
- package/daemon/dist/domain/workspace/project-read.js.map +1 -1
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +2 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/router-line-surface.d.ts +2 -0
- package/daemon/dist/router-line-surface.d.ts.map +1 -0
- package/daemon/dist/router-line-surface.js +3 -0
- package/daemon/dist/router-line-surface.js.map +1 -0
- package/daemon/dist/routes/activity.d.ts.map +1 -1
- package/daemon/dist/routes/activity.js +3 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/agent-images.d.ts.map +1 -1
- package/daemon/dist/routes/agent-images.js +10 -2
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/attention.d.ts.map +1 -1
- package/daemon/dist/routes/attention.js +30 -3
- package/daemon/dist/routes/attention.js.map +1 -1
- package/daemon/dist/routes/bootstrap-failure-response.js +2 -2
- package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -1
- package/daemon/dist/routes/bundles.js +1 -1
- package/daemon/dist/routes/bundles.js.map +1 -1
- package/daemon/dist/routes/compaction.d.ts.map +1 -1
- package/daemon/dist/routes/compaction.js +31 -10
- package/daemon/dist/routes/compaction.js.map +1 -1
- package/daemon/dist/routes/hosts.d.ts.map +1 -1
- package/daemon/dist/routes/hosts.js +2 -0
- package/daemon/dist/routes/hosts.js.map +1 -1
- package/daemon/dist/routes/mission-control.d.ts.map +1 -1
- package/daemon/dist/routes/mission-control.js +5 -1
- package/daemon/dist/routes/mission-control.js.map +1 -1
- package/daemon/dist/routes/projects.d.ts.map +1 -1
- package/daemon/dist/routes/projects.js +59 -12
- package/daemon/dist/routes/projects.js.map +1 -1
- package/daemon/dist/routes/proof.js +2 -2
- package/daemon/dist/routes/proof.js.map +1 -1
- package/daemon/dist/routes/provider.d.ts.map +1 -1
- package/daemon/dist/routes/provider.js +87 -0
- package/daemon/dist/routes/provider.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +52 -3
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +75 -10
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/rigspec.d.ts.map +1 -1
- package/daemon/dist/routes/rigspec.js +38 -12
- package/daemon/dist/routes/rigspec.js.map +1 -1
- package/daemon/dist/routes/scopes.d.ts.map +1 -1
- package/daemon/dist/routes/scopes.js +30 -7
- package/daemon/dist/routes/scopes.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +19 -3
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.js +5 -0
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/skills.d.ts.map +1 -1
- package/daemon/dist/routes/skills.js +54 -1
- package/daemon/dist/routes/skills.js.map +1 -1
- package/daemon/dist/routes/stream.d.ts.map +1 -1
- package/daemon/dist/routes/stream.js +62 -13
- package/daemon/dist/routes/stream.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts.map +1 -1
- package/daemon/dist/routes/terminal.js +20 -11
- package/daemon/dist/routes/terminal.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +24 -2
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/routes/up.js +5 -0
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/routes/watchdog.d.ts +1 -0
- package/daemon/dist/routes/watchdog.d.ts.map +1 -1
- package/daemon/dist/routes/watchdog.js +52 -3
- package/daemon/dist/routes/watchdog.js.map +1 -1
- package/daemon/dist/routes/workflow.d.ts.map +1 -1
- package/daemon/dist/routes/workflow.js +24 -13
- package/daemon/dist/routes/workflow.js.map +1 -1
- package/daemon/dist/server.d.ts +2 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +4 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/skill-loadout-surface.d.ts +2 -0
- package/daemon/dist/skill-loadout-surface.d.ts.map +1 -1
- package/daemon/dist/skill-loadout-surface.js +2 -0
- package/daemon/dist/skill-loadout-surface.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +54 -21
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js +9 -2
- package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
- package/daemon/docs/reference/a2a-agents.md +343 -0
- package/daemon/docs/reference/acp-agents.md +77 -0
- package/daemon/docs/reference/agent-spec.md +7 -5
- package/daemon/docs/reference/agent-startup-guide.md +46 -0
- package/daemon/docs/reference/agent-state-taxonomy.md +27 -2
- package/daemon/docs/reference/checked-seat-stop.md +11 -0
- package/daemon/docs/reference/community-harness-examples/cursor/cursor.yaml +13 -0
- package/daemon/docs/reference/community-harness-examples/cursor/openrig-cursor-launch +61 -0
- package/daemon/docs/reference/community-harness-examples/hermes/config.yaml.example +18 -0
- package/daemon/docs/reference/community-harness-examples/hermes/hermes.yaml +12 -0
- package/daemon/docs/reference/community-harness-examples/hermes/openrig-hermes-launch +34 -0
- package/daemon/docs/reference/community-harness-examples/openclaw/openclaw.yaml +13 -0
- package/daemon/docs/reference/community-harness-examples/openclaw/openrig-openclaw-launch +38 -0
- package/daemon/docs/reference/community-harness-presets.md +179 -0
- package/daemon/docs/reference/getting-started.md +65 -6
- package/daemon/docs/reference/operation-correlation.md +9 -0
- package/daemon/docs/reference/project-workspace.md +6 -0
- package/daemon/docs/reference/quickstart.md +1 -1
- package/daemon/docs/reference/refocus-channel.md +6 -4
- package/daemon/docs/reference/rig-spec.md +82 -2
- package/daemon/docs/reference/seat-delivery.md +73 -2
- package/daemon/docs/reference/slack-app-setup.md +3 -1
- package/daemon/docs/reference/stream-classifier-worker.md +28 -0
- package/daemon/docs/reference/telemetry.md +3 -0
- package/daemon/docs/reference/terminal-sessions.md +90 -0
- package/daemon/docs/reference/topology-naming.md +1 -1
- package/daemon/docs/reference/whats-new.md +162 -113
- package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +0 -3
- package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +19 -4
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +3 -0
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +36 -10
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +11 -0
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +3 -1
- package/daemon/specs/rigs/launch/secrets-manager/secrets-manager.compose.yaml +1 -1
- package/dist/acp/connector.d.ts +72 -0
- package/dist/acp/connector.d.ts.map +1 -0
- package/dist/acp/connector.js +218 -0
- package/dist/acp/connector.js.map +1 -0
- package/dist/acp/json-rpc-stdio.d.ts +53 -0
- package/dist/acp/json-rpc-stdio.d.ts.map +1 -0
- package/dist/acp/json-rpc-stdio.js +141 -0
- package/dist/acp/json-rpc-stdio.js.map +1 -0
- package/dist/acp/run-processes.d.ts +10 -0
- package/dist/acp/run-processes.d.ts.map +1 -0
- package/dist/acp/run-processes.js +33 -0
- package/dist/acp/run-processes.js.map +1 -0
- package/dist/build-info.js +3 -3
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -7
- package/dist/client.js.map +1 -1
- package/dist/commands/acp.d.ts +11 -0
- package/dist/commands/acp.d.ts.map +1 -0
- package/dist/commands/acp.js +198 -0
- package/dist/commands/acp.js.map +1 -0
- package/dist/commands/attach.js +1 -1
- package/dist/commands/attach.js.map +1 -1
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +39 -10
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/compact-plan.d.ts +2 -0
- package/dist/commands/compact-plan.d.ts.map +1 -1
- package/dist/commands/compact-plan.js +38 -3
- package/dist/commands/compact-plan.js.map +1 -1
- package/dist/commands/compact.js +1 -1
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +7 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.js +2 -2
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +2 -0
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/down.d.ts +5 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +87 -3
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/edge.d.ts +4 -0
- package/dist/commands/edge.d.ts.map +1 -0
- package/dist/commands/edge.js +135 -0
- package/dist/commands/edge.js.map +1 -0
- package/dist/commands/export.d.ts +1 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +51 -0
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/fork.d.ts.map +1 -1
- package/dist/commands/fork.js +19 -2
- package/dist/commands/fork.js.map +1 -1
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +2 -1
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/grow.js +2 -2
- package/dist/commands/grow.js.map +1 -1
- package/dist/commands/launch.js +1 -1
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +113 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/project-worker.d.ts +25 -1
- package/dist/commands/project-worker.d.ts.map +1 -1
- package/dist/commands/project-worker.js +9 -7
- package/dist/commands/project-worker.js.map +1 -1
- package/dist/commands/project.d.ts +2 -0
- package/dist/commands/project.d.ts.map +1 -1
- package/dist/commands/project.js +64 -1
- package/dist/commands/project.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +101 -0
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/ps.d.ts +12 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +50 -47
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +4 -2
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +24 -15
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/reconcile-session.d.ts.map +1 -1
- package/dist/commands/reconcile-session.js +6 -0
- package/dist/commands/reconcile-session.js.map +1 -1
- package/dist/commands/seat.d.ts +2 -0
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +124 -6
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +62 -55
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts +24 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +160 -7
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +116 -3
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +18 -25
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +4 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stream-outcome.d.ts +157 -0
- package/dist/commands/stream-outcome.d.ts.map +1 -0
- package/dist/commands/stream-outcome.js +81 -0
- package/dist/commands/stream-outcome.js.map +1 -0
- package/dist/commands/stream.d.ts.map +1 -1
- package/dist/commands/stream.js +64 -2
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/terminal.d.ts +1 -0
- package/dist/commands/terminal.d.ts.map +1 -1
- package/dist/commands/terminal.js +35 -6
- package/dist/commands/terminal.js.map +1 -1
- package/dist/commands/topology-default-agent.d.ts +2 -2
- package/dist/commands/topology-default-agent.d.ts.map +1 -1
- package/dist/commands/topology-default-agent.js +5 -3
- package/dist/commands/topology-default-agent.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +75 -30
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/watchdog.d.ts.map +1 -1
- package/dist/commands/watchdog.js +80 -5
- package/dist/commands/watchdog.js.map +1 -1
- package/dist/commands/workflow-errors.js +1 -1
- package/dist/commands/workflow-errors.js.map +1 -1
- package/dist/commands/workflow-render.js +4 -4
- package/dist/commands/workflow-render.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +34 -15
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +86 -4
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +4 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +73 -21
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/decisions/decisions.d.ts +203 -0
- package/dist/decisions/decisions.d.ts.map +1 -0
- package/dist/decisions/decisions.js +374 -0
- package/dist/decisions/decisions.js.map +1 -0
- package/dist/decisions/stream-consumer.d.ts +255 -0
- package/dist/decisions/stream-consumer.d.ts.map +1 -0
- package/dist/decisions/stream-consumer.js +282 -0
- package/dist/decisions/stream-consumer.js.map +1 -0
- package/dist/decisions/templates.d.ts +8 -0
- package/dist/decisions/templates.d.ts.map +1 -0
- package/dist/decisions/templates.js +34 -0
- package/dist/decisions/templates.js.map +1 -0
- package/dist/fresh-seat-command.d.ts +18 -0
- package/dist/fresh-seat-command.d.ts.map +1 -0
- package/dist/fresh-seat-command.js +36 -0
- package/dist/fresh-seat-command.js.map +1 -0
- package/dist/front-door.d.ts +4 -0
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +8 -4
- package/dist/front-door.js.map +1 -1
- package/dist/host-bindings.d.ts.map +1 -1
- package/dist/host-bindings.js +16 -9
- package/dist/host-bindings.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lazy-program.d.ts.map +1 -1
- package/dist/lazy-program.js +2 -0
- package/dist/lazy-program.js.map +1 -1
- package/dist/lib/run-on-host.d.ts +29 -0
- package/dist/lib/run-on-host.d.ts.map +1 -0
- package/dist/lib/run-on-host.js +69 -0
- package/dist/lib/run-on-host.js.map +1 -0
- package/dist/lib/seat-activity.d.ts +17 -0
- package/dist/lib/seat-activity.d.ts.map +1 -0
- package/dist/lib/seat-activity.js +29 -0
- package/dist/lib/seat-activity.js.map +1 -0
- package/dist/local-daemon-owner.d.ts +4 -0
- package/dist/local-daemon-owner.d.ts.map +1 -1
- package/dist/local-daemon-owner.js +1 -1
- package/dist/local-daemon-owner.js.map +1 -1
- package/dist/mcp-http.d.ts +42 -0
- package/dist/mcp-http.d.ts.map +1 -0
- package/dist/mcp-http.js +232 -0
- package/dist/mcp-http.js.map +1 -0
- package/dist/mcp-server.d.ts +30 -2
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +1112 -436
- package/dist/mcp-server.js.map +1 -1
- package/dist/seat-launch-additions-lines.d.ts +11 -0
- package/dist/seat-launch-additions-lines.d.ts.map +1 -0
- package/dist/seat-launch-additions-lines.js +14 -0
- package/dist/seat-launch-additions-lines.js.map +1 -0
- package/dist/terminal-window.d.ts +1 -1
- package/dist/terminal-window.d.ts.map +1 -1
- package/dist/terminal-window.js +50 -22
- package/dist/terminal-window.js.map +1 -1
- package/package.json +1 -1
- package/tui/dist/attention/attention-model.d.ts +3 -1
- package/tui/dist/attention/attention-model.d.ts.map +1 -1
- package/tui/dist/attention/attention-model.js +68 -1
- package/tui/dist/attention/attention-model.js.map +1 -1
- package/tui/dist/commands/registry.d.ts.map +1 -1
- package/tui/dist/commands/registry.js +2 -0
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/config/config-model.d.ts.map +1 -1
- package/tui/dist/config/config-model.js +2 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +18 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +4 -0
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +9 -6
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/main.js +15 -1
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +10 -3
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/topology/fixture.js +1 -1
- package/tui/dist/topology/fixture.js.map +1 -1
- package/tui/dist/topology/glyphs.js +1 -1
- package/tui/dist/topology/glyphs.js.map +1 -1
- package/tui/dist/topology/graph-types.d.ts +1 -0
- package/tui/dist/topology/graph-types.d.ts.map +1 -1
- package/tui/dist/types.d.ts +25 -0
- package/tui/dist/types.d.ts.map +1 -1
- package/ui/dist/assets/{index-CVgod3Pm.js → index-Blg-p32B.js} +92 -92
- package/ui/dist/index.html +1 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { parse as parseYaml, parseDocument } from "yaml";
|
|
2
|
+
import { artifactPoolListProblem } from "./policies/artifact-pool-helpers.js";
|
|
3
|
+
import { edgeArtifactRequiredSpecProblem } from "./policies/edge-artifact-required.js";
|
|
4
|
+
import { periodicReminderSpecProblem } from "./policies/periodic-reminder.js";
|
|
5
|
+
import { workflowKeepaliveSpecProblem } from "./policies/workflow-keepalive.js";
|
|
6
|
+
import { isQueueWait, retuneQueueWait } from "./queue-wait-backoff.js";
|
|
7
|
+
import { nextDueAt } from "./watchdog-due.js";
|
|
8
|
+
import { validateCadences, WatchdogJobsError, } from "./watchdog-jobs-repository.js";
|
|
9
|
+
import { parseWatchdogSpec, watchdogJobTarget } from "./watchdog-policy-engine.js";
|
|
10
|
+
/** The policies a caller registers through `rig watchdog register`. The others compute their own schedule. */
|
|
11
|
+
const UPDATABLE_POLICIES = new Set([
|
|
12
|
+
"periodic-reminder",
|
|
13
|
+
"artifact-pool-ready",
|
|
14
|
+
"edge-artifact-required",
|
|
15
|
+
"workflow-keepalive",
|
|
16
|
+
"idle-gate-qitem",
|
|
17
|
+
"context-usage-threshold",
|
|
18
|
+
]);
|
|
19
|
+
/** The session the daemon registers its own jobs as (continuity and auto idle-gate watchdogs). */
|
|
20
|
+
const DAEMON_REGISTRANT = "daemon@kernel";
|
|
21
|
+
/** What each policy's own evaluation requires of a spec (its own check), applied before a spec is stored. */
|
|
22
|
+
const SPEC_PROBLEMS = {
|
|
23
|
+
"periodic-reminder": (spec) => periodicReminderSpecProblem(spec)?.message,
|
|
24
|
+
"edge-artifact-required": (spec) => edgeArtifactRequiredSpecProblem(spec)?.message,
|
|
25
|
+
"artifact-pool-ready": (spec) => artifactPoolListProblem(spec.context["pools"]),
|
|
26
|
+
"workflow-keepalive": (spec) => workflowKeepaliveSpecProblem(spec)?.message,
|
|
27
|
+
};
|
|
28
|
+
function specProblem(policy, parsed) {
|
|
29
|
+
return SPEC_PROBLEMS[policy]?.(parsed) ?? null;
|
|
30
|
+
}
|
|
31
|
+
function storedTarget(job) {
|
|
32
|
+
try {
|
|
33
|
+
return watchdogJobTarget(job, parseWatchdogSpec(job.specYaml).target).session;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return job.targetSession;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** `message` set on the spec's top-level mapping; the rest of the text, comments included, is left as written. */
|
|
40
|
+
function withMessage(specYaml, message) {
|
|
41
|
+
const doc = parseDocument(specYaml);
|
|
42
|
+
if (doc.errors.length > 0 || !doc.contents || typeof doc.toJS() !== "object" || Array.isArray(doc.toJS())) {
|
|
43
|
+
throw new WatchdogJobsError("spec_invalid", "the stored watchdog spec is not a YAML mapping, so a message cannot be set on it");
|
|
44
|
+
}
|
|
45
|
+
doc.set("message", message);
|
|
46
|
+
return String(doc);
|
|
47
|
+
}
|
|
48
|
+
function explainInterval(job, dueMs, nowMs) {
|
|
49
|
+
if (dueMs === null) {
|
|
50
|
+
return `The job has no recorded evaluation to measure ${job.intervalSeconds}s from, so the scheduler evaluates it on its next pass.`;
|
|
51
|
+
}
|
|
52
|
+
const basis = job.lastEvaluationAt
|
|
53
|
+
? `last evaluation ${job.lastEvaluationAt}`
|
|
54
|
+
: `registration ${job.registeredAt} (it has not been evaluated yet)`;
|
|
55
|
+
const when = new Date(dueMs).toISOString();
|
|
56
|
+
return `Takes effect now, measured from ${basis}: next evaluation ${when} (${job.intervalSeconds}s later)` +
|
|
57
|
+
(dueMs <= nowMs ? "; that time has passed, so the scheduler evaluates it on its next pass." : ".");
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Change an active watchdog job's interval, spec or message in place. The job is rewritten through the existing
|
|
61
|
+
* schedule writer (`updateInPlace`) with its stored last evaluation passed back unchanged, so nothing about when it last ran is
|
|
62
|
+
* invented or lost. Every refusal happens before any write.
|
|
63
|
+
*/
|
|
64
|
+
export function updateWatchdogJob(jobs, jobId, input, now = () => new Date()) {
|
|
65
|
+
const job = jobs.getByIdOrThrow(jobId);
|
|
66
|
+
if (job.state === "terminal") {
|
|
67
|
+
throw new WatchdogJobsError("job_terminal", `cannot update watchdog job ${jobId}: state is terminal`, { jobId, state: job.state });
|
|
68
|
+
}
|
|
69
|
+
if (job.state === "stopped") {
|
|
70
|
+
throw new WatchdogJobsError("job_stopped", `cannot update watchdog job ${jobId}: it is stopped, and an update does not restart it; register a new job to run it again`, { jobId, state: job.state });
|
|
71
|
+
}
|
|
72
|
+
const { intervalSeconds, message, specYaml } = input;
|
|
73
|
+
if (intervalSeconds === undefined && message === undefined && specYaml === undefined) {
|
|
74
|
+
throw new WatchdogJobsError("nothing_to_update", "give at least one of intervalSeconds, message or specYaml");
|
|
75
|
+
}
|
|
76
|
+
if (job.registeredBySession === DAEMON_REGISTRANT) {
|
|
77
|
+
throw new WatchdogJobsError("policy_not_updatable", `watchdog job ${jobId} was registered by the daemon, which overwrites or replaces its own jobs, so an edit would be lost or change the id`, { jobId, registeredBySession: job.registeredBySession });
|
|
78
|
+
}
|
|
79
|
+
if (!UPDATABLE_POLICIES.has(job.policy)) {
|
|
80
|
+
throw new WatchdogJobsError("policy_not_updatable", `watchdog job ${jobId} runs the daemon's own ${job.policy} timing, which an update would only fight`, { jobId, policy: job.policy });
|
|
81
|
+
}
|
|
82
|
+
let newInterval = job.intervalSeconds;
|
|
83
|
+
if (intervalSeconds !== undefined) {
|
|
84
|
+
validateCadences({ intervalSeconds: intervalSeconds });
|
|
85
|
+
if (job.scanIntervalSeconds !== null) {
|
|
86
|
+
throw new WatchdogJobsError("interval_not_effective", `watchdog job ${jobId} runs on its scan interval (${job.scanIntervalSeconds}s), so changing interval_seconds would not change when it runs`, { jobId, scanIntervalSeconds: job.scanIntervalSeconds });
|
|
87
|
+
}
|
|
88
|
+
newInterval = intervalSeconds;
|
|
89
|
+
}
|
|
90
|
+
const queueWait = isQueueWait(job.specYaml);
|
|
91
|
+
let newSpec = job.specYaml;
|
|
92
|
+
if (message !== undefined || specYaml !== undefined) {
|
|
93
|
+
if (queueWait) {
|
|
94
|
+
throw new WatchdogJobsError("spec_not_updatable", `watchdog job ${jobId} is a queue wait; its spec holds the queue's packet and what it has delivered, so only its interval can change`, { jobId });
|
|
95
|
+
}
|
|
96
|
+
if (job.policy === "context-usage-threshold" && specYaml !== undefined) {
|
|
97
|
+
throw new WatchdogJobsError("spec_not_updatable", `watchdog job ${jobId} keeps its thresholds outside the spec; only its message and interval can change`, { jobId });
|
|
98
|
+
}
|
|
99
|
+
if (specYaml !== undefined && typeof specYaml !== "string") {
|
|
100
|
+
throw new WatchdogJobsError("spec_invalid", "specYaml must be a string");
|
|
101
|
+
}
|
|
102
|
+
if (message !== undefined && (typeof message !== "string" || !message.trim())) {
|
|
103
|
+
throw new WatchdogJobsError("spec_invalid", "message must be a non-empty string");
|
|
104
|
+
}
|
|
105
|
+
newSpec = specYaml ?? job.specYaml;
|
|
106
|
+
if (message !== undefined)
|
|
107
|
+
newSpec = withMessage(newSpec, message);
|
|
108
|
+
const parsed = parseWatchdogSpec(newSpec);
|
|
109
|
+
const named = parseYaml(newSpec)["policy"];
|
|
110
|
+
if (typeof named === "string" && named !== job.policy) {
|
|
111
|
+
throw new WatchdogJobsError("spec_invalid", `the spec names policy ${named}, but this job runs ${job.policy}; a job's policy cannot change`, { jobId, policy: job.policy });
|
|
112
|
+
}
|
|
113
|
+
const problem = specProblem(job.policy, parsed);
|
|
114
|
+
if (problem)
|
|
115
|
+
throw new WatchdogJobsError("spec_invalid", `watchdog spec is not valid for ${job.policy}: ${problem}`, { jobId, policy: job.policy });
|
|
116
|
+
const target = watchdogJobTarget(job, parsed.target).session;
|
|
117
|
+
if (target !== storedTarget(job)) {
|
|
118
|
+
throw new WatchdogJobsError("target_not_updatable", `the spec would deliver to ${target}, but this job delivers to ${storedTarget(job)}; a job's target cannot change`, { jobId, target, current: storedTarget(job) });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (queueWait && intervalSeconds !== undefined)
|
|
122
|
+
newSpec = retuneQueueWait(newSpec, newInterval);
|
|
123
|
+
// A wait's retuned settings live in its spec, so an interval it already has can still change what is stored.
|
|
124
|
+
const retuned = queueWait && intervalSeconds !== undefined && newSpec !== job.specYaml;
|
|
125
|
+
const changed = [
|
|
126
|
+
...(newInterval !== job.intervalSeconds || retuned ? ["intervalSeconds"] : []),
|
|
127
|
+
...((message !== undefined || specYaml !== undefined) && newSpec !== job.specYaml ? ["specYaml"] : []),
|
|
128
|
+
];
|
|
129
|
+
if (newInterval !== job.intervalSeconds || newSpec !== job.specYaml) {
|
|
130
|
+
jobs.updateInPlace(jobId, newSpec, newInterval, job.lastEvaluationAt);
|
|
131
|
+
}
|
|
132
|
+
const updated = jobs.getByIdOrThrow(jobId);
|
|
133
|
+
const nowMs = now().getTime();
|
|
134
|
+
const dueMs = nextDueAt(updated);
|
|
135
|
+
return {
|
|
136
|
+
job: updated,
|
|
137
|
+
changed,
|
|
138
|
+
nextDueAt: dueMs === null ? null : new Date(dueMs).toISOString(),
|
|
139
|
+
dueNow: dueMs === null || dueMs <= nowMs,
|
|
140
|
+
intervalEffect: intervalSeconds === undefined ? null : explainInterval(updated, dueMs, nowMs),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=watchdog-job-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog-job-update.js","sourceRoot":"","sources":["../../src/domain/watchdog-job-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAyB,MAAM,qCAAqC,CAAC;AACrG,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAGlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEnF,8GAA8G;AAC9G,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,mBAAmB;IACnB,qBAAqB;IACrB,wBAAwB;IACxB,oBAAoB;IACpB,iBAAiB;IACjB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,kGAAkG;AAClG,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAiB1C,6GAA6G;AAC7G,MAAM,aAAa,GAA8F;IAC/G,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,OAAO;IACzE,wBAAwB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,OAAO;IAClF,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAsD,CAAC;IACpI,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,OAAO;CAC5E,CAAC;AACF,SAAS,WAAW,CAAC,MAAc,EAAE,MAA4C;IAC/E,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,GAAgB;IACpC,IAAI,CAAC;QAAC,OAAO,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;IAAC,CAAC;IACtF,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC,aAAa,CAAC;IAAC,CAAC;AACrC,CAAC;AAED,kHAAkH;AAClH,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1G,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,kFAAkF,CAAC,CAAC;IAClI,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,GAAgB,EAAE,KAAoB,EAAE,KAAa;IAC5E,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,iDAAiD,GAAG,CAAC,eAAe,yDAAyD,CAAC;IACvI,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB;QAChC,CAAC,CAAC,mBAAmB,GAAG,CAAC,gBAAgB,EAAE;QAC3C,CAAC,CAAC,gBAAgB,GAAG,CAAC,YAAY,kCAAkC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,mCAAmC,KAAK,qBAAqB,IAAI,KAAK,GAAG,CAAC,eAAe,UAAU;QACxG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAA4B,EAC5B,KAAa,EACb,KAAwB,EACxB,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,8BAA8B,KAAK,qBAAqB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACrI,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,iBAAiB,CACzB,aAAa,EACb,8BAA8B,KAAK,wFAAwF,EAC3H,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAC5B,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrD,IAAI,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,IAAI,iBAAiB,CAAC,mBAAmB,EAAE,2DAA2D,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,KAAK,iBAAiB,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,gBAAgB,KAAK,qHAAqH,EAC1I,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,gBAAgB,KAAK,0BAA0B,GAAG,CAAC,MAAM,2CAA2C,EACpG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAC9B,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC;IACtC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,gBAAgB,CAAC,EAAE,eAAe,EAAE,eAAyB,EAAE,CAAC,CAAC;QACjE,IAAI,GAAG,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,iBAAiB,CACzB,wBAAwB,EACxB,gBAAgB,KAAK,+BAA+B,GAAG,CAAC,mBAAmB,gEAAgE,EAC3I,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,EAAE,CACxD,CAAC;QACJ,CAAC;QACD,WAAW,GAAG,eAAyB,CAAC;IAC1C,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC3B,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,iBAAiB,CACzB,oBAAoB,EACpB,gBAAgB,KAAK,gHAAgH,EACrI,EAAE,KAAK,EAAE,CACV,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,yBAAyB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,iBAAiB,CACzB,oBAAoB,EACpB,gBAAgB,KAAK,kFAAkF,EACvG,EAAE,KAAK,EAAE,CACV,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,oCAAoC,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,GAAI,QAA+B,IAAI,GAAG,CAAC,QAAQ,CAAC;QAC3D,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAiB,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAI,SAAS,CAAC,OAAO,CAA6B,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,yBAAyB,KAAK,uBAAuB,GAAG,CAAC,MAAM,gCAAgC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9K,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO;YAAE,MAAM,IAAI,iBAAiB,CAAC,cAAc,EAAE,kCAAkC,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpJ,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QAC7D,IAAI,MAAM,KAAK,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,6BAA6B,MAAM,8BAA8B,YAAY,CAAC,GAAG,CAAC,gCAAgC,EAClH,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,SAAS,IAAI,eAAe,KAAK,SAAS;QAAE,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEhG,6GAA6G;IAC7G,MAAM,OAAO,GAAG,SAAS,IAAI,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC;IACvF,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACvG,CAAC;IACF,IAAI,WAAW,KAAK,GAAG,CAAC,eAAe,IAAI,OAAO,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;QACpE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,OAAO;QACP,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;QAChE,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK;QACxC,cAAc,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC;KAC9F,CAAC;AACJ,CAAC"}
|
|
@@ -23,6 +23,10 @@ export declare const PHASE_D_POLICIES: readonly ["periodic-reminder", "artifact-
|
|
|
23
23
|
export declare const PHASE_C_POLICIES: readonly ["periodic-reminder", "artifact-pool-ready", "edge-artifact-required", "workflow-keepalive", "idle-gate-qitem", "context-usage-threshold", "parked-owner-consumer", "delivery-deferral", "delivery-digest-flush", "quiet-release", "mode-scheduled-end"];
|
|
24
24
|
export type WatchdogPolicyName = (typeof PHASE_D_POLICIES)[number];
|
|
25
25
|
export type WatchdogJobState = "active" | "stopped" | "terminal";
|
|
26
|
+
/** Issue #1180 — watchdog context samples share the compact-display freshness
|
|
27
|
+
* window (ContextUsageStore.FRESHNESS_THRESHOLD_MS): a seat only samples on a
|
|
28
|
+
* turn, so a reading older than this is a frozen estimate, not a trigger. */
|
|
29
|
+
export declare const CONTEXT_SAMPLE_FRESHNESS_MS = 600000;
|
|
26
30
|
export interface WatchdogJob {
|
|
27
31
|
jobId: string;
|
|
28
32
|
policy: WatchdogPolicyName;
|
|
@@ -51,9 +55,15 @@ export interface WatchdogJob {
|
|
|
51
55
|
/** Visible lifecycle of the generated transcript binding. */
|
|
52
56
|
bindingState: "pending-binding" | "bound" | null;
|
|
53
57
|
thresholdBytes: number | null;
|
|
58
|
+
/** Issue #1180 — per-watchdog token threshold; null = not token-gated. */
|
|
59
|
+
thresholdTokens: number | null;
|
|
60
|
+
/** Issue #1180 — per-watchdog percent-of-seat-window threshold; null = not percent-gated. */
|
|
61
|
+
thresholdPercent: number | null;
|
|
54
62
|
requiresJobId: string | null;
|
|
55
63
|
/** The latest occupant generation for which this threshold fired. */
|
|
56
64
|
lastFiredGeneration: string | null;
|
|
65
|
+
/** The condition this job last told its target about; null when none. */
|
|
66
|
+
lastFiredCondition: string | null;
|
|
57
67
|
}
|
|
58
68
|
export interface RegisterWatchdogJobInput {
|
|
59
69
|
policy: string;
|
|
@@ -68,6 +78,8 @@ export interface RegisterWatchdogJobInput {
|
|
|
68
78
|
targetGenerationUuid?: string | null;
|
|
69
79
|
watchedFilePath?: string | null;
|
|
70
80
|
thresholdBytes?: number | null;
|
|
81
|
+
thresholdTokens?: number | null;
|
|
82
|
+
thresholdPercent?: number | null;
|
|
71
83
|
requiresJobId?: string | null;
|
|
72
84
|
}
|
|
73
85
|
export type EnsureAutoRegistrationInput = RegisterWatchdogJobInput;
|
|
@@ -76,6 +88,8 @@ export declare class WatchdogJobsError extends Error {
|
|
|
76
88
|
readonly details?: Record<string, unknown> | undefined;
|
|
77
89
|
constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
|
|
78
90
|
}
|
|
91
|
+
/** Preserve optional cadence conversion while rejecting an uncomputable scan. */
|
|
92
|
+
export declare function validateCadences(input: Pick<RegisterWatchdogJobInput, "intervalSeconds" | "scanIntervalSeconds">): void;
|
|
79
93
|
export declare class WatchdogJobsRepository {
|
|
80
94
|
private readonly db;
|
|
81
95
|
private readonly now;
|
|
@@ -84,7 +98,30 @@ export declare class WatchdogJobsRepository {
|
|
|
84
98
|
private readonly hasTargetGenColumn;
|
|
85
99
|
private readonly hasContextUsageColumns;
|
|
86
100
|
private readonly hasWatchedFileGenerationColumn;
|
|
101
|
+
private readonly hasThresholdUnitsColumns;
|
|
102
|
+
/** Per job, the spec and interval a caller's update replaced, for a delivery still in flight (see updateInPlace). */
|
|
103
|
+
private readonly updatedFrom;
|
|
104
|
+
/** Per job, the schedule its delivery in flight started under (see deliverySchedule). */
|
|
105
|
+
private readonly inFlight;
|
|
87
106
|
constructor(db: Database.Database, now?: () => Date, resolveOccupantGeneration?: ((sessionName: string) => string | null) | undefined);
|
|
107
|
+
/**
|
|
108
|
+
* Issue #1180 — exactly one threshold unit per context-usage-threshold job:
|
|
109
|
+
* transcript bytes (legacy), sampled tokens, or percent of the seat's window.
|
|
110
|
+
*/
|
|
111
|
+
private validateThresholdUnits;
|
|
112
|
+
/**
|
|
113
|
+
* Issue #1180 — the latest context-usage sample recorded for a seat under its
|
|
114
|
+
* CURRENT occupant generation (sampled after the live tenure's boot, mirroring
|
|
115
|
+
* the GHOST-STAGE generation guard in ContextUsageStore). Null = no usable
|
|
116
|
+
* sample; the caller decides between skip and terminal.
|
|
117
|
+
*/
|
|
118
|
+
findContextUsageForSession(targetSession: string, occupantGeneration: string | null): {
|
|
119
|
+
usedPercentage: number | null;
|
|
120
|
+
contextWindowSize: number | null;
|
|
121
|
+
usedTokens: number | null;
|
|
122
|
+
sampledAt: string | null;
|
|
123
|
+
fresh: boolean;
|
|
124
|
+
} | null;
|
|
88
125
|
register(input: RegisterWatchdogJobInput): WatchdogJob;
|
|
89
126
|
/** Transcript path sampled during the requested seat occupant generation. */
|
|
90
127
|
findTranscriptPath(targetSession: string, occupantGeneration?: string | null): string | null;
|
|
@@ -115,6 +152,22 @@ export declare class WatchdogJobsRepository {
|
|
|
115
152
|
recordEvaluation(jobId: string, evaluatedAt: string, fired: boolean, schedule?: Pick<WatchdogJob, "specYaml" | "intervalSeconds" | "lastEvaluationAt">): void;
|
|
116
153
|
/** Preserve job identity while its owner adjusts a durable reminder schedule. */
|
|
117
154
|
updateSchedule(jobId: string, specYaml: string, intervalSeconds: number, lastEvaluationAt: string | null): void;
|
|
155
|
+
/**
|
|
156
|
+
* A caller's update of an active job in place (`rig watchdog update`). It writes through the same schedule
|
|
157
|
+
* writer, and remembers the spec and interval it replaced: a delivery that began under them and finishes after
|
|
158
|
+
* the update is the same wake, not a rescheduled one, so its receipt still counts (see `scheduleUnchanged`).
|
|
159
|
+
* Any other reschedule of the job that changes something forgets them.
|
|
160
|
+
*/
|
|
161
|
+
updateInPlace(jobId: string, specYaml: string, intervalSeconds: number, lastEvaluationAt: string | null): void;
|
|
162
|
+
/** A job's schedule read as its delivery starts; scheduleUnchanged keeps matching it until deliveryAccounted. */
|
|
163
|
+
deliverySchedule(jobId: string): WatchdogJob;
|
|
164
|
+
deliveryAccounted(jobId: string): void;
|
|
165
|
+
/** A job that stopped running keeps no replaced schedules, unless a delivery in flight still needs them
|
|
166
|
+
* (its deliveryAccounted releases them). */
|
|
167
|
+
private releaseStoppedSchedules;
|
|
168
|
+
/** True when `snapshot`, read before a delivery, is still the job's schedule or one only an update replaced. */
|
|
169
|
+
scheduleUnchanged(current: Pick<WatchdogJob, "jobId" | "specYaml" | "intervalSeconds">, snapshot: Pick<WatchdogJob, "specYaml" | "intervalSeconds">): boolean;
|
|
170
|
+
private writeSchedule;
|
|
118
171
|
/**
|
|
119
172
|
* R1 fix: write the actionable-state machine columns. Mirrors POC
|
|
120
173
|
* engine's `state.actionable` + `state.last_actionable_at`. Called
|
|
@@ -139,13 +192,16 @@ export declare class WatchdogJobsRepository {
|
|
|
139
192
|
stop(jobId: string, reason?: string): WatchdogJob;
|
|
140
193
|
/**
|
|
141
194
|
* GHOST-STAGE (e/Class-B): at a seat swap, stop every ARMED (state='active') job registered by the
|
|
142
|
-
* RETIRING generation
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
195
|
+
* RETIRING generation that wakes the retiring seat itself (`wakesRetiringSeat`, which the caller
|
|
196
|
+
* decides from the job's delivery target) — a stale wake firing into the successor's context is the
|
|
197
|
+
* specimen; the successor re-arms its own. A job it registered for another seat wakes that seat, never
|
|
198
|
+
* the successor, so it keeps running (#1775). Gen-scoped, NEVER name-scoped alone (the successor shares
|
|
199
|
+
* the seat name, so a name-scoped stop would kill the successor's own jobs). A NULL/empty generation
|
|
200
|
+
* never matches (UNKNOWN ≠ retired — note-2). Returns the count stopped. Auditable (terminal_reason),
|
|
201
|
+
* not a hard delete — the row stays for forensics. Pre-063 dbs no-op. `keepJobIds` are left running:
|
|
202
|
+
* the queue's current park timers wake the seat that owns a still-blocked row, which the successor
|
|
203
|
+
* inherits.
|
|
148
204
|
*/
|
|
149
|
-
dropArmedByRegisteringGeneration(generationUuid: string, keepJobIds?: readonly string[]): number;
|
|
205
|
+
dropArmedByRegisteringGeneration(generationUuid: string, wakesRetiringSeat: (job: WatchdogJob) => boolean, keepJobIds?: readonly string[]): number;
|
|
150
206
|
}
|
|
151
207
|
//# sourceMappingURL=watchdog-jobs-repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchdog-jobs-repository.d.ts","sourceRoot":"","sources":["../../src/domain/watchdog-jobs-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,gBAAgB,mQAwBnB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,mQAAmB,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,gBAAgB,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iGAAiG;IACjG,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;mGAC+F;IAC/F,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,6DAA6D;IAC7D,YAAY,EAAE,iBAAiB,GAAG,OAAO,GAAG,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qEAAqE;IACrE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"watchdog-jobs-repository.d.ts","sourceRoot":"","sources":["../../src/domain/watchdog-jobs-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,gBAAgB,mQAwBnB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,mQAAmB,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjE;;8EAE8E;AAC9E,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,gBAAgB,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iGAAiG;IACjG,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;mGAC+F;IAC/F,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0DAA0D;IAC1D,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,6DAA6D;IAC7D,YAAY,EAAE,iBAAiB,GAAG,OAAO,GAAG,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0EAA0E;IAC1E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6FAA6F;IAC7F,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qEAAqE;IACrE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B;4GACwG;IACxG,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AA8BnE,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,IAAI,CAiBvH;AAaD,qBAAa,sBAAsB;IAW/B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAIpB,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAf7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAU;IACzD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAU;IACnD,qHAAqH;IACrH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2E;IACvG,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoE;gBAE1E,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,GAAG,GAAE,MAAM,IAAuB,EAIlC,yBAAyB,CAAC,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,aAAA;IASrF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;;;;OAKG;IACH,0BAA0B,CACxB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC;QACD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC;KAChB,GAAG,IAAI;IAiDR,QAAQ,CAAC,KAAK,EAAE,wBAAwB,GAAG,WAAW;IAwHtD,6EAA6E;IAC7E,kBAAkB,CAChB,aAAa,EAAE,MAAM,EACrB,kBAAkB,gBAA0D,GAC3E,MAAM,GAAG,IAAI;IAwBhB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,IAAI;IAgBlG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAgBrF;;;;;OAKG;IACH,sBAAsB,CACpB,KAAK,EAAE,2BAA2B,EAClC,wBAAwB,GAAE,MAAM,EAA0B,GACzD,WAAW;IA2Bd;;;;OAIG;IACH,oBAAoB,CAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,GAAG,IAAI,EACnC,wBAAwB,GAAE,MAAM,EAAoB,GACnD,WAAW,GAAG,IAAI;IAiCrB,8EAA8E;IAC9E,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAClC,WAAW,EAAE;IAiBhB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAO1C,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAY1C,OAAO,IAAI,WAAW,EAAE;IAOxB,UAAU,IAAI,WAAW,EAAE;IAO3B;iFAC6E;IAC7E,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EACjE,QAAQ,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,IAAI;IA0B1F,iFAAiF;IACjF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ/G;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAe9G,iHAAiH;IACjH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAM5C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC;iDAC6C;IAC7C,OAAO,CAAC,uBAAuB;IAI/B,gHAAgH;IAChH,iBAAiB,CACf,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,UAAU,GAAG,iBAAiB,CAAC,EACpE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,iBAAiB,CAAC,GAC1D,OAAO;IAMV,OAAO,CAAC,aAAa;IAKrB;;;;;;;;;OASG;IACH,aAAa,CACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,MAAM,EACnB,wBAAwB,GAAE,MAAM,GAAG,IAAW,GAC7C,IAAI;IAiBP;;;;;;;OAOG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASjD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAqB,GAAG,WAAW;IAkB7D;;;;;;;;;;;OAWG;IACH,gCAAgC,CAC9B,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,EAChD,UAAU,GAAE,SAAS,MAAM,EAAO,GACjC,MAAM;CAmBV"}
|
|
@@ -45,6 +45,10 @@ export const PHASE_D_POLICIES = [
|
|
|
45
45
|
];
|
|
46
46
|
/** @deprecated since Phase D — use PHASE_D_POLICIES. */
|
|
47
47
|
export const PHASE_C_POLICIES = PHASE_D_POLICIES;
|
|
48
|
+
/** Issue #1180 — watchdog context samples share the compact-display freshness
|
|
49
|
+
* window (ContextUsageStore.FRESHNESS_THRESHOLD_MS): a seat only samples on a
|
|
50
|
+
* turn, so a reading older than this is a frozen estimate, not a trigger. */
|
|
51
|
+
export const CONTEXT_SAMPLE_FRESHNESS_MS = 600_000;
|
|
48
52
|
export class WatchdogJobsError extends Error {
|
|
49
53
|
code;
|
|
50
54
|
details;
|
|
@@ -56,7 +60,7 @@ export class WatchdogJobsError extends Error {
|
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
/** Preserve optional cadence conversion while rejecting an uncomputable scan. */
|
|
59
|
-
function validateCadences(input) {
|
|
63
|
+
export function validateCadences(input) {
|
|
60
64
|
if (!Number.isInteger(input.intervalSeconds) || input.intervalSeconds <= 0) {
|
|
61
65
|
throw new WatchdogJobsError("interval_invalid", `interval_seconds must be a positive integer (got ${String(input.intervalSeconds)})`, { field: "interval_seconds", intervalSeconds: input.intervalSeconds });
|
|
62
66
|
}
|
|
@@ -91,6 +95,11 @@ export class WatchdogJobsRepository {
|
|
|
91
95
|
hasTargetGenColumn;
|
|
92
96
|
hasContextUsageColumns;
|
|
93
97
|
hasWatchedFileGenerationColumn;
|
|
98
|
+
hasThresholdUnitsColumns;
|
|
99
|
+
/** Per job, the spec and interval a caller's update replaced, for a delivery still in flight (see updateInPlace). */
|
|
100
|
+
updatedFrom = new Map();
|
|
101
|
+
/** Per job, the schedule its delivery in flight started under (see deliverySchedule). */
|
|
102
|
+
inFlight = new Map();
|
|
94
103
|
constructor(db, now = () => new Date(),
|
|
95
104
|
// GHOST-STAGE (e/Class-B): resolve the ARMING occupant's atom-B generation so a job carries the
|
|
96
105
|
// generation that registered it. null/absent ⇒ UNKNOWN → the column stays NULL and the swap-time
|
|
@@ -103,6 +112,83 @@ export class WatchdogJobsRepository {
|
|
|
103
112
|
this.hasTargetGenColumn = detectWatchdogColumn(db, "target_generation_uuid");
|
|
104
113
|
this.hasContextUsageColumns = detectWatchdogColumn(db, "last_fired_generation_uuid");
|
|
105
114
|
this.hasWatchedFileGenerationColumn = detectWatchdogColumn(db, "watched_file_generation_uuid");
|
|
115
|
+
this.hasThresholdUnitsColumns = detectWatchdogColumn(db, "threshold_tokens");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Issue #1180 — exactly one threshold unit per context-usage-threshold job:
|
|
119
|
+
* transcript bytes (legacy), sampled tokens, or percent of the seat's window.
|
|
120
|
+
*/
|
|
121
|
+
validateThresholdUnits(input) {
|
|
122
|
+
const hasBytes = input.thresholdBytes != null;
|
|
123
|
+
const hasTokens = input.thresholdTokens != null;
|
|
124
|
+
const hasPercent = input.thresholdPercent != null;
|
|
125
|
+
if (Number(hasBytes) + Number(hasTokens) + Number(hasPercent) !== 1) {
|
|
126
|
+
throw new WatchdogJobsError("threshold_invalid", "context-usage-threshold requires exactly one of threshold_bytes, threshold_tokens, or threshold_percent", {
|
|
127
|
+
thresholdBytes: input.thresholdBytes ?? null,
|
|
128
|
+
thresholdTokens: input.thresholdTokens ?? null,
|
|
129
|
+
thresholdPercent: input.thresholdPercent ?? null,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (hasBytes && (!Number.isInteger(input.thresholdBytes) || (input.thresholdBytes ?? 0) <= 0)) {
|
|
133
|
+
throw new WatchdogJobsError("threshold_invalid", `threshold_bytes must be a positive integer (got ${String(input.thresholdBytes)})`);
|
|
134
|
+
}
|
|
135
|
+
if (hasTokens && (!Number.isInteger(input.thresholdTokens) || (input.thresholdTokens ?? 0) <= 0)) {
|
|
136
|
+
throw new WatchdogJobsError("threshold_invalid", `threshold_tokens must be a positive integer (got ${String(input.thresholdTokens)})`);
|
|
137
|
+
}
|
|
138
|
+
if (hasPercent &&
|
|
139
|
+
(!Number.isFinite(input.thresholdPercent) ||
|
|
140
|
+
(input.thresholdPercent ?? 0) <= 0 ||
|
|
141
|
+
(input.thresholdPercent ?? 0) > 100)) {
|
|
142
|
+
throw new WatchdogJobsError("threshold_invalid", `threshold_percent must be a number from 0 (exclusive) to 100 (got ${String(input.thresholdPercent)})`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Issue #1180 — the latest context-usage sample recorded for a seat under its
|
|
147
|
+
* CURRENT occupant generation (sampled after the live tenure's boot, mirroring
|
|
148
|
+
* the GHOST-STAGE generation guard in ContextUsageStore). Null = no usable
|
|
149
|
+
* sample; the caller decides between skip and terminal.
|
|
150
|
+
*/
|
|
151
|
+
findContextUsageForSession(targetSession, occupantGeneration) {
|
|
152
|
+
if (!occupantGeneration)
|
|
153
|
+
return null;
|
|
154
|
+
const row = this.db
|
|
155
|
+
.prepare(`SELECT usage.used_percentage, usage.context_window_size,
|
|
156
|
+
usage.total_input_tokens, usage.total_output_tokens,
|
|
157
|
+
usage.sampled_at
|
|
158
|
+
FROM sessions AS session
|
|
159
|
+
JOIN occupant_tenures AS tenure
|
|
160
|
+
ON tenure.node_id = session.node_id
|
|
161
|
+
AND tenure.generation_uuid = ?
|
|
162
|
+
JOIN context_usage AS usage
|
|
163
|
+
ON usage.node_id = session.node_id
|
|
164
|
+
WHERE session.session_name = ?
|
|
165
|
+
AND usage.session_name = ?
|
|
166
|
+
AND usage.availability = 'known'
|
|
167
|
+
AND usage.sampled_at IS NOT NULL
|
|
168
|
+
AND julianday(usage.sampled_at) >= julianday(tenure.boot_at)
|
|
169
|
+
ORDER BY session.id DESC
|
|
170
|
+
LIMIT 1`)
|
|
171
|
+
.get(occupantGeneration, targetSession, targetSession);
|
|
172
|
+
if (!row)
|
|
173
|
+
return null;
|
|
174
|
+
const contextWindowSize = row.context_window_size ?? null;
|
|
175
|
+
const usedPercentage = row.used_percentage ?? null;
|
|
176
|
+
// Token estimate: seat-reported totals when present (Codex token_count),
|
|
177
|
+
// otherwise the reported percentage of the reported window (Claude statusline).
|
|
178
|
+
const sampledTotal = row.total_input_tokens != null && row.total_output_tokens != null
|
|
179
|
+
? row.total_input_tokens + row.total_output_tokens
|
|
180
|
+
: null;
|
|
181
|
+
const usedTokens = sampledTotal != null
|
|
182
|
+
? sampledTotal
|
|
183
|
+
: usedPercentage != null && contextWindowSize != null && contextWindowSize > 0
|
|
184
|
+
? Math.round((usedPercentage / 100) * contextWindowSize)
|
|
185
|
+
: null;
|
|
186
|
+
const sampledAt = row.sampled_at ?? null;
|
|
187
|
+
const sampledMs = sampledAt ? Date.parse(sampledAt) : NaN;
|
|
188
|
+
const fresh = Number.isFinite(sampledMs)
|
|
189
|
+
&& Date.now() - sampledMs >= 0
|
|
190
|
+
&& Date.now() - sampledMs < CONTEXT_SAMPLE_FRESHNESS_MS;
|
|
191
|
+
return { usedPercentage, contextWindowSize, usedTokens, sampledAt, fresh };
|
|
106
192
|
}
|
|
107
193
|
register(input) {
|
|
108
194
|
if (!PHASE_D_POLICIES.includes(input.policy)) {
|
|
@@ -116,14 +202,20 @@ export class WatchdogJobsRepository {
|
|
|
116
202
|
if (isContextUsageThreshold && !this.hasContextUsageColumns) {
|
|
117
203
|
throw new WatchdogJobsError("context_usage_schema_missing", "context-usage-threshold requires migration 074_context_usage_watchdog");
|
|
118
204
|
}
|
|
119
|
-
if (isContextUsageThreshold
|
|
120
|
-
(
|
|
121
|
-
|
|
205
|
+
if (isContextUsageThreshold) {
|
|
206
|
+
if ((input.thresholdTokens != null || input.thresholdPercent != null) &&
|
|
207
|
+
!this.hasThresholdUnitsColumns) {
|
|
208
|
+
throw new WatchdogJobsError("context_usage_schema_missing", "context-usage-threshold token/percent units require migration 124_context_usage_watchdog_units");
|
|
209
|
+
}
|
|
210
|
+
this.validateThresholdUnits(input);
|
|
122
211
|
}
|
|
123
212
|
const generatedContinuityJob = input.registeredBySession === "daemon@kernel" &&
|
|
124
213
|
input.specYaml.includes("generated_by: continuity-policy-materializer") &&
|
|
125
214
|
/continuity_mode: (managed-compaction|apprentice-handover)/.test(input.specYaml);
|
|
126
|
-
|
|
215
|
+
// Issue #1180: token/percent jobs measure the seat's sampled context use,
|
|
216
|
+
// not a transcript file — only byte-gated jobs need a watched file.
|
|
217
|
+
const byteGated = isContextUsageThreshold && input.thresholdBytes != null;
|
|
218
|
+
if (byteGated && !input.watchedFilePath && !generatedContinuityJob) {
|
|
127
219
|
throw new WatchdogJobsError("watched_file_unresolved", `no transcript file could be resolved for ${input.targetSession}`, { targetSession: input.targetSession });
|
|
128
220
|
}
|
|
129
221
|
if (isContextUsageThreshold && input.requiresJobId && !this.getById(input.requiresJobId)) {
|
|
@@ -164,6 +256,10 @@ export class WatchdogJobsRepository {
|
|
|
164
256
|
columns.push("watched_file_path", "threshold_bytes", "requires_job_id", "last_fired_generation_uuid");
|
|
165
257
|
values.push(isContextUsageThreshold ? input.watchedFilePath : null, isContextUsageThreshold ? input.thresholdBytes : null, isContextUsageThreshold ? (input.requiresJobId ?? null) : null, null);
|
|
166
258
|
}
|
|
259
|
+
if (this.hasThresholdUnitsColumns) {
|
|
260
|
+
columns.push("threshold_tokens", "threshold_percent");
|
|
261
|
+
values.push(isContextUsageThreshold ? (input.thresholdTokens ?? null) : null, isContextUsageThreshold ? (input.thresholdPercent ?? null) : null);
|
|
262
|
+
}
|
|
167
263
|
if (this.hasWatchedFileGenerationColumn) {
|
|
168
264
|
columns.push("watched_file_generation_uuid");
|
|
169
265
|
values.push(watchedFileGeneration);
|
|
@@ -326,11 +422,12 @@ export class WatchdogJobsRepository {
|
|
|
326
422
|
if (schedule) {
|
|
327
423
|
// A delivery may yield while its owner reschedules the next wake. The
|
|
328
424
|
// fire still happened, but must not replace that newer due boundary.
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
425
|
+
// A caller's update of the job in place is not such a reschedule.
|
|
426
|
+
const current = this.getById(jobId);
|
|
427
|
+
const unchanged = current?.state === "active" && current.lastEvaluationAt === schedule.lastEvaluationAt
|
|
428
|
+
&& this.scheduleUnchanged(current, schedule);
|
|
429
|
+
this.db.prepare(`UPDATE watchdog_jobs SET last_fire_at = ?${unchanged ? ", last_evaluation_at = ?" : ""} WHERE job_id = ?`)
|
|
430
|
+
.run(...(unchanged ? [evaluatedAt, evaluatedAt, jobId] : [evaluatedAt, jobId]));
|
|
334
431
|
return;
|
|
335
432
|
}
|
|
336
433
|
this.db
|
|
@@ -338,6 +435,7 @@ export class WatchdogJobsRepository {
|
|
|
338
435
|
.run(evaluatedAt, evaluatedAt, jobId);
|
|
339
436
|
}
|
|
340
437
|
else {
|
|
438
|
+
this.updatedFrom.delete(jobId);
|
|
341
439
|
this.db
|
|
342
440
|
.prepare(`UPDATE watchdog_jobs SET last_evaluation_at = ? WHERE job_id = ?`)
|
|
343
441
|
.run(evaluatedAt, jobId);
|
|
@@ -345,6 +443,58 @@ export class WatchdogJobsRepository {
|
|
|
345
443
|
}
|
|
346
444
|
/** Preserve job identity while its owner adjusts a durable reminder schedule. */
|
|
347
445
|
updateSchedule(jobId, specYaml, intervalSeconds, lastEvaluationAt) {
|
|
446
|
+
// A rewrite that stores what is already there reschedules nothing, so it keeps what an update replaced.
|
|
447
|
+
const current = this.getById(jobId);
|
|
448
|
+
if (!current || current.specYaml !== specYaml || current.intervalSeconds !== intervalSeconds
|
|
449
|
+
|| current.lastEvaluationAt !== lastEvaluationAt)
|
|
450
|
+
this.updatedFrom.delete(jobId);
|
|
451
|
+
this.writeSchedule(jobId, specYaml, intervalSeconds, lastEvaluationAt);
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* A caller's update of an active job in place (`rig watchdog update`). It writes through the same schedule
|
|
455
|
+
* writer, and remembers the spec and interval it replaced: a delivery that began under them and finishes after
|
|
456
|
+
* the update is the same wake, not a rescheduled one, so its receipt still counts (see `scheduleUnchanged`).
|
|
457
|
+
* Any other reschedule of the job that changes something forgets them.
|
|
458
|
+
*/
|
|
459
|
+
updateInPlace(jobId, specYaml, intervalSeconds, lastEvaluationAt) {
|
|
460
|
+
const before = this.getByIdOrThrow(jobId);
|
|
461
|
+
this.writeSchedule(jobId, specYaml, intervalSeconds, lastEvaluationAt);
|
|
462
|
+
// Bounded: only deliveries in flight at the time of an update can match, and a job's next evaluation clears it.
|
|
463
|
+
const replaced = [...(this.updatedFrom.get(jobId) ?? []), { specYaml: before.specYaml, intervalSeconds: before.intervalSeconds }];
|
|
464
|
+
const kept = replaced.slice(-8);
|
|
465
|
+
// However many updates land, the schedule the delivery in flight started under stays until that delivery is
|
|
466
|
+
// accounted for. A real reschedule still forgets it, because it clears this record.
|
|
467
|
+
const started = this.inFlight.get(jobId);
|
|
468
|
+
const isStarted = (s) => s.specYaml === started?.specYaml && s.intervalSeconds === started.intervalSeconds;
|
|
469
|
+
if (started && replaced.some(isStarted) && !kept.some(isStarted))
|
|
470
|
+
kept.unshift(started);
|
|
471
|
+
this.updatedFrom.set(jobId, kept);
|
|
472
|
+
}
|
|
473
|
+
/** A job's schedule read as its delivery starts; scheduleUnchanged keeps matching it until deliveryAccounted. */
|
|
474
|
+
deliverySchedule(jobId) {
|
|
475
|
+
const job = this.getByIdOrThrow(jobId);
|
|
476
|
+
this.inFlight.set(jobId, { specYaml: job.specYaml, intervalSeconds: job.intervalSeconds });
|
|
477
|
+
return job;
|
|
478
|
+
}
|
|
479
|
+
deliveryAccounted(jobId) {
|
|
480
|
+
this.inFlight.delete(jobId);
|
|
481
|
+
// Its schedule matches are done, and the next delivery starts under the job's current schedule.
|
|
482
|
+
this.updatedFrom.delete(jobId);
|
|
483
|
+
}
|
|
484
|
+
/** A job that stopped running keeps no replaced schedules, unless a delivery in flight still needs them
|
|
485
|
+
* (its deliveryAccounted releases them). */
|
|
486
|
+
releaseStoppedSchedules(jobIds) {
|
|
487
|
+
for (const jobId of jobIds)
|
|
488
|
+
if (!this.inFlight.has(jobId))
|
|
489
|
+
this.updatedFrom.delete(jobId);
|
|
490
|
+
}
|
|
491
|
+
/** True when `snapshot`, read before a delivery, is still the job's schedule or one only an update replaced. */
|
|
492
|
+
scheduleUnchanged(current, snapshot) {
|
|
493
|
+
if (current.specYaml === snapshot.specYaml && current.intervalSeconds === snapshot.intervalSeconds)
|
|
494
|
+
return true;
|
|
495
|
+
return (this.updatedFrom.get(current.jobId) ?? []).some((replaced) => replaced.specYaml === snapshot.specYaml && replaced.intervalSeconds === snapshot.intervalSeconds);
|
|
496
|
+
}
|
|
497
|
+
writeSchedule(jobId, specYaml, intervalSeconds, lastEvaluationAt) {
|
|
348
498
|
this.db.prepare(`UPDATE watchdog_jobs SET spec_yaml = ?, interval_seconds = ?, last_evaluation_at = ?
|
|
349
499
|
WHERE job_id = ? AND state = 'active'`).run(specYaml, intervalSeconds, lastEvaluationAt, jobId);
|
|
350
500
|
}
|
|
@@ -387,6 +537,7 @@ export class WatchdogJobsRepository {
|
|
|
387
537
|
this.db
|
|
388
538
|
.prepare(`UPDATE watchdog_jobs SET state = 'terminal', terminal_reason = ? WHERE job_id = ?`)
|
|
389
539
|
.run(reason, jobId);
|
|
540
|
+
this.releaseStoppedSchedules([jobId]);
|
|
390
541
|
}
|
|
391
542
|
stop(jobId, reason = "operator_stopped") {
|
|
392
543
|
const existing = this.getByIdOrThrow(jobId);
|
|
@@ -398,25 +549,40 @@ export class WatchdogJobsRepository {
|
|
|
398
549
|
this.db
|
|
399
550
|
.prepare(`UPDATE watchdog_jobs SET state = 'stopped', terminal_reason = ? WHERE job_id = ?`)
|
|
400
551
|
.run(reason, jobId);
|
|
401
|
-
|
|
552
|
+
const stopped = this.getByIdOrThrow(jobId);
|
|
553
|
+
this.releaseStoppedSchedules([jobId]);
|
|
554
|
+
return stopped;
|
|
402
555
|
}
|
|
403
556
|
/**
|
|
404
557
|
* GHOST-STAGE (e/Class-B): at a seat swap, stop every ARMED (state='active') job registered by the
|
|
405
|
-
* RETIRING generation
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
558
|
+
* RETIRING generation that wakes the retiring seat itself (`wakesRetiringSeat`, which the caller
|
|
559
|
+
* decides from the job's delivery target) — a stale wake firing into the successor's context is the
|
|
560
|
+
* specimen; the successor re-arms its own. A job it registered for another seat wakes that seat, never
|
|
561
|
+
* the successor, so it keeps running (#1775). Gen-scoped, NEVER name-scoped alone (the successor shares
|
|
562
|
+
* the seat name, so a name-scoped stop would kill the successor's own jobs). A NULL/empty generation
|
|
563
|
+
* never matches (UNKNOWN ≠ retired — note-2). Returns the count stopped. Auditable (terminal_reason),
|
|
564
|
+
* not a hard delete — the row stays for forensics. Pre-063 dbs no-op. `keepJobIds` are left running:
|
|
565
|
+
* the queue's current park timers wake the seat that owns a still-blocked row, which the successor
|
|
566
|
+
* inherits.
|
|
411
567
|
*/
|
|
412
|
-
dropArmedByRegisteringGeneration(generationUuid, keepJobIds = []) {
|
|
568
|
+
dropArmedByRegisteringGeneration(generationUuid, wakesRetiringSeat, keepJobIds = []) {
|
|
413
569
|
if (!this.hasGenColumn || !generationUuid)
|
|
414
570
|
return 0;
|
|
415
|
-
const keep =
|
|
571
|
+
const keep = new Set(keepJobIds);
|
|
572
|
+
const ids = this.db
|
|
573
|
+
.prepare(`SELECT * FROM watchdog_jobs WHERE state = 'active' AND registered_by_generation_uuid = ?`)
|
|
574
|
+
.all(generationUuid)
|
|
575
|
+
.map(rowToJob)
|
|
576
|
+
.filter((job) => !keep.has(job.jobId) && wakesRetiringSeat(job))
|
|
577
|
+
.map((job) => job.jobId);
|
|
578
|
+
if (ids.length === 0)
|
|
579
|
+
return 0;
|
|
416
580
|
const res = this.db
|
|
417
581
|
.prepare(`UPDATE watchdog_jobs SET state = 'stopped', terminal_reason = 'registering generation retired (seat handover)'
|
|
418
|
-
WHERE state = 'active' AND
|
|
419
|
-
.run(
|
|
582
|
+
WHERE state = 'active' AND job_id IN (${ids.map(() => "?").join(", ")})`)
|
|
583
|
+
.run(...ids);
|
|
584
|
+
if (res.changes > 0)
|
|
585
|
+
this.releaseStoppedSchedules(ids);
|
|
420
586
|
return res.changes;
|
|
421
587
|
}
|
|
422
588
|
}
|
|
@@ -445,8 +611,11 @@ function rowToJob(row) {
|
|
|
445
611
|
? (row.watched_file_path && row.watched_file_generation_uuid ? "bound" : "pending-binding")
|
|
446
612
|
: null,
|
|
447
613
|
thresholdBytes: row.threshold_bytes ?? null,
|
|
614
|
+
thresholdTokens: row.threshold_tokens ?? null,
|
|
615
|
+
thresholdPercent: row.threshold_percent ?? null,
|
|
448
616
|
requiresJobId: row.requires_job_id ?? null,
|
|
449
617
|
lastFiredGeneration: row.last_fired_generation_uuid ?? null,
|
|
618
|
+
lastFiredCondition: row.last_fired_condition ?? null,
|
|
450
619
|
};
|
|
451
620
|
}
|
|
452
621
|
//# sourceMappingURL=watchdog-jobs-repository.js.map
|