botmux 3.4.3 → 3.5.2
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/sandbox.d.ts +99 -279
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +424 -826
- package/dist/adapters/backend/sandbox.js.map +1 -1
- 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/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +4 -0
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/fs-policy.d.ts +244 -0
- package/dist/adapters/cli/fs-policy.d.ts.map +1 -0
- package/dist/adapters/cli/fs-policy.js +539 -0
- package/dist/adapters/cli/fs-policy.js.map +1 -0
- package/dist/adapters/cli/pi-initial-prompt.d.ts.map +1 -1
- package/dist/adapters/cli/pi-initial-prompt.js +5 -1
- package/dist/adapters/cli/pi-initial-prompt.js.map +1 -1
- package/dist/adapters/cli/read-isolation.d.ts +14 -200
- package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
- package/dist/adapters/cli/read-isolation.js +18 -477
- package/dist/adapters/cli/read-isolation.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 +3 -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 +39 -23
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +134 -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 +795 -144
- 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 +44 -66
- 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 +258 -32
- 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/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +10 -3
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +1 -1
- package/dist/core/passthrough-commands.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/plugins/mcp/gateway-installer.d.ts.map +1 -1
- package/dist/core/plugins/mcp/gateway-installer.js +14 -2
- package/dist/core/plugins/mcp/gateway-installer.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 +102 -68
- 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 +51 -8
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +439 -25
- 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 +403 -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/bot-payload.d.ts +5 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +7 -0
- package/dist/dashboard/bot-payload.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 +17 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +249 -11
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +22 -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 +114 -28
- 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 +49 -53
- 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-AUKV7P4L.js +10 -0
- package/dist/dashboard-web/chunks/{chunk-P6GO5KT4.js → chunk-KPQAUX7V.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-UBOLHQCK.js → chunk-NRL6CVAS.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-JNRSPKLS.js → chunk-R7IAKAYX.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-CUV65BIQ.js → chunk-X2L65IOM.js} +8 -8
- package/dist/dashboard-web/chunks/{connectors-page-KTC2QWNW.js → connectors-page-HDQFEXZI.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-B3EKGOLY.js → groups-page-6DKXBYOM.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-X6RXNCWX.js → insights-page-NWARTJ6J.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-LLRA5LQW.js → monitor-room-AGX3XRJX.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-7MT5FEOS.js → monitoring-page-GGGIWN4C.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-KD46D5TD.js → office-page-6SIVKSK3.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-JUWNH32O.js → overview-page-FVR3NKAF.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-P6F7NLOI.js → roles-page-WE2YB7KN.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-XIHWZST4.js → schedules-page-TB3I24XN.js} +1 -1
- package/dist/dashboard-web/chunks/sessions-page-KOOOASIL.js +2 -0
- package/dist/dashboard-web/chunks/settings-page-IEBR7TGN.js +2 -0
- package/dist/dashboard-web/chunks/{skills-page-A46KVWBL.js → skills-page-3QAT2IWD.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-SDUC56DF.js → team-federation-page-K4VVAVAK.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-J5JOTUSQ.js → v3-page-V6IOJR2B.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-U7LSOAWI.js → whiteboards-page-V6CGKRNX.js} +1 -1
- package/dist/dashboard-web/style.css +218 -10
- package/dist/dashboard.js +380 -8
- 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 +34 -1
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -19
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +1 -19
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +0 -13
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +2 -36
- 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 +166 -64
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +98 -4
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +317 -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 +48 -33
- package/dist/im/lark/event-dispatcher.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/sandbox-migration.d.ts +14 -0
- package/dist/services/sandbox-migration.d.ts.map +1 -0
- package/dist/services/sandbox-migration.js +85 -0
- package/dist/services/sandbox-migration.js.map +1 -0
- package/dist/services/sandbox-store.d.ts +28 -0
- package/dist/services/sandbox-store.d.ts.map +1 -1
- package/dist/services/sandbox-store.js +82 -0
- package/dist/services/sandbox-store.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 +83 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/child-env.d.ts +2 -2
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +14 -0
- package/dist/utils/child-env.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 +1119 -588
- package/dist/worker.js.map +1 -1
- package/dist/workflows/events/payloads.d.ts +56 -0
- package/dist/workflows/events/payloads.d.ts.map +1 -1
- package/dist/workflows/events/payloads.js +9 -0
- package/dist/workflows/events/payloads.js.map +1 -1
- package/dist/workflows/events/schema.d.ts +86 -0
- package/dist/workflows/events/schema.d.ts.map +1 -1
- package/dist/workflows/shared/sandbox-policy.d.ts +10 -1
- package/dist/workflows/shared/sandbox-policy.d.ts.map +1 -1
- package/dist/workflows/shared/sandbox-policy.js +12 -0
- package/dist/workflows/shared/sandbox-policy.js.map +1 -1
- package/dist/workflows/v3/bot-resolve.d.ts.map +1 -1
- package/dist/workflows/v3/bot-resolve.js +36 -0
- package/dist/workflows/v3/bot-resolve.js.map +1 -1
- package/dist/workflows/v3/contract.d.ts +8 -0
- package/dist/workflows/v3/contract.d.ts.map +1 -1
- package/dist/workflows/v3/contract.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
- package/dist/services/sandbox-land.d.ts +0 -45
- package/dist/services/sandbox-land.d.ts.map +0 -1
- package/dist/services/sandbox-land.js +0 -394
- package/dist/services/sandbox-land.js.map +0 -1
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
* multi-bot cred file; each bot's lark-cli config holds its app secret in
|
|
20
20
|
* plaintext). See the design doc for the two-layer rationale.
|
|
21
21
|
*/
|
|
22
|
-
import { managedOriginCapabilityPath } from '../../core/managed-origin-capability.js';
|
|
23
22
|
import { DEVICE_AUTHORITY_DIRECTORY, DEVICE_CREDENTIAL_FILE, DEVICE_ENROLLMENT_JOURNAL_FILE, } from '../../platform/device-paths.js';
|
|
24
23
|
/** Normalize a path for the deny/allow lists: require ABSOLUTE, strip trailing
|
|
25
24
|
* slashes, reject `..` traversal. Returns null for anything unusable so the
|
|
@@ -94,15 +93,11 @@ export function buildCliExecutableReadCarveOuts(input) {
|
|
|
94
93
|
return [];
|
|
95
94
|
return [standaloneRoot];
|
|
96
95
|
}
|
|
97
|
-
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* are masked by directory, so future filenames/atomic sidecars need no policy
|
|
101
|
-
* update. */
|
|
96
|
+
/** Host device-authority files must never be visible to a chat-driven CLI.
|
|
97
|
+
* New credentials live below DEVICE_AUTHORITY_DIRECTORY; the exact legacy
|
|
98
|
+
* files remain covered for upgrades from older layouts. */
|
|
102
99
|
export const HOST_DEVICE_CREDENTIAL_FILES = [
|
|
103
100
|
'platform.json',
|
|
104
|
-
// Pre-dedicated-directory builds. Keep exact + sidecar policy so an upgrade
|
|
105
|
-
// never exposes a legacy credential left at BOTMUX_HOME root.
|
|
106
101
|
DEVICE_CREDENTIAL_FILE,
|
|
107
102
|
DEVICE_ENROLLMENT_JOURNAL_FILE,
|
|
108
103
|
];
|
|
@@ -113,15 +108,12 @@ function hostDeviceAuthorityPaths(root) {
|
|
|
113
108
|
...HOST_DEVICE_CREDENTIAL_FILES.map(file => `${root}/${file}`),
|
|
114
109
|
];
|
|
115
110
|
}
|
|
116
|
-
/** Fixed
|
|
117
|
-
* child-controlled env value: enrollment writes this under the real user home
|
|
118
|
-
* before credentials exist, then workers treat it as a one-way security gate. */
|
|
111
|
+
/** Fixed host marker; deliberately independent of SESSION_DATA_DIR and child env. */
|
|
119
112
|
export function deviceCredentialIsolationMarkerPath(homeDir) {
|
|
120
113
|
return `${homeDir.replace(/\/+$/, '')}/.botmux/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`;
|
|
121
114
|
}
|
|
122
|
-
/**
|
|
123
|
-
*
|
|
124
|
-
* future device files are covered wholesale by DEVICE_AUTHORITY_DIRECTORY. */
|
|
115
|
+
/** Match current atomic-write sidecars and legacy backups as well as the
|
|
116
|
+
* dedicated authority directory. */
|
|
125
117
|
export function isCredentialIsolationReservedBasename(name) {
|
|
126
118
|
return name === DEVICE_AUTHORITY_DIRECTORY
|
|
127
119
|
|| name === DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME
|
|
@@ -131,12 +123,8 @@ export function isCredentialIsolationReservedBasename(name) {
|
|
|
131
123
|
export function credentialIsolationRequired(input) {
|
|
132
124
|
return input.markerExists || input.deviceCredentialExists;
|
|
133
125
|
}
|
|
134
|
-
/**
|
|
135
|
-
*
|
|
136
|
-
* read isolation. There is intentionally no adapter capability or bot sandbox
|
|
137
|
-
* toggle input: once the marker/device exists, every locally spawned CLI must
|
|
138
|
-
* be covered even when `supportsReadIsolation=false` and `sandbox=false`.
|
|
139
|
-
*/
|
|
126
|
+
/** Mandatory device-credential isolation is independent of the optional bot
|
|
127
|
+
* sandbox toggle: once enrolled, every local child must be confined. */
|
|
140
128
|
export function evaluateCredentialOnlyIsolationGate(input) {
|
|
141
129
|
const required = credentialIsolationRequired(input);
|
|
142
130
|
if (!required)
|
|
@@ -163,6 +151,11 @@ export function evaluateCredentialOnlyIsolationGate(input) {
|
|
|
163
151
|
}
|
|
164
152
|
return { required: true, mode: input.platform === 'darwin' ? 'seatbelt' : 'bwrap' };
|
|
165
153
|
}
|
|
154
|
+
function escapeForRegex(p) {
|
|
155
|
+
return p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
156
|
+
}
|
|
157
|
+
/** Legacy credential-only Seatbelt/bwrap rule shape. Full fs-policy sessions
|
|
158
|
+
* consume the same authority paths through buildFsPolicy instead. */
|
|
166
159
|
export function buildCredentialIsolationRules(ctx) {
|
|
167
160
|
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
168
161
|
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
@@ -178,423 +171,9 @@ export function buildCredentialIsolationRules(ctx) {
|
|
|
178
171
|
denyRegexes: dedupe(denyRegexes),
|
|
179
172
|
denyWritePaths: dedupe([...credentialPaths, markerPath]),
|
|
180
173
|
denyWriteRegexes: dedupe(denyRegexes),
|
|
181
|
-
// Prevent replacing a credential root symlink/directory to escape the
|
|
182
|
-
// canonical path rules. Literal does not deny unrelated descendants.
|
|
183
174
|
denyWriteLiterals: roots,
|
|
184
175
|
};
|
|
185
176
|
}
|
|
186
|
-
/** v2 DENY set (HYBRID). The F1 fix is a WHOLE-deny of the CLI data dirs `~/.claude`
|
|
187
|
-
* (+ `~/.claude.json`) and `~/.codex`: this bot's OWN CLI data is redirected into its
|
|
188
|
-
* BOT_HOME (readable) via CLAUDE_CONFIG_DIR/CODEX_HOME, so whole-denying the globals
|
|
189
|
-
* blocks the admin/other/pre-migration data + kills the per-cwd carve-out + /cd hole,
|
|
190
|
-
* while own resume/memory keep working from BOT_HOME. `~/.botmux` is NOT whole-denied
|
|
191
|
-
* (the agent's botmux CLI needs its config/registry/pm2/data structure) — instead its
|
|
192
|
-
* cross-bot-SENSITIVE parts are denied surgically: bots.json, logs, other bots' lark
|
|
193
|
-
* configs / session files / send-creds / BOT_HOMEs, and the shared conversation-content
|
|
194
|
-
* dirs (frozen-cards, queues, attachments, whiteboards, …). Own BOT_HOME + own
|
|
195
|
-
* session/cred + own attachments bucket + config/registry stay readable by default.
|
|
196
|
-
* Plus the system-credential stores. Everything else (code/repos/runtime) stays open.
|
|
197
|
-
*
|
|
198
|
-
* NOTE: per-bot session stores (`sessions-<appId>.json`) are denied by PATTERN — see
|
|
199
|
-
* {@link buildV2DenyRegexes} — so no sibling-appId enumeration is needed anywhere. */
|
|
200
|
-
export function buildV2DenyPaths(ctx) {
|
|
201
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
202
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
203
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
204
|
-
const defaultBh = (ctx.defaultBotmuxHome ?? `${h}/.botmux`).replace(/\/+$/, '');
|
|
205
|
-
return dedupe([
|
|
206
|
-
// ── F1: whole-deny the CLI data dirs (own is redirected to BOT_HOME) ──
|
|
207
|
-
`${h}/.claude`,
|
|
208
|
-
`${h}/.claude.json`,
|
|
209
|
-
`${h}/.codex`,
|
|
210
|
-
// ── System credential / secret stores (broad, since outside is open by default) ──
|
|
211
|
-
`${h}/.ssh`,
|
|
212
|
-
`${h}/.aws`,
|
|
213
|
-
`${h}/.azure`,
|
|
214
|
-
`${h}/.gnupg`,
|
|
215
|
-
`${h}/.netrc`,
|
|
216
|
-
`${h}/.config/gh`,
|
|
217
|
-
`${h}/.config/glab-cli`,
|
|
218
|
-
`${h}/.config/gcloud`,
|
|
219
|
-
`${h}/.config/op`,
|
|
220
|
-
`${h}/.config/1Password`,
|
|
221
|
-
`${h}/.1password`,
|
|
222
|
-
`${h}/.password-store`,
|
|
223
|
-
`${h}/.git-credentials`,
|
|
224
|
-
`${h}/.npmrc`,
|
|
225
|
-
`${h}/.pypirc`,
|
|
226
|
-
`${h}/.docker/config.json`,
|
|
227
|
-
`${h}/.kube`,
|
|
228
|
-
`${h}/Library/Keychains`,
|
|
229
|
-
// ── botmux SENSITIVE (surgical — leave config/registry/pm2/data structure readable) ──
|
|
230
|
-
`${bh}/bots.json`, // ALL bots' secrets
|
|
231
|
-
`${bh}/logs`, // daemon logs (cross-bot content)
|
|
232
|
-
`${h}/.lark-cli`, // default lark config (may hold creds)
|
|
233
|
-
// WHOLESALE-deny the per-bot lark config dir (same rationale as bots/ below): a
|
|
234
|
-
// newly-added bot is covered without cold-restart, and `ls .lark-cli-bots/` can't
|
|
235
|
-
// enumerate siblings. Own is re-allowed via buildV2CarveOuts (+ traverse shim).
|
|
236
|
-
`${h}/.lark-cli-bots`,
|
|
237
|
-
// WHOLESALE-deny the bots/ dir (every sibling BOT_HOME + their send-cred). Own is
|
|
238
|
-
// re-allowed via buildV2CarveOuts (allow subpath own + file-read-metadata traverse
|
|
239
|
-
// shim so the CLI can realpath its redirected config). Denying the DIR (not each
|
|
240
|
-
// sibling appId) means a NEWLY-ADDED bot is covered WITHOUT cold-restarting this
|
|
241
|
-
// one, and `ls bots/` can't enumerate siblings.
|
|
242
|
-
`${bh}/bots`,
|
|
243
|
-
`${sd}/sessions.json`, // legacy shared store
|
|
244
|
-
`${sd}/frozen-cards`, // conversation content (all bots')
|
|
245
|
-
`${sd}/turn-sends`, // CLI only APPENDS markers here — read-deny is safe
|
|
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`,
|
|
251
|
-
// All bots' Feishu-uploaded files. Own per-appId bucket (attachments/<self>/) is
|
|
252
|
-
// re-allowed via buildV2CarveOuts; siblings' buckets + the legacy flat
|
|
253
|
-
// per-messageId layout stay denied.
|
|
254
|
-
`${sd}/attachments`,
|
|
255
|
-
// whiteboards/ is deliberately NOT denied (owner decision): whiteboards are
|
|
256
|
-
// shared content, meant to be visible across the bots that collaborate on
|
|
257
|
-
// them. NOTE the store is currently GLOBAL (no per-chat scoping), so a
|
|
258
|
-
// sandboxed bot can `whiteboard list`/`read` boards from other chats too —
|
|
259
|
-
// an accepted tradeoff until whiteboards are bucketed by chat/appId. Also
|
|
260
|
-
// un-denying the read avoids the read-modify-write clobber a deny would cause.
|
|
261
|
-
// Queued inbound messages (queues/<rootMessageId>.jsonl = full LarkMessage
|
|
262
|
-
// content for EVERY bot). Daemon-side only — the CLI never reads it.
|
|
263
|
-
`${sd}/queues`,
|
|
264
|
-
// Seatbelt profiles + reattach markers: filenames/rules enumerate sibling
|
|
265
|
-
// session ids and appIds. sandbox-exec parses the profile BEFORE applying it,
|
|
266
|
-
// and the markers are read by the daemon — the sandboxed CLI never reads these.
|
|
267
|
-
`${sd}/read-isolation`,
|
|
268
|
-
// Worker PID markers contain every live session/turn/attempt tuple. They
|
|
269
|
-
// are routing metadata, never a credential, and isolated CLIs now use an
|
|
270
|
-
// exact per-session capability carve-out for fresh turn context.
|
|
271
|
-
`${sd}/.botmux-cli-pids`,
|
|
272
|
-
// NOTE: schedules.json is deliberately NOT denied. It's a read-modify-write
|
|
273
|
-
// store: denying the read makes a sandboxed `botmux schedule` load an empty
|
|
274
|
-
// map and then overwrite the shared file, silently wiping EVERY bot's tasks
|
|
275
|
-
// (read-modify-write degraded to write-only). We accept the minor leak
|
|
276
|
-
// (isolated bots can read others' scheduled prompts) until schedule-store
|
|
277
|
-
// fail-closes on read errors (ENOENT vs EPERM). See PR #387 review.
|
|
278
|
-
`${bh}/feishu-session.json`, // Feishu web login session (setup automation) — can mint bots
|
|
279
|
-
// Machine + device bearer/refresh credentials belong to the trusted host.
|
|
280
|
-
// Deny both the fixed ~/.botmux location used by platform binding and the
|
|
281
|
-
// configured BOTMUX_HOME so a custom SESSION_DATA_DIR cannot create a gap.
|
|
282
|
-
...[defaultBh, bh].flatMap(hostDeviceAuthorityPaths),
|
|
283
|
-
`${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
|
|
284
|
-
// The dashboard admin credentials. `.dashboard-secret` signs the loopback-HMAC
|
|
285
|
-
// that gates `/__cli/rotate` AND the daemon-IPC write-link routes — the ipc-server
|
|
286
|
-
// comment (dashboard-ipc-server.ts) explicitly relies on the sandbox hiding it to
|
|
287
|
-
// "keep a sandboxed worker from minting write tokens" for sessions it doesn't own
|
|
288
|
-
// (a cross-bot escalation reachable by a semi-trusted conversant driving the agent).
|
|
289
|
-
// Only owner-facing admin verbs (`botmux dashboard`/`term-link`) sign with it — the
|
|
290
|
-
// agent's send/list/status never do, so denying it costs the agent nothing. Its
|
|
291
|
-
// sibling `.dashboard-token` (dashboard bearer) is denied for the same reason;
|
|
292
|
-
// `.dashboard-port` is just a port number (no credential value) → left readable.
|
|
293
|
-
// The dashboard IPC secret/token live at the fixed default home even
|
|
294
|
-
// when SESSION_DATA_DIR points at a custom BOTMUX_HOME. Deny both roots:
|
|
295
|
-
// the fixed real credential location and the custom runtime root.
|
|
296
|
-
`${defaultBh}/.dashboard-secret`,
|
|
297
|
-
`${defaultBh}/.dashboard-token`,
|
|
298
|
-
`${bh}/.dashboard-secret`,
|
|
299
|
-
`${bh}/.dashboard-token`,
|
|
300
|
-
// NOTE: extraDenyPaths (readDenyExtraPaths) are NOT here — they go to
|
|
301
|
-
// buildV2CarveOuts().finalDenyPaths so they win over the own-BOT_HOME allow.
|
|
302
|
-
]
|
|
303
|
-
.map(normalizeIsolationPath)
|
|
304
|
-
.filter((p) => !!p));
|
|
305
|
-
}
|
|
306
|
-
/** Escape a literal path for embedding in a Seatbelt regex filter. */
|
|
307
|
-
function escapeForRegex(p) {
|
|
308
|
-
return p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
309
|
-
}
|
|
310
|
-
/** v2 PATTERN denies — Seatbelt `regex` filters that deny a whole FILENAME CLASS
|
|
311
|
-
* instead of enumerating sibling app ids. Covers:
|
|
312
|
-
* - per-bot session stores (`<sd>/sessions-<appId>.json`, routing metadata): a
|
|
313
|
-
* newly-added bot's store is denied WITHOUT cold-restarting the ones already
|
|
314
|
-
* running, and no caller needs to know the sibling app ids. The bot's OWN store
|
|
315
|
-
* is re-allowed by carve-out (Seatbelt last-match).
|
|
316
|
-
* - EVERY `bots.json.*` sidecar (`.bak` written by setup/migration, `.tmp`, ad-hoc
|
|
317
|
-
* `.bak.<suffix>` copies): the exact `bots.json` is subpath-denied in
|
|
318
|
-
* {@link buildV2DenyPaths}, but its backups carry the SAME plaintext
|
|
319
|
-
* larkAppSecret for every bot under a DIFFERENT basename, which `subpath` does
|
|
320
|
-
* not match — so without this an isolated bot could `cat bots.json.bak` and
|
|
321
|
-
* recover all siblings' credentials, defeating the whole isolation. */
|
|
322
|
-
export function buildV2DenyRegexes(ctx) {
|
|
323
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
324
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
325
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
326
|
-
const defaultBh = (ctx.defaultBotmuxHome ?? `${h}/.botmux`).replace(/\/+$/, '');
|
|
327
|
-
const botmuxRoots = dedupe([defaultBh, bh]);
|
|
328
|
-
return dedupe([
|
|
329
|
-
`^${escapeForRegex(sd)}/sessions-[^/]+\\.json$`,
|
|
330
|
-
// Any `bots.json.` sidecar (backups/temp) — trailing dot so it matches
|
|
331
|
-
// bots.json.bak / .tmp / .bak.<suffix> but NOT the exact bots.json (that is
|
|
332
|
-
// the subpath deny's job) and NOT an unrelated `bots.jsonx`.
|
|
333
|
-
`^${escapeForRegex(bh)}/bots\\.json\\.`,
|
|
334
|
-
// LEGACY pre-BOT_HOME send-cred files (`<sd>/.send-cred-<appId>`): current
|
|
335
|
-
// builds write send-cred.json inside BOT_HOME, but leftovers from older
|
|
336
|
-
// builds still carry live per-bot send credentials at the data root.
|
|
337
|
-
`^${escapeForRegex(sd)}/\\.send-cred-`,
|
|
338
|
-
// Per-bot user display-name caches (`identities-<appId>.json`): open_id→name
|
|
339
|
-
// PII of every bot's interlocutors. The CLI never reads them (daemon-side
|
|
340
|
-
// prompt injection only), so the OWN file gets NO carve-out — the whole
|
|
341
|
-
// filename class is denied.
|
|
342
|
-
`^${escapeForRegex(sd)}/identities-[^/]+\\.json$`,
|
|
343
|
-
// Secret/token creation and atomic rotation use sibling temp files. Deny
|
|
344
|
-
// the whole basename class at both the fixed and custom roots so a live
|
|
345
|
-
// isolated process cannot race-read a fully populated temp inode.
|
|
346
|
-
...botmuxRoots.flatMap(root => [
|
|
347
|
-
...HOST_DEVICE_CREDENTIAL_FILES.map(file => `^${escapeForRegex(root)}/${escapeForRegex(file)}(?:\\.|$)`),
|
|
348
|
-
`^${escapeForRegex(root)}/\\.dashboard-secret(?:\\.|$)`,
|
|
349
|
-
`^${escapeForRegex(root)}/\\.dashboard-token(?:\\.|$)`,
|
|
350
|
-
`^${escapeForRegex(root)}/plugins/[^/]+/private(?:/|$)`,
|
|
351
|
-
`^${escapeForRegex(root)}/plugins/[^/]+/dist/mcp/index\\.json$`,
|
|
352
|
-
]),
|
|
353
|
-
`^${escapeForRegex(defaultBh)}/${escapeForRegex(DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME)}(?:\\.|$)`,
|
|
354
|
-
`^${escapeForRegex(sd)}/sessions/[^/]+/plugin-mcp-runtime\\.json$`,
|
|
355
|
-
]);
|
|
356
|
-
}
|
|
357
|
-
/** Host-owned authority files that a read-isolated child must not mutate.
|
|
358
|
-
* Read isolation otherwise keeps normal write access for backwards
|
|
359
|
-
* compatibility, so these rules are emitted after every other write allow. */
|
|
360
|
-
export function buildReadIsolationProtectedWriteRules(ctx, extraRoots = {}) {
|
|
361
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
362
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
363
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
364
|
-
const defaultBh = (ctx.defaultBotmuxHome ?? `${h}/.botmux`).replace(/\/+$/, '');
|
|
365
|
-
const dashboardRoots = dedupe([
|
|
366
|
-
defaultBh,
|
|
367
|
-
bh,
|
|
368
|
-
...(extraRoots.dashboardRoots ?? []).map(root => root.replace(/\/+$/, '')),
|
|
369
|
-
]);
|
|
370
|
-
const sessionDataDirs = dedupe([
|
|
371
|
-
sd,
|
|
372
|
-
...(extraRoots.sessionDataDirs ?? []).map(root => root.replace(/\/+$/, '')),
|
|
373
|
-
]);
|
|
374
|
-
return {
|
|
375
|
-
denyWritePaths: dedupe([
|
|
376
|
-
...dashboardRoots.flatMap(root => [
|
|
377
|
-
`${root}/.dashboard-secret`,
|
|
378
|
-
`${root}/.dashboard-token`,
|
|
379
|
-
...hostDeviceAuthorityPaths(root),
|
|
380
|
-
]),
|
|
381
|
-
`${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
|
|
382
|
-
...sessionDataDirs.flatMap(root => [
|
|
383
|
-
`${root}/.botmux-cli-pids`,
|
|
384
|
-
`${root}/read-isolation`,
|
|
385
|
-
]),
|
|
386
|
-
]),
|
|
387
|
-
denyWriteRegexes: dedupe([
|
|
388
|
-
...dashboardRoots.flatMap(root => [
|
|
389
|
-
...HOST_DEVICE_CREDENTIAL_FILES.map(file => `^${escapeForRegex(root)}/${escapeForRegex(file)}(?:\\.|$)`),
|
|
390
|
-
`^${escapeForRegex(root)}/\\.dashboard-secret(?:\\.|$)`,
|
|
391
|
-
`^${escapeForRegex(root)}/\\.dashboard-token(?:\\.|$)`,
|
|
392
|
-
`^${escapeForRegex(root)}/plugins/[^/]+/private(?:/|$)`,
|
|
393
|
-
`^${escapeForRegex(root)}/plugins/[^/]+/dist/mcp/index\\.json$`,
|
|
394
|
-
]),
|
|
395
|
-
...sessionDataDirs.map(root => `^${escapeForRegex(root)}/sessions/[^/]+/plugin-mcp-runtime\\.json$`),
|
|
396
|
-
`^${escapeForRegex(defaultBh)}/${escapeForRegex(DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME)}(?:\\.|$)`,
|
|
397
|
-
]),
|
|
398
|
-
// Prevent replacing an entire authority-bearing root to sidestep the
|
|
399
|
-
// exact/regex child rules. `literal` protects only the directory entry;
|
|
400
|
-
// ordinary writes to unrelated descendants remain available.
|
|
401
|
-
denyWriteLiterals: dedupe([...dashboardRoots, ...sessionDataDirs]),
|
|
402
|
-
};
|
|
403
|
-
}
|
|
404
|
-
/** The v2 Seatbelt carve-outs that accompany {@link buildV2DenyPaths} +
|
|
405
|
-
* {@link buildV2DenyRegexes}. They re-open the bot's OWN slice of each denied class:
|
|
406
|
-
* - allowPaths: the own BOT_HOME subpath (redirected CLI data + creds + send-cred),
|
|
407
|
-
* the own lark-cli config dir, and the own session store file.
|
|
408
|
-
* - traverseDirs: `bots/` etc., as file-read-metadata ONLY — lets the CLI realpath()
|
|
409
|
-
* its config dir THROUGH the denied parent WITHOUT allowing `ls bots/` (enumeration).
|
|
410
|
-
* - finalDenyPaths: admin `readDenyExtraPaths`, emitted AFTER the allows so an admin
|
|
411
|
-
* deny UNDER the own BOT_HOME still wins (Seatbelt last-match). */
|
|
412
|
-
export function buildV2CarveOuts(ctx) {
|
|
413
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
414
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
415
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
416
|
-
const self = assertSafeAppId(ctx.currentAppId);
|
|
417
|
-
return {
|
|
418
|
-
// Re-open the bot's OWN slice of each wholesale/pattern-denied per-bot class.
|
|
419
|
-
allowPaths: [
|
|
420
|
-
botHomePath(bh, self),
|
|
421
|
-
`${h}/.lark-cli-bots/${self}`,
|
|
422
|
-
// Own routing metadata (`botmux send` reads it to route replies); siblings'
|
|
423
|
-
// stay denied by the buildV2DenyRegexes filename pattern.
|
|
424
|
-
`${sd}/sessions-${self}.json`,
|
|
425
|
-
// Own Feishu-upload bucket (attachments/<appId>/<messageId>/…) — the agent must
|
|
426
|
-
// read files the user uploads in chat. getAttachmentsDir keys the bucket on the
|
|
427
|
-
// appId precisely so this spawn-time-static carve-out can exist.
|
|
428
|
-
`${sd}/attachments/${self}`,
|
|
429
|
-
// Parent read-isolation/ stays wholesale-denied; only this session's
|
|
430
|
-
// rotating origin capability is visible to the confined CLI.
|
|
431
|
-
managedOriginCapabilityPath(sd, ctx.currentSessionId),
|
|
432
|
-
],
|
|
433
|
-
// file-read-metadata on the wholesale-denied parents so the CLI/skill can realpath()
|
|
434
|
-
// through them WITHOUT `ls` (enumeration) leaking.
|
|
435
|
-
traverseDirs: [
|
|
436
|
-
`${bh}/bots`, `${h}/.lark-cli-bots`, `${sd}/attachments`, `${sd}/read-isolation`,
|
|
437
|
-
],
|
|
438
|
-
finalDenyPaths: (ctx.extraDenyPaths ?? [])
|
|
439
|
-
.map(normalizeIsolationPath)
|
|
440
|
-
.filter((p) => !!p),
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* Write-isolation rules for the macOS file sandbox — the FUNCTIONAL twin of the
|
|
445
|
-
* Linux bwrap overlay (which lets the agent read the whole real FS but confines
|
|
446
|
-
* WRITES). Seatbelt has no copy-on-write overlay, so we approximate the same
|
|
447
|
-
* guarantee with a deny-all-writes + allow-list: the agent can write its project
|
|
448
|
-
* and the ephemeral scratch/cache the CLI needs, but CANNOT tamper the rest of
|
|
449
|
-
* your real disk (home dotfiles, other projects, other bots' data, system dirs).
|
|
450
|
-
* Reads stay wide open (like Linux) — this is orthogonal to read isolation, which
|
|
451
|
-
* layers its own read-deny set into the SAME profile when also enabled.
|
|
452
|
-
*
|
|
453
|
-
* `allowWritePaths` re-open the writable zones AFTER the profile's `(deny
|
|
454
|
-
* file-write* (subpath "/"))`; `denyWritePaths` are crown jewels re-denied AFTER
|
|
455
|
-
* the allows (Seatbelt last-match), so they stay protected even if the project or
|
|
456
|
-
* an allowed zone nests them. The allow-list is intentionally generous toward
|
|
457
|
-
* CLI scratch/cache — the exact set is empirically tuned on real macOS (a missing
|
|
458
|
-
* cache path makes the CLI fail, an over-broad one weakens the sandbox). Pure: the
|
|
459
|
-
* worker realpath's every path (symlink-safe) before emitting.
|
|
460
|
-
*/
|
|
461
|
-
export function buildWriteSandboxRules(ctx) {
|
|
462
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
463
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
464
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
465
|
-
const defaultBh = (ctx.defaultBotmuxHome ?? `${h}/.botmux`).replace(/\/+$/, '');
|
|
466
|
-
const wd = ctx.workingDir.replace(/\/+$/, '');
|
|
467
|
-
const keep = (arr) => dedupe(arr.map(normalizeIsolationPath).filter((p) => !!p));
|
|
468
|
-
return {
|
|
469
|
-
allowWritePaths: keep([
|
|
470
|
-
// The project — writes here PERSIST (no overlay/landing step; direct like a
|
|
471
|
-
// non-sandboxed run would, only nothing OUTSIDE the allow-list can be touched).
|
|
472
|
-
wd,
|
|
473
|
-
// Own BOT_HOME — where read isolation redirects the CLI's data when co-enabled;
|
|
474
|
-
// harmless to allow when write-sandbox is standalone (dir just won't exist).
|
|
475
|
-
botHomePath(bh, ctx.currentAppId),
|
|
476
|
-
// CLI data dirs (write-sandbox standalone leaves them at the real path).
|
|
477
|
-
`${h}/.claude`, `${h}/.claude.json`, `${h}/.codex`,
|
|
478
|
-
// Claude Code's updater/OAuth refresh uses sibling lock directories rather
|
|
479
|
-
// than placing every state file under ~/.claude. Without these, a valid
|
|
480
|
-
// login can fail to refresh because lock acquisition returns EPERM.
|
|
481
|
-
`${h}/.claude.lock`, `${h}/.claude.json.lock`,
|
|
482
|
-
`${h}/.local/state/claude`,
|
|
483
|
-
// Ephemeral scratch / caches every CLI + spawned tool (git, npm, node) needs.
|
|
484
|
-
`${h}/Library/Caches`,
|
|
485
|
-
`${h}/Library/Application Support`,
|
|
486
|
-
`${h}/.cache`,
|
|
487
|
-
`${h}/.npm`,
|
|
488
|
-
'/private/var/folders', // macOS per-user TMPDIR / DARWIN_USER_TEMP_DIR root
|
|
489
|
-
'/private/tmp', '/tmp', '/var/tmp',
|
|
490
|
-
'/dev', // ptys, /dev/null, /dev/tty — required to run at all
|
|
491
|
-
...(ctx.extraWritePaths ?? []),
|
|
492
|
-
]),
|
|
493
|
-
allowWriteRegexes: [
|
|
494
|
-
// Claude Code saves ~/.claude.json atomically through a PID/random-suffixed
|
|
495
|
-
// sibling (e.g. .claude.json.tmp.1234.abcd). A subpath rule for the exact
|
|
496
|
-
// state file cannot match those siblings, so allow only that basename class
|
|
497
|
-
// at the home root — not arbitrary home dotfiles.
|
|
498
|
-
`^${escapeForRegex(h)}/\\.claude\\.json\\.tmp\\.[^/]+$`,
|
|
499
|
-
],
|
|
500
|
-
denyWritePaths: keep([
|
|
501
|
-
// Crown jewels — re-denied AFTER the allows so a semi-trusted operator can't
|
|
502
|
-
// plant an ssh key or tamper another bot's creds even if the project/home
|
|
503
|
-
// nests these. (Most already fall under deny-by-default; this is the guard for
|
|
504
|
-
// a broad workingDir and defence-in-depth.)
|
|
505
|
-
`${h}/.ssh`, `${h}/.aws`, `${h}/.gnupg`,
|
|
506
|
-
`${bh}/bots.json`,
|
|
507
|
-
`${bh}/feishu-session.json`,
|
|
508
|
-
`${defaultBh}/.dashboard-secret`, `${defaultBh}/.dashboard-token`,
|
|
509
|
-
`${bh}/.dashboard-secret`, `${bh}/.dashboard-token`,
|
|
510
|
-
...[defaultBh, bh].flatMap(hostDeviceAuthorityPaths),
|
|
511
|
-
`${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
|
|
512
|
-
`${sd}/.botmux-cli-pids`, `${sd}/read-isolation`,
|
|
513
|
-
]),
|
|
514
|
-
// Atomic credential writes use `<name>.<pid>.<random>.tmp` beside the
|
|
515
|
-
// target. Protect the whole basename class so a broad project/home allow
|
|
516
|
-
// cannot stage and rename a replacement around the exact-file deny.
|
|
517
|
-
denyWriteRegexes: dedupe([defaultBh, bh].flatMap(root => HOST_DEVICE_CREDENTIAL_FILES.map(file => `^${escapeForRegex(root)}/${escapeForRegex(file)}(?:\\.|$)`)).concat(`^${escapeForRegex(defaultBh)}/${escapeForRegex(DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME)}(?:\\.|$)`)),
|
|
518
|
-
};
|
|
519
|
-
}
|
|
520
|
-
/**
|
|
521
|
-
* The bwrap MASK set for Linux read isolation — the functional twin of the macOS
|
|
522
|
-
* Seatbelt read-deny profile ({@link buildV2DenyPaths} + regexes + carve-outs),
|
|
523
|
-
* expressed for bwrap (which blanks paths with tmpfs/empty-binds and has no regex).
|
|
524
|
-
*
|
|
525
|
-
* SAME cross-bot-sensitive set as macOS, but the per-bot classes (other bots'
|
|
526
|
-
* BOT_HOMEs / lark configs / session stores / identities / send-creds / attachment
|
|
527
|
-
* buckets) are enumerated PER SIBLING instead of wholesale-denied + regex-matched.
|
|
528
|
-
* The read-isolation-specific set does not mask the bot's OWN slice. The file
|
|
529
|
-
* sandbox still masks BOTMUX_HOME wholesale as its mandatory credential
|
|
530
|
-
* boundary, so `ownReadWritePaths` re-opens only this bot's BOT_HOME after that
|
|
531
|
-
* parent mask; the worker separately re-masks send-cred.json.
|
|
532
|
-
*
|
|
533
|
-
* Pure: the worker resolves the impure inputs (sibling list, sidecar glob, realpath).
|
|
534
|
-
* NOTE: keep the `shared` set in lock-step with {@link buildV2DenyPaths} — the
|
|
535
|
-
* `read-isolation.test.ts` parity test fails if a sensitive path is added to one
|
|
536
|
-
* platform but not the other.
|
|
537
|
-
*/
|
|
538
|
-
export function buildLinuxReadIsolationMasks(input) {
|
|
539
|
-
const { ctx } = input;
|
|
540
|
-
const h = ctx.homeDir.replace(/\/+$/, '');
|
|
541
|
-
const bh = ctx.botmuxHome.replace(/\/+$/, '');
|
|
542
|
-
const sd = ctx.sessionDataDir.replace(/\/+$/, '');
|
|
543
|
-
const defaultBh = (ctx.defaultBotmuxHome ?? `${h}/.botmux`).replace(/\/+$/, '');
|
|
544
|
-
const self = assertSafeAppId(ctx.currentAppId);
|
|
545
|
-
const keep = (arr) => dedupe(arr.map(normalizeIsolationPath).filter((p) => !!p));
|
|
546
|
-
// Cross-bot-sensitive paths handled WHOLESALE (not per-bot, OR a per-bot dir with
|
|
547
|
-
// a non-enumerable layout) — MUST mirror the same entries in buildV2DenyPaths.
|
|
548
|
-
const shared = [
|
|
549
|
-
`${h}/.claude`, `${h}/.claude.json`, `${h}/.codex`,
|
|
550
|
-
`${h}/.ssh`, `${h}/.aws`, `${h}/.azure`, `${h}/.gnupg`, `${h}/.netrc`,
|
|
551
|
-
`${h}/.config/gh`, `${h}/.config/glab-cli`, `${h}/.config/gcloud`, `${h}/.config/op`,
|
|
552
|
-
`${h}/.config/1Password`, `${h}/.1password`, `${h}/.password-store`,
|
|
553
|
-
`${h}/.git-credentials`, `${h}/.npmrc`, `${h}/.pypirc`, `${h}/.docker/config.json`, `${h}/.kube`,
|
|
554
|
-
`${h}/Library/Keychains`,
|
|
555
|
-
`${bh}/bots.json`, `${bh}/logs`, `${h}/.lark-cli`,
|
|
556
|
-
`${bh}/feishu-session.json`,
|
|
557
|
-
`${defaultBh}/.dashboard-secret`, `${defaultBh}/.dashboard-token`,
|
|
558
|
-
`${bh}/.dashboard-secret`, `${bh}/.dashboard-token`,
|
|
559
|
-
...[defaultBh, bh].flatMap(hostDeviceAuthorityPaths),
|
|
560
|
-
`${defaultBh}/${DEVICE_CREDENTIAL_ISOLATION_MARKER_BASENAME}`,
|
|
561
|
-
`${sd}/sessions.json`, `${sd}/frozen-cards`, `${sd}/turn-sends`,
|
|
562
|
-
`${sd}/crash-diagnostics`, `${sd}/queues`, `${sd}/read-isolation`,
|
|
563
|
-
`${sd}/pi-initial-prompts`,
|
|
564
|
-
`${sd}/.botmux-cli-pids`,
|
|
565
|
-
// attachments/ is masked WHOLESALE (like macOS) — covers every sibling bucket
|
|
566
|
-
// AND the legacy flat per-messageId layout (which per-sibling enumeration can't
|
|
567
|
-
// reach); the OWN bucket is re-exposed read-only via ownReadOnlyPaths below.
|
|
568
|
-
`${sd}/attachments`,
|
|
569
|
-
// schedules.json + whiteboards deliberately NOT masked (same owner decision as
|
|
570
|
-
// macOS: RMW-clobber / shared content).
|
|
571
|
-
];
|
|
572
|
-
// Per-sibling enumeration for the classes macOS covers by REGEX (bwrap has none):
|
|
573
|
-
// other bots' BOT_HOMEs, lark configs, session stores, identities, send-creds. Own
|
|
574
|
-
// BOT_HOME + lark + session stay UNMASKED by this per-bot set (the outer file
|
|
575
|
-
// sandbox still masks BOTMUX_HOME wholesale and re-opens only own BOT_HOME).
|
|
576
|
-
// identities/send-cred get NO own carve-out — the
|
|
577
|
-
// CLI never reads them (daemon-side) — so the own ones are masked too.
|
|
578
|
-
const perBot = [];
|
|
579
|
-
for (const raw of input.siblingAppIds) {
|
|
580
|
-
let sib;
|
|
581
|
-
try {
|
|
582
|
-
sib = assertSafeAppId(raw);
|
|
583
|
-
}
|
|
584
|
-
catch {
|
|
585
|
-
continue;
|
|
586
|
-
}
|
|
587
|
-
if (sib === self)
|
|
588
|
-
continue;
|
|
589
|
-
perBot.push(`${bh}/bots/${sib}`, `${h}/.lark-cli-bots/${sib}`, `${sd}/sessions-${sib}.json`, `${sd}/identities-${sib}.json`, `${sd}/.send-cred-${sib}`);
|
|
590
|
-
}
|
|
591
|
-
perBot.push(`${sd}/identities-${self}.json`, `${sd}/.send-cred-${self}`);
|
|
592
|
-
return {
|
|
593
|
-
hidePaths: keep([...shared, ...perBot, ...(input.botsJsonSidecars ?? [])]),
|
|
594
|
-
ownReadWritePaths: keep([botHomePath(bh, self)]),
|
|
595
|
-
ownReadOnlyPaths: keep([`${sd}/attachments/${self}`]),
|
|
596
|
-
};
|
|
597
|
-
}
|
|
598
177
|
/**
|
|
599
178
|
* Decide whether read isolation is enabled for a session, or fail-closed.
|
|
600
179
|
* Pure: the caller resolves the impure inputs. This is the SINGLE decision
|
|
@@ -618,55 +197,22 @@ export function evaluateReadIsolationGate(opts) {
|
|
|
618
197
|
return { enabled: false, failClosedReason: 'missing SESSION_DATA_DIR' };
|
|
619
198
|
return { enabled: true };
|
|
620
199
|
}
|
|
621
|
-
/**
|
|
622
|
-
*
|
|
623
|
-
|
|
624
|
-
* re-allow the carve-outs — `subpath` covers a file or a whole subtree. Rule ORDER
|
|
625
|
-
* matters: Seatbelt applies the LAST matching rule, so an allow listed AFTER a
|
|
626
|
-
* broader deny re-opens that subpath, and the final denies win over the allows.
|
|
627
|
-
* Verified: reads of denied paths fail EPERM; carved-out subpaths read normally; the
|
|
628
|
-
* wrapped CLI (which bypasses its OWN sandbox — nested Seatbelt would hang) runs fine.
|
|
629
|
-
*/
|
|
630
|
-
export function buildSeatbeltProfile(denyPaths, allowPaths = [], finalDenyPaths = [], traverseDirs = [], denyRegexes = [],
|
|
631
|
-
/** When set, layer the macOS file-sandbox WRITE isolation (Linux-bwrap twin) into
|
|
632
|
-
* the SAME profile: deny all writes, re-allow the writable zones, then final-deny
|
|
633
|
-
* the crown jewels. Reads are unaffected. Omit for read-isolation-only sessions. */
|
|
634
|
-
writeSandbox,
|
|
635
|
-
/** Host-owned files that must remain immutable even for legacy read-only
|
|
636
|
-
* isolation (where writes are otherwise unrestricted). Emitted last so they
|
|
637
|
-
* also win over a broad write-sandbox allow. */
|
|
638
|
-
protectedWrites) {
|
|
200
|
+
/** Legacy allow-default profile retained only for mandatory credential-only
|
|
201
|
+
* confinement when the full fs-policy sandbox is disabled. */
|
|
202
|
+
export function buildSeatbeltProfile(denyPaths, allowPaths = [], finalDenyPaths = [], traverseDirs = [], denyRegexes = [], writeSandbox, protectedWrites) {
|
|
639
203
|
const esc = (p) => p.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
640
|
-
// Regex literals (#"…") pass backslashes RAW to the regex engine — do NOT
|
|
641
|
-
// double-escape them. A `"` would terminate the literal; swap it for `.`
|
|
642
|
-
// (single-char wildcard that still matches the quote) instead of breaking syntax.
|
|
643
204
|
const escRe = (r) => r.replace(/"/g, '.');
|
|
644
205
|
const lines = ['(version 1)', '(allow default)'];
|
|
645
206
|
for (const p of denyPaths)
|
|
646
207
|
lines.push(`(deny file-read* (subpath "${esc(p)}"))`);
|
|
647
|
-
// Filename-pattern denies (e.g. every bot's sessions-<appId>.json) — no sibling
|
|
648
|
-
// enumeration; the own file is re-opened by an allow below (last-match).
|
|
649
208
|
for (const r of denyRegexes)
|
|
650
209
|
lines.push(`(deny file-read* (regex #"${escRe(r)}"))`);
|
|
651
|
-
// Traversal metadata-allows: a carve-out under a DENIED parent (e.g. BOT_HOME under
|
|
652
|
-
// ~/.botmux) is reachable for a plain open (Seatbelt matches the final path), but a
|
|
653
|
-
// realpath()/stat of an INTERMEDIATE dir is denied — which crashes CLIs that
|
|
654
|
-
// canonicalize their config dir (Codex: "failed to canonicalize CODEX_HOME"). Allow
|
|
655
|
-
// read-METADATA (stat/traverse) on those specific ancestor DIRS only (literal, not
|
|
656
|
-
// subpath) — dir LISTING (read-data) stays denied, so no enumeration leak.
|
|
657
210
|
for (const p of traverseDirs)
|
|
658
211
|
lines.push(`(allow file-read-metadata (literal "${esc(p)}"))`);
|
|
659
|
-
// Carve-outs override the broad denies above (Seatbelt applies the LAST match).
|
|
660
212
|
for (const p of allowPaths)
|
|
661
213
|
lines.push(`(allow file-read* (subpath "${esc(p)}"))`);
|
|
662
|
-
// FINAL denies win over the carve-outs — admin `readDenyExtraPaths` must hold even
|
|
663
|
-
// for a path that falls under the bot's own re-allowed BOT_HOME.
|
|
664
214
|
for (const p of finalDenyPaths)
|
|
665
215
|
lines.push(`(deny file-read* (subpath "${esc(p)}"))`);
|
|
666
|
-
// ── Write isolation (macOS file sandbox): deny ALL writes, re-allow the writable
|
|
667
|
-
// zones, then re-deny the crown jewels. Ordered AFTER the read rules but they are
|
|
668
|
-
// an independent operation class (file-write* vs file-read*), so they never
|
|
669
|
-
// interact with the read allow/deny above. Emitted only when write-sandbox is on.
|
|
670
216
|
if (writeSandbox) {
|
|
671
217
|
lines.push('(deny file-write* (subpath "/"))');
|
|
672
218
|
for (const p of writeSandbox.allowWritePaths)
|
|
@@ -689,12 +235,8 @@ protectedWrites) {
|
|
|
689
235
|
}
|
|
690
236
|
return lines.join('\n') + '\n';
|
|
691
237
|
}
|
|
692
|
-
//
|
|
693
|
-
// process.
|
|
694
|
-
// credential-only mode, but must cold-spawn if full read/write isolation is
|
|
695
|
-
// enabled later. A version alone cannot express that strengthening transition.
|
|
696
|
-
// Version 6 was intentionally skipped to avoid colliding with an experimental
|
|
697
|
-
// marker layout that briefly shipped in intermediate device-isolation branches.
|
|
238
|
+
// A marker records which confinement capabilities are attached to the live
|
|
239
|
+
// process. Credential-only panes must cold-spawn when a full sandbox is enabled.
|
|
698
240
|
export const ISOLATION_PANE_MARKER_VERSION = 7;
|
|
699
241
|
const ALL_ISOLATION_CAPABILITIES = [
|
|
700
242
|
'credential',
|
|
@@ -705,7 +247,6 @@ function normalizeIsolationCapabilities(capabilities) {
|
|
|
705
247
|
const requested = new Set(capabilities);
|
|
706
248
|
return ALL_ISOLATION_CAPABILITIES.filter(capability => requested.has(capability));
|
|
707
249
|
}
|
|
708
|
-
/** Versioned marker written beside a freshly spawned persistent sandbox. */
|
|
709
250
|
export function isolationPaneMarkerContent(bootId, capabilities) {
|
|
710
251
|
return JSON.stringify({
|
|
711
252
|
version: ISOLATION_PANE_MARKER_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-isolation.js","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read-isolation.js","sourceRoot":"","sources":["../../../src/adapters/cli/read-isolation.ts"],"names":[],"mappings":"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"}
|