@openrig/cli 0.5.13 → 0.5.15
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/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +159 -108
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +40 -5
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -0
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +48 -14
- 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/SKILL.md +159 -108
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +3 -3
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +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 +40 -5
- 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/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -0
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +138 -0
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +12 -0
- package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +543 -0
- 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/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/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/codex-runtime-adapter.d.ts +5 -15
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +79 -93
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +14 -9
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts +6 -15
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +151 -71
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/attention-surface.d.ts +2 -0
- package/daemon/dist/attention-surface.d.ts.map +1 -1
- package/daemon/dist/attention-surface.js +2 -1
- package/daemon/dist/attention-surface.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/db/all-migrations.d.ts +1 -1
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +10 -2
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
- package/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
- package/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
- package/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
- package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
- package/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
- package/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
- package/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
- package/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
- package/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
- package/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
- package/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
- package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
- package/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
- package/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
- package/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
- package/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +18 -5
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
- package/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.js +40 -77
- package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
- package/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
- package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
- 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 +8 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts +23 -0
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +84 -4
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
- package/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
- package/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
- package/daemon/dist/domain/proof/judgments.d.ts +10 -3
- package/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
- package/daemon/dist/domain/proof/judgments.js +26 -8
- package/daemon/dist/domain/proof/judgments.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +19 -6
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +61 -11
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts.map +1 -1
- package/daemon/dist/domain/queue-retention.js +6 -2
- package/daemon/dist/domain/queue-retention.js.map +1 -1
- package/daemon/dist/domain/queue-transition-log.d.ts +1 -0
- package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
- package/daemon/dist/domain/queue-transition-log.js +19 -7
- package/daemon/dist/domain/queue-transition-log.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +20 -3
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
- package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/fleet-compose.js +25 -11
- package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +109 -6
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
- package/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-view-projection.js +2 -2
- package/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
- package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +15 -6
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.js +36 -10
- package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +3 -0
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +4 -1
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/workspace/project-read.d.ts +1 -1
- package/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/project-read.js +24 -6
- package/daemon/dist/domain/workspace/project-read.js.map +1 -1
- package/daemon/dist/routes/attention.js +2 -2
- package/daemon/dist/routes/attention.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts +4 -18
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +23 -33
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/review.js +1 -1
- package/daemon/dist/routes/rigs.js +5 -1
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scopes.d.ts.map +1 -1
- package/daemon/dist/routes/scopes.js +37 -28
- package/daemon/dist/routes/scopes.js.map +1 -1
- package/daemon/dist/routes/sessions.js +12 -1
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/up.js +4 -4
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +11 -1
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +11 -3
- package/daemon/docs/reference/getting-started.md +211 -14
- package/daemon/docs/reference/rig-spec.md +7 -0
- package/daemon/policies/builtin/yolo.policy.md +14 -4
- package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +40 -5
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -0
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +138 -0
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +543 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +27 -2
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +5 -1
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +13 -2
- package/dist/commands/up.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts +5 -15
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js +79 -93
- package/node_modules/@openrig/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js +14 -9
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts +6 -15
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js +151 -71
- package/node_modules/@openrig/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/attention-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/attention-surface.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/attention-surface.js +2 -1
- package/node_modules/@openrig/daemon/dist/attention-surface.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js +10 -2
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js +9 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/081_human_notification_intent.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts +5 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js +7 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/082_archive_identity_provenance.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js +12 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/083_review_read_indexes.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts +5 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js +14 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/084_inventory_event_indexes.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js +2 -2
- package/node_modules/@openrig/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/execution-view.js +18 -5
- package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +3 -3
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts +13 -12
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js +40 -77
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/message.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js +2 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/outbound-driver.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +2 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +4 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js +85 -3
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +8 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts +23 -0
- package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js +84 -4
- package/node_modules/@openrig/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js +23 -3
- package/node_modules/@openrig/daemon/dist/domain/policies/delivery-digest-flush.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts +10 -3
- package/node_modules/@openrig/daemon/dist/domain/proof/judgments.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js +26 -8
- package/node_modules/@openrig/daemon/dist/domain/proof/judgments.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +19 -6
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +61 -11
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-retention.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-retention.js +6 -2
- package/node_modules/@openrig/daemon/dist/domain/queue-retention.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +19 -7
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js +20 -3
- package/node_modules/@openrig/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts +7 -6
- package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js +25 -11
- package/node_modules/@openrig/daemon/dist/domain/review/fleet-compose.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +109 -6
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts +2 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js +2 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/scope-view-projection.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts +2 -6
- package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js +15 -6
- package/node_modules/@openrig/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts +5 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js +36 -10
- package/node_modules/@openrig/daemon/dist/domain/seat-identity-reconciler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +3 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js +4 -1
- package/node_modules/@openrig/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js +24 -6
- package/node_modules/@openrig/daemon/dist/domain/workspace/project-read.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/attention.js +2 -2
- package/node_modules/@openrig/daemon/dist/routes/attention.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.d.ts +4 -18
- package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.js +23 -33
- package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/review.js +1 -1
- package/node_modules/@openrig/daemon/dist/routes/rigs.js +5 -1
- package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scopes.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/scopes.js +37 -28
- package/node_modules/@openrig/daemon/dist/routes/scopes.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +12 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/up.js +4 -4
- package/node_modules/@openrig/daemon/dist/routes/up.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +11 -1
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +1 -1
- package/package.json +1 -1
- package/tui/dist/attention/attention-model.d.ts +19 -0
- package/tui/dist/attention/attention-model.d.ts.map +1 -1
- package/tui/dist/attention/attention-model.js +46 -5
- package/tui/dist/attention/attention-model.js.map +1 -1
- package/tui/dist/attention/source-continuity.d.ts +9 -0
- package/tui/dist/attention/source-continuity.d.ts.map +1 -0
- package/tui/dist/attention/source-continuity.js +38 -0
- package/tui/dist/attention/source-continuity.js.map +1 -0
- package/tui/dist/commands/help.d.ts.map +1 -1
- package/tui/dist/commands/help.js +1 -0
- package/tui/dist/commands/help.js.map +1 -1
- package/tui/dist/commands/registry.d.ts.map +1 -1
- package/tui/dist/commands/registry.js +3 -2
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/config/config-model.js +1 -1
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/connections/connections-model.js +1 -1
- package/tui/dist/connections/connections-model.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +15 -2
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +14 -5
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/demo-data.d.ts.map +1 -1
- package/tui/dist/demo-data.js +1 -0
- package/tui/dist/demo-data.js.map +1 -1
- package/tui/dist/execution/execution-model.d.ts +1 -0
- package/tui/dist/execution/execution-model.d.ts.map +1 -1
- package/tui/dist/execution/execution-model.js +88 -119
- package/tui/dist/execution/execution-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +40 -25
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/live.d.ts +3 -1
- package/tui/dist/live.d.ts.map +1 -1
- package/tui/dist/live.js +66 -7
- package/tui/dist/live.js.map +1 -1
- package/tui/dist/main.js +50 -7
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/navigator.d.ts.map +1 -1
- package/tui/dist/navigator.js +14 -3
- package/tui/dist/navigator.js.map +1 -1
- package/tui/dist/page-read.d.ts +19 -0
- package/tui/dist/page-read.d.ts.map +1 -0
- package/tui/dist/page-read.js +84 -0
- package/tui/dist/page-read.js.map +1 -0
- package/tui/dist/pulse/pulse-model.d.ts.map +1 -1
- package/tui/dist/pulse/pulse-model.js +3 -4
- package/tui/dist/pulse/pulse-model.js.map +1 -1
- package/tui/dist/render.d.ts +5 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +60 -14
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/scopes/scopes-model.d.ts +2 -0
- package/tui/dist/scopes/scopes-model.d.ts.map +1 -1
- package/tui/dist/scopes/scopes-model.js +8 -2
- package/tui/dist/scopes/scopes-model.js.map +1 -1
- package/tui/dist/sections.d.ts +2 -0
- package/tui/dist/sections.d.ts.map +1 -1
- package/tui/dist/sections.js +6 -3
- package/tui/dist/sections.js.map +1 -1
- package/tui/dist/startup.d.ts +4 -1
- package/tui/dist/startup.d.ts.map +1 -1
- package/tui/dist/startup.js +41 -15
- package/tui/dist/startup.js.map +1 -1
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +30 -18
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/stylize.d.ts.map +1 -1
- package/tui/dist/stylize.js +18 -27
- package/tui/dist/stylize.js.map +1 -1
- package/tui/dist/terminals/terminal-model.d.ts +2 -0
- package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
- package/tui/dist/terminals/terminal-model.js +28 -10
- package/tui/dist/terminals/terminal-model.js.map +1 -1
- package/tui/dist/types.d.ts +12 -1
- package/tui/dist/types.d.ts.map +1 -1
package/tui/dist/render.js
CHANGED
|
@@ -552,13 +552,13 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
|
|
|
552
552
|
fields: [
|
|
553
553
|
{ label: "identity", value: host.name },
|
|
554
554
|
{ label: "transport", value: host.id ?? "local" },
|
|
555
|
-
{ label: "shape", value: `${host.rigs.length} rigs · ${host.rigs.reduce((n, rig) => n + rig.pods.reduce((m, pod) => m + pod.agents.length, 0), 0)} seats` },
|
|
555
|
+
{ label: "shape", value: host.rigs.some(r => r.inventoryUnavailable) ? `${host.rigs.length} rigs · seat inventory incomplete` : `${host.rigs.length} rigs · ${host.rigs.reduce((n, rig) => n + rig.pods.reduce((m, pod) => m + pod.agents.length, 0), 0)} seats` },
|
|
556
556
|
],
|
|
557
557
|
},
|
|
558
558
|
{
|
|
559
559
|
title: "rigs",
|
|
560
560
|
lines: host.rigs.length > 0
|
|
561
|
-
? host.rigs.map((rig) => listItem(alignedRow([[rig.name, 20], [rig.lifecycleState ?? "unknown", 20], [`${rig.pods.length} pods · ${rig.pods.reduce((n, pod) => n + pod.agents.length, 0)} seats`, 24]]), { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } }))
|
|
561
|
+
? host.rigs.map((rig) => listItem(alignedRow([[rig.name, 20], [rig.lifecycleState ?? "unknown", 20], [rig.inventoryUnavailable ? "inventory unavailable" : `${rig.pods.length} pods · ${rig.pods.reduce((n, pod) => n + pod.agents.length, 0)} seats`, 24]]), { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } }))
|
|
562
562
|
: [{ text: " (no local rigs served — proven empty)" }],
|
|
563
563
|
},
|
|
564
564
|
]),
|
|
@@ -613,7 +613,7 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
|
|
|
613
613
|
const rigAction = { type: "drill", resource: "rig", name: rig.name, target: { host: host.name } };
|
|
614
614
|
if (agents.length === 0) {
|
|
615
615
|
lines.push({
|
|
616
|
-
text: tableRow(columns, { rig: rig.name, pod: "—", seat: "(no seats)", status: rig.lifecycleState ?? "unknown" }),
|
|
616
|
+
text: tableRow(columns, { rig: rig.name, pod: "—", seat: rig.inventoryUnavailable ? "(read failed)" : "(no seats)", status: rig.lifecycleState ?? "unknown" }),
|
|
617
617
|
action: rigAction,
|
|
618
618
|
});
|
|
619
619
|
continue;
|
|
@@ -649,7 +649,7 @@ function instanceContentLines(state, snap, host, contentWidth, motion) {
|
|
|
649
649
|
});
|
|
650
650
|
}
|
|
651
651
|
}
|
|
652
|
-
lines.push({ text: "" }, { text: `${host.rigs.length} rigs · ${seatCount} seats · ${workingCount} working · ${attentionCount} need attention · ${openCount} open rows` });
|
|
652
|
+
lines.push({ text: "" }, { text: host.rigs.some(r => r.inventoryUnavailable) ? `${host.rigs.length} rigs · inventory incomplete · ${seatCount} seats read` : `${host.rigs.length} rigs · ${seatCount} seats · ${workingCount} working · ${attentionCount} need attention · ${openCount} open rows` });
|
|
653
653
|
lines.push(...recentLines(snap, scope, contentWidth, false, state.timeZone));
|
|
654
654
|
return lines;
|
|
655
655
|
}
|
|
@@ -675,6 +675,8 @@ function contentLines(state, snap, contentWidth, motion) {
|
|
|
675
675
|
return connectionsLines(snap, contentWidth, state.timeZone);
|
|
676
676
|
if (state.healthOpen)
|
|
677
677
|
return healthDetailLines(snap, state.healthOpen, contentWidth, state.timeZone);
|
|
678
|
+
if (state.section === "system")
|
|
679
|
+
return [{ text: "System · Instance health" }, { text: "" }, ...healthListLines(snap, { kind: "instance", local: true }, contentWidth)];
|
|
678
680
|
// PULSE is a FULL-WIDTH view handled by an early return in renderScreen
|
|
679
681
|
// (renderPulseScreen) — it never reaches the sidebar+content layout below.
|
|
680
682
|
if (state.section === "topology") {
|
|
@@ -707,7 +709,13 @@ function contentLines(state, snap, contentWidth, motion) {
|
|
|
707
709
|
const host = (hostName ? snap.hosts.find((candidate) => candidate.name === hostName) : snap.hosts[0]);
|
|
708
710
|
if (leaf?.kind === "host" && host)
|
|
709
711
|
return instanceContentLines(state, snap, host, contentWidth, motion);
|
|
710
|
-
|
|
712
|
+
if (!leaf && host?.rigs.length)
|
|
713
|
+
return wrapDetailLines([
|
|
714
|
+
{ text: `TOPOLOGY · ${host.name}` }, { text: "Choose a rig to read its seats and work." },
|
|
715
|
+
{ text: `${host.rigs.length} rig${host.rigs.length === 1 ? "" : "s"} · select one in Explorer` },
|
|
716
|
+
{ text: "Bright ▦ live agents · gray ▦ none · ? unknown" },
|
|
717
|
+
], contentWidth);
|
|
718
|
+
const rigName = state.drill.find((d) => d.kind === "rig")?.name;
|
|
711
719
|
const rig = host?.rigs.find((candidate) => candidate.name === rigName);
|
|
712
720
|
if (!rig || !host) {
|
|
713
721
|
const notLoaded = snap.readErrors.find((error) => error.startsWith("Live data not loaded"));
|
|
@@ -727,6 +735,10 @@ function contentLines(state, snap, contentWidth, motion) {
|
|
|
727
735
|
}
|
|
728
736
|
return [{ text: "(no rigs served — proven empty, not fabricated)" }];
|
|
729
737
|
}
|
|
738
|
+
if (rig.inventoryNotLoaded)
|
|
739
|
+
return [{ text: `Reading ${rig.name}…` }];
|
|
740
|
+
if (rig.inventoryUnavailable)
|
|
741
|
+
return [{ text: `Inventory unavailable for ${rig.name} · refresh to Retry` }];
|
|
730
742
|
const podFilter = leaf?.kind === "pod" ? leaf.name : null;
|
|
731
743
|
const all = rig.pods.flatMap((p) => p.agents.map((a) => ({ pod: p.name, ...a })));
|
|
732
744
|
const rows = all
|
|
@@ -1044,8 +1056,9 @@ function contentLines(state, snap, contentWidth, motion) {
|
|
|
1044
1056
|
}
|
|
1045
1057
|
else {
|
|
1046
1058
|
lines.push({ text: "SPEC LIBRARY" }, { text: "Choose a spec at left to preview its purpose, contents and source." }, { text: "Enter reads details · / filters · source opens current disk content" }, { text: "" });
|
|
1047
|
-
|
|
1048
|
-
|
|
1059
|
+
if (snap.specsLoaded !== false && !snap.readErrors.some(e => e.startsWith("specs-library")))
|
|
1060
|
+
for (const kind of ["rig", "agent", "workflow"])
|
|
1061
|
+
lines.push({ text: `${kind}: ${snap.specs.filter((spec) => spec.kind === kind).length} available` });
|
|
1049
1062
|
if (!snap.specs.length) {
|
|
1050
1063
|
if (motion.loading) {
|
|
1051
1064
|
if (!motion.reduced)
|
|
@@ -1078,20 +1091,30 @@ function contentLines(state, snap, contentWidth, motion) {
|
|
|
1078
1091
|
return [...identity, { text: "Reading selected project…" }];
|
|
1079
1092
|
const entry = catalog?.projects.find(p => p.id === state.project.id && p.root === state.project.root);
|
|
1080
1093
|
const errors = (snap.readErrors ?? []).map(text => ({ text: `Unavailable: ${text}` }));
|
|
1081
|
-
const
|
|
1094
|
+
const missionOverview = !!state.scopesMission && !state.scopesSelected && !state.executionOpen;
|
|
1095
|
+
const projectHeader = state.project ? missionOverview
|
|
1096
|
+
? [{ text: `PROJECT ${state.project.id}`, action: { type: "project-source" } }, ...wrapDetailLines(errors, contentWidth)]
|
|
1097
|
+
: [...identity, listItem("Read current source", { type: "project-source" }), ...wrapDetailLines(errors, contentWidth)] : [];
|
|
1082
1098
|
if (state.project && (!entry || entry.error))
|
|
1083
1099
|
return [...projectHeader, { text: "Choose a project again or go Back." }];
|
|
1084
1100
|
if (state.project && !state.scopesMission)
|
|
1085
|
-
return [...projectHeader, { text: "Choose a mission" }, ...(snap.scopes ?? []).map(m => listItem(m.mission, { type: "scopes-mission-open", mission: m.mission })), ...(!snap.scopes?.length && !errors.length ? [{ text: "No missions found in this project." }] : [])];
|
|
1101
|
+
return [...projectHeader, { text: "Choose a mission" }, ...(snap.scopes ?? []).map(m => listItem(m.mission + (m.error ? " · source unavailable" : ""), { type: "scopes-mission-open", mission: m.mission })), ...(!snap.scopes?.length && !errors.length ? [{ text: "No missions found in this project." }] : [])];
|
|
1086
1102
|
// SCOPES owns both levels. Both mission-graph and Explorer slice routes land
|
|
1087
1103
|
// on the same execution-backed canonical detail; store-direct content is
|
|
1088
1104
|
// composed into that page instead of surviving as a competing destination.
|
|
1089
1105
|
const sel = state.scopesSelected;
|
|
1090
1106
|
const missionName = state.scopesMission;
|
|
1107
|
+
const mission = snap.scopes?.find(m => m.mission === missionName);
|
|
1108
|
+
if (mission?.error)
|
|
1109
|
+
return [...projectHeader, ...wrapDetailLines([{ text: `${missionName} · Source unavailable` }, { text: mission.error }, { text: "Correct the source and refresh; Back returns to other missions." }], contentWidth)];
|
|
1091
1110
|
const execution = snap.execution?.mission === missionName ? snap.execution : null;
|
|
1092
1111
|
const detail = sel
|
|
1093
1112
|
? (snap.scopes ?? []).find((m) => m.mission === sel.mission)?.slices.find((sl) => sl.dirName === sel.slice) ?? null
|
|
1094
1113
|
: null;
|
|
1114
|
+
if (detail?.error)
|
|
1115
|
+
return [...projectHeader, ...wrapDetailLines([{ text: `${missionName}/${detail.dirName} · Source unavailable` }, { text: detail.error }, { text: "Correct the source and refresh; Back returns to other slices." }], contentWidth)];
|
|
1116
|
+
if (!sel && !state.executionOpen)
|
|
1117
|
+
projectHeader.push(...(mission?.slices.filter(s => s.error) ?? []).map(s => listItem(`${s.dirName} · source unavailable`, { type: "scopes-open", mission: missionName, slice: s.dirName })));
|
|
1095
1118
|
if (state.executionOpen && execution) {
|
|
1096
1119
|
return [...projectHeader, ...executionContentLines(execution, snap.scopes, snap.readErrors, state.executionOpen, contentWidth, false, snap.sliceDetail, {
|
|
1097
1120
|
collapseReqs: state.scopesCollapseReqs,
|
|
@@ -1200,6 +1223,15 @@ function pushExplorerTargets(hitMap, row, display, y, explorerWidth) {
|
|
|
1200
1223
|
}
|
|
1201
1224
|
hitMap.push({ y, x1: 1, x2: explorerWidth, action: row.action });
|
|
1202
1225
|
}
|
|
1226
|
+
function readStatus(load, zone) {
|
|
1227
|
+
const at = load.retainedAt ?? load.lastSuccessAt;
|
|
1228
|
+
const basis = at === undefined ? "" : ` · last ${displayTime(new Date(at).toISOString(), zone)}`;
|
|
1229
|
+
if (load.inFlight)
|
|
1230
|
+
return `${load.settled ? "Refreshing" : "Loading"}…${basis} · ? Help`;
|
|
1231
|
+
if (load.stale)
|
|
1232
|
+
return `${at === undefined ? "Read failed" : "Could not refresh"}${basis} · refresh to Retry`;
|
|
1233
|
+
return `Tab complete · ? help${basis}`;
|
|
1234
|
+
}
|
|
1203
1235
|
function renderPulseScreen(state, snap, options, inputLine) {
|
|
1204
1236
|
const { cols = 120, rows = 32, nowMs = 0 } = options;
|
|
1205
1237
|
const explW = explorerWidth(cols);
|
|
@@ -1233,7 +1265,9 @@ function renderPulseScreen(state, snap, options, inputLine) {
|
|
|
1233
1265
|
const contentTargets = [];
|
|
1234
1266
|
const flashRows = [];
|
|
1235
1267
|
let flashAck = false;
|
|
1236
|
-
lines.push(pad(`cmd ▸ ${inputLine}▊${
|
|
1268
|
+
lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " " + readStatus(load, state.timeZone)}`, cols));
|
|
1269
|
+
if (load.stale && !inputLine)
|
|
1270
|
+
hitMap.push({ y: 1, x1: 9, x2: cols, action: { type: "noop" } });
|
|
1237
1271
|
if (options.completion) {
|
|
1238
1272
|
lines.push(pad(options.completion.message, cols));
|
|
1239
1273
|
for (const candidate of options.completion.candidates.slice(0, 4))
|
|
@@ -1514,7 +1548,7 @@ function renderBody(state, snap, options = {}, inputLine = "") {
|
|
|
1514
1548
|
// PULSE (founder Option-B): a content-pane view inside the NORMAL explorer│
|
|
1515
1549
|
// content chrome — renderPulseScreen builds its own split (sidebar + lanes)
|
|
1516
1550
|
// and rides the same segRows paint path, so it returns before the table layout.
|
|
1517
|
-
if (state.viewTab === "pulse")
|
|
1551
|
+
if (state.viewTab === "pulse" && options.load?.settled !== false)
|
|
1518
1552
|
return renderPulseScreen(state, snap, options, inputLine);
|
|
1519
1553
|
// S19 round-5 (guard): one spinner frame per render pass from caller time;
|
|
1520
1554
|
// `loading` comes from the refresh OWNER (omitted = settled — demo/fixture
|
|
@@ -1534,7 +1568,9 @@ function renderBody(state, snap, options = {}, inputLine = "") {
|
|
|
1534
1568
|
// shell accepts typing from the empty state, so the honest readiness
|
|
1535
1569
|
// affordance must show BEFORE the first key (no new focus state; stylize
|
|
1536
1570
|
// paints the cell; the shared motion clock controls its visibility).
|
|
1537
|
-
lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : "
|
|
1571
|
+
lines.push(pad(`cmd ▸ ${inputLine}▊${inputLine ? "" : " " + readStatus(load, state.timeZone)}`, cols));
|
|
1572
|
+
if (load.stale && !inputLine)
|
|
1573
|
+
hitMap.push({ y: 1, x1: 9, x2: cols, action: { type: "noop" } });
|
|
1538
1574
|
if (options.completion) {
|
|
1539
1575
|
lines.push(pad(options.completion.message, cols));
|
|
1540
1576
|
for (const candidate of options.completion.candidates.slice(0, 4))
|
|
@@ -1542,7 +1578,7 @@ function renderBody(state, snap, options = {}, inputLine = "") {
|
|
|
1542
1578
|
if (options.completion.candidates.length > 4)
|
|
1543
1579
|
lines.push(pad(" … keep typing to narrow matches", cols));
|
|
1544
1580
|
}
|
|
1545
|
-
const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", scopes: "PROJECTS", needs: "
|
|
1581
|
+
const sectionTitle = { topology: "TOPOLOGY", specs: "SPECS", scopes: "PROJECTS", needs: "FEED", system: "SYSTEM · HEALTH", config: "SYSTEM · CONFIGURATION", connections: "SYSTEM · CONNECTIONS" }[state.section] ?? state.section.toUpperCase();
|
|
1546
1582
|
// active-pane emphasis (k9s-class chrome): the focused pane's title is bracketed
|
|
1547
1583
|
const explorerTitle = state.focusedPane === "explorer" ? "{ EXPLORER }" : "EXPLORER";
|
|
1548
1584
|
const contentTitle = state.focusedPane === "content" ? `{ ${sectionTitle} }` : sectionTitle;
|
|
@@ -1551,7 +1587,17 @@ function renderBody(state, snap, options = {}, inputLine = "") {
|
|
|
1551
1587
|
// Slice-17: the file-tree re-skin is a DISPLAY transform only — rows, keys,
|
|
1552
1588
|
// actions, and the hit-map all keep resolving against the row model above.
|
|
1553
1589
|
const { labels: explorerDisplay, metas: explorerMetas } = navigatorDisplay(explorer, snap, explW - 1);
|
|
1554
|
-
const
|
|
1590
|
+
const contentWidth = Math.max(cols - explW - (fullReading ? 1 : 2), 0);
|
|
1591
|
+
const previous = !load.settled && !state.externalUrl ? options.previousPage : undefined;
|
|
1592
|
+
const content = previous
|
|
1593
|
+
? [...wrapDetailLines([{ text: `Previous: ${previous.state.section} · ${previous.state.file ? `${previous.state.file.root}/${previous.state.file.path}` : previous.state.drill.map(d => d.name).join(" / ") || [previous.state.project?.id, previous.state.scopesMission, previous.state.terminalView].filter(Boolean).join(" / ") || "overview"}` }], contentWidth),
|
|
1594
|
+
{ text: `Opening ${sectionTitle.toLowerCase()}… · Explorer remains available` },
|
|
1595
|
+
...contentLines(previous.state, previous.snapshot, contentWidth, { ...motion, loading: false }).map(line => ({ text: line.text }))]
|
|
1596
|
+
: !load.settled && !state.externalUrl
|
|
1597
|
+
? [{ text: `${sectionTitle} · choose a location in Explorer` }, { text: `${motion.frame} ${sectionTitle.toLowerCase()} read pending…` }]
|
|
1598
|
+
: contentLines(state, snap, contentWidth, motion);
|
|
1599
|
+
if (!load.settled && !reduced)
|
|
1600
|
+
motion.used = true;
|
|
1555
1601
|
const footer = state.footerOn ? snap.stream.at(-1) : undefined;
|
|
1556
1602
|
// round-5 (guard): the tmux-style ONE-SHOT activity flash targets the
|
|
1557
1603
|
// flashed agent's EXPLORER row — per-seat pane-output events from the
|