botmux 3.4.2 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +10 -7
- package/README.md +11 -6
- package/dist/adapters/backend/herdr-backend.d.ts +43 -6
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +362 -28
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/reproduce-command.d.ts +39 -0
- package/dist/adapters/backend/reproduce-command.d.ts.map +1 -0
- package/dist/adapters/backend/reproduce-command.js +63 -0
- package/dist/adapters/backend/reproduce-command.js.map +1 -0
- package/dist/adapters/backend/session-backend-selector.d.ts +10 -1
- package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
- package/dist/adapters/backend/session-backend-selector.js +73 -4
- package/dist/adapters/backend/session-backend-selector.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +16 -0
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/cli/pi-initial-prompt-extension.d.ts +27 -0
- package/dist/adapters/cli/pi-initial-prompt-extension.d.ts.map +1 -0
- package/dist/adapters/cli/pi-initial-prompt-extension.js +38 -0
- package/dist/adapters/cli/pi-initial-prompt-extension.js.map +1 -0
- package/dist/adapters/cli/pi-initial-prompt.d.ts +21 -0
- package/dist/adapters/cli/pi-initial-prompt.d.ts.map +1 -0
- package/dist/adapters/cli/pi-initial-prompt.js +59 -0
- package/dist/adapters/cli/pi-initial-prompt.js.map +1 -0
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +15 -4
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +5 -0
- package/dist/adapters/cli/read-isolation.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +8 -0
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +5 -0
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +23 -3
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/adapters/hook-installer.d.ts +7 -0
- package/dist/adapters/hook-installer.d.ts.map +1 -1
- package/dist/adapters/hook-installer.js +56 -0
- package/dist/adapters/hook-installer.js.map +1 -1
- package/dist/bot-registry.d.ts +13 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +118 -2
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/capabilities.d.ts +24 -0
- package/dist/cli/capabilities.d.ts.map +1 -0
- package/dist/cli/capabilities.js +25 -0
- package/dist/cli/capabilities.js.map +1 -0
- package/dist/cli/create-group-resolver.d.ts +24 -0
- package/dist/cli/create-group-resolver.d.ts.map +1 -1
- package/dist/cli/create-group-resolver.js +23 -0
- package/dist/cli/create-group-resolver.js.map +1 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +5 -7
- package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
- package/dist/cli/daemon-lifecycle-env.js +13 -7
- package/dist/cli/daemon-lifecycle-env.js.map +1 -1
- package/dist/cli/exact-chat-grant-client.d.ts +48 -0
- package/dist/cli/exact-chat-grant-client.d.ts.map +1 -0
- package/dist/cli/exact-chat-grant-client.js +108 -0
- package/dist/cli/exact-chat-grant-client.js.map +1 -0
- package/dist/cli/exact-chat-grant.d.ts +18 -0
- package/dist/cli/exact-chat-grant.d.ts.map +1 -0
- package/dist/cli/exact-chat-grant.js +97 -0
- package/dist/cli/exact-chat-grant.js.map +1 -0
- package/dist/cli.d.ts +10 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +770 -126
- package/dist/cli.js.map +1 -1
- package/dist/codex-rpc-engine.d.ts +26 -0
- package/dist/codex-rpc-engine.d.ts.map +1 -1
- package/dist/codex-rpc-engine.js +113 -2
- package/dist/codex-rpc-engine.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/core/bot-live-control.d.ts +41 -0
- package/dist/core/bot-live-control.d.ts.map +1 -0
- package/dist/core/bot-live-control.js +135 -0
- package/dist/core/bot-live-control.js.map +1 -0
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +28 -8
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/daemon-config-fence.d.ts +8 -0
- package/dist/core/daemon-config-fence.d.ts.map +1 -0
- package/dist/core/daemon-config-fence.js +13 -0
- package/dist/core/daemon-config-fence.js.map +1 -0
- package/dist/core/dashboard-events.d.ts +5 -0
- package/dist/core/dashboard-events.d.ts.map +1 -1
- package/dist/core/dashboard-events.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts +21 -2
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +232 -5
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dispatch-registry.d.ts +12 -0
- package/dist/core/dispatch-registry.d.ts.map +1 -0
- package/dist/core/dispatch-registry.js +33 -0
- package/dist/core/dispatch-registry.js.map +1 -0
- package/dist/core/dispatch.d.ts +99 -0
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +136 -0
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/inflight-input-tracker.d.ts +1 -0
- package/dist/core/inflight-input-tracker.d.ts.map +1 -1
- package/dist/core/inflight-input-tracker.js.map +1 -1
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +10 -3
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/persistent-backend.d.ts +16 -2
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +40 -0
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/session-discovery.d.ts +8 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +140 -8
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +12 -8
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-title.d.ts +8 -0
- package/dist/core/session-title.d.ts.map +1 -1
- package/dist/core/session-title.js +54 -0
- package/dist/core/session-title.js.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +15 -0
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +20 -0
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +3 -2
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/types.d.ts +33 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +27 -8
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +389 -19
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +4 -2
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +397 -26
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts +127 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +1104 -25
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/debug-terminal.d.ts +18 -0
- package/dist/dashboard/debug-terminal.d.ts.map +1 -0
- package/dist/dashboard/debug-terminal.js +338 -0
- package/dist/dashboard/debug-terminal.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts +2 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +12 -3
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/registry.d.ts +8 -0
- package/dist/dashboard/registry.d.ts.map +1 -1
- package/dist/dashboard/registry.js +13 -0
- package/dist/dashboard/registry.js.map +1 -1
- package/dist/dashboard/settings-write-applier.d.ts +47 -1
- package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
- package/dist/dashboard/settings-write-applier.js +102 -1
- package/dist/dashboard/settings-write-applier.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +2 -0
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +1 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +24 -5
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +15 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +19 -0
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +76 -6
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/icon-tooltip.d.ts +3 -0
- package/dist/dashboard/web/icon-tooltip.d.ts.map +1 -0
- package/dist/dashboard/web/icon-tooltip.js +108 -0
- package/dist/dashboard/web/icon-tooltip.js.map +1 -0
- package/dist/dashboard/web/sessions-kanban.js +2 -2
- package/dist/dashboard/web/sessions-kanban.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +48 -9
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +2 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +46 -2
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +78 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -1
- package/dist/dashboard/web/settings-page.js +88 -1
- package/dist/dashboard/web/settings-page.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +2 -0
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +13 -1
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-O376WSER.js +5 -0
- package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-EJDYUINZ.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-H7P5UV4W.js} +6 -6
- package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-QCPPKCX3.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-WXPMNEYV.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-IR54AOAI.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-3P4TLUMF.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-TDCZV56A.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-QWCWL3SX.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-IOWFSNVC.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-5AUPEHZP.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-QJMI6NLW.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WJVB52ET.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-RVRWHP4V.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-KWLGBX6G.js +3 -0
- package/dist/dashboard-web/chunks/settings-page-TNZEPC7V.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-7YT5TIX5.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-NJZKTU7A.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-NQ73UA2Q.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-DSM3MDMN.js} +1 -1
- package/dist/dashboard-web/style.css +198 -7
- package/dist/dashboard.js +294 -7
- package/dist/dashboard.js.map +1 -1
- package/dist/features/codex-notifier/adoption.d.ts +11 -0
- package/dist/features/codex-notifier/adoption.d.ts.map +1 -0
- package/dist/features/codex-notifier/adoption.js +11 -0
- package/dist/features/codex-notifier/adoption.js.map +1 -0
- package/dist/features/codex-notifier/app-opener.d.ts +21 -0
- package/dist/features/codex-notifier/app-opener.d.ts.map +1 -0
- package/dist/features/codex-notifier/app-opener.js +33 -0
- package/dist/features/codex-notifier/app-opener.js.map +1 -0
- package/dist/features/codex-notifier/card-action.d.ts +27 -0
- package/dist/features/codex-notifier/card-action.d.ts.map +1 -0
- package/dist/features/codex-notifier/card-action.js +84 -0
- package/dist/features/codex-notifier/card-action.js.map +1 -0
- package/dist/features/codex-notifier/card.d.ts +12 -0
- package/dist/features/codex-notifier/card.d.ts.map +1 -0
- package/dist/features/codex-notifier/card.js +150 -0
- package/dist/features/codex-notifier/card.js.map +1 -0
- package/dist/features/codex-notifier/codex-context.d.ts +12 -0
- package/dist/features/codex-notifier/codex-context.d.ts.map +1 -0
- package/dist/features/codex-notifier/codex-context.js +161 -0
- package/dist/features/codex-notifier/codex-context.js.map +1 -0
- package/dist/features/codex-notifier/config.d.ts +9 -0
- package/dist/features/codex-notifier/config.d.ts.map +1 -0
- package/dist/features/codex-notifier/config.js +11 -0
- package/dist/features/codex-notifier/config.js.map +1 -0
- package/dist/features/codex-notifier/confirmed-turn.d.ts +20 -0
- package/dist/features/codex-notifier/confirmed-turn.d.ts.map +1 -0
- package/dist/features/codex-notifier/confirmed-turn.js +130 -0
- package/dist/features/codex-notifier/confirmed-turn.js.map +1 -0
- package/dist/features/codex-notifier/emitter.d.ts +13 -0
- package/dist/features/codex-notifier/emitter.d.ts.map +1 -0
- package/dist/features/codex-notifier/emitter.js +33 -0
- package/dist/features/codex-notifier/emitter.js.map +1 -0
- package/dist/features/codex-notifier/event-store.d.ts +29 -0
- package/dist/features/codex-notifier/event-store.d.ts.map +1 -0
- package/dist/features/codex-notifier/event-store.js +217 -0
- package/dist/features/codex-notifier/event-store.js.map +1 -0
- package/dist/features/codex-notifier/event.d.ts +46 -0
- package/dist/features/codex-notifier/event.d.ts.map +1 -0
- package/dist/features/codex-notifier/event.js +188 -0
- package/dist/features/codex-notifier/event.js.map +1 -0
- package/dist/features/codex-notifier/hook-cli.d.ts +23 -0
- package/dist/features/codex-notifier/hook-cli.d.ts.map +1 -0
- package/dist/features/codex-notifier/hook-cli.js +130 -0
- package/dist/features/codex-notifier/hook-cli.js.map +1 -0
- package/dist/features/codex-notifier/hook-installer.d.ts +19 -0
- package/dist/features/codex-notifier/hook-installer.d.ts.map +1 -0
- package/dist/features/codex-notifier/hook-installer.js +158 -0
- package/dist/features/codex-notifier/hook-installer.js.map +1 -0
- package/dist/features/codex-notifier/index.d.ts +21 -0
- package/dist/features/codex-notifier/index.d.ts.map +1 -0
- package/dist/features/codex-notifier/index.js +19 -0
- package/dist/features/codex-notifier/index.js.map +1 -0
- package/dist/features/codex-notifier/internal-turn.d.ts +5 -0
- package/dist/features/codex-notifier/internal-turn.d.ts.map +1 -0
- package/dist/features/codex-notifier/internal-turn.js +43 -0
- package/dist/features/codex-notifier/internal-turn.js.map +1 -0
- package/dist/features/codex-notifier/outbox-worker.d.ts +71 -0
- package/dist/features/codex-notifier/outbox-worker.d.ts.map +1 -0
- package/dist/features/codex-notifier/outbox-worker.js +290 -0
- package/dist/features/codex-notifier/outbox-worker.js.map +1 -0
- package/dist/features/codex-notifier/outbox.d.ts +25 -0
- package/dist/features/codex-notifier/outbox.d.ts.map +1 -0
- package/dist/features/codex-notifier/outbox.js +225 -0
- package/dist/features/codex-notifier/outbox.js.map +1 -0
- package/dist/features/codex-notifier/paths.d.ts +7 -0
- package/dist/features/codex-notifier/paths.d.ts.map +1 -0
- package/dist/features/codex-notifier/paths.js +20 -0
- package/dist/features/codex-notifier/paths.js.map +1 -0
- package/dist/features/codex-notifier/screen-lock.d.ts +12 -0
- package/dist/features/codex-notifier/screen-lock.d.ts.map +1 -0
- package/dist/features/codex-notifier/screen-lock.js +47 -0
- package/dist/features/codex-notifier/screen-lock.js.map +1 -0
- package/dist/features/codex-notifier/side-conversation-monitor.d.ts +102 -0
- package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +1 -0
- package/dist/features/codex-notifier/side-conversation-monitor.js +774 -0
- package/dist/features/codex-notifier/side-conversation-monitor.js.map +1 -0
- package/dist/features/codex-notifier/types.d.ts +42 -0
- package/dist/features/codex-notifier/types.d.ts.map +1 -0
- package/dist/features/codex-notifier/types.js +2 -0
- package/dist/features/codex-notifier/types.js.map +1 -0
- package/dist/features/codex-notifier/worker-lock.d.ts +8 -0
- package/dist/features/codex-notifier/worker-lock.d.ts.map +1 -0
- package/dist/features/codex-notifier/worker-lock.js +108 -0
- package/dist/features/codex-notifier/worker-lock.js.map +1 -0
- package/dist/global-config.d.ts +13 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +30 -0
- package/dist/global-config.js.map +1 -1
- package/dist/im/lark/card-builder.js +2 -2
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +2 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +165 -34
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +62 -4
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +237 -29
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +20 -30
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/platform/secure-host-file.d.ts.map +1 -1
- package/dist/platform/secure-host-file.js +173 -54
- package/dist/platform/secure-host-file.js.map +1 -1
- package/dist/services/codex-app-threads.d.ts +47 -0
- package/dist/services/codex-app-threads.d.ts.map +1 -1
- package/dist/services/codex-app-threads.js +502 -10
- package/dist/services/codex-app-threads.js.map +1 -1
- package/dist/services/exact-chat-grant.d.ts +83 -0
- package/dist/services/exact-chat-grant.d.ts.map +1 -0
- package/dist/services/exact-chat-grant.js +249 -0
- package/dist/services/exact-chat-grant.js.map +1 -0
- package/dist/services/group-creator.d.ts +11 -0
- package/dist/services/group-creator.d.ts.map +1 -1
- package/dist/services/group-creator.js +18 -9
- package/dist/services/group-creator.js.map +1 -1
- package/dist/services/local-cli-opener.d.ts.map +1 -1
- package/dist/services/local-cli-opener.js +10 -5
- package/dist/services/local-cli-opener.js.map +1 -1
- package/dist/services/traex-user-input.d.ts +19 -0
- package/dist/services/traex-user-input.d.ts.map +1 -0
- package/dist/services/traex-user-input.js +57 -0
- package/dist/services/traex-user-input.js.map +1 -0
- package/dist/setup/open-platform-automation.d.ts +24 -3
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +45 -8
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/verify-permissions.d.ts +18 -0
- package/dist/setup/verify-permissions.d.ts.map +1 -1
- package/dist/setup/verify-permissions.js +60 -0
- package/dist/setup/verify-permissions.js.map +1 -1
- package/dist/types.d.ts +70 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +1 -1
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +2 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/pending-input-queue.d.ts +19 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.js +21 -1
- package/dist/utils/pending-input-queue.js.map +1 -1
- package/dist/utils/stuck-detector.d.ts +45 -0
- package/dist/utils/stuck-detector.d.ts.map +1 -0
- package/dist/utils/stuck-detector.js +188 -0
- package/dist/utils/stuck-detector.js.map +1 -0
- package/dist/utils/stuck-key-guard.d.ts +75 -0
- package/dist/utils/stuck-key-guard.d.ts.map +1 -0
- package/dist/utils/stuck-key-guard.js +77 -0
- package/dist/utils/stuck-key-guard.js.map +1 -0
- package/dist/worker.js +807 -117
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/bot-defaults-page-B5AY4B2J.js +0 -5
- package/dist/dashboard-web/chunks/sessions-page-2VECQ27T.js +0 -3
- package/dist/dashboard-web/chunks/settings-page-HMIUE2JA.js +0 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BackendType } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 选出复现命令应展示的 bin/args——mirror worker.ts spawnCli 里 reproduce 快照的决策,
|
|
4
|
+
* 抽成纯函数便于锁测试(codex review P1:确保绝不含 sandbox wrapper)。
|
|
5
|
+
*
|
|
6
|
+
* 输入是**基础 CLI** 的 bin/args(cliAdapter.resolvedBin + buildArgs 产出,未经任何
|
|
7
|
+
* Seatbelt/bwrap/credential 改写)。规则:
|
|
8
|
+
* - wrapperCli 生效**且** sandbox 关闭时 → 返回 wrapper 形态(`aiden x claude …`)。
|
|
9
|
+
* worker 侧 wrapperCli 与 file sandbox 互斥(sandboxOn 时忽略 wrapper),这里同构。
|
|
10
|
+
* - 其余(无 wrapper,或 sandbox 开启)→ 返回基础 CLI bin/args 原样。
|
|
11
|
+
* 无论如何都**不**含 sandbox-exec / bwrap 外层——那是机器相关、裸 bash 跑不起来的包装。
|
|
12
|
+
*/
|
|
13
|
+
export declare function selectReproduceLaunch(input: {
|
|
14
|
+
baseBin: string;
|
|
15
|
+
baseArgs: string[];
|
|
16
|
+
wrapperCli?: string;
|
|
17
|
+
sandboxOn: boolean;
|
|
18
|
+
binResolver?: (bin: string) => string;
|
|
19
|
+
ttadkModel?: string;
|
|
20
|
+
}): {
|
|
21
|
+
bin: string;
|
|
22
|
+
args: string[];
|
|
23
|
+
};
|
|
24
|
+
export interface ReproduceCommandInput {
|
|
25
|
+
backendType: BackendType;
|
|
26
|
+
/** CLI 自身的可执行文件(cliAdapter.resolvedBin,或 wrapperCli 改写后的启动器)。
|
|
27
|
+
* 应为**未被 sandbox 包装**的形态。 */
|
|
28
|
+
bin: string;
|
|
29
|
+
/** CLI argv(buildArgs 产出,或 wrapperCli 改写后)。未被 sandbox 包装。 */
|
|
30
|
+
args: string[];
|
|
31
|
+
/** 工作目录。 */
|
|
32
|
+
cwd?: string;
|
|
33
|
+
/** worker 的完整 childEnv——用于抽取 botmux 注入的权威 env 键。 */
|
|
34
|
+
env?: NodeJS.ProcessEnv;
|
|
35
|
+
/** 每 bot 注入 env(bots.json env,含 provider 凭证)。 */
|
|
36
|
+
injectEnv?: Record<string, string>;
|
|
37
|
+
}
|
|
38
|
+
export declare function buildReproduceCommand(input: ReproduceCommandInput): string | null;
|
|
39
|
+
//# sourceMappingURL=reproduce-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reproduce-command.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/reproduce-command.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAYlC;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB;kCAC8B;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAgBjF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// src/adapters/backend/reproduce-command.ts
|
|
2
|
+
//
|
|
3
|
+
// Dashboard「复现命令」:把一次 session 冷启的 CLI 调用组装成一条可粘贴进调试终端
|
|
4
|
+
// (裸 bash)大致复现的命令。**近似**——不是当前进程的真实启动命令:
|
|
5
|
+
// - 省略外层文件/读隔离 sandbox(bwrap/seatbelt)包装:那是机器相关、装在
|
|
6
|
+
// bash 白板里也跑不起来,且会掩盖真正想复现的 CLI 行为。命令里注明。
|
|
7
|
+
// - 省略 tmux/zellij 的 shell wrapper(rcfile 语义):调试终端本身就是用户的
|
|
8
|
+
// 交互 bash,PATH/HOME/NVM 等由其 rcfile 提供,与 wrapper 目标一致;这里只补
|
|
9
|
+
// botmux 注入的那批权威 env(buildBotmuxEnvAssignments)——正是它们平时靠
|
|
10
|
+
// wrapper 的 `/usr/bin/env KEY=VAL` 注入、裸 bash 不会有。
|
|
11
|
+
// - riff 后端没有本地 bin/args(远端执行),返回 null → 接口报 unavailable,
|
|
12
|
+
// 绝不伪造一条本地命令误导排障。
|
|
13
|
+
// 供 worker 在 ready 时算出、上报给 daemon 只驻内存(含凭证,绝不落盘)。
|
|
14
|
+
import { buildBotmuxEnvAssignments } from './tmux-backend.js';
|
|
15
|
+
import { buildWrappedLaunch } from '../../setup/cli-selection.js';
|
|
16
|
+
/** POSIX 单引号转义,安全用于 bash 粘贴。 */
|
|
17
|
+
function shq(value) {
|
|
18
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 选出复现命令应展示的 bin/args——mirror worker.ts spawnCli 里 reproduce 快照的决策,
|
|
22
|
+
* 抽成纯函数便于锁测试(codex review P1:确保绝不含 sandbox wrapper)。
|
|
23
|
+
*
|
|
24
|
+
* 输入是**基础 CLI** 的 bin/args(cliAdapter.resolvedBin + buildArgs 产出,未经任何
|
|
25
|
+
* Seatbelt/bwrap/credential 改写)。规则:
|
|
26
|
+
* - wrapperCli 生效**且** sandbox 关闭时 → 返回 wrapper 形态(`aiden x claude …`)。
|
|
27
|
+
* worker 侧 wrapperCli 与 file sandbox 互斥(sandboxOn 时忽略 wrapper),这里同构。
|
|
28
|
+
* - 其余(无 wrapper,或 sandbox 开启)→ 返回基础 CLI bin/args 原样。
|
|
29
|
+
* 无论如何都**不**含 sandbox-exec / bwrap 外层——那是机器相关、裸 bash 跑不起来的包装。
|
|
30
|
+
*/
|
|
31
|
+
export function selectReproduceLaunch(input) {
|
|
32
|
+
const { baseBin, baseArgs, wrapperCli, sandboxOn } = input;
|
|
33
|
+
if (wrapperCli && wrapperCli.trim() && !sandboxOn) {
|
|
34
|
+
const launch = buildWrappedLaunch(wrapperCli, baseArgs, input.binResolver ?? ((b) => b), { ttadkModel: input.ttadkModel });
|
|
35
|
+
if (launch.bin)
|
|
36
|
+
return { bin: launch.bin, args: launch.args };
|
|
37
|
+
}
|
|
38
|
+
return { bin: baseBin, args: [...baseArgs] };
|
|
39
|
+
}
|
|
40
|
+
// 组装近似复现命令。riff(远端后端)返回 null。其余后端返回:
|
|
41
|
+
// cd '<cwd>' && KEY='v' KEY2='v2' ... '<bin>' '<arg>' ...
|
|
42
|
+
// env 前缀取 buildBotmuxEnvAssignments(BOTMUX_* / SESSION_DATA_DIR /
|
|
43
|
+
// CLAUDE_CONFIG_DIR / CODEX_HOME / 代理 / per-bot 凭证),每个 VAL 做 bash 单引号转义。
|
|
44
|
+
export function buildReproduceCommand(input) {
|
|
45
|
+
if (input.backendType === 'riff')
|
|
46
|
+
return null;
|
|
47
|
+
if (!input.bin)
|
|
48
|
+
return null;
|
|
49
|
+
const parts = [];
|
|
50
|
+
// 权威注入 env(KEY=VAL 列表),VAL 做 bash 转义后作为命令前缀。
|
|
51
|
+
for (const assignment of buildBotmuxEnvAssignments(input.env, input.injectEnv)) {
|
|
52
|
+
const eq = assignment.indexOf('=');
|
|
53
|
+
if (eq <= 0)
|
|
54
|
+
continue;
|
|
55
|
+
const key = assignment.slice(0, eq);
|
|
56
|
+
const val = assignment.slice(eq + 1);
|
|
57
|
+
parts.push(`${key}=${shq(val)}`);
|
|
58
|
+
}
|
|
59
|
+
parts.push(shq(input.bin), ...input.args.map(shq));
|
|
60
|
+
const cmd = parts.join(' ');
|
|
61
|
+
return input.cwd ? `cd ${shq(input.cwd)} && ${cmd}` : cmd;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=reproduce-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reproduce-command.js","sourceRoot":"","sources":["../../../src/adapters/backend/reproduce-command.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,sDAAsD;AACtD,yCAAyC;AACzC,qDAAqD;AACrD,6CAA6C;AAC7C,4DAA4D;AAC5D,8DAA8D;AAC9D,6DAA6D;AAC7D,sDAAsD;AACtD,4DAA4D;AAC5D,sBAAsB;AACtB,kDAAkD;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,gCAAgC;AAChC,SAAS,GAAG,CAAC,KAAa;IACxB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAOrC;IACC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC3D,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,kBAAkB,CAC/B,UAAU,EACV,QAAQ,EACR,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAC/B,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;QACF,IAAI,MAAM,CAAC,GAAG;YAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC/C,CAAC;AAiBD,qCAAqC;AACrC,4DAA4D;AAC5D,kEAAkE;AAClE,yEAAyE;AACzE,MAAM,UAAU,qBAAqB,CAAC,KAA4B;IAChE,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,KAAK,MAAM,UAAU,IAAI,yBAAyB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/E,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RiffBackendConfig } from './riff-backend.js';
|
|
2
|
-
import type { BackendType, SessionBackend } from './types.js';
|
|
2
|
+
import type { BackendType, PersistentBackendTarget, SessionBackend } from './types.js';
|
|
3
3
|
export type BackendGateDecision = {
|
|
4
4
|
action: 'spawn';
|
|
5
5
|
} | {
|
|
@@ -40,10 +40,19 @@ export interface SelectedSessionBackend {
|
|
|
40
40
|
* like the non-tmux (pty) path — screenshots via the headless renderer, web
|
|
41
41
|
* terminal via relay — but it owns a persistent zellij session internally. */
|
|
42
42
|
isZellijMode: boolean;
|
|
43
|
+
persistentSessionName?: string;
|
|
44
|
+
/** Exact resource owned by this Botmux session; persisted by the daemon. */
|
|
45
|
+
persistentBackendTarget?: PersistentBackendTarget;
|
|
46
|
+
isReattach?: boolean;
|
|
47
|
+
/** Set when this spawn creates its deterministic Botmux-owned Herdr session. */
|
|
48
|
+
createdHerdrSessionName?: string;
|
|
43
49
|
}
|
|
44
50
|
export declare function selectSessionBackend(opts: {
|
|
45
51
|
sessionId: string;
|
|
46
52
|
backendType: BackendType;
|
|
47
53
|
backendConfig?: RiffBackendConfig;
|
|
54
|
+
/** Migration compatibility for sessions previously placed in a shared user host. */
|
|
55
|
+
reuseRecordedHerdrTarget?: boolean;
|
|
56
|
+
persistentBackendTarget?: PersistentBackendTarget;
|
|
48
57
|
}): SelectedSessionBackend;
|
|
49
58
|
//# sourceMappingURL=session-backend-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-backend-selector.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"session-backend-selector.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,GAAG,mBAAmB,CAKtB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYnF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB;;mFAE+E;IAC/E,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,oFAAoF;IACpF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD,GAAG,sBAAsB,CA0IzB"}
|
|
@@ -65,6 +65,9 @@ export function selectSessionBackend(opts) {
|
|
|
65
65
|
isTmuxMode: false,
|
|
66
66
|
isPipeMode: false,
|
|
67
67
|
isZellijMode: true,
|
|
68
|
+
persistentSessionName: sessionName,
|
|
69
|
+
persistentBackendTarget: { backendType: 'zellij', sessionName },
|
|
70
|
+
isReattach: reattach,
|
|
68
71
|
};
|
|
69
72
|
}
|
|
70
73
|
if (opts.backendType === 'pty') {
|
|
@@ -76,20 +79,80 @@ export function selectSessionBackend(opts) {
|
|
|
76
79
|
};
|
|
77
80
|
}
|
|
78
81
|
if (opts.backendType === 'herdr') {
|
|
79
|
-
const
|
|
80
|
-
|
|
82
|
+
const ownedSessionName = HerdrBackend.sessionName(opts.sessionId);
|
|
83
|
+
// A restarted worker must reattach to the SAME shared host selected by the
|
|
84
|
+
// prior generation. Re-selecting from UI current/default state could pick a
|
|
85
|
+
// different workspace, start a duplicate CLI there, and orphan
|
|
86
|
+
// the still-live managed agent in the recorded host. Isolation/MCP callers
|
|
87
|
+
// explicitly disable shared reuse, so they intentionally ignore this stamp
|
|
88
|
+
// and converge back to the machine-wide Botmux-managed session.
|
|
89
|
+
const recorded = opts.reuseRecordedHerdrTarget === false
|
|
90
|
+
? undefined
|
|
91
|
+
: opts.persistentBackendTarget?.backendType === 'herdr'
|
|
92
|
+
&& opts.persistentBackendTarget.agentName
|
|
93
|
+
? opts.persistentBackendTarget
|
|
94
|
+
: undefined;
|
|
95
|
+
if (recorded) {
|
|
96
|
+
const hostProbe = HerdrBackend.probeSession(recorded.sessionName);
|
|
97
|
+
if (hostProbe === 'unknown') {
|
|
98
|
+
throw new Error(`recorded herdr session ${recorded.sessionName} probe inconclusive`);
|
|
99
|
+
}
|
|
100
|
+
if (hostProbe === 'exists') {
|
|
101
|
+
const agentProbe = HerdrBackend.probeAgent(recorded.sessionName, recorded.agentName);
|
|
102
|
+
if (agentProbe === 'unknown') {
|
|
103
|
+
throw new Error(`recorded herdr agent ${recorded.sessionName}/${recorded.agentName} probe inconclusive`);
|
|
104
|
+
}
|
|
105
|
+
const reattach = agentProbe === 'exists';
|
|
106
|
+
return {
|
|
107
|
+
backend: new HerdrBackend(recorded.sessionName, {
|
|
108
|
+
agentName: recorded.agentName,
|
|
109
|
+
isReattach: reattach,
|
|
110
|
+
ownsSession: false,
|
|
111
|
+
ownsAgent: true,
|
|
112
|
+
}),
|
|
113
|
+
isTmuxMode: false,
|
|
114
|
+
isPipeMode: true,
|
|
115
|
+
isZellijMode: false,
|
|
116
|
+
persistentSessionName: recorded.sessionName,
|
|
117
|
+
persistentBackendTarget: recorded,
|
|
118
|
+
isReattach: reattach,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (HerdrBackend.hasSession(ownedSessionName)) {
|
|
81
123
|
return {
|
|
82
|
-
backend: new HerdrBackend(
|
|
124
|
+
backend: new HerdrBackend(ownedSessionName, { isReattach: true }),
|
|
83
125
|
isTmuxMode: false,
|
|
84
126
|
isPipeMode: true,
|
|
85
127
|
isZellijMode: false,
|
|
128
|
+
persistentSessionName: ownedSessionName,
|
|
129
|
+
persistentBackendTarget: { backendType: 'herdr', sessionName: ownedSessionName },
|
|
130
|
+
isReattach: true,
|
|
86
131
|
};
|
|
87
132
|
}
|
|
133
|
+
// Every fresh agent actively launched by this machine's Botmux shares the
|
|
134
|
+
// reserved `botmux` Herdr host, regardless of which Lark bot, dashboard, or
|
|
135
|
+
// other Botmux entry point requested it. Topics remain isolated as distinct
|
|
136
|
+
// managed agents/panes. /adopt stays bound to its explicit user session.
|
|
137
|
+
const hostSessionName = HerdrBackend.managedSessionName();
|
|
138
|
+
const agentName = `botmux-${opts.sessionId.slice(0, 8)}`;
|
|
139
|
+
const hostExists = HerdrBackend.hasSession(hostSessionName);
|
|
140
|
+
const reattach = hostExists && HerdrBackend.hasAgent(hostSessionName, agentName);
|
|
88
141
|
return {
|
|
89
|
-
backend: new HerdrBackend(
|
|
142
|
+
backend: new HerdrBackend(hostSessionName, {
|
|
143
|
+
createSession: !hostExists,
|
|
144
|
+
agentName,
|
|
145
|
+
isReattach: reattach,
|
|
146
|
+
ownsSession: false,
|
|
147
|
+
ownsAgent: true,
|
|
148
|
+
}),
|
|
90
149
|
isTmuxMode: false,
|
|
91
150
|
isPipeMode: true,
|
|
92
151
|
isZellijMode: false,
|
|
152
|
+
persistentSessionName: hostSessionName,
|
|
153
|
+
persistentBackendTarget: { backendType: 'herdr', sessionName: hostSessionName, agentName },
|
|
154
|
+
isReattach: reattach,
|
|
155
|
+
createdHerdrSessionName: hostExists ? undefined : hostSessionName,
|
|
93
156
|
};
|
|
94
157
|
}
|
|
95
158
|
const sessionName = TmuxBackend.sessionName(opts.sessionId);
|
|
@@ -99,6 +162,9 @@ export function selectSessionBackend(opts) {
|
|
|
99
162
|
isTmuxMode: true,
|
|
100
163
|
isPipeMode: true,
|
|
101
164
|
isZellijMode: false,
|
|
165
|
+
persistentSessionName: sessionName,
|
|
166
|
+
persistentBackendTarget: { backendType: 'tmux', sessionName },
|
|
167
|
+
isReattach: true,
|
|
102
168
|
};
|
|
103
169
|
}
|
|
104
170
|
return {
|
|
@@ -106,6 +172,9 @@ export function selectSessionBackend(opts) {
|
|
|
106
172
|
isTmuxMode: true,
|
|
107
173
|
isPipeMode: true,
|
|
108
174
|
isZellijMode: false,
|
|
175
|
+
persistentSessionName: sessionName,
|
|
176
|
+
persistentBackendTarget: { backendType: 'tmux', sessionName },
|
|
177
|
+
isReattach: false,
|
|
109
178
|
};
|
|
110
179
|
}
|
|
111
180
|
//# sourceMappingURL=session-backend-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-backend-selector.js","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAIjC;IACC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,kBAAkB;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxD,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CAAC,OAAoB,EAAE,MAAc;IACzE,MAAM,WAAW,GACf,OAAO,KAAK,MAAM;QAChB,CAAC,CAAC,8FAA8F;QAChG,CAAC,CAAC,OAAO,OAAO,WAAW,CAAC;IAChC,OAAO;QACL,SAAS,OAAO,cAAc;QAC9B,MAAM,MAAM,EAAE;QACd,gBAAgB,WAAW,EAAE;QAC7B,WAAW,OAAO,+CAA+C;YAC/D,+BAA+B;KAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;
|
|
1
|
+
{"version":3,"file":"session-backend-selector.js","sourceRoot":"","sources":["../../../src/adapters/backend/session-backend-selector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
export type BackendType = 'pty' | 'tmux' | 'herdr' | 'zellij' | 'riff';
|
|
2
|
+
/**
|
|
3
|
+
* Durable identity of the backing resource owned by one Botmux session.
|
|
4
|
+
*
|
|
5
|
+
* Most persistent backends own the whole mux session. Herdr can instead place
|
|
6
|
+
* a managed agent inside a user's existing session; in that case `agentName`
|
|
7
|
+
* identifies the pane Botmux owns and the surrounding session must be left
|
|
8
|
+
* untouched on restore/close paths that run without a live worker.
|
|
9
|
+
*/
|
|
10
|
+
export type PersistentBackendTarget = {
|
|
11
|
+
backendType: 'tmux' | 'zellij';
|
|
12
|
+
sessionName: string;
|
|
13
|
+
} | {
|
|
14
|
+
backendType: 'herdr';
|
|
15
|
+
sessionName: string;
|
|
16
|
+
agentName?: string;
|
|
17
|
+
};
|
|
2
18
|
/**
|
|
3
19
|
* Tri-state result of probing whether a named backing session exists.
|
|
4
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,IAAI,IAAI,IAAI,CAAC;IACb;mEAC+D;IAC/D,aAAa,CAAC,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,yDAAyD;IACzD,WAAW,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,CAAC,IAAI,MAAM,CAAC;IAChC,eAAe,CAAC,IAAI,MAAM,CAAC;IAC3B,WAAW,CAAC,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtD;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9C;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClC;;4EAEwE;IACxE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACrD,uEAAuE;IACvE,cAAc,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,uEAAuE;IACvE,oBAAoB,IAAI,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,eAAe,IAAI,MAAM,CAAC;IAC1B,yDAAyD;IACzD,WAAW,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,4BAA4B;IAC5B,WAAW,IAAI,OAAO,CAAC;IACvB;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,OAAO,CAAC;CAChC;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAOhE"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/backend/types.ts"],"names":[],"mappings":"AAuHA,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,CACL,CAAC,CAAC,CAAC;QACH,OAAQ,CAAoB,CAAC,eAAe,KAAK,UAAU;QAC3D,OAAQ,CAAoB,CAAC,WAAW,KAAK,UAAU;QACvD,OAAQ,CAAoB,CAAC,oBAAoB,KAAK,UAAU,CACjE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const PI_INITIAL_PROMPT_COMMAND_NAME = "botmux-initial-prompt";
|
|
2
|
+
export declare const PI_INITIAL_PROMPT_COMMAND = "/botmux-initial-prompt";
|
|
3
|
+
export declare const PI_INITIAL_PROMPT_FILE_ENV = "BOTMUX_PI_INITIAL_PROMPT_FILE";
|
|
4
|
+
interface PiExtensionCommandContext {
|
|
5
|
+
isIdle(): boolean;
|
|
6
|
+
ui: {
|
|
7
|
+
notify(message: string, level: 'info' | 'warning' | 'error'): void;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
interface PiExtensionApi {
|
|
11
|
+
registerCommand(name: string, options: {
|
|
12
|
+
description: string;
|
|
13
|
+
handler(args: string, ctx: PiExtensionCommandContext): Promise<void> | void;
|
|
14
|
+
}): void;
|
|
15
|
+
sendUserMessage(content: string, options?: {
|
|
16
|
+
deliverAs: 'followUp';
|
|
17
|
+
}): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Pi expands @file only for launch argv, not for text entered into its TUI.
|
|
21
|
+
* Deferred first prompts therefore use this short, one-shot command: the
|
|
22
|
+
* extension reads the worker-selected file (never a user-supplied path) and
|
|
23
|
+
* submits its full contents through Pi's native user-message API as one turn.
|
|
24
|
+
*/
|
|
25
|
+
export default function registerBotmuxInitialPromptExtension(pi: PiExtensionApi): void;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=pi-initial-prompt-extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-initial-prompt-extension.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt-extension.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B,0BAA0B,CAAC;AACtE,eAAO,MAAM,yBAAyB,2BAAuC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,kCAAkC,CAAC;AAE1E,UAAU,yBAAyB;IACjC,MAAM,IAAI,OAAO,CAAC;IAClB,EAAE,EAAE;QACF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;KACpE,CAAC;CACH;AAED,UAAU,cAAc;IACtB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC7E,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAwBrF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
export const PI_INITIAL_PROMPT_COMMAND_NAME = 'botmux-initial-prompt';
|
|
3
|
+
export const PI_INITIAL_PROMPT_COMMAND = `/${PI_INITIAL_PROMPT_COMMAND_NAME}`;
|
|
4
|
+
export const PI_INITIAL_PROMPT_FILE_ENV = 'BOTMUX_PI_INITIAL_PROMPT_FILE';
|
|
5
|
+
/**
|
|
6
|
+
* Pi expands @file only for launch argv, not for text entered into its TUI.
|
|
7
|
+
* Deferred first prompts therefore use this short, one-shot command: the
|
|
8
|
+
* extension reads the worker-selected file (never a user-supplied path) and
|
|
9
|
+
* submits its full contents through Pi's native user-message API as one turn.
|
|
10
|
+
*/
|
|
11
|
+
export default function registerBotmuxInitialPromptExtension(pi) {
|
|
12
|
+
pi.registerCommand(PI_INITIAL_PROMPT_COMMAND_NAME, {
|
|
13
|
+
description: 'Deliver the Botmux initial prompt',
|
|
14
|
+
handler: async (_args, ctx) => {
|
|
15
|
+
const filePath = process.env[PI_INITIAL_PROMPT_FILE_ENV];
|
|
16
|
+
if (!filePath) {
|
|
17
|
+
ctx.ui.notify('Botmux initial prompt is no longer available.', 'error');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const prompt = await readFile(filePath, 'utf8');
|
|
22
|
+
if (ctx.isIdle())
|
|
23
|
+
pi.sendUserMessage(prompt);
|
|
24
|
+
else
|
|
25
|
+
pi.sendUserMessage(prompt, { deliverAs: 'followUp' });
|
|
26
|
+
// One-shot within this Pi process. Keep the file itself until the worker
|
|
27
|
+
// ends the session so an owned process restart can safely replay a
|
|
28
|
+
// command that was written but not yet consumed.
|
|
29
|
+
delete process.env[PI_INITIAL_PROMPT_FILE_ENV];
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
33
|
+
ctx.ui.notify(`Failed to load Botmux initial prompt: ${detail}`, 'error');
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=pi-initial-prompt-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-initial-prompt-extension.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,8BAA8B,GAAG,uBAAuB,CAAC;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,8BAA8B,EAAE,CAAC;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAA+B,CAAC;AAiB1E;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAC,EAAkB;IAC7E,EAAE,CAAC,eAAe,CAAC,8BAA8B,EAAE;QACjD,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,GAAG,CAAC,MAAM,EAAE;oBAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;oBACxC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3D,yEAAyE;gBACzE,mEAAmE;gBACnE,iDAAiD;gBACjD,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yCAAyC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const PI_INITIAL_PROMPT_ARG_BYTE_LIMIT = 4096;
|
|
2
|
+
export declare function piInitialPromptNeedsFile(prompt: string | undefined): boolean;
|
|
3
|
+
export declare function piInitialPromptRootDir(sessionDataDir: string): string;
|
|
4
|
+
export declare function piInitialPromptDir(sessionDataDir: string, sessionId: string): string;
|
|
5
|
+
export declare function piInitialPromptFilePath(sessionDataDir: string, sessionId: string): string;
|
|
6
|
+
export declare function preparePiInitialPromptArg(opts: {
|
|
7
|
+
prompt: string;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
sessionDataDir?: string;
|
|
10
|
+
}): {
|
|
11
|
+
initialPromptArg: string;
|
|
12
|
+
filePath?: string;
|
|
13
|
+
readonlyRoot?: string;
|
|
14
|
+
cleanupDir?: string;
|
|
15
|
+
deferredInput?: {
|
|
16
|
+
content: string;
|
|
17
|
+
additionalArgs: string[];
|
|
18
|
+
env: Record<string, string>;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=pi-initial-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-initial-prompt.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,OAAO,CAAC;AASrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQ5E;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzF;AASD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAC;CACH,CAyBA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { PI_INITIAL_PROMPT_COMMAND, PI_INITIAL_PROMPT_FILE_ENV, } from './pi-initial-prompt-extension.js';
|
|
5
|
+
export const PI_INITIAL_PROMPT_ARG_BYTE_LIMIT = 4096;
|
|
6
|
+
const SAFE_SESSION_ID = /^[A-Za-z0-9._-]+$/;
|
|
7
|
+
function safeSessionFileStem(sessionId) {
|
|
8
|
+
if (SAFE_SESSION_ID.test(sessionId) && !/^\.+$/.test(sessionId))
|
|
9
|
+
return sessionId;
|
|
10
|
+
return sessionId.replace(/[^A-Za-z0-9._-]/g, '_').replace(/^\.+$/, '_');
|
|
11
|
+
}
|
|
12
|
+
export function piInitialPromptNeedsFile(prompt) {
|
|
13
|
+
return !!prompt && (Buffer.byteLength(prompt, 'utf8') > PI_INITIAL_PROMPT_ARG_BYTE_LIMIT
|
|
14
|
+
// Herdr 0.7.5 rejects control characters in managed-agent argv. Its macOS
|
|
15
|
+
// integration can also bypass the PATH launcher, so even short routed
|
|
16
|
+
// Botmux prompts must use Pi's safe @file positional form.
|
|
17
|
+
|| /[\x00-\x1f\x7f]/.test(prompt));
|
|
18
|
+
}
|
|
19
|
+
export function piInitialPromptRootDir(sessionDataDir) {
|
|
20
|
+
return join(sessionDataDir, 'pi-initial-prompts');
|
|
21
|
+
}
|
|
22
|
+
export function piInitialPromptDir(sessionDataDir, sessionId) {
|
|
23
|
+
return join(piInitialPromptRootDir(sessionDataDir), safeSessionFileStem(sessionId));
|
|
24
|
+
}
|
|
25
|
+
export function piInitialPromptFilePath(sessionDataDir, sessionId) {
|
|
26
|
+
return join(piInitialPromptDir(sessionDataDir, sessionId), 'initial.prompt.md');
|
|
27
|
+
}
|
|
28
|
+
function piInitialPromptExtensionPath() {
|
|
29
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
30
|
+
const compiled = resolve(here, 'pi-initial-prompt-extension.js');
|
|
31
|
+
if (existsSync(compiled))
|
|
32
|
+
return compiled;
|
|
33
|
+
return resolve(here, 'pi-initial-prompt-extension.ts');
|
|
34
|
+
}
|
|
35
|
+
export function preparePiInitialPromptArg(opts) {
|
|
36
|
+
if (!piInitialPromptNeedsFile(opts.prompt)) {
|
|
37
|
+
return { initialPromptArg: opts.prompt };
|
|
38
|
+
}
|
|
39
|
+
const sessionDataDir = opts.sessionDataDir?.trim();
|
|
40
|
+
if (!sessionDataDir) {
|
|
41
|
+
throw new Error('Pi long initial prompt requires SESSION_DATA_DIR for @file delivery; refusing TUI paste fallback');
|
|
42
|
+
}
|
|
43
|
+
const dir = piInitialPromptDir(sessionDataDir, opts.sessionId);
|
|
44
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
45
|
+
const filePath = piInitialPromptFilePath(sessionDataDir, opts.sessionId);
|
|
46
|
+
writeFileSync(filePath, opts.prompt, { encoding: 'utf8', mode: 0o600 });
|
|
47
|
+
return {
|
|
48
|
+
initialPromptArg: `@${filePath}`,
|
|
49
|
+
filePath,
|
|
50
|
+
readonlyRoot: dir,
|
|
51
|
+
cleanupDir: dir,
|
|
52
|
+
deferredInput: {
|
|
53
|
+
content: PI_INITIAL_PROMPT_COMMAND,
|
|
54
|
+
additionalArgs: ['--extension', piInitialPromptExtensionPath()],
|
|
55
|
+
env: { [PI_INITIAL_PROMPT_FILE_ENV]: filePath },
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=pi-initial-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-initial-prompt.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi-initial-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAC;AAIxD,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,UAAU,CAyDjE;AAED,eAAO,MAAM,MAAM,wBAAkB,CAAC"}
|
package/dist/adapters/cli/pi.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolveCommand } from './registry.js';
|
|
2
2
|
import { BOTMUX_SHELL_HINTS } from './shared-hints.js';
|
|
3
|
+
import { preparePiInitialPromptArg } from './pi-initial-prompt.js';
|
|
3
4
|
import { delay } from '../../utils/timing.js';
|
|
4
5
|
/** Adapter for Pi coding-agent's native TUI (`pi`). */
|
|
5
6
|
export function createPiAdapter(pathOverride) {
|
|
@@ -21,11 +22,21 @@ export function createPiAdapter(pathOverride) {
|
|
|
21
22
|
buildResumeCommand({ sessionId }) {
|
|
22
23
|
return `pi --session-id ${sessionId}`;
|
|
23
24
|
},
|
|
25
|
+
prepareInitialPromptArg({ initialPrompt, sessionId, sessionDataDir }) {
|
|
26
|
+
const prepared = preparePiInitialPromptArg({
|
|
27
|
+
prompt: initialPrompt,
|
|
28
|
+
sessionId,
|
|
29
|
+
sessionDataDir,
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
initialPrompt: prepared.initialPromptArg,
|
|
33
|
+
readonlyRoots: prepared.readonlyRoot ? [prepared.readonlyRoot] : undefined,
|
|
34
|
+
cleanupPaths: prepared.filePath ? [prepared.filePath] : undefined,
|
|
35
|
+
cleanupDirs: prepared.cleanupDir ? [prepared.cleanupDir] : undefined,
|
|
36
|
+
deferredInput: prepared.deferredInput,
|
|
37
|
+
};
|
|
38
|
+
},
|
|
24
39
|
passesInitialPromptViaArgs: true,
|
|
25
|
-
// tmux reports "command too long" around ~12KB total launch argv on some
|
|
26
|
-
// deployments, well below OS ARG_MAX. Keep short Pi prompts on argv (legacy
|
|
27
|
-
// behavior) but route long first messages/cards through writeInput instead.
|
|
28
|
-
maxInitialPromptArgBytes: 4096,
|
|
29
40
|
async writeInput(pty, content) {
|
|
30
41
|
if (pty.pasteText && pty.sendSpecialKeys) {
|
|
31
42
|
pty.pasteText(content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/adapters/cli/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,YAAqB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,CAAC,uBAAuB,CAAC;QACpC,WAAW,EAAE,GAAG;QAEhB,SAAS,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE;YACpC,MAAM,IAAI,GAAG;gBACX,cAAc,EAAE,SAAS;aAC1B,CAAC;YACF,wEAAwE;YACxE,sEAAsE;YACtE,IAAI,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB,CAAC,EAAE,SAAS,EAAE;YAC9B,OAAO,mBAAmB,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,uBAAuB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE;YAClE,MAAM,QAAQ,GAAG,yBAAyB,CAAC;gBACzC,MAAM,EAAE,aAAa;gBACrB,SAAS;gBACT,cAAc;aACf,CAAC,CAAC;YACH,OAAO;gBACL,aAAa,EAAE,QAAQ,CAAC,gBAAgB;gBACxC,aAAa,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACpE,aAAa,EAAE,QAAQ,CAAC,aAAa;aACtC,CAAC;QACJ,CAAC;QAED,0BAA0B,EAAE,IAAI;QAEhC,KAAK,CAAC,UAAU,CAAC,GAAc,EAAE,OAAe;YAC9C,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,WAAW,CAAC,CAAC;gBAC1C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,kBAAkB;QAC/B,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,oBAAoB;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read-isolation.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
|
|
@@ -244,6 +244,10 @@ export function buildV2DenyPaths(ctx) {
|
|
|
244
244
|
`${sd}/frozen-cards`, // conversation content (all bots')
|
|
245
245
|
`${sd}/turn-sends`, // CLI only APPENDS markers here — read-deny is safe
|
|
246
246
|
`${sd}/crash-diagnostics`,
|
|
247
|
+
// Long Pi first prompts may contain the full hidden routing/identity
|
|
248
|
+
// context. Deny the shared root, then the worker carves back only this
|
|
249
|
+
// session's private subdirectory.
|
|
250
|
+
`${sd}/pi-initial-prompts`,
|
|
247
251
|
// All bots' Feishu-uploaded files. Own per-appId bucket (attachments/<self>/) is
|
|
248
252
|
// re-allowed via buildV2CarveOuts; siblings' buckets + the legacy flat
|
|
249
253
|
// per-messageId layout stay denied.
|
|
@@ -556,6 +560,7 @@ export function buildLinuxReadIsolationMasks(input) {
|
|
|
556
560
|
`${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
|
|
557
561
|
`${sd}/sessions.json`, `${sd}/frozen-cards`, `${sd}/turn-sends`,
|
|
558
562
|
`${sd}/crash-diagnostics`, `${sd}/queues`, `${sd}/read-isolation`,
|
|
563
|
+
`${sd}/pi-initial-prompts`,
|
|
559
564
|
`${sd}/.botmux-cli-pids`,
|
|
560
565
|
// attachments/ is masked WHOLESALE (like macOS) — covers every sibling bucket
|
|
561
566
|
// AND the legacy flat per-messageId layout (which per-sibling enumeration can't
|