@openrig/cli 0.6.6 → 0.6.8
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 +97 -28
- package/daemon/assets/claude-team-permissions.cjs +262 -0
- package/daemon/assets/onboarding/02-self-and-competent-action.md +20 -13
- 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/scripts/refocus-health.cjs +41 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +69 -12
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +13 -2
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +6 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -4
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +6 -0
- package/daemon/assets/skills/rigs/SKILL.md +133 -0
- package/daemon/context-packs/help/help.md +48 -19
- 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 +239 -43
- package/daemon/context-packs/reference/getting-started.md +356 -212
- package/daemon/context-packs/reference/instance-layout.md +5 -0
- package/daemon/context-packs/reference/manifest.yaml +4 -1
- package/daemon/context-packs/reference/rig-spec.md +48 -20
- package/daemon/context-packs/reference/whats-new.md +96 -0
- 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/SKILL.md +13 -2
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
- 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 +6 -0
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +3 -0
- 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 -1
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +19 -12
- 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 +17 -16
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +2 -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/SKILL.md +31 -4
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +24 -13
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +42 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +6 -0
- 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 +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +23 -13
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-resume.js +17 -0
- package/daemon/dist/adapters/codex-resume.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +2 -2
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
- package/daemon/dist/adapters/kernel-authority.js +29 -11
- package/daemon/dist/adapters/kernel-authority.js.map +1 -1
- package/daemon/dist/adapters/pi-readiness.d.ts +15 -0
- package/daemon/dist/adapters/pi-readiness.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-readiness.js +90 -0
- package/daemon/dist/adapters/pi-readiness.js.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +13 -2
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +9 -6
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +4 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts +3 -0
- package/daemon/dist/db/migrations/096_rig_install_root.d.ts.map +1 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js +5 -0
- package/daemon/dist/db/migrations/096_rig_install_root.js.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts +3 -0
- package/daemon/dist/db/migrations/097_thread_part_map.d.ts.map +1 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js +20 -0
- package/daemon/dist/db/migrations/097_thread_part_map.js.map +1 -0
- package/daemon/dist/domain/activity-taxonomy.d.ts +7 -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 +12 -0
- package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
- package/daemon/dist/domain/agent-activity-store.js +55 -30
- package/daemon/dist/domain/agent-activity-store.js.map +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts +1 -1
- package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/bootstrap-orchestrator.js +6 -4
- package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
- package/daemon/dist/domain/bundle-install-context.d.ts +2 -2
- package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -1
- package/daemon/dist/domain/bundle-install-context.js +16 -3
- package/daemon/dist/domain/bundle-install-context.js.map +1 -1
- package/daemon/dist/domain/bundle-types.d.ts +1 -1
- package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.d.ts +5 -0
- package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
- package/daemon/dist/domain/chat-repository.js +8 -0
- package/daemon/dist/domain/chat-repository.js.map +1 -1
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +5 -4
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +3 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +8 -1
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +34 -2
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +195 -107
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +4 -2
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts +5 -0
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +23 -6
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +57 -11
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts +4 -0
- package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.js +2 -0
- package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/destination-resolver.js +7 -4
- package/daemon/dist/domain/gateway/destination-resolver.js.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.js +23 -6
- package/daemon/dist/domain/gateway/human-readiness.js.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.d.ts +2 -2
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +2 -2
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js +3 -1
- package/daemon/dist/domain/gateway/slack/capabilities.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts +39 -0
- package/daemon/dist/domain/gateway/slack/channel-map.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js +114 -0
- package/daemon/dist/domain/gateway/slack/channel-map.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/config.js +19 -2
- package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +24 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +105 -3
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.d.ts +7 -0
- package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/message.js +36 -0
- package/daemon/dist/domain/gateway/slack/message.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 +1 -0
- package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts +7 -2
- package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-api.js +35 -3
- package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +34 -7
- package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-delivery.js +268 -51
- package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +17 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +107 -24
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +2 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js +40 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.js +22 -2
- package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +14 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +27 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -1
- package/daemon/dist/domain/generated-file-hygiene.js +7 -4
- package/daemon/dist/domain/generated-file-hygiene.js.map +1 -1
- package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
- package/daemon/dist/domain/managed-blocks.js +5 -2
- package/daemon/dist/domain/managed-blocks.js.map +1 -1
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -1
- package/daemon/dist/domain/markdown-address.js +23 -6
- package/daemon/dist/domain/markdown-address.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +50 -3
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +2 -2
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +30 -4
- 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 +1 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.d.ts +1 -0
- package/daemon/dist/domain/pane-binding-observation.d.ts.map +1 -1
- package/daemon/dist/domain/pane-binding-observation.js +3 -1
- package/daemon/dist/domain/pane-binding-observation.js.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.d.ts +6 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +12 -0
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +54 -15
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts +11 -9
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +15 -12
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-nudge-text.d.ts +4 -0
- package/daemon/dist/domain/queue-nudge-text.d.ts.map +1 -0
- package/daemon/dist/domain/queue-nudge-text.js +35 -0
- package/daemon/dist/domain/queue-nudge-text.js.map +1 -0
- package/daemon/dist/domain/queue-repository.d.ts +7 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +50 -20
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +2 -2
- package/daemon/dist/domain/queue-retention.js +4 -4
- package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.js +6 -2
- package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
- package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
- package/daemon/dist/domain/queue-waiting.js +7 -2
- package/daemon/dist/domain/queue-waiting.js.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.d.ts +15 -2
- package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-ladder.js +29 -6
- package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
- package/daemon/dist/domain/rehydrate-eligibility.js +5 -2
- package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
- package/daemon/dist/domain/reply-to-choice.d.ts +6 -2
- package/daemon/dist/domain/reply-to-choice.d.ts.map +1 -1
- package/daemon/dist/domain/reply-to-choice.js +9 -6
- package/daemon/dist/domain/reply-to-choice.js.map +1 -1
- package/daemon/dist/domain/restore-check-service.d.ts +5 -1
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +17 -3
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +17 -11
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +3 -1
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +13 -4
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +6 -0
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +8 -4
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +19 -4
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +16 -6
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +9 -1
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/session-jsonl.d.ts.map +1 -1
- package/daemon/dist/domain/session-jsonl.js +10 -4
- package/daemon/dist/domain/session-jsonl.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +16 -21
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +70 -37
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/skill-audit.d.ts +19 -0
- package/daemon/dist/domain/skill-audit.d.ts.map +1 -1
- package/daemon/dist/domain/skill-audit.js +97 -5
- package/daemon/dist/domain/skill-audit.js.map +1 -1
- package/daemon/dist/domain/skill-catalog.d.ts +11 -0
- package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
- package/daemon/dist/domain/skill-catalog.js +145 -12
- package/daemon/dist/domain/skill-catalog.js.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts +6 -1
- package/daemon/dist/domain/skill-mirror-drift.d.ts.map +1 -1
- package/daemon/dist/domain/skill-mirror-drift.js +23 -12
- package/daemon/dist/domain/skill-mirror-drift.js.map +1 -1
- package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
- package/daemon/dist/domain/snapshot-repository.js +12 -32
- package/daemon/dist/domain/snapshot-repository.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +4 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js +14 -7
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +9 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.d.ts +4 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/terminal-service.js +23 -11
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +21 -9
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +2 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/usage-samples-store.js +2 -2
- package/daemon/dist/domain/usage-samples-store.js.map +1 -1
- package/daemon/dist/domain/usage-series.d.ts.map +1 -1
- package/daemon/dist/domain/usage-series.js +42 -10
- package/daemon/dist/domain/usage-series.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
- package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-due.d.ts +17 -0
- package/daemon/dist/domain/watchdog-due.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-due.js +45 -0
- package/daemon/dist/domain/watchdog-due.js.map +1 -0
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.js +3 -7
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +15 -5
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +1 -1
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.d.ts +6 -0
- package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-step-trail-log.js +11 -0
- package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +22 -1
- package/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/daemon/dist/domain/workspace/project-catalog.js +1 -1
- package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
- package/daemon/dist/gateway-slack-surface.d.ts +1 -0
- package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
- package/daemon/dist/gateway-slack-surface.js +2 -1
- package/daemon/dist/gateway-slack-surface.js.map +1 -1
- package/daemon/dist/index.d.ts +1 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +7 -7
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/agent-images.js +5 -5
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/bootstrap-failure-response.d.ts +13 -0
- package/daemon/dist/routes/bootstrap-failure-response.d.ts.map +1 -0
- package/daemon/dist/routes/bootstrap-failure-response.js +52 -0
- package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -0
- package/daemon/dist/routes/bundles.d.ts.map +1 -1
- package/daemon/dist/routes/bundles.js +23 -36
- package/daemon/dist/routes/bundles.js.map +1 -1
- package/daemon/dist/routes/chat.d.ts.map +1 -1
- package/daemon/dist/routes/chat.js +16 -1
- package/daemon/dist/routes/chat.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +2 -0
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/rigs.js +2 -2
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/seat.js +13 -13
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.js +11 -11
- 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 +15 -7
- package/daemon/dist/routes/skills.js.map +1 -1
- package/daemon/dist/routes/terminal-ws.js +15 -2
- package/daemon/dist/routes/terminal-ws.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts.map +1 -1
- package/daemon/dist/routes/terminal.js +6 -4
- package/daemon/dist/routes/terminal.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +5 -56
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +32 -7
- 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 -1
- package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +10 -10
- package/daemon/docs/reference/agent-startup-guide.md +7 -2
- package/daemon/docs/reference/bundle-formats.md +6 -4
- package/daemon/docs/reference/chain-file-convention.md +2 -2
- package/daemon/docs/reference/developing.md +1 -1
- package/daemon/docs/reference/edge-types.md +1 -1
- package/daemon/docs/reference/getting-started.md +356 -212
- package/daemon/docs/reference/help.md +48 -19
- package/daemon/docs/reference/instance-layout.md +5 -0
- package/daemon/docs/reference/non-interruptive-mode.md +7 -4
- package/daemon/docs/reference/project-workspace.md +2 -2
- package/daemon/docs/reference/publishing-a-rig-bundle.md +15 -10
- package/daemon/docs/reference/refocus-channel.md +14 -2
- package/daemon/docs/reference/rig-bundle.md +39 -19
- package/daemon/docs/reference/rig-spec.md +48 -20
- package/daemon/docs/reference/rosters.md +2 -1
- package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +1 -1
- package/daemon/docs/reference/sdlc-conventions.md +4 -2
- package/daemon/docs/reference/slack-app-setup.md +69 -9
- package/daemon/docs/reference/topology-naming.md +74 -0
- package/daemon/docs/reference/whats-new.md +96 -0
- package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +6 -0
- package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +3 -0
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +19 -12
- package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +17 -16
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +2 -0
- package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +60 -0
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +105 -19
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +5 -2
- package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +44 -0
- package/dist/build-info.js +3 -3
- package/dist/cli-error.d.ts.map +1 -1
- package/dist/cli-error.js +11 -3
- package/dist/cli-error.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/agent-image.js +2 -2
- package/dist/commands/agent-image.js.map +1 -1
- package/dist/commands/bundle.d.ts.map +1 -1
- package/dist/commands/bundle.js +5 -4
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/chatroom.d.ts.map +1 -1
- package/dist/commands/chatroom.js +21 -1
- package/dist/commands/chatroom.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +12 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +14 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +42 -0
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +4 -3
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +114 -8
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +6 -3
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +6 -5
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/proof.js +1 -1
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +6 -3
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +6 -4
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/scope.js +6 -6
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/setup.d.ts +6 -15
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +121 -332
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +12 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/slack.d.ts +5 -1
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +143 -6
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/stream.js +1 -1
- package/dist/commands/stream.js.map +1 -1
- package/dist/commands/terminal.d.ts +33 -0
- package/dist/commands/terminal.d.ts.map +1 -1
- package/dist/commands/terminal.js +30 -12
- package/dist/commands/terminal.js.map +1 -1
- package/dist/commands/tui.js +4 -4
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/workflow-follow.d.ts +1 -1
- package/dist/commands/workflow-follow.d.ts.map +1 -1
- package/dist/commands/workflow-follow.js +4 -3
- package/dist/commands/workflow-follow.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +30 -18
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.js +1 -1
- package/dist/config-store.js.map +1 -1
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +4 -2
- package/dist/front-door.js.map +1 -1
- package/dist/herdr-launch-config.d.ts +3 -0
- package/dist/herdr-launch-config.d.ts.map +1 -0
- package/dist/herdr-launch-config.js +37 -0
- package/dist/herdr-launch-config.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/launch-plan-guard.d.ts +27 -0
- package/dist/launch-plan-guard.d.ts.map +1 -0
- package/dist/launch-plan-guard.js +73 -0
- package/dist/launch-plan-guard.js.map +1 -0
- package/dist/lib/bundle-source.d.ts +2 -0
- package/dist/lib/bundle-source.d.ts.map +1 -1
- package/dist/lib/bundle-source.js +12 -1
- package/dist/lib/bundle-source.js.map +1 -1
- package/dist/lib/context-git.d.ts +2 -0
- package/dist/lib/context-git.d.ts.map +1 -1
- package/dist/lib/context-git.js +55 -5
- package/dist/lib/context-git.js.map +1 -1
- package/dist/lib/scope/scope-fs.d.ts +3 -2
- package/dist/lib/scope/scope-fs.d.ts.map +1 -1
- package/dist/lib/scope/scope-fs.js +97 -9
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +28 -24
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/provider-auth.d.ts +32 -0
- package/dist/provider-auth.d.ts.map +1 -0
- package/dist/provider-auth.js +128 -0
- package/dist/provider-auth.js.map +1 -0
- package/dist/terminal-window.d.ts +19 -0
- package/dist/terminal-window.d.ts.map +1 -0
- package/dist/terminal-window.js +513 -0
- package/dist/terminal-window.js.map +1 -0
- package/package.json +2 -2
- package/tui/dist/commands/registry.js +2 -2
- 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 +1 -0
- package/tui/dist/config/config-model.js.map +1 -1
- package/tui/dist/connections/connections-model.d.ts +5 -0
- package/tui/dist/connections/connections-model.d.ts.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 +5 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/execution/workflow-model.d.ts.map +1 -1
- package/tui/dist/execution/workflow-model.js +3 -1
- package/tui/dist/execution/workflow-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +3 -1
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/main.js +39 -15
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/page-read.js +1 -1
- package/tui/dist/page-read.js.map +1 -1
- package/tui/dist/pending-address.d.ts +7 -0
- package/tui/dist/pending-address.d.ts.map +1 -0
- package/tui/dist/pending-address.js +11 -0
- package/tui/dist/pending-address.js.map +1 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +10 -6
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/scopes/scopes-model.js +4 -4
- package/tui/dist/socket-server.d.ts +3 -1
- package/tui/dist/socket-server.d.ts.map +1 -1
- package/tui/dist/socket-server.js +6 -0
- package/tui/dist/socket-server.js.map +1 -1
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +40 -13
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/stylize.js +1 -1
- package/tui/dist/stylize.js.map +1 -1
- package/tui/dist/terminals/open-window.d.ts +5 -0
- package/tui/dist/terminals/open-window.d.ts.map +1 -0
- package/tui/dist/terminals/open-window.js +55 -0
- package/tui/dist/terminals/open-window.js.map +1 -0
- package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
- package/tui/dist/terminals/terminal-model.js +16 -17
- package/tui/dist/terminals/terminal-model.js.map +1 -1
- package/tui/dist/types.d.ts +16 -1
- package/tui/dist/types.d.ts.map +1 -1
- package/ui/dist/assets/{index-HHSvwF97.js → index-D5n8EwkG.js} +1 -1
- package/ui/dist/index.html +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-api.js","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/slack-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-api.js","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/slack-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,25 @@ import type { SubsystemDeliverFn } from "../gateway-subsystem.js";
|
|
|
5
5
|
import type { OutboundPostPayload } from "./outbound-driver.js";
|
|
6
6
|
export interface SubsystemSlackDeliveryOpts {
|
|
7
7
|
botToken: string;
|
|
8
|
+
/** The default channel: every post goes here unless resolveChannel names another. */
|
|
8
9
|
channel: string;
|
|
10
|
+
/** #192: the channel for this payload (the channel map). Absent = `channel` for every post.
|
|
11
|
+
* Post, reconcile scan and upload all use the one resolved channel. */
|
|
12
|
+
resolveChannel?: (payload: OutboundPostPayload) => string;
|
|
13
|
+
/** #192: decide a post's channel ONCE, at its first attempt, and record it in `attempted`;
|
|
14
|
+
* every retry or replay of that post reuses it, so the channel/thread pair always names one
|
|
15
|
+
* conversation and reconciliation scans where the first attempt went. A recorded channel is
|
|
16
|
+
* honoured whenever present. A post already attempted without a record (its first attempt ran
|
|
17
|
+
* before any map existed) retries in the default `channel`, where it went. With pinChannel off
|
|
18
|
+
* (no map) nothing is recorded and the channel is resolved as before. */
|
|
19
|
+
pinChannel?: boolean;
|
|
9
20
|
sourceLabel: string;
|
|
10
21
|
bodyExcerpt?: number;
|
|
11
22
|
fetchImpl?: FetchImpl;
|
|
23
|
+
/** The owning gateway run's stop signal. When the wire stops (restart, disable,
|
|
24
|
+
* shutdown) a rate-limit wait inside postChatMessage rejects instead of sleeping
|
|
25
|
+
* on: a stale retry must never post after a replay already owns the decision. */
|
|
26
|
+
stopSignal?: AbortSignal;
|
|
12
27
|
/** decisionId-keyed delivered-store (idempotent redelivery: replay re-acks, never re-posts). */
|
|
13
28
|
delivered: SeenStore;
|
|
14
29
|
/** H — decisionId-keyed ATTEMPTED-store, marked BEFORE the HTTP post. A retry of an attempted
|
|
@@ -20,16 +35,25 @@ export interface SubsystemSlackDeliveryOpts {
|
|
|
20
35
|
/** Release the outbound driver's in-flight guard once an episode is durably seen. */
|
|
21
36
|
release?: (notificationKey: string) => void;
|
|
22
37
|
/** E (thread routing): resolve the thread anchor for this payload; undefined = new root.
|
|
23
|
-
* Wired by the thread-seat map; absent in the pre-routing composition.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
38
|
+
* Wired by the thread-seat map; absent in the pre-routing composition. `channel` is the
|
|
39
|
+
* channel this attempt posts to, so a thread is only ever chosen within it. */
|
|
40
|
+
resolveThreadTs?: (payload: OutboundPostPayload, channel: string) => string | undefined;
|
|
41
|
+
/** E: record a NEW root's ts (and the channel it was posted in) so the conversation threads
|
|
42
|
+
* from here on. */
|
|
43
|
+
onPostedRoot?: (payload: OutboundPostPayload, ts: string, channel: string) => void;
|
|
27
44
|
/** Receipt hook for every successful post, root or threaded. */
|
|
28
45
|
onPosted?: (payload: OutboundPostPayload, messageTs: string, threadTs?: string) => void;
|
|
46
|
+
/** #899 — receipt hook for every message posted (or reconciled) into a thread: a long ask's reply
|
|
47
|
+
* parts, a later notification in an ask's own thread, an ask posted into another thread. The payload
|
|
48
|
+
* names the ask and its seat, and `channel` the channel the message was posted to (#192), so a
|
|
49
|
+
* reaction on that message can reach them. A throw retains the
|
|
50
|
+
* delivery like any receipt failure; the replay reconciles the message by marker and records it again. */
|
|
51
|
+
onPostedPart?: (payload: OutboundPostPayload, messageTs: string, threadTs: string, channel: string) => void;
|
|
29
52
|
/** OPR.0.5.6.14 — the transport-failure receipt hook: a failed post writes
|
|
30
53
|
* the row's transport-failed ledger transition (class + API error), so a
|
|
31
|
-
* delivery failure is as legible on the row as a success.
|
|
32
|
-
|
|
54
|
+
* delivery failure is as legible on the row as a success. `partlyPosted` marks an ask whose
|
|
55
|
+
* remaining parts can't be posted although part of it may already be in Slack (#897). */
|
|
56
|
+
onTransportFailed?: (payload: OutboundPostPayload, failureClass: string, detail: string, partlyPosted?: boolean) => void;
|
|
33
57
|
/** F (interim loudness rule): return the Slack USER ID to mention for an ESCALATION payload,
|
|
34
58
|
* undefined for everything else (quiet-threaded). The composition wires the registry lookup
|
|
35
59
|
* + the escalation predicate; delivery just renders what it is told. */
|
|
@@ -71,7 +95,10 @@ export declare function evidenceAttachment(media: unknown, evidenceRef: unknown,
|
|
|
71
95
|
mediaRefs: SlackMediaRef[] | undefined;
|
|
72
96
|
evidenceLink: string | undefined;
|
|
73
97
|
};
|
|
74
|
-
/**
|
|
98
|
+
/** #897 — the most Slack messages one ask may post: the primary plus its thread replies. */
|
|
99
|
+
export declare const MAX_HUMAN_MESSAGE_PARTS = 20;
|
|
100
|
+
/** One authored primary and, optionally, one coherent supplemental reply; a brief or
|
|
101
|
+
* detail too long for that is posted as more numbered thread replies (#897). The
|
|
75
102
|
* existing attempted/delivered stores and marker reconciler own each stable part.
|
|
76
103
|
* Preflight ALL parts before posting; the episode receipt is written only after
|
|
77
104
|
* every required part. A restart retries missing parts and the final receipt. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-delivery.d.ts","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/slack-delivery.ts"],"names":[],"mappings":"AAiBA,OAAO,EAA+G,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7J,OAAO,
|
|
1
|
+
{"version":3,"file":"slack-delivery.d.ts","sourceRoot":"","sources":["../../../../src/domain/gateway/slack/slack-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import fs from "node:fs";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import { postChatMessage, getUploadURLExternal, uploadBytesExternal, completeUploadExternal, fetchRecentMessageTexts } from "./slack-api.js";
|
|
18
|
-
import { buildOutboundMessage, attributionFromSession, reconcileToken, redactSecrets } from "./message.js";
|
|
18
|
+
import { buildOutboundMessage, attributionFromSession, reconcileToken, redactSecrets, splitForSlack, HumanMessageShapeError, SLACK_SECTION_CAP, SLACK_TEXT_CAP, } from "./message.js";
|
|
19
19
|
const LOCAL_IMAGE_EXT = new Set([".png", ".jpg", ".jpeg", ".gif", ".webp"]);
|
|
20
20
|
/** Local evidence files uploaded into the thread: images, video (Slack plays mp4/webm/mov inline)
|
|
21
21
|
* and PDF. Wider than LOCAL_IMAGE_EXT, which gates https Block Kit image blocks. */
|
|
@@ -23,6 +23,23 @@ const LOCAL_ATTACHMENT_EXT = new Set([...LOCAL_IMAGE_EXT, ".mp4", ".webm", ".mov
|
|
|
23
23
|
/** Well under Slack's 1 GB per-file limit, and bounded for a daemon that holds the bytes in memory. */
|
|
24
24
|
export const LOCAL_ATTACHMENT_MAX_BYTES = 50 * 1024 * 1024;
|
|
25
25
|
const TRANSPORT_FAILURE_RECEIPT_PREFIX = "::transport-failure-receipt::";
|
|
26
|
+
/** #192: `<decisionId>::channel::<channel>` in the attempted store = the channel this post's first
|
|
27
|
+
* attempt was decided for (see pinChannel). Keyed like the transport-failure receipt. */
|
|
28
|
+
const CHANNEL_DECIDED_PREFIX = "::channel::";
|
|
29
|
+
function decidedChannel(attempted, decisionId) {
|
|
30
|
+
const prefix = `${decisionId}${CHANNEL_DECIDED_PREFIX}`;
|
|
31
|
+
for (const key of attempted.keys())
|
|
32
|
+
if (key.startsWith(prefix))
|
|
33
|
+
return key.slice(prefix.length) || undefined;
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/** The channel this post's first attempt went to, if it has had one: its recorded channel, or, with
|
|
37
|
+
* a map now configured (pinChannel) but no record, the default channel. A post attempted before the
|
|
38
|
+
* map existed went where unmapped posts go, so its retries stay there. Undefined = not attempted yet
|
|
39
|
+
* (or no map): resolve as usual. */
|
|
40
|
+
function firstAttemptChannel(opts, attempted, decisionId) {
|
|
41
|
+
return decidedChannel(attempted, decisionId) ?? (opts.pinChannel && attempted.has(decisionId) ? opts.channel : undefined);
|
|
42
|
+
}
|
|
26
43
|
const TRANSPORT_FAILURE_RECEIPT_REPAIRED = "::repaired";
|
|
27
44
|
function transportFailureReceiptKey(decisionId, failureClass, detail) {
|
|
28
45
|
const encoded = Buffer.from(JSON.stringify([failureClass, detail]), "utf8").toString("base64url");
|
|
@@ -122,6 +139,20 @@ export function evidenceAttachment(media, evidenceRef, summary) {
|
|
|
122
139
|
return { mediaRefs: undefined, evidenceLink: ref };
|
|
123
140
|
return { mediaRefs: undefined, evidenceLink: undefined };
|
|
124
141
|
}
|
|
142
|
+
/** A sleep that rejects the moment the owning gateway run stops: the inline rate-limit
|
|
143
|
+
* retry inside postChatMessage must never outlive the run that started it, or a restart
|
|
144
|
+
* would leave both the stale retry and the replay's post in flight for one decision. */
|
|
145
|
+
function abortableSleep(ms, signal) {
|
|
146
|
+
return new Promise((resolve, reject) => {
|
|
147
|
+
if (signal.aborted) {
|
|
148
|
+
reject(new Error("gateway stopped during rate-limit wait"));
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const onAbort = () => { clearTimeout(timer); reject(new Error("gateway stopped during rate-limit wait")); };
|
|
152
|
+
const timer = setTimeout(() => { signal.removeEventListener("abort", onAbort); resolve(); }, ms);
|
|
153
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
154
|
+
});
|
|
155
|
+
}
|
|
125
156
|
/** Build the subsystem DeliverFn. Contract mirrors the retired connector handleDecision. */
|
|
126
157
|
function deliverSinglePart(opts, markEpisode = true) {
|
|
127
158
|
const log = opts.log ?? (() => { });
|
|
@@ -132,31 +163,20 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
132
163
|
return { ok: true };
|
|
133
164
|
}
|
|
134
165
|
const q = (decision.payload ?? {});
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
mediaRefs,
|
|
150
|
-
evidenceLink,
|
|
151
|
-
// A1.2 — attribution rides every post; identity stays the app's own (postChatMessage
|
|
152
|
-
// structurally cannot carry username/icon overrides — the customize-absence rail).
|
|
153
|
-
attribution: attributionFromSession(q.sourceSession),
|
|
154
|
-
mentionUserId: opts.resolveMentionUserId?.(q),
|
|
155
|
-
// fix-r3 — the reconcile identity, reserved outside the clamp budget (same function
|
|
156
|
-
// the scan below matches: one identity, same bytes, both sides).
|
|
157
|
-
reconcileMarker: reconcileToken(decision.decisionId),
|
|
158
|
-
});
|
|
159
|
-
const threadTs = opts.resolveThreadTs?.(q);
|
|
166
|
+
// #192: the channel first, from this post's record when it has one, so the thread below is
|
|
167
|
+
// chosen inside the channel the post actually goes to (and went to, on a retry).
|
|
168
|
+
const pinned = firstAttemptChannel(opts, opts.attempted.load(), decision.decisionId);
|
|
169
|
+
const channel = pinned ?? opts.resolveChannel?.(q) ?? opts.channel;
|
|
170
|
+
if (!pinned && opts.pinChannel) {
|
|
171
|
+
try {
|
|
172
|
+
opts.attempted.mark(`${decision.decisionId}${CHANNEL_DECIDED_PREFIX}${channel}`, "channel-decided");
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
log(`channel record FAILED for ${q.qitemId ?? decision.decisionId}: ${e.message} — retained, nothing posted`);
|
|
176
|
+
return { ok: false, class: "channel-unrecorded", detail: e.message };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const threadTs = opts.resolveThreadTs?.(q, channel);
|
|
160
180
|
// A failed HTTP outcome whose row-receipt write failed is held in the
|
|
161
181
|
// existing restart-surviving attempted store. Repair that authoritative
|
|
162
182
|
// transition before reconciliation can progress to a later post.
|
|
@@ -192,7 +212,7 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
192
212
|
// identity, same bytes, both sides.
|
|
193
213
|
const marker = reconcileToken(decision.decisionId);
|
|
194
214
|
if (attempted.has(decision.decisionId)) {
|
|
195
|
-
const scan = await fetchRecentMessageTexts(opts.botToken,
|
|
215
|
+
const scan = await fetchRecentMessageTexts(opts.botToken, channel, threadTs, opts.fetchImpl, undefined, undefined, marker);
|
|
196
216
|
if (!scan.ok) {
|
|
197
217
|
log(`reconcile scan failed for ${decision.decisionId} (${scan.error}) — retained, no blind repost`);
|
|
198
218
|
return { ok: false, class: "reconcile-unreadable", detail: scan.error };
|
|
@@ -211,7 +231,9 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
211
231
|
// replay (the marker stays findable; no repost can occur).
|
|
212
232
|
try {
|
|
213
233
|
if (threadTs === undefined)
|
|
214
|
-
opts.onPostedRoot?.(q, matched.ts);
|
|
234
|
+
opts.onPostedRoot?.(q, matched.ts, channel);
|
|
235
|
+
else
|
|
236
|
+
opts.onPostedPart?.(q, matched.ts, threadTs, channel);
|
|
215
237
|
opts.onPosted?.(q, matched.ts, threadTs);
|
|
216
238
|
}
|
|
217
239
|
catch (e) {
|
|
@@ -240,9 +262,36 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
240
262
|
log(`reconcile: marker "${marker}" absent — safe to send`);
|
|
241
263
|
}
|
|
242
264
|
}
|
|
265
|
+
// Rendered only when a post is about to happen: a message already found by its marker above is
|
|
266
|
+
// acknowledged even if it would no longer render (#899: a changed sender label after it landed).
|
|
267
|
+
// M1 A5b (carried over from the retired sweep): an alert's evidenceRef IS the artifact the
|
|
268
|
+
// human judges. #47 — it rides as a Block Kit image ONLY when it looks like an image;
|
|
269
|
+
// a non-image https ref rides as a plain link instead (Slack's invalid_blocks rejects
|
|
270
|
+
// the whole message when an image block's URL is not a real image).
|
|
271
|
+
const { mediaRefs, evidenceLink } = evidenceAttachment(q.media, q.evidenceRef, q.summary);
|
|
272
|
+
const payload = buildOutboundMessage({
|
|
273
|
+
qitemId: q.qitemId ?? decision.decisionId,
|
|
274
|
+
summary: q.summary,
|
|
275
|
+
body: q.body,
|
|
276
|
+
humanQuestions: q.humanQuestions,
|
|
277
|
+
destinationSession: q.destinationSession ?? decision.entityBindingRef,
|
|
278
|
+
}, {
|
|
279
|
+
sourceLabel: opts.sourceLabel,
|
|
280
|
+
bodyExcerpt: opts.bodyExcerpt,
|
|
281
|
+
mediaRefs,
|
|
282
|
+
evidenceLink,
|
|
283
|
+
// A1.2 — attribution rides every post; identity stays the app's own (postChatMessage
|
|
284
|
+
// structurally cannot carry username/icon overrides — the customize-absence rail).
|
|
285
|
+
attribution: attributionFromSession(q.sourceSession),
|
|
286
|
+
mentionUserId: opts.resolveMentionUserId?.(q),
|
|
287
|
+
// fix-r3 — the reconcile identity, reserved outside the clamp budget (same function
|
|
288
|
+
// the scan above matches: one identity, same bytes, both sides).
|
|
289
|
+
reconcileMarker: reconcileToken(decision.decisionId),
|
|
290
|
+
});
|
|
243
291
|
// Marked ATTEMPTED durably BEFORE the post: from here any outcome is ambiguous until 2xx.
|
|
244
292
|
opts.attempted.mark(decision.decisionId, "attempted");
|
|
245
|
-
const
|
|
293
|
+
const stopSignal = opts.stopSignal;
|
|
294
|
+
const res = await postChatMessage(opts.botToken, { channel, text: payload.text, blocks: payload.blocks, thread_ts: threadTs }, opts.fetchImpl, undefined, stopSignal ? (ms) => abortableSleep(ms, stopSignal) : undefined);
|
|
246
295
|
if (!res.ok) {
|
|
247
296
|
const failureClass = res.status === 0 ? "transport" : `http-${res.status}`;
|
|
248
297
|
// Persist the receipt input before the row write. A throwing row write
|
|
@@ -288,7 +337,9 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
288
337
|
// IS in the channel — and retries the idempotent receipt without reposting.
|
|
289
338
|
try {
|
|
290
339
|
if (threadTs === undefined)
|
|
291
|
-
opts.onPostedRoot?.(q, res.ts);
|
|
340
|
+
opts.onPostedRoot?.(q, res.ts, channel);
|
|
341
|
+
else
|
|
342
|
+
opts.onPostedPart?.(q, res.ts, threadTs, channel);
|
|
292
343
|
opts.onPosted?.(q, res.ts, threadTs);
|
|
293
344
|
}
|
|
294
345
|
catch (e) {
|
|
@@ -323,7 +374,7 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
323
374
|
if (put.ok) {
|
|
324
375
|
const done = await completeUploadExternal(opts.botToken,
|
|
325
376
|
// #300: the title is shown in Slack like the text, so it gets the same secret redaction.
|
|
326
|
-
{ files: [{ id: up.fileId, title: redactSecrets(q.summary ?? local.filename) }], channelId:
|
|
377
|
+
{ files: [{ id: up.fileId, title: redactSecrets(q.summary ?? local.filename) }], channelId: channel, threadTs: intoThread }, opts.fetchImpl);
|
|
327
378
|
if (done.ok)
|
|
328
379
|
log(`uploaded ${local.filename} into thread ${intoThread ?? "(root)"} for ${q.qitemId ?? decision.decisionId}`);
|
|
329
380
|
else
|
|
@@ -341,7 +392,98 @@ function deliverSinglePart(opts, markEpisode = true) {
|
|
|
341
392
|
return { ok: true };
|
|
342
393
|
};
|
|
343
394
|
}
|
|
344
|
-
/**
|
|
395
|
+
/** #897 — the most Slack messages one ask may post: the primary plus its thread replies. */
|
|
396
|
+
export const MAX_HUMAN_MESSAGE_PARTS = 20;
|
|
397
|
+
const CONTINUES_NOTE = "The rest of this brief follows in this thread.";
|
|
398
|
+
const DETAIL_NOTE = "Supplemental detail follows in this thread.";
|
|
399
|
+
const DELIVERY_PLAN = "::delivery-plan::";
|
|
400
|
+
function recordedPlan(attempted, decisionId) {
|
|
401
|
+
const prefix = `${decisionId}${DELIVERY_PLAN}`;
|
|
402
|
+
// The newest plan wins: a retry that had to plan again keeps its new plan after the first.
|
|
403
|
+
const key = [...attempted.keys()].filter((candidate) => candidate.startsWith(prefix)).at(-1);
|
|
404
|
+
return key ? JSON.parse(Buffer.from(key.slice(prefix.length), "base64url").toString("utf8")) : undefined;
|
|
405
|
+
}
|
|
406
|
+
/** Whether an ask's first message can already be in Slack; later parts post only after it lands. It can be if
|
|
407
|
+
* it was delivered or its receipt was kept, or if it was attempted and a scan finds its marker or reads only
|
|
408
|
+
* part of the history. An unreadable scan is reported, so the caller retains the ask instead of guessing. */
|
|
409
|
+
async function firstMessageMayHaveLanded(opts, q, decisionId, firstId) {
|
|
410
|
+
if (opts.delivered.load().has(firstId))
|
|
411
|
+
return "found";
|
|
412
|
+
const attempted = opts.attempted.load();
|
|
413
|
+
if ([...attempted.keys()].some((key) => key.startsWith(`${decisionId}::primary-receipt::`)))
|
|
414
|
+
return "found";
|
|
415
|
+
if (!attempted.has(firstId))
|
|
416
|
+
return "absent";
|
|
417
|
+
const marker = reconcileToken(firstId);
|
|
418
|
+
// #192: look where the first message went: its first attempt's channel, with the same precedence
|
|
419
|
+
// a supplemental part uses (recorded, else this ask's channel, else the default), and that
|
|
420
|
+
// channel's thread. With no map this is the default channel, as before.
|
|
421
|
+
const channel = firstAttemptChannel(opts, attempted, firstId) ?? opts.resolveChannel?.(q) ?? opts.channel;
|
|
422
|
+
const scan = await fetchRecentMessageTexts(opts.botToken, channel, opts.resolveThreadTs?.(q, channel), opts.fetchImpl, undefined, undefined, marker);
|
|
423
|
+
if (!scan.ok)
|
|
424
|
+
return { unreadable: scan.error ?? "reconcile scan failed" };
|
|
425
|
+
if (scan.messages.some((m) => m.text.includes(marker)))
|
|
426
|
+
return "found";
|
|
427
|
+
return scan.incomplete ? "maybe" : "absent";
|
|
428
|
+
}
|
|
429
|
+
/** The pieces splitForSlack cut, replayed from their recorded lengths; undefined if they no longer add up. */
|
|
430
|
+
function replayPieces(text, lengths) {
|
|
431
|
+
const rest = redactSecrets(text).trimEnd();
|
|
432
|
+
if (!lengths || lengths.reduce((sum, n) => sum + n, 0) !== rest.length)
|
|
433
|
+
return undefined;
|
|
434
|
+
let at = 0;
|
|
435
|
+
return lengths.map((n) => rest.slice(at, (at += n)));
|
|
436
|
+
}
|
|
437
|
+
function partIdFor(decisionId, count, index) {
|
|
438
|
+
return count === 1 ? decisionId : `${decisionId}:part:${index + 1}`;
|
|
439
|
+
}
|
|
440
|
+
/** Render one part exactly as deliverSinglePart will, throwing HumanMessageShapeError if it can't. */
|
|
441
|
+
function renderPart(opts, q, part, index, partId) {
|
|
442
|
+
// #47 — preflight must mirror deliverSinglePart exactly: the same evidenceRef
|
|
443
|
+
// split (image attachment vs. plain link) so the shape check sees the true payload.
|
|
444
|
+
const partEvidence = evidenceAttachment(part.media, part.evidenceRef, part.summary);
|
|
445
|
+
return buildOutboundMessage(part, {
|
|
446
|
+
sourceLabel: opts.sourceLabel,
|
|
447
|
+
attribution: attributionFromSession(part.sourceSession),
|
|
448
|
+
mentionUserId: index === 0 ? opts.resolveMentionUserId?.(q) : undefined,
|
|
449
|
+
reconcileMarker: reconcileToken(partId),
|
|
450
|
+
mediaRefs: partEvidence.mediaRefs,
|
|
451
|
+
evidenceLink: partEvidence.evidenceLink,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
/** #897 — a brief or supplemental detail too long for one message: the primary keeps the
|
|
455
|
+
* subject, the start of the brief, any options and the evidence; the rest follows as
|
|
456
|
+
* numbered replies in its thread, each sized to its own message limits. */
|
|
457
|
+
function splitIntoParts(opts, q, decisionId, recorded) {
|
|
458
|
+
const reply = (summary) => ({ ...q, humanDetail: undefined, humanQuestions: undefined, summary, media: [], evidenceRef: null });
|
|
459
|
+
const widest = `${MAX_HUMAN_MESSAGE_PARTS} of ${MAX_HUMAN_MESSAGE_PARTS}`;
|
|
460
|
+
// A part's room is what its subject, options, evidence, sender and marker leave of both limits.
|
|
461
|
+
const roomFor = (part, index, reserve = 0) => {
|
|
462
|
+
const frame = renderPart(opts, q, { ...part, body: "" }, index, partIdFor(decisionId, 2, index));
|
|
463
|
+
return Math.min(SLACK_SECTION_CAP, SLACK_TEXT_CAP - frame.text.length - 1) - reserve;
|
|
464
|
+
};
|
|
465
|
+
const primary = { ...q, humanDetail: undefined };
|
|
466
|
+
// A retry replays its first attempt's cuts, so no piece moves between the parts already posted and the rest.
|
|
467
|
+
const body = replayPieces(q.body ?? "", recorded?.body) ?? splitForSlack(q.body ?? "", (i) => i === 0
|
|
468
|
+
? roomFor(primary, 0, Math.max(CONTINUES_NOTE.length, DETAIL_NOTE.length) + 2)
|
|
469
|
+
: roomFor(reply(`Continued (${widest})`), i));
|
|
470
|
+
const first = Math.max(body.length, 1);
|
|
471
|
+
const detail = q.humanDetail
|
|
472
|
+
? replayPieces(q.humanDetail, recorded?.detail) ?? splitForSlack(q.humanDetail, (j) => roomFor(reply(`Supplemental detail (${widest})`), first + j))
|
|
473
|
+
: [];
|
|
474
|
+
// A brief that fits keeps the usual note; only a brief that continues says so.
|
|
475
|
+
const note = body.length > 1 ? CONTINUES_NOTE : DETAIL_NOTE;
|
|
476
|
+
const parts = [{ ...primary, body: body[0] ? `${body[0]}\n\n${note}` : note }];
|
|
477
|
+
for (let k = 1; k < body.length; k++)
|
|
478
|
+
parts.push({ ...reply(`Continued (${k + 1} of ${body.length})`), body: body[k] });
|
|
479
|
+
detail.forEach((piece, j) => parts.push({ ...reply(`Supplemental detail (${j + 1} of ${detail.length})`), body: piece }));
|
|
480
|
+
if (parts.length > MAX_HUMAN_MESSAGE_PARTS) {
|
|
481
|
+
throw new HumanMessageShapeError(`This brief needs ${parts.length} Slack messages (maximum ${MAX_HUMAN_MESSAGE_PARTS}). Shorten it, or put the long part in a file and link it.`);
|
|
482
|
+
}
|
|
483
|
+
return { parts, plan: { body: body.map((piece) => piece.length), detail: detail.map((piece) => piece.length) } };
|
|
484
|
+
}
|
|
485
|
+
/** One authored primary and, optionally, one coherent supplemental reply; a brief or
|
|
486
|
+
* detail too long for that is posted as more numbered thread replies (#897). The
|
|
345
487
|
* existing attempted/delivered stores and marker reconciler own each stable part.
|
|
346
488
|
* Preflight ALL parts before posting; the episode receipt is written only after
|
|
347
489
|
* every required part. A restart retries missing parts and the final receipt. */
|
|
@@ -350,40 +492,110 @@ export function subsystemSlackDeliver(opts) {
|
|
|
350
492
|
if (opts.delivered.load().has(decision.decisionId))
|
|
351
493
|
return { ok: true };
|
|
352
494
|
const q = (decision.payload ?? {});
|
|
353
|
-
|
|
495
|
+
let parts = q.humanDetail
|
|
354
496
|
? [
|
|
355
|
-
{ ...q, humanDetail: undefined, body: `${q.body ?? ""}\n\
|
|
497
|
+
{ ...q, humanDetail: undefined, body: `${q.body ?? ""}\n\n${DETAIL_NOTE}` },
|
|
356
498
|
{ ...q, humanDetail: undefined, humanQuestions: undefined, summary: `Supplemental detail: ${q.summary ?? ""}`, body: q.humanDetail, media: [], evidenceRef: null },
|
|
357
499
|
]
|
|
358
500
|
: [q];
|
|
359
|
-
|
|
501
|
+
// #897 — the first attempt decides the shape from the real render and records it; a retry renders
|
|
502
|
+
// with the recorded mention and cuts, so it can't switch between one message and a split or move a cut.
|
|
503
|
+
let recorded;
|
|
360
504
|
try {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
505
|
+
recorded = recordedPlan(opts.attempted.load(), decision.decisionId);
|
|
506
|
+
}
|
|
507
|
+
catch (error) {
|
|
508
|
+
return { ok: false, class: "receipt-failed", detail: `delivery plan is unreadable: ${error.message}` };
|
|
509
|
+
}
|
|
510
|
+
const authored = parts;
|
|
511
|
+
/** The parts a plan renders to, preflighted; with no plan, decide one from the real render. */
|
|
512
|
+
const choose = (kept) => {
|
|
513
|
+
const mention = kept ? kept.mention : opts.resolveMentionUserId?.(q);
|
|
514
|
+
const planned = { ...opts, resolveMentionUserId: () => mention };
|
|
515
|
+
// A kept plan checks only the parts still to post: delivered parts are acknowledged, never rendered again.
|
|
516
|
+
const delivered = kept ? opts.delivered.load() : new Set();
|
|
517
|
+
const preflight = (candidate) => {
|
|
518
|
+
for (const [index, part] of candidate.entries()) {
|
|
519
|
+
const id = partIdFor(decision.decisionId, candidate.length, index);
|
|
520
|
+
if (!delivered.has(id))
|
|
521
|
+
renderPart(planned, q, part, index, id);
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
if (kept?.body) {
|
|
525
|
+
const split = splitIntoParts(planned, q, decision.decisionId, kept).parts;
|
|
526
|
+
preflight(split);
|
|
527
|
+
return { parts: split, planned, plan: kept };
|
|
528
|
+
}
|
|
529
|
+
try {
|
|
530
|
+
preflight(authored);
|
|
531
|
+
return { parts: authored, planned, plan: { mention } };
|
|
532
|
+
}
|
|
533
|
+
catch (error) {
|
|
534
|
+
if (kept || !(error instanceof HumanMessageShapeError))
|
|
535
|
+
throw error;
|
|
536
|
+
// #897 — too long for the authored parts: split, and refuse only if that can't fit.
|
|
537
|
+
const split = splitIntoParts(planned, q, decision.decisionId);
|
|
538
|
+
if (split.parts.length < 2)
|
|
539
|
+
throw error;
|
|
540
|
+
preflight(split.parts);
|
|
541
|
+
return { parts: split.parts, planned, plan: { mention, ...split.plan } };
|
|
542
|
+
}
|
|
543
|
+
};
|
|
544
|
+
let chosen;
|
|
545
|
+
let replanned = false;
|
|
546
|
+
let partlyPosted = false;
|
|
547
|
+
try {
|
|
548
|
+
try {
|
|
549
|
+
chosen = choose(recorded);
|
|
550
|
+
}
|
|
551
|
+
catch (error) {
|
|
552
|
+
if (!recorded || !(error instanceof HumanMessageShapeError))
|
|
553
|
+
throw error;
|
|
554
|
+
// A recorded plan that no longer renders (the sender label or the rendering changed between
|
|
555
|
+
// attempts) is planned afresh, as before #897, only if none of it can be in Slack yet: new cuts or
|
|
556
|
+
// ids could otherwise repeat or lose text. If some may be, the rest is refused, loudly, unless the
|
|
557
|
+
// whole ask was one message that is found in Slack, which is simply delivered.
|
|
558
|
+
const firstId = partIdFor(decision.decisionId, recorded.body ? 2 : authored.length, 0);
|
|
559
|
+
const landed = await firstMessageMayHaveLanded(opts, q, decision.decisionId, firstId);
|
|
560
|
+
if (typeof landed === "object")
|
|
561
|
+
return { ok: false, class: "reconcile-unreadable", detail: landed.unreadable };
|
|
562
|
+
if (landed !== "absent")
|
|
563
|
+
partlyPosted = true;
|
|
564
|
+
if (landed === "found" && !recorded.body && authored.length === 1) {
|
|
565
|
+
// #899 — the one message is the whole ask, and it is in Slack: acknowledge it through the
|
|
566
|
+
// reconcile receipt, which finds it by marker before rendering, instead of refusing it.
|
|
567
|
+
const keptMention = recorded.mention;
|
|
568
|
+
return await deliverSinglePart({ ...opts, resolveMentionUserId: () => keptMention })(decision);
|
|
569
|
+
}
|
|
570
|
+
if (partlyPosted)
|
|
571
|
+
throw error;
|
|
572
|
+
chosen = choose();
|
|
573
|
+
replanned = true;
|
|
373
574
|
}
|
|
374
575
|
}
|
|
375
576
|
catch (error) {
|
|
376
577
|
const detail = error.message;
|
|
377
578
|
try {
|
|
378
|
-
opts.onTransportFailed?.(q, "human-message-unrenderable", detail);
|
|
579
|
+
opts.onTransportFailed?.(q, "human-message-unrenderable", detail, partlyPosted);
|
|
379
580
|
}
|
|
380
581
|
catch (receiptError) {
|
|
381
582
|
return { ok: false, class: "receipt-failed", detail: receiptError.message };
|
|
382
583
|
}
|
|
383
584
|
return { ok: false, class: "human-message-unrenderable", detail };
|
|
384
585
|
}
|
|
586
|
+
parts = chosen.parts;
|
|
587
|
+
const { planned } = chosen;
|
|
588
|
+
if (!recorded || replanned) {
|
|
589
|
+
try {
|
|
590
|
+
opts.attempted.mark(`${decision.decisionId}${DELIVERY_PLAN}${Buffer.from(JSON.stringify(chosen.plan)).toString("base64url")}`, "delivery-plan");
|
|
591
|
+
}
|
|
592
|
+
catch (error) {
|
|
593
|
+
return { ok: false, class: "receipt-failed", detail: `delivery plan not kept: ${error.message}` };
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
const partId = (index) => partIdFor(decision.decisionId, parts.length, index);
|
|
385
597
|
if (parts.length === 1)
|
|
386
|
-
return deliverSinglePart(
|
|
598
|
+
return deliverSinglePart(planned)(decision);
|
|
387
599
|
const rootPrefix = `${decision.decisionId}::primary-receipt::`;
|
|
388
600
|
const retained = [...opts.attempted.load()].find((key) => key.startsWith(rootPrefix));
|
|
389
601
|
let primary = retained
|
|
@@ -394,9 +606,14 @@ export function subsystemSlackDeliver(opts) {
|
|
|
394
606
|
return { ok: false, class: "receipt-failed", detail: "Supplemental delivery requires the actual primary Slack timestamp; retain for reconciliation." };
|
|
395
607
|
}
|
|
396
608
|
const outcome = await deliverSinglePart({
|
|
397
|
-
...
|
|
398
|
-
resolveMentionUserId: index === 0 ?
|
|
609
|
+
...planned,
|
|
610
|
+
resolveMentionUserId: index === 0 ? planned.resolveMentionUserId : undefined,
|
|
399
611
|
resolveThreadTs: index === 0 ? opts.resolveThreadTs : () => primary.threadTs ?? primary.messageTs,
|
|
612
|
+
// #192: a supplemental part goes where the primary went (its recorded channel), never to a
|
|
613
|
+
// channel re-resolved after a remap; without a record, resolution as before.
|
|
614
|
+
resolveChannel: index === 0
|
|
615
|
+
? opts.resolveChannel
|
|
616
|
+
: (part) => firstAttemptChannel(opts, opts.attempted.load(), partId(0)) ?? opts.resolveChannel?.(part) ?? opts.channel,
|
|
400
617
|
onPostedRoot: index === 0 ? opts.onPostedRoot : undefined,
|
|
401
618
|
onPosted: (_part, messageTs, threadTs) => {
|
|
402
619
|
if (index !== 0)
|