botmux 3.10.0 → 3.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +57 -4
- package/README.md +89 -4
- package/package.json +47 -31
- package/scripts/install-path-entry.mjs +263 -0
- package/scripts/postinstall-bin.mjs +388 -0
- package/dist/.runtime-build-id +0 -1
- package/dist/adapters/adopt-route.d.ts +0 -63
- package/dist/adapters/adopt-route.d.ts.map +0 -1
- package/dist/adapters/adopt-route.js +0 -196
- package/dist/adapters/adopt-route.js.map +0 -1
- package/dist/adapters/backend/capabilities.d.ts +0 -17
- package/dist/adapters/backend/capabilities.d.ts.map +0 -1
- package/dist/adapters/backend/capabilities.js +0 -22
- package/dist/adapters/backend/capabilities.js.map +0 -1
- package/dist/adapters/backend/critical-control-key.d.ts +0 -19
- package/dist/adapters/backend/critical-control-key.d.ts.map +0 -1
- package/dist/adapters/backend/critical-control-key.js +0 -34
- package/dist/adapters/backend/critical-control-key.js.map +0 -1
- package/dist/adapters/backend/herdr-backend.d.ts +0 -164
- package/dist/adapters/backend/herdr-backend.d.ts.map +0 -1
- package/dist/adapters/backend/herdr-backend.js +0 -1073
- package/dist/adapters/backend/herdr-backend.js.map +0 -1
- package/dist/adapters/backend/liveness-gate.d.ts +0 -38
- package/dist/adapters/backend/liveness-gate.d.ts.map +0 -1
- package/dist/adapters/backend/liveness-gate.js +0 -53
- package/dist/adapters/backend/liveness-gate.js.map +0 -1
- package/dist/adapters/backend/pty-backend.d.ts +0 -23
- package/dist/adapters/backend/pty-backend.d.ts.map +0 -1
- package/dist/adapters/backend/pty-backend.js +0 -70
- package/dist/adapters/backend/pty-backend.js.map +0 -1
- package/dist/adapters/backend/reproduce-command.d.ts +0 -39
- package/dist/adapters/backend/reproduce-command.d.ts.map +0 -1
- package/dist/adapters/backend/reproduce-command.js +0 -63
- package/dist/adapters/backend/reproduce-command.js.map +0 -1
- package/dist/adapters/backend/riff-backend.d.ts +0 -272
- package/dist/adapters/backend/riff-backend.d.ts.map +0 -1
- package/dist/adapters/backend/riff-backend.js +0 -1017
- package/dist/adapters/backend/riff-backend.js.map +0 -1
- package/dist/adapters/backend/sandbox.d.ts +0 -298
- package/dist/adapters/backend/sandbox.d.ts.map +0 -1
- package/dist/adapters/backend/sandbox.js +0 -1196
- package/dist/adapters/backend/sandbox.js.map +0 -1
- package/dist/adapters/backend/session-backend-selector.d.ts +0 -113
- package/dist/adapters/backend/session-backend-selector.d.ts.map +0 -1
- package/dist/adapters/backend/session-backend-selector.js +0 -344
- package/dist/adapters/backend/session-backend-selector.js.map +0 -1
- package/dist/adapters/backend/tmux-backend.d.ts +0 -292
- package/dist/adapters/backend/tmux-backend.d.ts.map +0 -1
- package/dist/adapters/backend/tmux-backend.js +0 -821
- package/dist/adapters/backend/tmux-backend.js.map +0 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +0 -237
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +0 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +0 -786
- package/dist/adapters/backend/tmux-pipe-backend.js.map +0 -1
- package/dist/adapters/backend/types.d.ts +0 -183
- package/dist/adapters/backend/types.d.ts.map +0 -1
- package/dist/adapters/backend/types.js +0 -19
- package/dist/adapters/backend/types.js.map +0 -1
- package/dist/adapters/backend/zellij-backend.d.ts +0 -173
- package/dist/adapters/backend/zellij-backend.d.ts.map +0 -1
- package/dist/adapters/backend/zellij-backend.js +0 -466
- package/dist/adapters/backend/zellij-backend.js.map +0 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +0 -95
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +0 -1
- package/dist/adapters/backend/zellij-observe-backend.js +0 -301
- package/dist/adapters/backend/zellij-observe-backend.js.map +0 -1
- package/dist/adapters/backend/zellij-socket-probe.d.ts +0 -18
- package/dist/adapters/backend/zellij-socket-probe.d.ts.map +0 -1
- package/dist/adapters/backend/zellij-socket-probe.js +0 -146
- package/dist/adapters/backend/zellij-socket-probe.js.map +0 -1
- package/dist/adapters/backend/zmx-backend.d.ts +0 -284
- package/dist/adapters/backend/zmx-backend.d.ts.map +0 -1
- package/dist/adapters/backend/zmx-backend.js +0 -2387
- package/dist/adapters/backend/zmx-backend.js.map +0 -1
- package/dist/adapters/cli/aiden.d.ts +0 -4
- package/dist/adapters/cli/aiden.d.ts.map +0 -1
- package/dist/adapters/cli/aiden.js +0 -46
- package/dist/adapters/cli/aiden.js.map +0 -1
- package/dist/adapters/cli/antigravity.d.ts +0 -4
- package/dist/adapters/cli/antigravity.d.ts.map +0 -1
- package/dist/adapters/cli/antigravity.js +0 -274
- package/dist/adapters/cli/antigravity.js.map +0 -1
- package/dist/adapters/cli/claude-code.d.ts +0 -121
- package/dist/adapters/cli/claude-code.d.ts.map +0 -1
- package/dist/adapters/cli/claude-code.js +0 -1128
- package/dist/adapters/cli/claude-code.js.map +0 -1
- package/dist/adapters/cli/coco.d.ts +0 -4
- package/dist/adapters/cli/coco.d.ts.map +0 -1
- package/dist/adapters/cli/coco.js +0 -315
- package/dist/adapters/cli/coco.js.map +0 -1
- package/dist/adapters/cli/codex-app-turn.d.ts +0 -59
- package/dist/adapters/cli/codex-app-turn.d.ts.map +0 -1
- package/dist/adapters/cli/codex-app-turn.js +0 -136
- package/dist/adapters/cli/codex-app-turn.js.map +0 -1
- package/dist/adapters/cli/codex-app.d.ts +0 -4
- package/dist/adapters/cli/codex-app.d.ts.map +0 -1
- package/dist/adapters/cli/codex-app.js +0 -88
- package/dist/adapters/cli/codex-app.js.map +0 -1
- package/dist/adapters/cli/codex.d.ts +0 -4
- package/dist/adapters/cli/codex.d.ts.map +0 -1
- package/dist/adapters/cli/codex.js +0 -439
- package/dist/adapters/cli/codex.js.map +0 -1
- package/dist/adapters/cli/copilot.d.ts +0 -10
- package/dist/adapters/cli/copilot.d.ts.map +0 -1
- package/dist/adapters/cli/copilot.js +0 -73
- package/dist/adapters/cli/copilot.js.map +0 -1
- package/dist/adapters/cli/cursor.d.ts +0 -4
- package/dist/adapters/cli/cursor.d.ts.map +0 -1
- package/dist/adapters/cli/cursor.js +0 -104
- package/dist/adapters/cli/cursor.js.map +0 -1
- package/dist/adapters/cli/fs-policy.d.ts +0 -385
- package/dist/adapters/cli/fs-policy.d.ts.map +0 -1
- package/dist/adapters/cli/fs-policy.js +0 -889
- package/dist/adapters/cli/fs-policy.js.map +0 -1
- package/dist/adapters/cli/gemini.d.ts +0 -4
- package/dist/adapters/cli/gemini.d.ts.map +0 -1
- package/dist/adapters/cli/gemini.js +0 -53
- package/dist/adapters/cli/gemini.js.map +0 -1
- package/dist/adapters/cli/genius.d.ts +0 -4
- package/dist/adapters/cli/genius.d.ts.map +0 -1
- package/dist/adapters/cli/genius.js +0 -230
- package/dist/adapters/cli/genius.js.map +0 -1
- package/dist/adapters/cli/grok.d.ts +0 -76
- package/dist/adapters/cli/grok.d.ts.map +0 -1
- package/dist/adapters/cli/grok.js +0 -310
- package/dist/adapters/cli/grok.js.map +0 -1
- package/dist/adapters/cli/hermes.d.ts +0 -4
- package/dist/adapters/cli/hermes.d.ts.map +0 -1
- package/dist/adapters/cli/hermes.js +0 -83
- package/dist/adapters/cli/hermes.js.map +0 -1
- package/dist/adapters/cli/kimi.d.ts +0 -4
- package/dist/adapters/cli/kimi.d.ts.map +0 -1
- package/dist/adapters/cli/kimi.js +0 -54
- package/dist/adapters/cli/kimi.js.map +0 -1
- package/dist/adapters/cli/kiro-cli.d.ts +0 -4
- package/dist/adapters/cli/kiro-cli.d.ts.map +0 -1
- package/dist/adapters/cli/kiro-cli.js +0 -73
- package/dist/adapters/cli/kiro-cli.js.map +0 -1
- package/dist/adapters/cli/mir.d.ts +0 -4
- package/dist/adapters/cli/mir.d.ts.map +0 -1
- package/dist/adapters/cli/mir.js +0 -81
- package/dist/adapters/cli/mir.js.map +0 -1
- package/dist/adapters/cli/mira.d.ts +0 -4
- package/dist/adapters/cli/mira.d.ts.map +0 -1
- package/dist/adapters/cli/mira.js +0 -54
- package/dist/adapters/cli/mira.js.map +0 -1
- package/dist/adapters/cli/mtr.d.ts +0 -5
- package/dist/adapters/cli/mtr.d.ts.map +0 -1
- package/dist/adapters/cli/mtr.js +0 -69
- package/dist/adapters/cli/mtr.js.map +0 -1
- package/dist/adapters/cli/oh-my-pi.d.ts +0 -5
- package/dist/adapters/cli/oh-my-pi.d.ts.map +0 -1
- package/dist/adapters/cli/oh-my-pi.js +0 -186
- package/dist/adapters/cli/oh-my-pi.js.map +0 -1
- package/dist/adapters/cli/opencode.d.ts +0 -4
- package/dist/adapters/cli/opencode.d.ts.map +0 -1
- package/dist/adapters/cli/opencode.js +0 -305
- package/dist/adapters/cli/opencode.js.map +0 -1
- package/dist/adapters/cli/pi-initial-prompt-extension.d.ts +0 -27
- package/dist/adapters/cli/pi-initial-prompt-extension.d.ts.map +0 -1
- package/dist/adapters/cli/pi-initial-prompt-extension.js +0 -38
- package/dist/adapters/cli/pi-initial-prompt-extension.js.map +0 -1
- package/dist/adapters/cli/pi-initial-prompt.d.ts +0 -21
- package/dist/adapters/cli/pi-initial-prompt.d.ts.map +0 -1
- package/dist/adapters/cli/pi-initial-prompt.js +0 -59
- package/dist/adapters/cli/pi-initial-prompt.js.map +0 -1
- package/dist/adapters/cli/pi.d.ts +0 -58
- package/dist/adapters/cli/pi.d.ts.map +0 -1
- package/dist/adapters/cli/pi.js +0 -121
- package/dist/adapters/cli/pi.js.map +0 -1
- package/dist/adapters/cli/read-isolation.d.ts +0 -198
- package/dist/adapters/cli/read-isolation.d.ts.map +0 -1
- package/dist/adapters/cli/read-isolation.js +0 -335
- package/dist/adapters/cli/read-isolation.js.map +0 -1
- package/dist/adapters/cli/reasonix.d.ts +0 -35
- package/dist/adapters/cli/reasonix.d.ts.map +0 -1
- package/dist/adapters/cli/reasonix.js +0 -236
- package/dist/adapters/cli/reasonix.js.map +0 -1
- package/dist/adapters/cli/registry.d.ts +0 -51
- package/dist/adapters/cli/registry.d.ts.map +0 -1
- package/dist/adapters/cli/registry.js +0 -192
- package/dist/adapters/cli/registry.js.map +0 -1
- package/dist/adapters/cli/relay.d.ts +0 -26
- package/dist/adapters/cli/relay.d.ts.map +0 -1
- package/dist/adapters/cli/relay.js +0 -55
- package/dist/adapters/cli/relay.js.map +0 -1
- package/dist/adapters/cli/riff.d.ts +0 -14
- package/dist/adapters/cli/riff.d.ts.map +0 -1
- package/dist/adapters/cli/riff.js +0 -35
- package/dist/adapters/cli/riff.js.map +0 -1
- package/dist/adapters/cli/runner-control-channel.d.ts +0 -32
- package/dist/adapters/cli/runner-control-channel.d.ts.map +0 -1
- package/dist/adapters/cli/runner-control-channel.js +0 -104
- package/dist/adapters/cli/runner-control-channel.js.map +0 -1
- package/dist/adapters/cli/runner-input.d.ts +0 -67
- package/dist/adapters/cli/runner-input.d.ts.map +0 -1
- package/dist/adapters/cli/runner-input.js +0 -131
- package/dist/adapters/cli/runner-input.js.map +0 -1
- package/dist/adapters/cli/runtime.d.ts +0 -81
- package/dist/adapters/cli/runtime.d.ts.map +0 -1
- package/dist/adapters/cli/runtime.js +0 -243
- package/dist/adapters/cli/runtime.js.map +0 -1
- package/dist/adapters/cli/seed.d.ts +0 -29
- package/dist/adapters/cli/seed.d.ts.map +0 -1
- package/dist/adapters/cli/seed.js +0 -68
- package/dist/adapters/cli/seed.js.map +0 -1
- package/dist/adapters/cli/shared-hints.d.ts +0 -45
- package/dist/adapters/cli/shared-hints.d.ts.map +0 -1
- package/dist/adapters/cli/shared-hints.js +0 -144
- package/dist/adapters/cli/shared-hints.js.map +0 -1
- package/dist/adapters/cli/strict-input-handle.d.ts +0 -13
- package/dist/adapters/cli/strict-input-handle.d.ts.map +0 -1
- package/dist/adapters/cli/strict-input-handle.js +0 -39
- package/dist/adapters/cli/strict-input-handle.js.map +0 -1
- package/dist/adapters/cli/traex.d.ts +0 -28
- package/dist/adapters/cli/traex.d.ts.map +0 -1
- package/dist/adapters/cli/traex.js +0 -343
- package/dist/adapters/cli/traex.js.map +0 -1
- package/dist/adapters/cli/types.d.ts +0 -460
- package/dist/adapters/cli/types.d.ts.map +0 -1
- package/dist/adapters/cli/types.js +0 -2
- package/dist/adapters/cli/types.js.map +0 -1
- package/dist/adapters/coco-ask-plugin.d.ts +0 -25
- package/dist/adapters/coco-ask-plugin.d.ts.map +0 -1
- package/dist/adapters/coco-ask-plugin.js +0 -73
- package/dist/adapters/coco-ask-plugin.js.map +0 -1
- package/dist/adapters/hook-command.d.ts +0 -27
- package/dist/adapters/hook-command.d.ts.map +0 -1
- package/dist/adapters/hook-command.js +0 -50
- package/dist/adapters/hook-command.js.map +0 -1
- package/dist/adapters/hook-installer.d.ts +0 -37
- package/dist/adapters/hook-installer.d.ts.map +0 -1
- package/dist/adapters/hook-installer.js +0 -494
- package/dist/adapters/hook-installer.js.map +0 -1
- package/dist/autostart.d.ts +0 -14
- package/dist/autostart.d.ts.map +0 -1
- package/dist/autostart.js +0 -516
- package/dist/autostart.js.map +0 -1
- package/dist/bot-registry.d.ts +0 -942
- package/dist/bot-registry.d.ts.map +0 -1
- package/dist/bot-registry.js +0 -1909
- package/dist/bot-registry.js.map +0 -1
- package/dist/cli/arg-utils.d.ts +0 -11
- package/dist/cli/arg-utils.d.ts.map +0 -1
- package/dist/cli/arg-utils.js +0 -25
- package/dist/cli/arg-utils.js.map +0 -1
- package/dist/cli/bots-list-output.d.ts +0 -29
- package/dist/cli/bots-list-output.d.ts.map +0 -1
- package/dist/cli/bots-list-output.js +0 -32
- package/dist/cli/bots-list-output.js.map +0 -1
- package/dist/cli/capabilities.d.ts +0 -24
- package/dist/cli/capabilities.d.ts.map +0 -1
- package/dist/cli/capabilities.js +0 -25
- package/dist/cli/capabilities.js.map +0 -1
- package/dist/cli/create-group-resolver.d.ts +0 -75
- package/dist/cli/create-group-resolver.d.ts.map +0 -1
- package/dist/cli/create-group-resolver.js +0 -123
- package/dist/cli/create-group-resolver.js.map +0 -1
- package/dist/cli/daemon-lifecycle-env.d.ts +0 -9
- package/dist/cli/daemon-lifecycle-env.d.ts.map +0 -1
- package/dist/cli/daemon-lifecycle-env.js +0 -43
- package/dist/cli/daemon-lifecycle-env.js.map +0 -1
- package/dist/cli/dashboard-endpoint.d.ts +0 -76
- package/dist/cli/dashboard-endpoint.d.ts.map +0 -1
- package/dist/cli/dashboard-endpoint.js +0 -161
- package/dist/cli/dashboard-endpoint.js.map +0 -1
- package/dist/cli/deferred-topic-send.d.ts +0 -48
- package/dist/cli/deferred-topic-send.d.ts.map +0 -1
- package/dist/cli/deferred-topic-send.js +0 -86
- package/dist/cli/deferred-topic-send.js.map +0 -1
- package/dist/cli/exact-chat-grant-client.d.ts +0 -48
- package/dist/cli/exact-chat-grant-client.d.ts.map +0 -1
- package/dist/cli/exact-chat-grant-client.js +0 -108
- package/dist/cli/exact-chat-grant-client.js.map +0 -1
- package/dist/cli/exact-chat-grant.d.ts +0 -18
- package/dist/cli/exact-chat-grant.d.ts.map +0 -1
- package/dist/cli/exact-chat-grant.js +0 -97
- package/dist/cli/exact-chat-grant.js.map +0 -1
- package/dist/cli/pm2-command.d.ts +0 -7
- package/dist/cli/pm2-command.d.ts.map +0 -1
- package/dist/cli/pm2-command.js +0 -25
- package/dist/cli/pm2-command.js.map +0 -1
- package/dist/cli/quoted-render.d.ts +0 -41
- package/dist/cli/quoted-render.d.ts.map +0 -1
- package/dist/cli/quoted-render.js +0 -44
- package/dist/cli/quoted-render.js.map +0 -1
- package/dist/cli/saved-workflow.d.ts +0 -25
- package/dist/cli/saved-workflow.d.ts.map +0 -1
- package/dist/cli/saved-workflow.js +0 -338
- package/dist/cli/saved-workflow.js.map +0 -1
- package/dist/cli/send-dispatch.d.ts +0 -125
- package/dist/cli/send-dispatch.d.ts.map +0 -1
- package/dist/cli/send-dispatch.js +0 -320
- package/dist/cli/send-dispatch.js.map +0 -1
- package/dist/cli/session-list-liveness.d.ts +0 -41
- package/dist/cli/session-list-liveness.d.ts.map +0 -1
- package/dist/cli/session-list-liveness.js +0 -48
- package/dist/cli/session-list-liveness.js.map +0 -1
- package/dist/cli/stdin-encoding.d.ts +0 -24
- package/dist/cli/stdin-encoding.d.ts.map +0 -1
- package/dist/cli/stdin-encoding.js +0 -56
- package/dist/cli/stdin-encoding.js.map +0 -1
- package/dist/cli/v3-run-cancel.d.ts +0 -47
- package/dist/cli/v3-run-cancel.d.ts.map +0 -1
- package/dist/cli/v3-run-cancel.js +0 -96
- package/dist/cli/v3-run-cancel.js.map +0 -1
- package/dist/cli/vc-agent.d.ts +0 -2
- package/dist/cli/vc-agent.d.ts.map +0 -1
- package/dist/cli/vc-agent.js +0 -384
- package/dist/cli/vc-agent.js.map +0 -1
- package/dist/cli/workflow-migration.d.ts +0 -39
- package/dist/cli/workflow-migration.d.ts.map +0 -1
- package/dist/cli/workflow-migration.js +0 -302
- package/dist/cli/workflow-migration.js.map +0 -1
- package/dist/cli/workflow-run-archive.d.ts +0 -29
- package/dist/cli/workflow-run-archive.d.ts.map +0 -1
- package/dist/cli/workflow-run-archive.js +0 -183
- package/dist/cli/workflow-run-archive.js.map +0 -1
- package/dist/cli/workflow.d.ts +0 -8
- package/dist/cli/workflow.d.ts.map +0 -1
- package/dist/cli/workflow.js +0 -109
- package/dist/cli/workflow.js.map +0 -1
- package/dist/cli/zmx-managed-attach.d.ts +0 -41
- package/dist/cli/zmx-managed-attach.d.ts.map +0 -1
- package/dist/cli/zmx-managed-attach.js +0 -72
- package/dist/cli/zmx-managed-attach.js.map +0 -1
- package/dist/cli.d.ts +0 -35
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -10769
- package/dist/cli.js.map +0 -1
- package/dist/codex-app-runner.d.ts +0 -3
- package/dist/codex-app-runner.d.ts.map +0 -1
- package/dist/codex-app-runner.js +0 -565
- package/dist/codex-app-runner.js.map +0 -1
- package/dist/codex-rpc-engine.d.ts +0 -136
- package/dist/codex-rpc-engine.d.ts.map +0 -1
- package/dist/codex-rpc-engine.js +0 -640
- package/dist/codex-rpc-engine.js.map +0 -1
- package/dist/codex-rpc-lifecycle.d.ts +0 -157
- package/dist/codex-rpc-lifecycle.d.ts.map +0 -1
- package/dist/codex-rpc-lifecycle.js +0 -238
- package/dist/codex-rpc-lifecycle.js.map +0 -1
- package/dist/config.d.ts +0 -146
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -293
- package/dist/config.js.map +0 -1
- package/dist/core/ask-api.d.ts +0 -29
- package/dist/core/ask-api.d.ts.map +0 -1
- package/dist/core/ask-api.js +0 -116
- package/dist/core/ask-api.js.map +0 -1
- package/dist/core/ask-args.d.ts +0 -53
- package/dist/core/ask-args.d.ts.map +0 -1
- package/dist/core/ask-args.js +0 -122
- package/dist/core/ask-args.js.map +0 -1
- package/dist/core/ask-broker.d.ts +0 -166
- package/dist/core/ask-broker.d.ts.map +0 -1
- package/dist/core/ask-broker.js +0 -451
- package/dist/core/ask-broker.js.map +0 -1
- package/dist/core/ask-hook/claude-code.d.ts +0 -50
- package/dist/core/ask-hook/claude-code.d.ts.map +0 -1
- package/dist/core/ask-hook/claude-code.js +0 -151
- package/dist/core/ask-hook/claude-code.js.map +0 -1
- package/dist/core/ask-hook/coco.d.ts +0 -22
- package/dist/core/ask-hook/coco.d.ts.map +0 -1
- package/dist/core/ask-hook/coco.js +0 -35
- package/dist/core/ask-hook/coco.js.map +0 -1
- package/dist/core/ask-hook/codex.d.ts +0 -43
- package/dist/core/ask-hook/codex.d.ts.map +0 -1
- package/dist/core/ask-hook/codex.js +0 -70
- package/dist/core/ask-hook/codex.js.map +0 -1
- package/dist/core/ask-hook/opencode.d.ts +0 -39
- package/dist/core/ask-hook/opencode.d.ts.map +0 -1
- package/dist/core/ask-hook/opencode.js +0 -109
- package/dist/core/ask-hook/opencode.js.map +0 -1
- package/dist/core/ask-hook/registry.d.ts +0 -3
- package/dist/core/ask-hook/registry.d.ts.map +0 -1
- package/dist/core/ask-hook/registry.js +0 -25
- package/dist/core/ask-hook/registry.js.map +0 -1
- package/dist/core/ask-hook/types.d.ts +0 -28
- package/dist/core/ask-hook/types.d.ts.map +0 -1
- package/dist/core/ask-hook/types.js +0 -2
- package/dist/core/ask-hook/types.js.map +0 -1
- package/dist/core/ask-types.d.ts +0 -157
- package/dist/core/ask-types.d.ts.map +0 -1
- package/dist/core/ask-types.js +0 -28
- package/dist/core/ask-types.js.map +0 -1
- package/dist/core/attachment-path.d.ts +0 -3
- package/dist/core/attachment-path.d.ts.map +0 -1
- package/dist/core/attachment-path.js +0 -8
- package/dist/core/attachment-path.js.map +0 -1
- package/dist/core/auto-start.d.ts +0 -84
- package/dist/core/auto-start.d.ts.map +0 -1
- package/dist/core/auto-start.js +0 -92
- package/dist/core/auto-start.js.map +0 -1
- package/dist/core/bot-live-control.d.ts +0 -41
- package/dist/core/bot-live-control.d.ts.map +0 -1
- package/dist/core/bot-live-control.js +0 -135
- package/dist/core/bot-live-control.js.map +0 -1
- package/dist/core/bot-turn-mutation-gate.d.ts +0 -24
- package/dist/core/bot-turn-mutation-gate.d.ts.map +0 -1
- package/dist/core/bot-turn-mutation-gate.js +0 -369
- package/dist/core/bot-turn-mutation-gate.js.map +0 -1
- package/dist/core/botmux-wrapper.d.ts +0 -41
- package/dist/core/botmux-wrapper.d.ts.map +0 -1
- package/dist/core/botmux-wrapper.js +0 -63
- package/dist/core/botmux-wrapper.js.map +0 -1
- package/dist/core/chat-rename.d.ts +0 -27
- package/dist/core/chat-rename.d.ts.map +0 -1
- package/dist/core/chat-rename.js +0 -53
- package/dist/core/chat-rename.js.map +0 -1
- package/dist/core/cli-runtime-display.d.ts +0 -19
- package/dist/core/cli-runtime-display.d.ts.map +0 -1
- package/dist/core/cli-runtime-display.js +0 -28
- package/dist/core/cli-runtime-display.js.map +0 -1
- package/dist/core/cli-runtime-update.d.ts +0 -129
- package/dist/core/cli-runtime-update.d.ts.map +0 -1
- package/dist/core/cli-runtime-update.js +0 -737
- package/dist/core/cli-runtime-update.js.map +0 -1
- package/dist/core/closed-session-card.d.ts +0 -16
- package/dist/core/closed-session-card.d.ts.map +0 -1
- package/dist/core/closed-session-card.js +0 -80
- package/dist/core/closed-session-card.js.map +0 -1
- package/dist/core/coco-picker-keys.d.ts +0 -31
- package/dist/core/coco-picker-keys.d.ts.map +0 -1
- package/dist/core/coco-picker-keys.js +0 -60
- package/dist/core/coco-picker-keys.js.map +0 -1
- package/dist/core/command-discovery.d.ts +0 -33
- package/dist/core/command-discovery.d.ts.map +0 -1
- package/dist/core/command-discovery.js +0 -261
- package/dist/core/command-discovery.js.map +0 -1
- package/dist/core/command-handler.d.ts +0 -163
- package/dist/core/command-handler.d.ts.map +0 -1
- package/dist/core/command-handler.js +0 -4108
- package/dist/core/command-handler.js.map +0 -1
- package/dist/core/cost-calculator.d.ts +0 -69
- package/dist/core/cost-calculator.d.ts.map +0 -1
- package/dist/core/cost-calculator.js +0 -603
- package/dist/core/cost-calculator.js.map +0 -1
- package/dist/core/current-turn-provenance.d.ts +0 -39
- package/dist/core/current-turn-provenance.d.ts.map +0 -1
- package/dist/core/current-turn-provenance.js +0 -122
- package/dist/core/current-turn-provenance.js.map +0 -1
- package/dist/core/daemon-config-fence.d.ts +0 -8
- package/dist/core/daemon-config-fence.d.ts.map +0 -1
- package/dist/core/daemon-config-fence.js +0 -13
- package/dist/core/daemon-config-fence.js.map +0 -1
- package/dist/core/daemon-heartbeat.d.ts +0 -15
- package/dist/core/daemon-heartbeat.d.ts.map +0 -1
- package/dist/core/daemon-heartbeat.js +0 -83
- package/dist/core/daemon-heartbeat.js.map +0 -1
- package/dist/core/daemon-ipc-auth.d.ts +0 -20
- package/dist/core/daemon-ipc-auth.d.ts.map +0 -1
- package/dist/core/daemon-ipc-auth.js +0 -44
- package/dist/core/daemon-ipc-auth.js.map +0 -1
- package/dist/core/daemon-ipc-session-auth.d.ts +0 -37
- package/dist/core/daemon-ipc-session-auth.d.ts.map +0 -1
- package/dist/core/daemon-ipc-session-auth.js +0 -35
- package/dist/core/daemon-ipc-session-auth.js.map +0 -1
- package/dist/core/dashboard-command/groups.d.ts +0 -20
- package/dist/core/dashboard-command/groups.d.ts.map +0 -1
- package/dist/core/dashboard-command/groups.js +0 -52
- package/dist/core/dashboard-command/groups.js.map +0 -1
- package/dist/core/dashboard-command/index.d.ts +0 -28
- package/dist/core/dashboard-command/index.d.ts.map +0 -1
- package/dist/core/dashboard-command/index.js +0 -81
- package/dist/core/dashboard-command/index.js.map +0 -1
- package/dist/core/dashboard-command/overview.d.ts +0 -29
- package/dist/core/dashboard-command/overview.d.ts.map +0 -1
- package/dist/core/dashboard-command/overview.js +0 -61
- package/dist/core/dashboard-command/overview.js.map +0 -1
- package/dist/core/dashboard-command/owner-gate.d.ts +0 -41
- package/dist/core/dashboard-command/owner-gate.d.ts.map +0 -1
- package/dist/core/dashboard-command/owner-gate.js +0 -40
- package/dist/core/dashboard-command/owner-gate.js.map +0 -1
- package/dist/core/dashboard-command/schedules.d.ts +0 -20
- package/dist/core/dashboard-command/schedules.d.ts.map +0 -1
- package/dist/core/dashboard-command/schedules.js +0 -47
- package/dist/core/dashboard-command/schedules.js.map +0 -1
- package/dist/core/dashboard-command/sessions.d.ts +0 -22
- package/dist/core/dashboard-command/sessions.d.ts.map +0 -1
- package/dist/core/dashboard-command/sessions.js +0 -43
- package/dist/core/dashboard-command/sessions.js.map +0 -1
- package/dist/core/dashboard-command/settings.d.ts +0 -21
- package/dist/core/dashboard-command/settings.d.ts.map +0 -1
- package/dist/core/dashboard-command/settings.js +0 -55
- package/dist/core/dashboard-command/settings.js.map +0 -1
- package/dist/core/dashboard-command/stub.d.ts +0 -16
- package/dist/core/dashboard-command/stub.d.ts.map +0 -1
- package/dist/core/dashboard-command/stub.js +0 -27
- package/dist/core/dashboard-command/stub.js.map +0 -1
- package/dist/core/dashboard-events.d.ts +0 -67
- package/dist/core/dashboard-events.d.ts.map +0 -1
- package/dist/core/dashboard-events.js +0 -23
- package/dist/core/dashboard-events.js.map +0 -1
- package/dist/core/dashboard-images.d.ts +0 -29
- package/dist/core/dashboard-images.d.ts.map +0 -1
- package/dist/core/dashboard-images.js +0 -113
- package/dist/core/dashboard-images.js.map +0 -1
- package/dist/core/dashboard-ipc-server.d.ts +0 -114
- package/dist/core/dashboard-ipc-server.d.ts.map +0 -1
- package/dist/core/dashboard-ipc-server.js +0 -4398
- package/dist/core/dashboard-ipc-server.js.map +0 -1
- package/dist/core/dashboard-locate.d.ts +0 -20
- package/dist/core/dashboard-locate.d.ts.map +0 -1
- package/dist/core/dashboard-locate.js +0 -26
- package/dist/core/dashboard-locate.js.map +0 -1
- package/dist/core/dashboard-rows.d.ts +0 -117
- package/dist/core/dashboard-rows.d.ts.map +0 -1
- package/dist/core/dashboard-rows.js +0 -206
- package/dist/core/dashboard-rows.js.map +0 -1
- package/dist/core/dashboard-secret.d.ts +0 -3
- package/dist/core/dashboard-secret.d.ts.map +0 -1
- package/dist/core/dashboard-secret.js +0 -7
- package/dist/core/dashboard-secret.js.map +0 -1
- package/dist/core/dashboard-url.d.ts +0 -79
- package/dist/core/dashboard-url.d.ts.map +0 -1
- package/dist/core/dashboard-url.js +0 -107
- package/dist/core/dashboard-url.js.map +0 -1
- package/dist/core/data-dir.d.ts +0 -24
- package/dist/core/data-dir.d.ts.map +0 -1
- package/dist/core/data-dir.js +0 -48
- package/dist/core/data-dir.js.map +0 -1
- package/dist/core/deferred-schedule-settlement.d.ts +0 -20
- package/dist/core/deferred-schedule-settlement.d.ts.map +0 -1
- package/dist/core/deferred-schedule-settlement.js +0 -18
- package/dist/core/deferred-schedule-settlement.js.map +0 -1
- package/dist/core/deferred-topic-binding.d.ts +0 -19
- package/dist/core/deferred-topic-binding.d.ts.map +0 -1
- package/dist/core/deferred-topic-binding.js +0 -55
- package/dist/core/deferred-topic-binding.js.map +0 -1
- package/dist/core/device-isolation-activation.d.ts +0 -56
- package/dist/core/device-isolation-activation.d.ts.map +0 -1
- package/dist/core/device-isolation-activation.js +0 -110
- package/dist/core/device-isolation-activation.js.map +0 -1
- package/dist/core/device-isolation-daemon.d.ts +0 -106
- package/dist/core/device-isolation-daemon.d.ts.map +0 -1
- package/dist/core/device-isolation-daemon.js +0 -674
- package/dist/core/device-isolation-daemon.js.map +0 -1
- package/dist/core/dispatch-registry.d.ts +0 -12
- package/dist/core/dispatch-registry.d.ts.map +0 -1
- package/dist/core/dispatch-registry.js +0 -33
- package/dist/core/dispatch-registry.js.map +0 -1
- package/dist/core/dispatch.d.ts +0 -364
- package/dist/core/dispatch.d.ts.map +0 -1
- package/dist/core/dispatch.js +0 -527
- package/dist/core/dispatch.js.map +0 -1
- package/dist/core/doc-comment-poller.d.ts +0 -36
- package/dist/core/doc-comment-poller.d.ts.map +0 -1
- package/dist/core/doc-comment-poller.js +0 -60
- package/dist/core/doc-comment-poller.js.map +0 -1
- package/dist/core/doc-comment-prompt.d.ts +0 -90
- package/dist/core/doc-comment-prompt.d.ts.map +0 -1
- package/dist/core/doc-comment-prompt.js +0 -252
- package/dist/core/doc-comment-prompt.js.map +0 -1
- package/dist/core/doc-watch-command.d.ts +0 -22
- package/dist/core/doc-watch-command.d.ts.map +0 -1
- package/dist/core/doc-watch-command.js +0 -41
- package/dist/core/doc-watch-command.js.map +0 -1
- package/dist/core/github-auth.d.ts +0 -13
- package/dist/core/github-auth.d.ts.map +0 -1
- package/dist/core/github-auth.js +0 -82
- package/dist/core/github-auth.js.map +0 -1
- package/dist/core/host-overload-alert.d.ts +0 -232
- package/dist/core/host-overload-alert.d.ts.map +0 -1
- package/dist/core/host-overload-alert.js +0 -354
- package/dist/core/host-overload-alert.js.map +0 -1
- package/dist/core/idle-worker-sweeper.d.ts +0 -39
- package/dist/core/idle-worker-sweeper.d.ts.map +0 -1
- package/dist/core/idle-worker-sweeper.js +0 -63
- package/dist/core/idle-worker-sweeper.js.map +0 -1
- package/dist/core/inflight-input-tracker.d.ts +0 -54
- package/dist/core/inflight-input-tracker.d.ts.map +0 -1
- package/dist/core/inflight-input-tracker.js +0 -64
- package/dist/core/inflight-input-tracker.js.map +0 -1
- package/dist/core/inherit-peer.d.ts +0 -19
- package/dist/core/inherit-peer.d.ts.map +0 -1
- package/dist/core/inherit-peer.js +0 -55
- package/dist/core/inherit-peer.js.map +0 -1
- package/dist/core/initial-user-turn.d.ts +0 -14
- package/dist/core/initial-user-turn.d.ts.map +0 -1
- package/dist/core/initial-user-turn.js +0 -65
- package/dist/core/initial-user-turn.js.map +0 -1
- package/dist/core/inject-queue-policy.d.ts +0 -70
- package/dist/core/inject-queue-policy.d.ts.map +0 -1
- package/dist/core/inject-queue-policy.js +0 -30
- package/dist/core/inject-queue-policy.js.map +0 -1
- package/dist/core/input-turn-dedupe.d.ts +0 -20
- package/dist/core/input-turn-dedupe.d.ts.map +0 -1
- package/dist/core/input-turn-dedupe.js +0 -57
- package/dist/core/input-turn-dedupe.js.map +0 -1
- package/dist/core/local-terminal-opener.d.ts +0 -43
- package/dist/core/local-terminal-opener.d.ts.map +0 -1
- package/dist/core/local-terminal-opener.js +0 -230
- package/dist/core/local-terminal-opener.js.map +0 -1
- package/dist/core/maintenance-schedule.d.ts +0 -34
- package/dist/core/maintenance-schedule.d.ts.map +0 -1
- package/dist/core/maintenance-schedule.js +0 -72
- package/dist/core/maintenance-schedule.js.map +0 -1
- package/dist/core/maintenance.d.ts +0 -114
- package/dist/core/maintenance.d.ts.map +0 -1
- package/dist/core/maintenance.js +0 -340
- package/dist/core/maintenance.js.map +0 -1
- package/dist/core/managed-origin-capability.d.ts +0 -37
- package/dist/core/managed-origin-capability.d.ts.map +0 -1
- package/dist/core/managed-origin-capability.js +0 -100
- package/dist/core/managed-origin-capability.js.map +0 -1
- package/dist/core/passthrough-commands.d.ts +0 -56
- package/dist/core/passthrough-commands.d.ts.map +0 -1
- package/dist/core/passthrough-commands.js +0 -120
- package/dist/core/passthrough-commands.js.map +0 -1
- package/dist/core/pending-response.d.ts +0 -4
- package/dist/core/pending-response.d.ts.map +0 -1
- package/dist/core/pending-response.js +0 -11
- package/dist/core/pending-response.js.map +0 -1
- package/dist/core/per-bot-env.d.ts +0 -38
- package/dist/core/per-bot-env.d.ts.map +0 -1
- package/dist/core/per-bot-env.js +0 -94
- package/dist/core/per-bot-env.js.map +0 -1
- package/dist/core/persistent-backend.d.ts +0 -107
- package/dist/core/persistent-backend.d.ts.map +0 -1
- package/dist/core/persistent-backend.js +0 -235
- package/dist/core/persistent-backend.js.map +0 -1
- package/dist/core/plugins/cli-generation.d.ts +0 -30
- package/dist/core/plugins/cli-generation.d.ts.map +0 -1
- package/dist/core/plugins/cli-generation.js +0 -62
- package/dist/core/plugins/cli-generation.js.map +0 -1
- package/dist/core/plugins/convention-scanner.d.ts +0 -4
- package/dist/core/plugins/convention-scanner.d.ts.map +0 -1
- package/dist/core/plugins/convention-scanner.js +0 -202
- package/dist/core/plugins/convention-scanner.js.map +0 -1
- package/dist/core/plugins/dependencies.d.ts +0 -5
- package/dist/core/plugins/dependencies.d.ts.map +0 -1
- package/dist/core/plugins/dependencies.js +0 -50
- package/dist/core/plugins/dependencies.js.map +0 -1
- package/dist/core/plugins/effective.d.ts +0 -5
- package/dist/core/plugins/effective.d.ts.map +0 -1
- package/dist/core/plugins/effective.js +0 -16
- package/dist/core/plugins/effective.js.map +0 -1
- package/dist/core/plugins/ids.d.ts +0 -4
- package/dist/core/plugins/ids.d.ts.map +0 -1
- package/dist/core/plugins/ids.js +0 -30
- package/dist/core/plugins/ids.js.map +0 -1
- package/dist/core/plugins/init.d.ts +0 -23
- package/dist/core/plugins/init.d.ts.map +0 -1
- package/dist/core/plugins/init.js +0 -332
- package/dist/core/plugins/init.js.map +0 -1
- package/dist/core/plugins/install.d.ts +0 -14
- package/dist/core/plugins/install.d.ts.map +0 -1
- package/dist/core/plugins/install.js +0 -234
- package/dist/core/plugins/install.js.map +0 -1
- package/dist/core/plugins/manifest.d.ts +0 -4
- package/dist/core/plugins/manifest.d.ts.map +0 -1
- package/dist/core/plugins/manifest.js +0 -78
- package/dist/core/plugins/manifest.js.map +0 -1
- package/dist/core/plugins/materializer.d.ts +0 -16
- package/dist/core/plugins/materializer.d.ts.map +0 -1
- package/dist/core/plugins/materializer.js +0 -73
- package/dist/core/plugins/materializer.js.map +0 -1
- package/dist/core/plugins/mcp/environment.d.ts +0 -12
- package/dist/core/plugins/mcp/environment.d.ts.map +0 -1
- package/dist/core/plugins/mcp/environment.js +0 -17
- package/dist/core/plugins/mcp/environment.js.map +0 -1
- package/dist/core/plugins/mcp/gateway-installer.d.ts +0 -16
- package/dist/core/plugins/mcp/gateway-installer.d.ts.map +0 -1
- package/dist/core/plugins/mcp/gateway-installer.js +0 -273
- package/dist/core/plugins/mcp/gateway-installer.js.map +0 -1
- package/dist/core/plugins/mcp/gateway.d.ts +0 -63
- package/dist/core/plugins/mcp/gateway.d.ts.map +0 -1
- package/dist/core/plugins/mcp/gateway.js +0 -620
- package/dist/core/plugins/mcp/gateway.js.map +0 -1
- package/dist/core/plugins/mcp/host.d.ts +0 -18
- package/dist/core/plugins/mcp/host.d.ts.map +0 -1
- package/dist/core/plugins/mcp/host.js +0 -126
- package/dist/core/plugins/mcp/host.js.map +0 -1
- package/dist/core/plugins/mcp/private-store.d.ts +0 -15
- package/dist/core/plugins/mcp/private-store.d.ts.map +0 -1
- package/dist/core/plugins/mcp/private-store.js +0 -162
- package/dist/core/plugins/mcp/private-store.js.map +0 -1
- package/dist/core/plugins/mcp/session-runtime.d.ts +0 -25
- package/dist/core/plugins/mcp/session-runtime.d.ts.map +0 -1
- package/dist/core/plugins/mcp/session-runtime.js +0 -76
- package/dist/core/plugins/mcp/session-runtime.js.map +0 -1
- package/dist/core/plugins/mcp/socket-auth.d.ts +0 -9
- package/dist/core/plugins/mcp/socket-auth.d.ts.map +0 -1
- package/dist/core/plugins/mcp/socket-auth.js +0 -94
- package/dist/core/plugins/mcp/socket-auth.js.map +0 -1
- package/dist/core/plugins/paths.d.ts +0 -17
- package/dist/core/plugins/paths.d.ts.map +0 -1
- package/dist/core/plugins/paths.js +0 -71
- package/dist/core/plugins/paths.js.map +0 -1
- package/dist/core/plugins/pm2.d.ts +0 -13
- package/dist/core/plugins/pm2.d.ts.map +0 -1
- package/dist/core/plugins/pm2.js +0 -73
- package/dist/core/plugins/pm2.js.map +0 -1
- package/dist/core/plugins/runtime.d.ts +0 -54
- package/dist/core/plugins/runtime.d.ts.map +0 -1
- package/dist/core/plugins/runtime.js +0 -158
- package/dist/core/plugins/runtime.js.map +0 -1
- package/dist/core/plugins/service-manager.d.ts +0 -46
- package/dist/core/plugins/service-manager.d.ts.map +0 -1
- package/dist/core/plugins/service-manager.js +0 -403
- package/dist/core/plugins/service-manager.js.map +0 -1
- package/dist/core/plugins/session-manifest.d.ts +0 -25
- package/dist/core/plugins/session-manifest.d.ts.map +0 -1
- package/dist/core/plugins/session-manifest.js +0 -58
- package/dist/core/plugins/session-manifest.js.map +0 -1
- package/dist/core/plugins/skills.d.ts +0 -7
- package/dist/core/plugins/skills.d.ts.map +0 -1
- package/dist/core/plugins/skills.js +0 -36
- package/dist/core/plugins/skills.js.map +0 -1
- package/dist/core/plugins/types.d.ts +0 -139
- package/dist/core/plugins/types.d.ts.map +0 -1
- package/dist/core/plugins/types.js +0 -2
- package/dist/core/plugins/types.js.map +0 -1
- package/dist/core/reply-target.d.ts +0 -62
- package/dist/core/reply-target.d.ts.map +0 -1
- package/dist/core/reply-target.js +0 -122
- package/dist/core/reply-target.js.map +0 -1
- package/dist/core/resource-monitor/attribution.d.ts +0 -70
- package/dist/core/resource-monitor/attribution.d.ts.map +0 -1
- package/dist/core/resource-monitor/attribution.js +0 -238
- package/dist/core/resource-monitor/attribution.js.map +0 -1
- package/dist/core/resource-monitor/darwin.d.ts +0 -145
- package/dist/core/resource-monitor/darwin.d.ts.map +0 -1
- package/dist/core/resource-monitor/darwin.js +0 -360
- package/dist/core/resource-monitor/darwin.js.map +0 -1
- package/dist/core/resource-monitor/procfs.d.ts +0 -22
- package/dist/core/resource-monitor/procfs.d.ts.map +0 -1
- package/dist/core/resource-monitor/procfs.js +0 -140
- package/dist/core/resource-monitor/procfs.js.map +0 -1
- package/dist/core/resource-monitor/ring-buffer.d.ts +0 -15
- package/dist/core/resource-monitor/ring-buffer.d.ts.map +0 -1
- package/dist/core/resource-monitor/ring-buffer.js +0 -61
- package/dist/core/resource-monitor/ring-buffer.js.map +0 -1
- package/dist/core/resource-monitor/runtime.d.ts +0 -31
- package/dist/core/resource-monitor/runtime.d.ts.map +0 -1
- package/dist/core/resource-monitor/runtime.js +0 -92
- package/dist/core/resource-monitor/runtime.js.map +0 -1
- package/dist/core/resource-monitor/top-selector.d.ts +0 -18
- package/dist/core/resource-monitor/top-selector.d.ts.map +0 -1
- package/dist/core/resource-monitor/top-selector.js +0 -57
- package/dist/core/resource-monitor/top-selector.js.map +0 -1
- package/dist/core/resource-monitor/types.d.ts +0 -181
- package/dist/core/resource-monitor/types.d.ts.map +0 -1
- package/dist/core/resource-monitor/types.js +0 -2
- package/dist/core/resource-monitor/types.js.map +0 -1
- package/dist/core/restart-coordinator.d.ts +0 -28
- package/dist/core/restart-coordinator.d.ts.map +0 -1
- package/dist/core/restart-coordinator.js +0 -82
- package/dist/core/restart-coordinator.js.map +0 -1
- package/dist/core/restart-followup-policy.d.ts +0 -112
- package/dist/core/restart-followup-policy.d.ts.map +0 -1
- package/dist/core/restart-followup-policy.js +0 -49
- package/dist/core/restart-followup-policy.js.map +0 -1
- package/dist/core/restart-report.d.ts +0 -63
- package/dist/core/restart-report.d.ts.map +0 -1
- package/dist/core/restart-report.js +0 -122
- package/dist/core/restart-report.js.map +0 -1
- package/dist/core/role-library.d.ts +0 -62
- package/dist/core/role-library.d.ts.map +0 -1
- package/dist/core/role-library.js +0 -183
- package/dist/core/role-library.js.map +0 -1
- package/dist/core/role-resolver.d.ts +0 -81
- package/dist/core/role-resolver.d.ts.map +0 -1
- package/dist/core/role-resolver.js +0 -306
- package/dist/core/role-resolver.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -173
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -799
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/session-activity.d.ts +0 -43
- package/dist/core/session-activity.d.ts.map +0 -1
- package/dist/core/session-activity.js +0 -131
- package/dist/core/session-activity.js.map +0 -1
- package/dist/core/session-board.d.ts +0 -13
- package/dist/core/session-board.d.ts.map +0 -1
- package/dist/core/session-board.js +0 -28
- package/dist/core/session-board.js.map +0 -1
- package/dist/core/session-create.d.ts +0 -109
- package/dist/core/session-create.d.ts.map +0 -1
- package/dist/core/session-create.js +0 -183
- package/dist/core/session-create.js.map +0 -1
- package/dist/core/session-cwd.d.ts +0 -14
- package/dist/core/session-cwd.d.ts.map +0 -1
- package/dist/core/session-cwd.js +0 -25
- package/dist/core/session-cwd.js.map +0 -1
- package/dist/core/session-discovery.d.ts +0 -241
- package/dist/core/session-discovery.d.ts.map +0 -1
- package/dist/core/session-discovery.js +0 -1127
- package/dist/core/session-discovery.js.map +0 -1
- package/dist/core/session-liveness.d.ts +0 -41
- package/dist/core/session-liveness.d.ts.map +0 -1
- package/dist/core/session-liveness.js +0 -50
- package/dist/core/session-liveness.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -383
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -2545
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/session-marker.d.ts +0 -56
- package/dist/core/session-marker.d.ts.map +0 -1
- package/dist/core/session-marker.js +0 -240
- package/dist/core/session-marker.js.map +0 -1
- package/dist/core/session-message-preview.d.ts +0 -20
- package/dist/core/session-message-preview.d.ts.map +0 -1
- package/dist/core/session-message-preview.js +0 -188
- package/dist/core/session-message-preview.js.map +0 -1
- package/dist/core/session-ready-handshake.d.ts +0 -11
- package/dist/core/session-ready-handshake.d.ts.map +0 -1
- package/dist/core/session-ready-handshake.js +0 -41
- package/dist/core/session-ready-handshake.js.map +0 -1
- package/dist/core/session-rename.d.ts +0 -25
- package/dist/core/session-rename.d.ts.map +0 -1
- package/dist/core/session-rename.js +0 -43
- package/dist/core/session-rename.js.map +0 -1
- package/dist/core/session-row-enrichment.d.ts +0 -15
- package/dist/core/session-row-enrichment.d.ts.map +0 -1
- package/dist/core/session-row-enrichment.js +0 -93
- package/dist/core/session-row-enrichment.js.map +0 -1
- package/dist/core/session-title.d.ts +0 -23
- package/dist/core/session-title.d.ts.map +0 -1
- package/dist/core/session-title.js +0 -88
- package/dist/core/session-title.js.map +0 -1
- package/dist/core/silent-schedule-turns.d.ts +0 -5
- package/dist/core/silent-schedule-turns.d.ts.map +0 -1
- package/dist/core/silent-schedule-turns.js +0 -47
- package/dist/core/silent-schedule-turns.js.map +0 -1
- package/dist/core/skills/claude-plugin-delivery.d.ts +0 -6
- package/dist/core/skills/claude-plugin-delivery.d.ts.map +0 -1
- package/dist/core/skills/claude-plugin-delivery.js +0 -21
- package/dist/core/skills/claude-plugin-delivery.js.map +0 -1
- package/dist/core/skills/cli-admin-command.d.ts +0 -7
- package/dist/core/skills/cli-admin-command.d.ts.map +0 -1
- package/dist/core/skills/cli-admin-command.js +0 -359
- package/dist/core/skills/cli-admin-command.js.map +0 -1
- package/dist/core/skills/cli-session-command.d.ts +0 -7
- package/dist/core/skills/cli-session-command.d.ts.map +0 -1
- package/dist/core/skills/cli-session-command.js +0 -72
- package/dist/core/skills/cli-session-command.js.map +0 -1
- package/dist/core/skills/delivery.d.ts +0 -11
- package/dist/core/skills/delivery.d.ts.map +0 -1
- package/dist/core/skills/delivery.js +0 -22
- package/dist/core/skills/delivery.js.map +0 -1
- package/dist/core/skills/discovery.d.ts +0 -26
- package/dist/core/skills/discovery.d.ts.map +0 -1
- package/dist/core/skills/discovery.js +0 -131
- package/dist/core/skills/discovery.js.map +0 -1
- package/dist/core/skills/frontmatter.d.ts +0 -9
- package/dist/core/skills/frontmatter.d.ts.map +0 -1
- package/dist/core/skills/frontmatter.js +0 -42
- package/dist/core/skills/frontmatter.js.map +0 -1
- package/dist/core/skills/im-command.d.ts +0 -9
- package/dist/core/skills/im-command.d.ts.map +0 -1
- package/dist/core/skills/im-command.js +0 -109
- package/dist/core/skills/im-command.js.map +0 -1
- package/dist/core/skills/manifest-store.d.ts +0 -5
- package/dist/core/skills/manifest-store.d.ts.map +0 -1
- package/dist/core/skills/manifest-store.js +0 -29
- package/dist/core/skills/manifest-store.js.map +0 -1
- package/dist/core/skills/package.d.ts +0 -13
- package/dist/core/skills/package.d.ts.map +0 -1
- package/dist/core/skills/package.js +0 -35
- package/dist/core/skills/package.js.map +0 -1
- package/dist/core/skills/policy.d.ts +0 -19
- package/dist/core/skills/policy.d.ts.map +0 -1
- package/dist/core/skills/policy.js +0 -73
- package/dist/core/skills/policy.js.map +0 -1
- package/dist/core/skills/prompt.d.ts +0 -3
- package/dist/core/skills/prompt.d.ts.map +0 -1
- package/dist/core/skills/prompt.js +0 -25
- package/dist/core/skills/prompt.js.map +0 -1
- package/dist/core/skills/references.d.ts +0 -21
- package/dist/core/skills/references.d.ts.map +0 -1
- package/dist/core/skills/references.js +0 -27
- package/dist/core/skills/references.js.map +0 -1
- package/dist/core/skills/registry-paths.d.ts +0 -5
- package/dist/core/skills/registry-paths.d.ts.map +0 -1
- package/dist/core/skills/registry-paths.js +0 -15
- package/dist/core/skills/registry-paths.js.map +0 -1
- package/dist/core/skills/resource-reader.d.ts +0 -9
- package/dist/core/skills/resource-reader.d.ts.map +0 -1
- package/dist/core/skills/resource-reader.js +0 -97
- package/dist/core/skills/resource-reader.js.map +0 -1
- package/dist/core/skills/session-resolver.d.ts +0 -15
- package/dist/core/skills/session-resolver.d.ts.map +0 -1
- package/dist/core/skills/session-resolver.js +0 -25
- package/dist/core/skills/session-resolver.js.map +0 -1
- package/dist/core/skills/session-runtime.d.ts +0 -15
- package/dist/core/skills/session-runtime.d.ts.map +0 -1
- package/dist/core/skills/session-runtime.js +0 -37
- package/dist/core/skills/session-runtime.js.map +0 -1
- package/dist/core/skills/sources.d.ts +0 -53
- package/dist/core/skills/sources.d.ts.map +0 -1
- package/dist/core/skills/sources.js +0 -257
- package/dist/core/skills/sources.js.map +0 -1
- package/dist/core/skills/types.d.ts +0 -83
- package/dist/core/skills/types.d.ts.map +0 -1
- package/dist/core/skills/types.js +0 -2
- package/dist/core/skills/types.js.map +0 -1
- package/dist/core/slash-inject.d.ts +0 -15
- package/dist/core/slash-inject.d.ts.map +0 -1
- package/dist/core/slash-inject.js +0 -25
- package/dist/core/slash-inject.js.map +0 -1
- package/dist/core/startup-commands.d.ts +0 -57
- package/dist/core/startup-commands.d.ts.map +0 -1
- package/dist/core/startup-commands.js +0 -85
- package/dist/core/startup-commands.js.map +0 -1
- package/dist/core/terminal-proxy.d.ts +0 -39
- package/dist/core/terminal-proxy.d.ts.map +0 -1
- package/dist/core/terminal-proxy.js +0 -160
- package/dist/core/terminal-proxy.js.map +0 -1
- package/dist/core/terminal-url.d.ts +0 -47
- package/dist/core/terminal-url.d.ts.map +0 -1
- package/dist/core/terminal-url.js +0 -87
- package/dist/core/terminal-url.js.map +0 -1
- package/dist/core/terminal-write-auth.d.ts +0 -75
- package/dist/core/terminal-write-auth.d.ts.map +0 -1
- package/dist/core/terminal-write-auth.js +0 -149
- package/dist/core/terminal-write-auth.js.map +0 -1
- package/dist/core/tmux-recovery.d.ts +0 -11
- package/dist/core/tmux-recovery.d.ts.map +0 -1
- package/dist/core/tmux-recovery.js +0 -19
- package/dist/core/tmux-recovery.js.map +0 -1
- package/dist/core/trigger-final-suppression.d.ts +0 -24
- package/dist/core/trigger-final-suppression.d.ts.map +0 -1
- package/dist/core/trigger-final-suppression.js +0 -97
- package/dist/core/trigger-final-suppression.js.map +0 -1
- package/dist/core/trigger-session.d.ts +0 -56
- package/dist/core/trigger-session.d.ts.map +0 -1
- package/dist/core/trigger-session.js +0 -637
- package/dist/core/trigger-session.js.map +0 -1
- package/dist/core/types.d.ts +0 -441
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -128
- package/dist/core/types.js.map +0 -1
- package/dist/core/update-check.d.ts +0 -94
- package/dist/core/update-check.d.ts.map +0 -1
- package/dist/core/update-check.js +0 -216
- package/dist/core/update-check.js.map +0 -1
- package/dist/core/vc-meeting-prepare-command.d.ts +0 -22
- package/dist/core/vc-meeting-prepare-command.d.ts.map +0 -1
- package/dist/core/vc-meeting-prepare-command.js +0 -50
- package/dist/core/vc-meeting-prepare-command.js.map +0 -1
- package/dist/core/worker-ipc.d.ts +0 -11
- package/dist/core/worker-ipc.d.ts.map +0 -1
- package/dist/core/worker-ipc.js +0 -26
- package/dist/core/worker-ipc.js.map +0 -1
- package/dist/core/worker-pool.d.ts +0 -788
- package/dist/core/worker-pool.d.ts.map +0 -1
- package/dist/core/worker-pool.js +0 -6914
- package/dist/core/worker-pool.js.map +0 -1
- package/dist/core/working-dir.d.ts +0 -27
- package/dist/core/working-dir.d.ts.map +0 -1
- package/dist/core/working-dir.js +0 -52
- package/dist/core/working-dir.js.map +0 -1
- package/dist/core/zellij-adopt-discovery.d.ts +0 -42
- package/dist/core/zellij-adopt-discovery.d.ts.map +0 -1
- package/dist/core/zellij-adopt-discovery.js +0 -259
- package/dist/core/zellij-adopt-discovery.js.map +0 -1
- package/dist/core/zellij-session-discovery.d.ts +0 -76
- package/dist/core/zellij-session-discovery.d.ts.map +0 -1
- package/dist/core/zellij-session-discovery.js +0 -260
- package/dist/core/zellij-session-discovery.js.map +0 -1
- package/dist/daemon-internal-client-wrapper.d.ts +0 -41
- package/dist/daemon-internal-client-wrapper.d.ts.map +0 -1
- package/dist/daemon-internal-client-wrapper.js +0 -65
- package/dist/daemon-internal-client-wrapper.js.map +0 -1
- package/dist/daemon.d.ts +0 -610
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js +0 -16756
- package/dist/daemon.js.map +0 -1
- package/dist/dashboard/aggregator.d.ts +0 -59
- package/dist/dashboard/aggregator.d.ts.map +0 -1
- package/dist/dashboard/aggregator.js +0 -176
- package/dist/dashboard/aggregator.js.map +0 -1
- package/dist/dashboard/auth.d.ts +0 -106
- package/dist/dashboard/auth.d.ts.map +0 -1
- package/dist/dashboard/auth.js +0 -253
- package/dist/dashboard/auth.js.map +0 -1
- package/dist/dashboard/bot-onboarding.d.ts +0 -320
- package/dist/dashboard/bot-onboarding.d.ts.map +0 -1
- package/dist/dashboard/bot-onboarding.js +0 -1666
- package/dist/dashboard/bot-onboarding.js.map +0 -1
- package/dist/dashboard/bot-payload.d.ts +0 -94
- package/dist/dashboard/bot-payload.d.ts.map +0 -1
- package/dist/dashboard/bot-payload.js +0 -96
- package/dist/dashboard/bot-payload.js.map +0 -1
- package/dist/dashboard/card-model-types.d.ts +0 -50
- package/dist/dashboard/card-model-types.d.ts.map +0 -1
- package/dist/dashboard/card-model-types.js +0 -9
- package/dist/dashboard/card-model-types.js.map +0 -1
- package/dist/dashboard/compat.d.ts +0 -119
- package/dist/dashboard/compat.d.ts.map +0 -1
- package/dist/dashboard/compat.js +0 -102
- package/dist/dashboard/compat.js.map +0 -1
- package/dist/dashboard/connector-api.d.ts +0 -3
- package/dist/dashboard/connector-api.d.ts.map +0 -1
- package/dist/dashboard/connector-api.js +0 -453
- package/dist/dashboard/connector-api.js.map +0 -1
- package/dist/dashboard/daemon-internal-api.d.ts +0 -88
- package/dist/dashboard/daemon-internal-api.d.ts.map +0 -1
- package/dist/dashboard/daemon-internal-api.js +0 -476
- package/dist/dashboard/daemon-internal-api.js.map +0 -1
- package/dist/dashboard/daemon-internal-auth.d.ts +0 -124
- package/dist/dashboard/daemon-internal-auth.d.ts.map +0 -1
- package/dist/dashboard/daemon-internal-auth.js +0 -188
- package/dist/dashboard/daemon-internal-auth.js.map +0 -1
- package/dist/dashboard/daemon-internal-client.d.ts +0 -67
- package/dist/dashboard/daemon-internal-client.d.ts.map +0 -1
- package/dist/dashboard/daemon-internal-client.js +0 -156
- package/dist/dashboard/daemon-internal-client.js.map +0 -1
- package/dist/dashboard/dashboard-admins.d.ts +0 -8
- package/dist/dashboard/dashboard-admins.d.ts.map +0 -1
- package/dist/dashboard/dashboard-admins.js +0 -15
- package/dist/dashboard/dashboard-admins.js.map +0 -1
- package/dist/dashboard/debug-terminal.d.ts +0 -18
- package/dist/dashboard/debug-terminal.d.ts.map +0 -1
- package/dist/dashboard/debug-terminal.js +0 -338
- package/dist/dashboard/debug-terminal.js.map +0 -1
- package/dist/dashboard/desktop-asks.d.ts +0 -21
- package/dist/dashboard/desktop-asks.d.ts.map +0 -1
- package/dist/dashboard/desktop-asks.js +0 -49
- package/dist/dashboard/desktop-asks.js.map +0 -1
- package/dist/dashboard/federated-group-core.d.ts +0 -75
- package/dist/dashboard/federated-group-core.d.ts.map +0 -1
- package/dist/dashboard/federated-group-core.js +0 -236
- package/dist/dashboard/federated-group-core.js.map +0 -1
- package/dist/dashboard/federation-api.d.ts +0 -43
- package/dist/dashboard/federation-api.d.ts.map +0 -1
- package/dist/dashboard/federation-api.js +0 -580
- package/dist/dashboard/federation-api.js.map +0 -1
- package/dist/dashboard/federation-spoke-api.d.ts +0 -129
- package/dist/dashboard/federation-spoke-api.d.ts.map +0 -1
- package/dist/dashboard/federation-spoke-api.js +0 -809
- package/dist/dashboard/federation-spoke-api.js.map +0 -1
- package/dist/dashboard/feishu-login.d.ts +0 -64
- package/dist/dashboard/feishu-login.d.ts.map +0 -1
- package/dist/dashboard/feishu-login.js +0 -99
- package/dist/dashboard/feishu-login.js.map +0 -1
- package/dist/dashboard/groups-action-helpers.d.ts +0 -71
- package/dist/dashboard/groups-action-helpers.d.ts.map +0 -1
- package/dist/dashboard/groups-action-helpers.js +0 -150
- package/dist/dashboard/groups-action-helpers.js.map +0 -1
- package/dist/dashboard/groups-card-model.d.ts +0 -120
- package/dist/dashboard/groups-card-model.d.ts.map +0 -1
- package/dist/dashboard/groups-card-model.js +0 -175
- package/dist/dashboard/groups-card-model.js.map +0 -1
- package/dist/dashboard/groups-matrix-snapshot.d.ts +0 -56
- package/dist/dashboard/groups-matrix-snapshot.d.ts.map +0 -1
- package/dist/dashboard/groups-matrix-snapshot.js +0 -127
- package/dist/dashboard/groups-matrix-snapshot.js.map +0 -1
- package/dist/dashboard/hd2d-assets.d.ts +0 -20
- package/dist/dashboard/hd2d-assets.d.ts.map +0 -1
- package/dist/dashboard/hd2d-assets.js +0 -216
- package/dist/dashboard/hd2d-assets.js.map +0 -1
- package/dist/dashboard/history-senders.d.ts +0 -40
- package/dist/dashboard/history-senders.d.ts.map +0 -1
- package/dist/dashboard/history-senders.js +0 -60
- package/dist/dashboard/history-senders.js.map +0 -1
- package/dist/dashboard/http.d.ts +0 -4
- package/dist/dashboard/http.d.ts.map +0 -1
- package/dist/dashboard/http.js +0 -6
- package/dist/dashboard/http.js.map +0 -1
- package/dist/dashboard/operator-selector.d.ts +0 -20
- package/dist/dashboard/operator-selector.d.ts.map +0 -1
- package/dist/dashboard/operator-selector.js +0 -39
- package/dist/dashboard/operator-selector.js.map +0 -1
- package/dist/dashboard/public-redact.d.ts +0 -32
- package/dist/dashboard/public-redact.d.ts.map +0 -1
- package/dist/dashboard/public-redact.js +0 -137
- package/dist/dashboard/public-redact.js.map +0 -1
- package/dist/dashboard/registry.d.ts +0 -56
- package/dist/dashboard/registry.d.ts.map +0 -1
- package/dist/dashboard/registry.js +0 -99
- package/dist/dashboard/registry.js.map +0 -1
- package/dist/dashboard/resource-monitor-service.d.ts +0 -56
- package/dist/dashboard/resource-monitor-service.d.ts.map +0 -1
- package/dist/dashboard/resource-monitor-service.js +0 -462
- package/dist/dashboard/resource-monitor-service.js.map +0 -1
- package/dist/dashboard/roles-batch.d.ts +0 -31
- package/dist/dashboard/roles-batch.d.ts.map +0 -1
- package/dist/dashboard/roles-batch.js +0 -87
- package/dist/dashboard/roles-batch.js.map +0 -1
- package/dist/dashboard/schedule-card-model.d.ts +0 -185
- package/dist/dashboard/schedule-card-model.d.ts.map +0 -1
- package/dist/dashboard/schedule-card-model.js +0 -320
- package/dist/dashboard/schedule-card-model.js.map +0 -1
- package/dist/dashboard/session-card-model.d.ts +0 -83
- package/dist/dashboard/session-card-model.d.ts.map +0 -1
- package/dist/dashboard/session-card-model.js +0 -207
- package/dist/dashboard/session-card-model.js.map +0 -1
- package/dist/dashboard/session-cleanup.d.ts +0 -31
- package/dist/dashboard/session-cleanup.d.ts.map +0 -1
- package/dist/dashboard/session-cleanup.js +0 -49
- package/dist/dashboard/session-cleanup.js.map +0 -1
- package/dist/dashboard/session-presentation.d.ts +0 -16
- package/dist/dashboard/session-presentation.d.ts.map +0 -1
- package/dist/dashboard/session-presentation.js +0 -62
- package/dist/dashboard/session-presentation.js.map +0 -1
- package/dist/dashboard/settings-card-model.d.ts +0 -76
- package/dist/dashboard/settings-card-model.d.ts.map +0 -1
- package/dist/dashboard/settings-card-model.js +0 -109
- package/dist/dashboard/settings-card-model.js.map +0 -1
- package/dist/dashboard/settings-owner-resolver.d.ts +0 -32
- package/dist/dashboard/settings-owner-resolver.d.ts.map +0 -1
- package/dist/dashboard/settings-owner-resolver.js +0 -43
- package/dist/dashboard/settings-owner-resolver.js.map +0 -1
- package/dist/dashboard/settings-write-applier.d.ts +0 -219
- package/dist/dashboard/settings-write-applier.d.ts.map +0 -1
- package/dist/dashboard/settings-write-applier.js +0 -467
- package/dist/dashboard/settings-write-applier.js.map +0 -1
- package/dist/dashboard/skill-install-request.d.ts +0 -46
- package/dist/dashboard/skill-install-request.d.ts.map +0 -1
- package/dist/dashboard/skill-install-request.js +0 -150
- package/dist/dashboard/skill-install-request.js.map +0 -1
- package/dist/dashboard/stale-chunk-module.d.ts +0 -3
- package/dist/dashboard/stale-chunk-module.d.ts.map +0 -1
- package/dist/dashboard/stale-chunk-module.js +0 -55
- package/dist/dashboard/stale-chunk-module.js.map +0 -1
- package/dist/dashboard/team-group.d.ts +0 -39
- package/dist/dashboard/team-group.d.ts.map +0 -1
- package/dist/dashboard/team-group.js +0 -23
- package/dist/dashboard/team-group.js.map +0 -1
- package/dist/dashboard/trigger-api.d.ts +0 -25
- package/dist/dashboard/trigger-api.d.ts.map +0 -1
- package/dist/dashboard/trigger-api.js +0 -153
- package/dist/dashboard/trigger-api.js.map +0 -1
- package/dist/dashboard/v3-runs-api.d.ts +0 -29
- package/dist/dashboard/v3-runs-api.d.ts.map +0 -1
- package/dist/dashboard/v3-runs-api.js +0 -184
- package/dist/dashboard/v3-runs-api.js.map +0 -1
- package/dist/dashboard/vc-consumer-profiles-api.d.ts +0 -110
- package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +0 -1
- package/dist/dashboard/vc-consumer-profiles-api.js +0 -325
- package/dist/dashboard/vc-consumer-profiles-api.js.map +0 -1
- package/dist/dashboard/web/app.d.ts +0 -3
- package/dist/dashboard/web/app.d.ts.map +0 -1
- package/dist/dashboard/web/app.js +0 -962
- package/dist/dashboard/web/app.js.map +0 -1
- package/dist/dashboard/web/auth-login.d.ts +0 -3
- package/dist/dashboard/web/auth-login.d.ts.map +0 -1
- package/dist/dashboard/web/auth-login.js +0 -19
- package/dist/dashboard/web/auth-login.js.map +0 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +0 -78
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +0 -1
- package/dist/dashboard/web/bot-defaults-page.js +0 -2486
- package/dist/dashboard/web/bot-defaults-page.js.map +0 -1
- package/dist/dashboard/web/bot-defaults.d.ts +0 -163
- package/dist/dashboard/web/bot-defaults.d.ts.map +0 -1
- package/dist/dashboard/web/bot-defaults.js +0 -127
- package/dist/dashboard/web/bot-defaults.js.map +0 -1
- package/dist/dashboard/web/bot-onboarding.d.ts +0 -9
- package/dist/dashboard/web/bot-onboarding.d.ts.map +0 -1
- package/dist/dashboard/web/bot-onboarding.js +0 -421
- package/dist/dashboard/web/bot-onboarding.js.map +0 -1
- package/dist/dashboard/web/client-shell.d.ts +0 -29
- package/dist/dashboard/web/client-shell.d.ts.map +0 -1
- package/dist/dashboard/web/client-shell.js +0 -89
- package/dist/dashboard/web/client-shell.js.map +0 -1
- package/dist/dashboard/web/clipboard.d.ts +0 -2
- package/dist/dashboard/web/clipboard.d.ts.map +0 -1
- package/dist/dashboard/web/clipboard.js +0 -42
- package/dist/dashboard/web/clipboard.js.map +0 -1
- package/dist/dashboard/web/connectors-page.d.ts +0 -23
- package/dist/dashboard/web/connectors-page.d.ts.map +0 -1
- package/dist/dashboard/web/connectors-page.js +0 -516
- package/dist/dashboard/web/connectors-page.js.map +0 -1
- package/dist/dashboard/web/create-session-composer.d.ts +0 -35
- package/dist/dashboard/web/create-session-composer.d.ts.map +0 -1
- package/dist/dashboard/web/create-session-composer.js +0 -70
- package/dist/dashboard/web/create-session-composer.js.map +0 -1
- package/dist/dashboard/web/create-session-entry.d.ts +0 -4
- package/dist/dashboard/web/create-session-entry.d.ts.map +0 -1
- package/dist/dashboard/web/create-session-entry.js +0 -17
- package/dist/dashboard/web/create-session-entry.js.map +0 -1
- package/dist/dashboard/web/cyber-fx.d.ts +0 -6
- package/dist/dashboard/web/cyber-fx.d.ts.map +0 -1
- package/dist/dashboard/web/cyber-fx.js +0 -289
- package/dist/dashboard/web/cyber-fx.js.map +0 -1
- package/dist/dashboard/web/dashboard-api.d.ts +0 -9
- package/dist/dashboard/web/dashboard-api.d.ts.map +0 -1
- package/dist/dashboard/web/dashboard-api.js +0 -18
- package/dist/dashboard/web/dashboard-api.js.map +0 -1
- package/dist/dashboard/web/dashboard-components.d.ts +0 -105
- package/dist/dashboard/web/dashboard-components.d.ts.map +0 -1
- package/dist/dashboard/web/dashboard-components.js +0 -284
- package/dist/dashboard/web/dashboard-components.js.map +0 -1
- package/dist/dashboard/web/dashboard-routes.d.ts +0 -14
- package/dist/dashboard/web/dashboard-routes.d.ts.map +0 -1
- package/dist/dashboard/web/dashboard-routes.js +0 -49
- package/dist/dashboard/web/dashboard-routes.js.map +0 -1
- package/dist/dashboard/web/floating-scrollbars.d.ts +0 -2
- package/dist/dashboard/web/floating-scrollbars.d.ts.map +0 -1
- package/dist/dashboard/web/floating-scrollbars.js +0 -264
- package/dist/dashboard/web/floating-scrollbars.js.map +0 -1
- package/dist/dashboard/web/groups-api.d.ts +0 -36
- package/dist/dashboard/web/groups-api.d.ts.map +0 -1
- package/dist/dashboard/web/groups-api.js +0 -44
- package/dist/dashboard/web/groups-api.js.map +0 -1
- package/dist/dashboard/web/groups-page.d.ts +0 -3
- package/dist/dashboard/web/groups-page.d.ts.map +0 -1
- package/dist/dashboard/web/groups-page.js +0 -761
- package/dist/dashboard/web/groups-page.js.map +0 -1
- package/dist/dashboard/web/groups.d.ts +0 -58
- package/dist/dashboard/web/groups.d.ts.map +0 -1
- package/dist/dashboard/web/groups.js +0 -203
- package/dist/dashboard/web/groups.js.map +0 -1
- package/dist/dashboard/web/i18n.d.ts +0 -7
- package/dist/dashboard/web/i18n.d.ts.map +0 -1
- package/dist/dashboard/web/i18n.js +0 -4295
- package/dist/dashboard/web/i18n.js.map +0 -1
- package/dist/dashboard/web/icon-tooltip.d.ts +0 -3
- package/dist/dashboard/web/icon-tooltip.d.ts.map +0 -1
- package/dist/dashboard/web/icon-tooltip.js +0 -123
- package/dist/dashboard/web/icon-tooltip.js.map +0 -1
- package/dist/dashboard/web/insights-page.d.ts +0 -3
- package/dist/dashboard/web/insights-page.d.ts.map +0 -1
- package/dist/dashboard/web/insights-page.js +0 -1059
- package/dist/dashboard/web/insights-page.js.map +0 -1
- package/dist/dashboard/web/insights.d.ts +0 -189
- package/dist/dashboard/web/insights.d.ts.map +0 -1
- package/dist/dashboard/web/insights.js +0 -519
- package/dist/dashboard/web/insights.js.map +0 -1
- package/dist/dashboard/web/kanban-model.d.ts +0 -19
- package/dist/dashboard/web/kanban-model.d.ts.map +0 -1
- package/dist/dashboard/web/kanban-model.js +0 -40
- package/dist/dashboard/web/kanban-model.js.map +0 -1
- package/dist/dashboard/web/listener-filters.d.ts +0 -54
- package/dist/dashboard/web/listener-filters.d.ts.map +0 -1
- package/dist/dashboard/web/listener-filters.js +0 -94
- package/dist/dashboard/web/listener-filters.js.map +0 -1
- package/dist/dashboard/web/monitor-room-store.d.ts +0 -20
- package/dist/dashboard/web/monitor-room-store.d.ts.map +0 -1
- package/dist/dashboard/web/monitor-room-store.js +0 -80
- package/dist/dashboard/web/monitor-room-store.js.map +0 -1
- package/dist/dashboard/web/monitor-room.d.ts +0 -31
- package/dist/dashboard/web/monitor-room.d.ts.map +0 -1
- package/dist/dashboard/web/monitor-room.js +0 -395
- package/dist/dashboard/web/monitor-room.js.map +0 -1
- package/dist/dashboard/web/monitoring-page.d.ts +0 -155
- package/dist/dashboard/web/monitoring-page.d.ts.map +0 -1
- package/dist/dashboard/web/monitoring-page.js +0 -363
- package/dist/dashboard/web/monitoring-page.js.map +0 -1
- package/dist/dashboard/web/office-page.d.ts +0 -3
- package/dist/dashboard/web/office-page.d.ts.map +0 -1
- package/dist/dashboard/web/office-page.js +0 -137
- package/dist/dashboard/web/office-page.js.map +0 -1
- package/dist/dashboard/web/overview-page.d.ts +0 -3
- package/dist/dashboard/web/overview-page.d.ts.map +0 -1
- package/dist/dashboard/web/overview-page.js +0 -253
- package/dist/dashboard/web/overview-page.js.map +0 -1
- package/dist/dashboard/web/overview.d.ts +0 -23
- package/dist/dashboard/web/overview.d.ts.map +0 -1
- package/dist/dashboard/web/overview.js +0 -81
- package/dist/dashboard/web/overview.js.map +0 -1
- package/dist/dashboard/web/plugin-events.d.ts +0 -2
- package/dist/dashboard/web/plugin-events.d.ts.map +0 -1
- package/dist/dashboard/web/plugin-events.js +0 -2
- package/dist/dashboard/web/plugin-events.js.map +0 -1
- package/dist/dashboard/web/plugin-page.d.ts +0 -3
- package/dist/dashboard/web/plugin-page.d.ts.map +0 -1
- package/dist/dashboard/web/plugin-page.js +0 -467
- package/dist/dashboard/web/plugin-page.js.map +0 -1
- package/dist/dashboard/web/preferences.d.ts +0 -42
- package/dist/dashboard/web/preferences.d.ts.map +0 -1
- package/dist/dashboard/web/preferences.js +0 -162
- package/dist/dashboard/web/preferences.js.map +0 -1
- package/dist/dashboard/web/preview-markdown.d.ts +0 -5
- package/dist/dashboard/web/preview-markdown.d.ts.map +0 -1
- package/dist/dashboard/web/preview-markdown.js +0 -52
- package/dist/dashboard/web/preview-markdown.js.map +0 -1
- package/dist/dashboard/web/react-hooks.d.ts +0 -8
- package/dist/dashboard/web/react-hooks.d.ts.map +0 -1
- package/dist/dashboard/web/react-hooks.js +0 -43
- package/dist/dashboard/web/react-hooks.js.map +0 -1
- package/dist/dashboard/web/react-mount.d.ts +0 -4
- package/dist/dashboard/web/react-mount.d.ts.map +0 -1
- package/dist/dashboard/web/react-mount.js +0 -7
- package/dist/dashboard/web/react-mount.js.map +0 -1
- package/dist/dashboard/web/role-batch.d.ts +0 -9
- package/dist/dashboard/web/role-batch.d.ts.map +0 -1
- package/dist/dashboard/web/role-batch.js +0 -42
- package/dist/dashboard/web/role-batch.js.map +0 -1
- package/dist/dashboard/web/role-profile-match.d.ts +0 -31
- package/dist/dashboard/web/role-profile-match.d.ts.map +0 -1
- package/dist/dashboard/web/role-profile-match.js +0 -58
- package/dist/dashboard/web/role-profile-match.js.map +0 -1
- package/dist/dashboard/web/roles-page.d.ts +0 -4
- package/dist/dashboard/web/roles-page.d.ts.map +0 -1
- package/dist/dashboard/web/roles-page.js +0 -1120
- package/dist/dashboard/web/roles-page.js.map +0 -1
- package/dist/dashboard/web/roles.d.ts +0 -177
- package/dist/dashboard/web/roles.d.ts.map +0 -1
- package/dist/dashboard/web/roles.js +0 -272
- package/dist/dashboard/web/roles.js.map +0 -1
- package/dist/dashboard/web/route-lifecycle.d.ts +0 -14
- package/dist/dashboard/web/route-lifecycle.d.ts.map +0 -1
- package/dist/dashboard/web/route-lifecycle.js +0 -29
- package/dist/dashboard/web/route-lifecycle.js.map +0 -1
- package/dist/dashboard/web/schedules-page.d.ts +0 -16
- package/dist/dashboard/web/schedules-page.d.ts.map +0 -1
- package/dist/dashboard/web/schedules-page.js +0 -303
- package/dist/dashboard/web/schedules-page.js.map +0 -1
- package/dist/dashboard/web/session-terminal.d.ts +0 -7
- package/dist/dashboard/web/session-terminal.d.ts.map +0 -1
- package/dist/dashboard/web/session-terminal.js +0 -23
- package/dist/dashboard/web/session-terminal.js.map +0 -1
- package/dist/dashboard/web/sessions-kanban.d.ts +0 -70
- package/dist/dashboard/web/sessions-kanban.d.ts.map +0 -1
- package/dist/dashboard/web/sessions-kanban.js +0 -481
- package/dist/dashboard/web/sessions-kanban.js.map +0 -1
- package/dist/dashboard/web/sessions-page.d.ts +0 -27
- package/dist/dashboard/web/sessions-page.d.ts.map +0 -1
- package/dist/dashboard/web/sessions-page.js +0 -2085
- package/dist/dashboard/web/sessions-page.js.map +0 -1
- package/dist/dashboard/web/sessions.d.ts +0 -116
- package/dist/dashboard/web/sessions.d.ts.map +0 -1
- package/dist/dashboard/web/sessions.js +0 -390
- package/dist/dashboard/web/sessions.js.map +0 -1
- package/dist/dashboard/web/settings-page.d.ts +0 -119
- package/dist/dashboard/web/settings-page.d.ts.map +0 -1
- package/dist/dashboard/web/settings-page.js +0 -772
- package/dist/dashboard/web/settings-page.js.map +0 -1
- package/dist/dashboard/web/skills-page.d.ts +0 -90
- package/dist/dashboard/web/skills-page.d.ts.map +0 -1
- package/dist/dashboard/web/skills-page.js +0 -1004
- package/dist/dashboard/web/skills-page.js.map +0 -1
- package/dist/dashboard/web/stale-chunk-reload.d.ts +0 -16
- package/dist/dashboard/web/stale-chunk-reload.d.ts.map +0 -1
- package/dist/dashboard/web/stale-chunk-reload.js +0 -51
- package/dist/dashboard/web/stale-chunk-reload.js.map +0 -1
- package/dist/dashboard/web/store.d.ts +0 -39
- package/dist/dashboard/web/store.d.ts.map +0 -1
- package/dist/dashboard/web/store.js +0 -177
- package/dist/dashboard/web/store.js.map +0 -1
- package/dist/dashboard/web/substitute-targets.d.ts +0 -30
- package/dist/dashboard/web/substitute-targets.d.ts.map +0 -1
- package/dist/dashboard/web/substitute-targets.js +0 -99
- package/dist/dashboard/web/substitute-targets.js.map +0 -1
- package/dist/dashboard/web/team-federation-page.d.ts +0 -4
- package/dist/dashboard/web/team-federation-page.d.ts.map +0 -1
- package/dist/dashboard/web/team-federation-page.js +0 -465
- package/dist/dashboard/web/team-federation-page.js.map +0 -1
- package/dist/dashboard/web/team-federation.d.ts +0 -92
- package/dist/dashboard/web/team-federation.d.ts.map +0 -1
- package/dist/dashboard/web/team-federation.js +0 -106
- package/dist/dashboard/web/team-federation.js.map +0 -1
- package/dist/dashboard/web/theme-menu.d.ts +0 -4
- package/dist/dashboard/web/theme-menu.d.ts.map +0 -1
- package/dist/dashboard/web/theme-menu.js +0 -173
- package/dist/dashboard/web/theme-menu.js.map +0 -1
- package/dist/dashboard/web/ui.d.ts +0 -81
- package/dist/dashboard/web/ui.d.ts.map +0 -1
- package/dist/dashboard/web/ui.js +0 -330
- package/dist/dashboard/web/ui.js.map +0 -1
- package/dist/dashboard/web/update-action.d.ts +0 -16
- package/dist/dashboard/web/update-action.d.ts.map +0 -1
- package/dist/dashboard/web/update-action.js +0 -64
- package/dist/dashboard/web/update-action.js.map +0 -1
- package/dist/dashboard/web/v3-api.d.ts +0 -26
- package/dist/dashboard/web/v3-api.d.ts.map +0 -1
- package/dist/dashboard/web/v3-api.js +0 -49
- package/dist/dashboard/web/v3-api.js.map +0 -1
- package/dist/dashboard/web/v3-components.d.ts +0 -9
- package/dist/dashboard/web/v3-components.d.ts.map +0 -1
- package/dist/dashboard/web/v3-components.js +0 -333
- package/dist/dashboard/web/v3-components.js.map +0 -1
- package/dist/dashboard/web/v3-model.d.ts +0 -80
- package/dist/dashboard/web/v3-model.d.ts.map +0 -1
- package/dist/dashboard/web/v3-model.js +0 -240
- package/dist/dashboard/web/v3-model.js.map +0 -1
- package/dist/dashboard/web/v3-page.d.ts +0 -3
- package/dist/dashboard/web/v3-page.d.ts.map +0 -1
- package/dist/dashboard/web/v3-page.js +0 -7
- package/dist/dashboard/web/v3-page.js.map +0 -1
- package/dist/dashboard/web/v3-terminal.d.ts +0 -25
- package/dist/dashboard/web/v3-terminal.d.ts.map +0 -1
- package/dist/dashboard/web/v3-terminal.js +0 -155
- package/dist/dashboard/web/v3-terminal.js.map +0 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +0 -29
- package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +0 -1
- package/dist/dashboard/web/vc-consumer-profiles-section.js +0 -459
- package/dist/dashboard/web/vc-consumer-profiles-section.js.map +0 -1
- package/dist/dashboard/web/webhook-logs-page.d.ts +0 -17
- package/dist/dashboard/web/webhook-logs-page.d.ts.map +0 -1
- package/dist/dashboard/web/webhook-logs-page.js +0 -198
- package/dist/dashboard/web/webhook-logs-page.js.map +0 -1
- package/dist/dashboard/web/whiteboards-page.d.ts +0 -3
- package/dist/dashboard/web/whiteboards-page.d.ts.map +0 -1
- package/dist/dashboard/web/whiteboards-page.js +0 -198
- package/dist/dashboard/web/whiteboards-page.js.map +0 -1
- package/dist/dashboard/webhook-routes.d.ts +0 -19
- package/dist/dashboard/webhook-routes.d.ts.map +0 -1
- package/dist/dashboard/webhook-routes.js +0 -618
- package/dist/dashboard/webhook-routes.js.map +0 -1
- package/dist/dashboard-web/app.js +0 -1
- package/dist/dashboard-web/apple-touch-icon.png +0 -0
- package/dist/dashboard-web/brand-logo.png +0 -0
- package/dist/dashboard-web/chunks/bot-defaults-page-LTVOUDIS.js +0 -10
- package/dist/dashboard-web/chunks/chunk-3UE7S77S.js +0 -1
- package/dist/dashboard-web/chunks/chunk-5CJMHTT4.js +0 -1
- package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +0 -66
- package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
- package/dist/dashboard-web/chunks/chunk-AGCPF6MT.js +0 -1
- package/dist/dashboard-web/chunks/chunk-BD3PZGH2.js +0 -1
- package/dist/dashboard-web/chunks/chunk-DCS35UMD.js +0 -1
- package/dist/dashboard-web/chunks/chunk-EVK77ASG.js +0 -1
- package/dist/dashboard-web/chunks/chunk-FDZ7WOBW.js +0 -16
- package/dist/dashboard-web/chunks/chunk-MFQPCVHY.js +0 -51
- package/dist/dashboard-web/chunks/chunk-R3FXBFQH.js +0 -1
- package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +0 -1
- package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +0 -1
- package/dist/dashboard-web/chunks/chunk-ZJVTGU5X.js +0 -1
- package/dist/dashboard-web/chunks/chunk-ZU3UUKAR.js +0 -1
- package/dist/dashboard-web/chunks/connectors-page-5KWDIMKC.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-FHOKYXMW.js +0 -8
- package/dist/dashboard-web/chunks/insights-page-T2ZX2RWL.js +0 -7
- package/dist/dashboard-web/chunks/monitor-room-YNVBAGR6.js +0 -53
- package/dist/dashboard-web/chunks/monitoring-page-LHM55YWN.js +0 -2
- package/dist/dashboard-web/chunks/office-page-ATXVP7PW.js +0 -1
- package/dist/dashboard-web/chunks/overview-page-QYI3KBDD.js +0 -1
- package/dist/dashboard-web/chunks/plugin-page-VEGTCEAS.js +0 -1
- package/dist/dashboard-web/chunks/roles-page-56VWM6CD.js +0 -1
- package/dist/dashboard-web/chunks/schedules-page-S5K6U4EO.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-WBP4N7D2.js +0 -6
- package/dist/dashboard-web/chunks/settings-page-QUZDQARR.js +0 -2
- package/dist/dashboard-web/chunks/skills-page-IFY7AEND.js +0 -4
- package/dist/dashboard-web/chunks/team-federation-page-C7FJQPFZ.js +0 -1
- package/dist/dashboard-web/chunks/v3-page-2LMF3WWR.js +0 -94
- package/dist/dashboard-web/chunks/whiteboards-page-3XC6QRMY.js +0 -1
- package/dist/dashboard-web/favicon.png +0 -0
- package/dist/dashboard-web/game/index.apple-touch-icon.png +0 -0
- package/dist/dashboard-web/game/index.audio.position.worklet.js +0 -66
- package/dist/dashboard-web/game/index.audio.worklet.js +0 -213
- package/dist/dashboard-web/game/index.html +0 -224
- package/dist/dashboard-web/game/index.icon.png +0 -0
- package/dist/dashboard-web/game/index.js +0 -909
- package/dist/dashboard-web/game/index.png +0 -0
- package/dist/dashboard-web/index.html +0 -17
- package/dist/dashboard-web/skins/fallout-vaultboy.webp +0 -0
- package/dist/dashboard-web/style.css +0 -25771
- package/dist/dashboard.d.ts +0 -2
- package/dist/dashboard.d.ts.map +0 -1
- package/dist/dashboard.js +0 -5487
- package/dist/dashboard.js.map +0 -1
- package/dist/desktop/main/auto-start.d.ts +0 -19
- package/dist/desktop/main/auto-start.d.ts.map +0 -1
- package/dist/desktop/main/auto-start.js +0 -41
- package/dist/desktop/main/auto-start.js.map +0 -1
- package/dist/desktop/main/bundled-runtime.d.ts +0 -12
- package/dist/desktop/main/bundled-runtime.d.ts.map +0 -1
- package/dist/desktop/main/bundled-runtime.js +0 -30
- package/dist/desktop/main/bundled-runtime.js.map +0 -1
- package/dist/desktop/main/dashboard-compat.d.ts +0 -25
- package/dist/desktop/main/dashboard-compat.d.ts.map +0 -1
- package/dist/desktop/main/dashboard-compat.js +0 -117
- package/dist/desktop/main/dashboard-compat.js.map +0 -1
- package/dist/desktop/main/device-status.d.ts +0 -15
- package/dist/desktop/main/device-status.d.ts.map +0 -1
- package/dist/desktop/main/device-status.js +0 -94
- package/dist/desktop/main/device-status.js.map +0 -1
- package/dist/desktop/main/external-runtime.d.ts +0 -38
- package/dist/desktop/main/external-runtime.d.ts.map +0 -1
- package/dist/desktop/main/external-runtime.js +0 -272
- package/dist/desktop/main/external-runtime.js.map +0 -1
- package/dist/desktop/main/ipc.d.ts +0 -20
- package/dist/desktop/main/ipc.d.ts.map +0 -1
- package/dist/desktop/main/ipc.js +0 -242
- package/dist/desktop/main/ipc.js.map +0 -1
- package/dist/desktop/main/log-service.d.ts +0 -4
- package/dist/desktop/main/log-service.d.ts.map +0 -1
- package/dist/desktop/main/log-service.js +0 -53
- package/dist/desktop/main/log-service.js.map +0 -1
- package/dist/desktop/main/login-item.d.ts +0 -10
- package/dist/desktop/main/login-item.d.ts.map +0 -1
- package/dist/desktop/main/login-item.js +0 -11
- package/dist/desktop/main/login-item.js.map +0 -1
- package/dist/desktop/main/node-command.d.ts +0 -43
- package/dist/desktop/main/node-command.d.ts.map +0 -1
- package/dist/desktop/main/node-command.js +0 -97
- package/dist/desktop/main/node-command.js.map +0 -1
- package/dist/desktop/main/paths.d.ts +0 -11
- package/dist/desktop/main/paths.d.ts.map +0 -1
- package/dist/desktop/main/paths.js +0 -13
- package/dist/desktop/main/paths.js.map +0 -1
- package/dist/desktop/main/pm2-apps.d.ts +0 -17
- package/dist/desktop/main/pm2-apps.d.ts.map +0 -1
- package/dist/desktop/main/pm2-apps.js +0 -105
- package/dist/desktop/main/pm2-apps.js.map +0 -1
- package/dist/desktop/main/runtime-service.d.ts +0 -65
- package/dist/desktop/main/runtime-service.d.ts.map +0 -1
- package/dist/desktop/main/runtime-service.js +0 -381
- package/dist/desktop/main/runtime-service.js.map +0 -1
- package/dist/desktop/main/runtime-source.d.ts +0 -19
- package/dist/desktop/main/runtime-source.d.ts.map +0 -1
- package/dist/desktop/main/runtime-source.js +0 -67
- package/dist/desktop/main/runtime-source.js.map +0 -1
- package/dist/desktop/main/tray.d.ts +0 -11
- package/dist/desktop/main/tray.d.ts.map +0 -1
- package/dist/desktop/main/tray.js +0 -27
- package/dist/desktop/main/tray.js.map +0 -1
- package/dist/desktop/main/window.d.ts +0 -16
- package/dist/desktop/main/window.d.ts.map +0 -1
- package/dist/desktop/main/window.js +0 -113
- package/dist/desktop/main/window.js.map +0 -1
- package/dist/desktop/main.d.ts +0 -2
- package/dist/desktop/main.d.ts.map +0 -1
- package/dist/desktop/main.js +0 -195
- package/dist/desktop/main.js.map +0 -1
- package/dist/desktop/preload.d.ts +0 -2
- package/dist/desktop/preload.d.ts.map +0 -1
- package/dist/desktop/preload.js +0 -27
- package/dist/desktop/preload.js.map +0 -1
- package/dist/desktop/renderer/app.d.ts +0 -36
- package/dist/desktop/renderer/app.d.ts.map +0 -1
- package/dist/desktop/renderer/app.js +0 -950
- package/dist/desktop/renderer/app.js.map +0 -1
- package/dist/desktop/renderer/dashboard-url.d.ts +0 -13
- package/dist/desktop/renderer/dashboard-url.d.ts.map +0 -1
- package/dist/desktop/renderer/dashboard-url.js +0 -98
- package/dist/desktop/renderer/dashboard-url.js.map +0 -1
- package/dist/desktop/renderer/runtime-state.d.ts +0 -8
- package/dist/desktop/renderer/runtime-state.d.ts.map +0 -1
- package/dist/desktop/renderer/runtime-state.js +0 -69
- package/dist/desktop/renderer/runtime-state.js.map +0 -1
- package/dist/desktop/shared/shell-path-probes.d.ts +0 -24
- package/dist/desktop/shared/shell-path-probes.d.ts.map +0 -1
- package/dist/desktop/shared/shell-path-probes.js +0 -38
- package/dist/desktop/shared/shell-path-probes.js.map +0 -1
- package/dist/desktop/shared/types.d.ts +0 -68
- package/dist/desktop/shared/types.d.ts.map +0 -1
- package/dist/desktop/shared/types.js +0 -2
- package/dist/desktop/shared/types.js.map +0 -1
- package/dist/desktop/smoke.d.ts +0 -29
- package/dist/desktop/smoke.d.ts.map +0 -1
- package/dist/desktop/smoke.js +0 -273
- package/dist/desktop/smoke.js.map +0 -1
- package/dist/features/codex-notifier/adoption.d.ts +0 -11
- package/dist/features/codex-notifier/adoption.d.ts.map +0 -1
- package/dist/features/codex-notifier/adoption.js +0 -11
- package/dist/features/codex-notifier/adoption.js.map +0 -1
- package/dist/features/codex-notifier/app-opener.d.ts +0 -21
- package/dist/features/codex-notifier/app-opener.d.ts.map +0 -1
- package/dist/features/codex-notifier/app-opener.js +0 -33
- package/dist/features/codex-notifier/app-opener.js.map +0 -1
- package/dist/features/codex-notifier/card-action.d.ts +0 -27
- package/dist/features/codex-notifier/card-action.d.ts.map +0 -1
- package/dist/features/codex-notifier/card-action.js +0 -84
- package/dist/features/codex-notifier/card-action.js.map +0 -1
- package/dist/features/codex-notifier/card.d.ts +0 -12
- package/dist/features/codex-notifier/card.d.ts.map +0 -1
- package/dist/features/codex-notifier/card.js +0 -150
- package/dist/features/codex-notifier/card.js.map +0 -1
- package/dist/features/codex-notifier/codex-context.d.ts +0 -12
- package/dist/features/codex-notifier/codex-context.d.ts.map +0 -1
- package/dist/features/codex-notifier/codex-context.js +0 -161
- package/dist/features/codex-notifier/codex-context.js.map +0 -1
- package/dist/features/codex-notifier/config.d.ts +0 -9
- package/dist/features/codex-notifier/config.d.ts.map +0 -1
- package/dist/features/codex-notifier/config.js +0 -11
- package/dist/features/codex-notifier/config.js.map +0 -1
- package/dist/features/codex-notifier/confirmed-turn.d.ts +0 -20
- package/dist/features/codex-notifier/confirmed-turn.d.ts.map +0 -1
- package/dist/features/codex-notifier/confirmed-turn.js +0 -130
- package/dist/features/codex-notifier/confirmed-turn.js.map +0 -1
- package/dist/features/codex-notifier/emitter.d.ts +0 -13
- package/dist/features/codex-notifier/emitter.d.ts.map +0 -1
- package/dist/features/codex-notifier/emitter.js +0 -33
- package/dist/features/codex-notifier/emitter.js.map +0 -1
- package/dist/features/codex-notifier/event-store.d.ts +0 -29
- package/dist/features/codex-notifier/event-store.d.ts.map +0 -1
- package/dist/features/codex-notifier/event-store.js +0 -217
- package/dist/features/codex-notifier/event-store.js.map +0 -1
- package/dist/features/codex-notifier/event.d.ts +0 -46
- package/dist/features/codex-notifier/event.d.ts.map +0 -1
- package/dist/features/codex-notifier/event.js +0 -188
- package/dist/features/codex-notifier/event.js.map +0 -1
- package/dist/features/codex-notifier/hook-cli.d.ts +0 -23
- package/dist/features/codex-notifier/hook-cli.d.ts.map +0 -1
- package/dist/features/codex-notifier/hook-cli.js +0 -130
- package/dist/features/codex-notifier/hook-cli.js.map +0 -1
- package/dist/features/codex-notifier/hook-installer.d.ts +0 -19
- package/dist/features/codex-notifier/hook-installer.d.ts.map +0 -1
- package/dist/features/codex-notifier/hook-installer.js +0 -158
- package/dist/features/codex-notifier/hook-installer.js.map +0 -1
- package/dist/features/codex-notifier/index.d.ts +0 -21
- package/dist/features/codex-notifier/index.d.ts.map +0 -1
- package/dist/features/codex-notifier/index.js +0 -19
- package/dist/features/codex-notifier/index.js.map +0 -1
- package/dist/features/codex-notifier/internal-turn.d.ts +0 -5
- package/dist/features/codex-notifier/internal-turn.d.ts.map +0 -1
- package/dist/features/codex-notifier/internal-turn.js +0 -43
- package/dist/features/codex-notifier/internal-turn.js.map +0 -1
- package/dist/features/codex-notifier/outbox-worker.d.ts +0 -71
- package/dist/features/codex-notifier/outbox-worker.d.ts.map +0 -1
- package/dist/features/codex-notifier/outbox-worker.js +0 -290
- package/dist/features/codex-notifier/outbox-worker.js.map +0 -1
- package/dist/features/codex-notifier/outbox.d.ts +0 -25
- package/dist/features/codex-notifier/outbox.d.ts.map +0 -1
- package/dist/features/codex-notifier/outbox.js +0 -225
- package/dist/features/codex-notifier/outbox.js.map +0 -1
- package/dist/features/codex-notifier/paths.d.ts +0 -7
- package/dist/features/codex-notifier/paths.d.ts.map +0 -1
- package/dist/features/codex-notifier/paths.js +0 -20
- package/dist/features/codex-notifier/paths.js.map +0 -1
- package/dist/features/codex-notifier/screen-lock.d.ts +0 -12
- package/dist/features/codex-notifier/screen-lock.d.ts.map +0 -1
- package/dist/features/codex-notifier/screen-lock.js +0 -47
- package/dist/features/codex-notifier/screen-lock.js.map +0 -1
- package/dist/features/codex-notifier/side-conversation-monitor.d.ts +0 -102
- package/dist/features/codex-notifier/side-conversation-monitor.d.ts.map +0 -1
- package/dist/features/codex-notifier/side-conversation-monitor.js +0 -774
- package/dist/features/codex-notifier/side-conversation-monitor.js.map +0 -1
- package/dist/features/codex-notifier/types.d.ts +0 -42
- package/dist/features/codex-notifier/types.d.ts.map +0 -1
- package/dist/features/codex-notifier/types.js +0 -2
- package/dist/features/codex-notifier/types.js.map +0 -1
- package/dist/features/codex-notifier/worker-lock.d.ts +0 -8
- package/dist/features/codex-notifier/worker-lock.d.ts.map +0 -1
- package/dist/features/codex-notifier/worker-lock.js +0 -108
- package/dist/features/codex-notifier/worker-lock.js.map +0 -1
- package/dist/global-config.d.ts +0 -264
- package/dist/global-config.d.ts.map +0 -1
- package/dist/global-config.js +0 -504
- package/dist/global-config.js.map +0 -1
- package/dist/i18n/en.d.ts +0 -3
- package/dist/i18n/en.d.ts.map +0 -1
- package/dist/i18n/en.js +0 -1211
- package/dist/i18n/en.js.map +0 -1
- package/dist/i18n/index.d.ts +0 -33
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js +0 -74
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/types.d.ts +0 -4
- package/dist/i18n/types.d.ts.map +0 -1
- package/dist/i18n/types.js +0 -5
- package/dist/i18n/types.js.map +0 -1
- package/dist/i18n/zh.d.ts +0 -6
- package/dist/i18n/zh.d.ts.map +0 -1
- package/dist/i18n/zh.js +0 -1212
- package/dist/i18n/zh.js.map +0 -1
- package/dist/im/lark/ask-card.d.ts +0 -55
- package/dist/im/lark/ask-card.d.ts.map +0 -1
- package/dist/im/lark/ask-card.js +0 -392
- package/dist/im/lark/ask-card.js.map +0 -1
- package/dist/im/lark/brand-template.d.ts +0 -15
- package/dist/im/lark/brand-template.d.ts.map +0 -1
- package/dist/im/lark/brand-template.js +0 -114
- package/dist/im/lark/brand-template.js.map +0 -1
- package/dist/im/lark/callback-button-marker.d.ts +0 -34
- package/dist/im/lark/callback-button-marker.d.ts.map +0 -1
- package/dist/im/lark/callback-button-marker.js +0 -99
- package/dist/im/lark/callback-button-marker.js.map +0 -1
- package/dist/im/lark/card-builder.d.ts +0 -367
- package/dist/im/lark/card-builder.d.ts.map +0 -1
- package/dist/im/lark/card-builder.js +0 -2238
- package/dist/im/lark/card-builder.js.map +0 -1
- package/dist/im/lark/card-handler.d.ts +0 -158
- package/dist/im/lark/card-handler.d.ts.map +0 -1
- package/dist/im/lark/card-handler.js +0 -2923
- package/dist/im/lark/card-handler.js.map +0 -1
- package/dist/im/lark/client.d.ts +0 -471
- package/dist/im/lark/client.d.ts.map +0 -1
- package/dist/im/lark/client.js +0 -1943
- package/dist/im/lark/client.js.map +0 -1
- package/dist/im/lark/doc-comment.d.ts +0 -164
- package/dist/im/lark/doc-comment.d.ts.map +0 -1
- package/dist/im/lark/doc-comment.js +0 -611
- package/dist/im/lark/doc-comment.js.map +0 -1
- package/dist/im/lark/event-dispatcher.d.ts +0 -420
- package/dist/im/lark/event-dispatcher.d.ts.map +0 -1
- package/dist/im/lark/event-dispatcher.js +0 -3274
- package/dist/im/lark/event-dispatcher.js.map +0 -1
- package/dist/im/lark/forward-followup-buffer.d.ts +0 -26
- package/dist/im/lark/forward-followup-buffer.d.ts.map +0 -1
- package/dist/im/lark/forward-followup-buffer.js +0 -48
- package/dist/im/lark/forward-followup-buffer.js.map +0 -1
- package/dist/im/lark/forward-followup-content.d.ts +0 -6
- package/dist/im/lark/forward-followup-content.d.ts.map +0 -1
- package/dist/im/lark/forward-followup-content.js +0 -46
- package/dist/im/lark/forward-followup-content.js.map +0 -1
- package/dist/im/lark/forward-followup-store.d.ts +0 -9
- package/dist/im/lark/forward-followup-store.d.ts.map +0 -1
- package/dist/im/lark/forward-followup-store.js +0 -48
- package/dist/im/lark/forward-followup-store.js.map +0 -1
- package/dist/im/lark/forwarded-renderer.d.ts +0 -23
- package/dist/im/lark/forwarded-renderer.d.ts.map +0 -1
- package/dist/im/lark/forwarded-renderer.js +0 -112
- package/dist/im/lark/forwarded-renderer.js.map +0 -1
- package/dist/im/lark/grant-command.d.ts +0 -51
- package/dist/im/lark/grant-command.d.ts.map +0 -1
- package/dist/im/lark/grant-command.js +0 -215
- package/dist/im/lark/grant-command.js.map +0 -1
- package/dist/im/lark/grant-pending.d.ts +0 -31
- package/dist/im/lark/grant-pending.d.ts.map +0 -1
- package/dist/im/lark/grant-pending.js +0 -122
- package/dist/im/lark/grant-pending.js.map +0 -1
- package/dist/im/lark/groups-card.d.ts +0 -90
- package/dist/im/lark/groups-card.d.ts.map +0 -1
- package/dist/im/lark/groups-card.js +0 -832
- package/dist/im/lark/groups-card.js.map +0 -1
- package/dist/im/lark/identity-cache.d.ts +0 -88
- package/dist/im/lark/identity-cache.d.ts.map +0 -1
- package/dist/im/lark/identity-cache.js +0 -310
- package/dist/im/lark/identity-cache.js.map +0 -1
- package/dist/im/lark/inline-mentions.d.ts +0 -42
- package/dist/im/lark/inline-mentions.d.ts.map +0 -1
- package/dist/im/lark/inline-mentions.js +0 -27
- package/dist/im/lark/inline-mentions.js.map +0 -1
- package/dist/im/lark/invite-command.d.ts +0 -20
- package/dist/im/lark/invite-command.d.ts.map +0 -1
- package/dist/im/lark/invite-command.js +0 -292
- package/dist/im/lark/invite-command.js.map +0 -1
- package/dist/im/lark/issue-card.d.ts +0 -223
- package/dist/im/lark/issue-card.d.ts.map +0 -1
- package/dist/im/lark/issue-card.js +0 -542
- package/dist/im/lark/issue-card.js.map +0 -1
- package/dist/im/lark/issue-command-deps.d.ts +0 -41
- package/dist/im/lark/issue-command-deps.d.ts.map +0 -1
- package/dist/im/lark/issue-command-deps.js +0 -195
- package/dist/im/lark/issue-command-deps.js.map +0 -1
- package/dist/im/lark/issue-command.d.ts +0 -137
- package/dist/im/lark/issue-command.d.ts.map +0 -1
- package/dist/im/lark/issue-command.js +0 -335
- package/dist/im/lark/issue-command.js.map +0 -1
- package/dist/im/lark/lark-hosts.d.ts +0 -49
- package/dist/im/lark/lark-hosts.d.ts.map +0 -1
- package/dist/im/lark/lark-hosts.js +0 -59
- package/dist/im/lark/lark-hosts.js.map +0 -1
- package/dist/im/lark/md-card.d.ts +0 -192
- package/dist/im/lark/md-card.d.ts.map +0 -1
- package/dist/im/lark/md-card.js +0 -872
- package/dist/im/lark/md-card.js.map +0 -1
- package/dist/im/lark/mention-targets.d.ts +0 -43
- package/dist/im/lark/mention-targets.d.ts.map +0 -1
- package/dist/im/lark/mention-targets.js +0 -190
- package/dist/im/lark/mention-targets.js.map +0 -1
- package/dist/im/lark/merge-forward.d.ts +0 -32
- package/dist/im/lark/merge-forward.d.ts.map +0 -1
- package/dist/im/lark/merge-forward.js +0 -140
- package/dist/im/lark/merge-forward.js.map +0 -1
- package/dist/im/lark/message-parser.d.ts +0 -272
- package/dist/im/lark/message-parser.d.ts.map +0 -1
- package/dist/im/lark/message-parser.js +0 -1261
- package/dist/im/lark/message-parser.js.map +0 -1
- package/dist/im/lark/overload-nonce.d.ts +0 -19
- package/dist/im/lark/overload-nonce.d.ts.map +0 -1
- package/dist/im/lark/overload-nonce.js +0 -72
- package/dist/im/lark/overload-nonce.js.map +0 -1
- package/dist/im/lark/overview-card.d.ts +0 -100
- package/dist/im/lark/overview-card.d.ts.map +0 -1
- package/dist/im/lark/overview-card.js +0 -428
- package/dist/im/lark/overview-card.js.map +0 -1
- package/dist/im/lark/quote-hint.d.ts +0 -19
- package/dist/im/lark/quote-hint.d.ts.map +0 -1
- package/dist/im/lark/quote-hint.js +0 -24
- package/dist/im/lark/quote-hint.js.map +0 -1
- package/dist/im/lark/relay-target-routing.d.ts +0 -17
- package/dist/im/lark/relay-target-routing.d.ts.map +0 -1
- package/dist/im/lark/relay-target-routing.js +0 -74
- package/dist/im/lark/relay-target-routing.js.map +0 -1
- package/dist/im/lark/reply-card-footer-signature.d.ts +0 -7
- package/dist/im/lark/reply-card-footer-signature.d.ts.map +0 -1
- package/dist/im/lark/reply-card-footer-signature.js +0 -7
- package/dist/im/lark/reply-card-footer-signature.js.map +0 -1
- package/dist/im/lark/reply-mode-command.d.ts +0 -2
- package/dist/im/lark/reply-mode-command.d.ts.map +0 -1
- package/dist/im/lark/reply-mode-command.js +0 -108
- package/dist/im/lark/reply-mode-command.js.map +0 -1
- package/dist/im/lark/schedules-card.d.ts +0 -96
- package/dist/im/lark/schedules-card.d.ts.map +0 -1
- package/dist/im/lark/schedules-card.js +0 -910
- package/dist/im/lark/schedules-card.js.map +0 -1
- package/dist/im/lark/sessions-card.d.ts +0 -117
- package/dist/im/lark/sessions-card.d.ts.map +0 -1
- package/dist/im/lark/sessions-card.js +0 -876
- package/dist/im/lark/sessions-card.js.map +0 -1
- package/dist/im/lark/settings-card.d.ts +0 -125
- package/dist/im/lark/settings-card.d.ts.map +0 -1
- package/dist/im/lark/settings-card.js +0 -434
- package/dist/im/lark/settings-card.js.map +0 -1
- package/dist/im/lark/substitute-command.d.ts +0 -2
- package/dist/im/lark/substitute-command.d.ts.map +0 -1
- package/dist/im/lark/substitute-command.js +0 -68
- package/dist/im/lark/substitute-command.js.map +0 -1
- package/dist/im/lark/summary-command.d.ts +0 -21
- package/dist/im/lark/summary-command.d.ts.map +0 -1
- package/dist/im/lark/summary-command.js +0 -335
- package/dist/im/lark/summary-command.js.map +0 -1
- package/dist/im/lark/topic-root-context.d.ts +0 -35
- package/dist/im/lark/topic-root-context.d.ts.map +0 -1
- package/dist/im/lark/topic-root-context.js +0 -37
- package/dist/im/lark/topic-root-context.js.map +0 -1
- package/dist/im/lark/v3-blocked-card-handler.d.ts +0 -28
- package/dist/im/lark/v3-blocked-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-blocked-card-handler.js +0 -134
- package/dist/im/lark/v3-blocked-card-handler.js.map +0 -1
- package/dist/im/lark/v3-blocked-card.d.ts +0 -76
- package/dist/im/lark/v3-blocked-card.d.ts.map +0 -1
- package/dist/im/lark/v3-blocked-card.js +0 -224
- package/dist/im/lark/v3-blocked-card.js.map +0 -1
- package/dist/im/lark/v3-distillation-card-handler.d.ts +0 -12
- package/dist/im/lark/v3-distillation-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-distillation-card-handler.js +0 -107
- package/dist/im/lark/v3-distillation-card-handler.js.map +0 -1
- package/dist/im/lark/v3-distillation-card.d.ts +0 -42
- package/dist/im/lark/v3-distillation-card.d.ts.map +0 -1
- package/dist/im/lark/v3-distillation-card.js +0 -206
- package/dist/im/lark/v3-distillation-card.js.map +0 -1
- package/dist/im/lark/v3-gate-card-handler.d.ts +0 -31
- package/dist/im/lark/v3-gate-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-gate-card-handler.js +0 -111
- package/dist/im/lark/v3-gate-card-handler.js.map +0 -1
- package/dist/im/lark/v3-gate-card.d.ts +0 -56
- package/dist/im/lark/v3-gate-card.d.ts.map +0 -1
- package/dist/im/lark/v3-gate-card.js +0 -153
- package/dist/im/lark/v3-gate-card.js.map +0 -1
- package/dist/im/lark/v3-loop-grant-card-handler.d.ts +0 -28
- package/dist/im/lark/v3-loop-grant-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-loop-grant-card-handler.js +0 -89
- package/dist/im/lark/v3-loop-grant-card-handler.js.map +0 -1
- package/dist/im/lark/v3-loop-grant-card.d.ts +0 -46
- package/dist/im/lark/v3-loop-grant-card.d.ts.map +0 -1
- package/dist/im/lark/v3-loop-grant-card.js +0 -120
- package/dist/im/lark/v3-loop-grant-card.js.map +0 -1
- package/dist/im/lark/v3-progress-card-manager.d.ts +0 -79
- package/dist/im/lark/v3-progress-card-manager.d.ts.map +0 -1
- package/dist/im/lark/v3-progress-card-manager.js +0 -444
- package/dist/im/lark/v3-progress-card-manager.js.map +0 -1
- package/dist/im/lark/v3-progress-card.d.ts +0 -26
- package/dist/im/lark/v3-progress-card.d.ts.map +0 -1
- package/dist/im/lark/v3-progress-card.js +0 -217
- package/dist/im/lark/v3-progress-card.js.map +0 -1
- package/dist/im/lark/v3-revisit-grant-card-handler.d.ts +0 -29
- package/dist/im/lark/v3-revisit-grant-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-revisit-grant-card-handler.js +0 -95
- package/dist/im/lark/v3-revisit-grant-card-handler.js.map +0 -1
- package/dist/im/lark/v3-revisit-grant-card.d.ts +0 -52
- package/dist/im/lark/v3-revisit-grant-card.d.ts.map +0 -1
- package/dist/im/lark/v3-revisit-grant-card.js +0 -124
- package/dist/im/lark/v3-revisit-grant-card.js.map +0 -1
- package/dist/im/lark/v3-run-save-card-handler.d.ts +0 -12
- package/dist/im/lark/v3-run-save-card-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-run-save-card-handler.js +0 -160
- package/dist/im/lark/v3-run-save-card-handler.js.map +0 -1
- package/dist/im/lark/v3-run-save-card.d.ts +0 -38
- package/dist/im/lark/v3-run-save-card.d.ts.map +0 -1
- package/dist/im/lark/v3-run-save-card.js +0 -125
- package/dist/im/lark/v3-run-save-card.js.map +0 -1
- package/dist/im/lark/v3-saved-workflow-command.d.ts +0 -36
- package/dist/im/lark/v3-saved-workflow-command.d.ts.map +0 -1
- package/dist/im/lark/v3-saved-workflow-command.js +0 -186
- package/dist/im/lark/v3-saved-workflow-command.js.map +0 -1
- package/dist/im/lark/v3-saved-workflow-handler.d.ts +0 -89
- package/dist/im/lark/v3-saved-workflow-handler.d.ts.map +0 -1
- package/dist/im/lark/v3-saved-workflow-handler.js +0 -212
- package/dist/im/lark/v3-saved-workflow-handler.js.map +0 -1
- package/dist/im/lark/workflow-slash-command.d.ts +0 -18
- package/dist/im/lark/workflow-slash-command.d.ts.map +0 -1
- package/dist/im/lark/workflow-slash-command.js +0 -36
- package/dist/im/lark/workflow-slash-command.js.map +0 -1
- package/dist/im/types.d.ts +0 -79
- package/dist/im/types.d.ts.map +0 -1
- package/dist/im/types.js +0 -2
- package/dist/im/types.js.map +0 -1
- package/dist/index-core-only.d.ts +0 -3
- package/dist/index-core-only.d.ts.map +0 -1
- package/dist/index-core-only.js +0 -118
- package/dist/index-core-only.js.map +0 -1
- package/dist/index-daemon.d.ts +0 -3
- package/dist/index-daemon.d.ts.map +0 -1
- package/dist/index-daemon.js +0 -64
- package/dist/index-daemon.js.map +0 -1
- package/dist/mir-local-runtime.d.ts +0 -60
- package/dist/mir-local-runtime.d.ts.map +0 -1
- package/dist/mir-local-runtime.js +0 -362
- package/dist/mir-local-runtime.js.map +0 -1
- package/dist/mir-prompt.d.ts +0 -16
- package/dist/mir-prompt.d.ts.map +0 -1
- package/dist/mir-prompt.js +0 -170
- package/dist/mir-prompt.js.map +0 -1
- package/dist/mir-runner.d.ts +0 -3
- package/dist/mir-runner.d.ts.map +0 -1
- package/dist/mir-runner.js +0 -369
- package/dist/mir-runner.js.map +0 -1
- package/dist/mira-output.d.ts +0 -3
- package/dist/mira-output.d.ts.map +0 -1
- package/dist/mira-output.js +0 -136
- package/dist/mira-output.js.map +0 -1
- package/dist/mira-runner.d.ts +0 -3
- package/dist/mira-runner.d.ts.map +0 -1
- package/dist/mira-runner.js +0 -530
- package/dist/mira-runner.js.map +0 -1
- package/dist/platform/bind.d.ts +0 -5
- package/dist/platform/bind.d.ts.map +0 -1
- package/dist/platform/bind.js +0 -157
- package/dist/platform/bind.js.map +0 -1
- package/dist/platform/binding.d.ts +0 -47
- package/dist/platform/binding.d.ts.map +0 -1
- package/dist/platform/binding.js +0 -84
- package/dist/platform/binding.js.map +0 -1
- package/dist/platform/device-command.d.ts +0 -35
- package/dist/platform/device-command.d.ts.map +0 -1
- package/dist/platform/device-command.js +0 -187
- package/dist/platform/device-command.js.map +0 -1
- package/dist/platform/device-enroll.d.ts +0 -156
- package/dist/platform/device-enroll.d.ts.map +0 -1
- package/dist/platform/device-enroll.js +0 -781
- package/dist/platform/device-enroll.js.map +0 -1
- package/dist/platform/device-isolation-activation-client.d.ts +0 -28
- package/dist/platform/device-isolation-activation-client.d.ts.map +0 -1
- package/dist/platform/device-isolation-activation-client.js +0 -279
- package/dist/platform/device-isolation-activation-client.js.map +0 -1
- package/dist/platform/device-isolation.d.ts +0 -35
- package/dist/platform/device-isolation.d.ts.map +0 -1
- package/dist/platform/device-isolation.js +0 -90
- package/dist/platform/device-isolation.js.map +0 -1
- package/dist/platform/device-paths.d.ts +0 -9
- package/dist/platform/device-paths.d.ts.map +0 -1
- package/dist/platform/device-paths.js +0 -14
- package/dist/platform/device-paths.js.map +0 -1
- package/dist/platform/device.d.ts +0 -77
- package/dist/platform/device.d.ts.map +0 -1
- package/dist/platform/device.js +0 -212
- package/dist/platform/device.js.map +0 -1
- package/dist/platform/host-command-context.d.ts +0 -15
- package/dist/platform/host-command-context.d.ts.map +0 -1
- package/dist/platform/host-command-context.js +0 -26
- package/dist/platform/host-command-context.js.map +0 -1
- package/dist/platform/issue-client.d.ts +0 -201
- package/dist/platform/issue-client.d.ts.map +0 -1
- package/dist/platform/issue-client.js +0 -142
- package/dist/platform/issue-client.js.map +0 -1
- package/dist/platform/platform-http.d.ts +0 -15
- package/dist/platform/platform-http.d.ts.map +0 -1
- package/dist/platform/platform-http.js +0 -77
- package/dist/platform/platform-http.js.map +0 -1
- package/dist/platform/secure-host-file.d.ts +0 -12
- package/dist/platform/secure-host-file.d.ts.map +0 -1
- package/dist/platform/secure-host-file.js +0 -301
- package/dist/platform/secure-host-file.js.map +0 -1
- package/dist/platform/tunnel-client.d.ts +0 -41
- package/dist/platform/tunnel-client.d.ts.map +0 -1
- package/dist/platform/tunnel-client.js +0 -493
- package/dist/platform/tunnel-client.js.map +0 -1
- package/dist/pm2-graceful-exit.d.ts +0 -28
- package/dist/pm2-graceful-exit.d.ts.map +0 -1
- package/dist/pm2-graceful-exit.js +0 -39
- package/dist/pm2-graceful-exit.js.map +0 -1
- package/dist/services/adopt-picker.d.ts +0 -41
- package/dist/services/adopt-picker.d.ts.map +0 -1
- package/dist/services/adopt-picker.js +0 -70
- package/dist/services/adopt-picker.js.map +0 -1
- package/dist/services/aiden-checkpoints.d.ts +0 -5
- package/dist/services/aiden-checkpoints.d.ts.map +0 -1
- package/dist/services/aiden-checkpoints.js +0 -91
- package/dist/services/aiden-checkpoints.js.map +0 -1
- package/dist/services/allowed-chat-groups.d.ts +0 -11
- package/dist/services/allowed-chat-groups.d.ts.map +0 -1
- package/dist/services/allowed-chat-groups.js +0 -20
- package/dist/services/allowed-chat-groups.js.map +0 -1
- package/dist/services/async-trigger-state.d.ts +0 -90
- package/dist/services/async-trigger-state.d.ts.map +0 -1
- package/dist/services/async-trigger-state.js +0 -96
- package/dist/services/async-trigger-state.js.map +0 -1
- package/dist/services/async-trigger-store.d.ts +0 -36
- package/dist/services/async-trigger-store.d.ts.map +0 -1
- package/dist/services/async-trigger-store.js +0 -121
- package/dist/services/async-trigger-store.js.map +0 -1
- package/dist/services/backend-availability.d.ts +0 -29
- package/dist/services/backend-availability.d.ts.map +0 -1
- package/dist/services/backend-availability.js +0 -55
- package/dist/services/backend-availability.js.map +0 -1
- package/dist/services/backend-type-store.d.ts +0 -33
- package/dist/services/backend-type-store.d.ts.map +0 -1
- package/dist/services/backend-type-store.js +0 -43
- package/dist/services/backend-type-store.js.map +0 -1
- package/dist/services/bot-config-store.d.ts +0 -155
- package/dist/services/bot-config-store.d.ts.map +0 -1
- package/dist/services/bot-config-store.js +0 -384
- package/dist/services/bot-config-store.js.map +0 -1
- package/dist/services/bot-owner-store.d.ts +0 -28
- package/dist/services/bot-owner-store.d.ts.map +0 -1
- package/dist/services/bot-owner-store.js +0 -82
- package/dist/services/bot-owner-store.js.map +0 -1
- package/dist/services/bot-profile-store.d.ts +0 -16
- package/dist/services/bot-profile-store.d.ts.map +0 -1
- package/dist/services/bot-profile-store.js +0 -98
- package/dist/services/bot-profile-store.js.map +0 -1
- package/dist/services/bot-union-ids-store.d.ts +0 -24
- package/dist/services/bot-union-ids-store.d.ts.map +0 -1
- package/dist/services/bot-union-ids-store.js +0 -79
- package/dist/services/bot-union-ids-store.js.map +0 -1
- package/dist/services/brand-store.d.ts +0 -15
- package/dist/services/brand-store.d.ts.map +0 -1
- package/dist/services/brand-store.js +0 -47
- package/dist/services/brand-store.js.map +0 -1
- package/dist/services/bridge-fallback-gate.d.ts +0 -72
- package/dist/services/bridge-fallback-gate.d.ts.map +0 -1
- package/dist/services/bridge-fallback-gate.js +0 -190
- package/dist/services/bridge-fallback-gate.js.map +0 -1
- package/dist/services/bridge-rotation-policy.d.ts +0 -179
- package/dist/services/bridge-rotation-policy.d.ts.map +0 -1
- package/dist/services/bridge-rotation-policy.js +0 -163
- package/dist/services/bridge-rotation-policy.js.map +0 -1
- package/dist/services/bridge-turn-queue.d.ts +0 -198
- package/dist/services/bridge-turn-queue.d.ts.map +0 -1
- package/dist/services/bridge-turn-queue.js +0 -430
- package/dist/services/bridge-turn-queue.js.map +0 -1
- package/dist/services/card-mode-store.d.ts +0 -13
- package/dist/services/card-mode-store.d.ts.map +0 -1
- package/dist/services/card-mode-store.js +0 -52
- package/dist/services/card-mode-store.js.map +0 -1
- package/dist/services/card-prefs-store.d.ts +0 -55
- package/dist/services/card-prefs-store.d.ts.map +0 -1
- package/dist/services/card-prefs-store.js +0 -269
- package/dist/services/card-prefs-store.js.map +0 -1
- package/dist/services/chat-first-seen-store.d.ts +0 -27
- package/dist/services/chat-first-seen-store.d.ts.map +0 -1
- package/dist/services/chat-first-seen-store.js +0 -114
- package/dist/services/chat-first-seen-store.js.map +0 -1
- package/dist/services/chat-reply-mode-store.d.ts +0 -30
- package/dist/services/chat-reply-mode-store.d.ts.map +0 -1
- package/dist/services/chat-reply-mode-store.js +0 -135
- package/dist/services/chat-reply-mode-store.js.map +0 -1
- package/dist/services/claude-transcript.d.ts +0 -323
- package/dist/services/claude-transcript.d.ts.map +0 -1
- package/dist/services/claude-transcript.js +0 -930
- package/dist/services/claude-transcript.js.map +0 -1
- package/dist/services/coco-paths.d.ts +0 -10
- package/dist/services/coco-paths.d.ts.map +0 -1
- package/dist/services/coco-paths.js +0 -16
- package/dist/services/coco-paths.js.map +0 -1
- package/dist/services/coco-transcript.d.ts +0 -35
- package/dist/services/coco-transcript.d.ts.map +0 -1
- package/dist/services/coco-transcript.js +0 -183
- package/dist/services/coco-transcript.js.map +0 -1
- package/dist/services/codex-app-runner-protocol.d.ts +0 -70
- package/dist/services/codex-app-runner-protocol.d.ts.map +0 -1
- package/dist/services/codex-app-runner-protocol.js +0 -187
- package/dist/services/codex-app-runner-protocol.js.map +0 -1
- package/dist/services/codex-app-threads.d.ts +0 -67
- package/dist/services/codex-app-threads.d.ts.map +0 -1
- package/dist/services/codex-app-threads.js +0 -657
- package/dist/services/codex-app-threads.js.map +0 -1
- package/dist/services/codex-app-token-usage.d.ts +0 -93
- package/dist/services/codex-app-token-usage.d.ts.map +0 -1
- package/dist/services/codex-app-token-usage.js +0 -190
- package/dist/services/codex-app-token-usage.js.map +0 -1
- package/dist/services/codex-app-turn-controller.d.ts +0 -72
- package/dist/services/codex-app-turn-controller.d.ts.map +0 -1
- package/dist/services/codex-app-turn-controller.js +0 -524
- package/dist/services/codex-app-turn-controller.js.map +0 -1
- package/dist/services/codex-bridge-queue.d.ts +0 -73
- package/dist/services/codex-bridge-queue.d.ts.map +0 -1
- package/dist/services/codex-bridge-queue.js +0 -273
- package/dist/services/codex-bridge-queue.js.map +0 -1
- package/dist/services/codex-composer-state.d.ts +0 -27
- package/dist/services/codex-composer-state.d.ts.map +0 -1
- package/dist/services/codex-composer-state.js +0 -53
- package/dist/services/codex-composer-state.js.map +0 -1
- package/dist/services/codex-paths.d.ts +0 -7
- package/dist/services/codex-paths.d.ts.map +0 -1
- package/dist/services/codex-paths.js +0 -19
- package/dist/services/codex-paths.js.map +0 -1
- package/dist/services/codex-runner-freshness.d.ts +0 -39
- package/dist/services/codex-runner-freshness.d.ts.map +0 -1
- package/dist/services/codex-runner-freshness.js +0 -78
- package/dist/services/codex-runner-freshness.js.map +0 -1
- package/dist/services/codex-service-tier.d.ts +0 -44
- package/dist/services/codex-service-tier.d.ts.map +0 -1
- package/dist/services/codex-service-tier.js +0 -63
- package/dist/services/codex-service-tier.js.map +0 -1
- package/dist/services/codex-transcript.d.ts +0 -140
- package/dist/services/codex-transcript.d.ts.map +0 -1
- package/dist/services/codex-transcript.js +0 -631
- package/dist/services/codex-transcript.js.map +0 -1
- package/dist/services/config-store.d.ts +0 -19
- package/dist/services/config-store.d.ts.map +0 -1
- package/dist/services/config-store.js +0 -52
- package/dist/services/config-store.js.map +0 -1
- package/dist/services/connector-store.d.ts +0 -71
- package/dist/services/connector-store.d.ts.map +0 -1
- package/dist/services/connector-store.js +0 -79
- package/dist/services/connector-store.js.map +0 -1
- package/dist/services/cursor-resume-policy.d.ts +0 -12
- package/dist/services/cursor-resume-policy.d.ts.map +0 -1
- package/dist/services/cursor-resume-policy.js +0 -15
- package/dist/services/cursor-resume-policy.js.map +0 -1
- package/dist/services/cursor-transcript.d.ts +0 -47
- package/dist/services/cursor-transcript.d.ts.map +0 -1
- package/dist/services/cursor-transcript.js +0 -324
- package/dist/services/cursor-transcript.js.map +0 -1
- package/dist/services/default-worktree.d.ts +0 -28
- package/dist/services/default-worktree.d.ts.map +0 -1
- package/dist/services/default-worktree.js +0 -102
- package/dist/services/default-worktree.js.map +0 -1
- package/dist/services/deployment-identity.d.ts +0 -22
- package/dist/services/deployment-identity.d.ts.map +0 -1
- package/dist/services/deployment-identity.js +0 -67
- package/dist/services/deployment-identity.js.map +0 -1
- package/dist/services/doc-subs-store.d.ts +0 -63
- package/dist/services/doc-subs-store.d.ts.map +0 -1
- package/dist/services/doc-subs-store.js +0 -95
- package/dist/services/doc-subs-store.js.map +0 -1
- package/dist/services/exact-chat-grant.d.ts +0 -83
- package/dist/services/exact-chat-grant.d.ts.map +0 -1
- package/dist/services/exact-chat-grant.js +0 -249
- package/dist/services/exact-chat-grant.js.map +0 -1
- package/dist/services/federation-membership-store.d.ts +0 -23
- package/dist/services/federation-membership-store.d.ts.map +0 -1
- package/dist/services/federation-membership-store.js +0 -66
- package/dist/services/federation-membership-store.js.map +0 -1
- package/dist/services/federation-roster.d.ts +0 -58
- package/dist/services/federation-roster.d.ts.map +0 -1
- package/dist/services/federation-roster.js +0 -59
- package/dist/services/federation-roster.js.map +0 -1
- package/dist/services/federation-store.d.ts +0 -87
- package/dist/services/federation-store.d.ts.map +0 -1
- package/dist/services/federation-store.js +0 -143
- package/dist/services/federation-store.js.map +0 -1
- package/dist/services/file-bridge-path.d.ts +0 -8
- package/dist/services/file-bridge-path.d.ts.map +0 -1
- package/dist/services/file-bridge-path.js +0 -75
- package/dist/services/file-bridge-path.js.map +0 -1
- package/dist/services/frozen-card-store.d.ts +0 -8
- package/dist/services/frozen-card-store.d.ts.map +0 -1
- package/dist/services/frozen-card-store.js +0 -66
- package/dist/services/frozen-card-store.js.map +0 -1
- package/dist/services/git-worktree.d.ts +0 -63
- package/dist/services/git-worktree.d.ts.map +0 -1
- package/dist/services/git-worktree.js +0 -246
- package/dist/services/git-worktree.js.map +0 -1
- package/dist/services/grant-policy.d.ts +0 -13
- package/dist/services/grant-policy.d.ts.map +0 -1
- package/dist/services/grant-policy.js +0 -40
- package/dist/services/grant-policy.js.map +0 -1
- package/dist/services/grant-prefs-store.d.ts +0 -26
- package/dist/services/grant-prefs-store.d.ts.map +0 -1
- package/dist/services/grant-prefs-store.js +0 -109
- package/dist/services/grant-prefs-store.js.map +0 -1
- package/dist/services/grant-store.d.ts +0 -103
- package/dist/services/grant-store.d.ts.map +0 -1
- package/dist/services/grant-store.js +0 -580
- package/dist/services/grant-store.js.map +0 -1
- package/dist/services/grok-paths.d.ts +0 -27
- package/dist/services/grok-paths.d.ts.map +0 -1
- package/dist/services/grok-paths.js +0 -106
- package/dist/services/grok-paths.js.map +0 -1
- package/dist/services/grok-transcript.d.ts +0 -68
- package/dist/services/grok-transcript.d.ts.map +0 -1
- package/dist/services/grok-transcript.js +0 -681
- package/dist/services/grok-transcript.js.map +0 -1
- package/dist/services/group-creator.d.ts +0 -87
- package/dist/services/group-creator.d.ts.map +0 -1
- package/dist/services/group-creator.js +0 -288
- package/dist/services/group-creator.js.map +0 -1
- package/dist/services/groups-store.d.ts +0 -194
- package/dist/services/groups-store.d.ts.map +0 -1
- package/dist/services/groups-store.js +0 -493
- package/dist/services/groups-store.js.map +0 -1
- package/dist/services/hermes-session-filter.d.ts +0 -28
- package/dist/services/hermes-session-filter.d.ts.map +0 -1
- package/dist/services/hermes-session-filter.js +0 -53
- package/dist/services/hermes-session-filter.js.map +0 -1
- package/dist/services/hermes-transcript.d.ts +0 -11
- package/dist/services/hermes-transcript.d.ts.map +0 -1
- package/dist/services/hermes-transcript.js +0 -184
- package/dist/services/hermes-transcript.js.map +0 -1
- package/dist/services/hook-runner.d.ts +0 -53
- package/dist/services/hook-runner.d.ts.map +0 -1
- package/dist/services/hook-runner.js +0 -451
- package/dist/services/hook-runner.js.map +0 -1
- package/dist/services/insight/antigravity-span-reader.d.ts +0 -3
- package/dist/services/insight/antigravity-span-reader.d.ts.map +0 -1
- package/dist/services/insight/antigravity-span-reader.js +0 -249
- package/dist/services/insight/antigravity-span-reader.js.map +0 -1
- package/dist/services/insight/classify.d.ts +0 -9
- package/dist/services/insight/classify.d.ts.map +0 -1
- package/dist/services/insight/classify.js +0 -71
- package/dist/services/insight/classify.js.map +0 -1
- package/dist/services/insight/claude-span-reader.d.ts +0 -3
- package/dist/services/insight/claude-span-reader.d.ts.map +0 -1
- package/dist/services/insight/claude-span-reader.js +0 -276
- package/dist/services/insight/claude-span-reader.js.map +0 -1
- package/dist/services/insight/codex-span-reader.d.ts +0 -3
- package/dist/services/insight/codex-span-reader.d.ts.map +0 -1
- package/dist/services/insight/codex-span-reader.js +0 -306
- package/dist/services/insight/codex-span-reader.js.map +0 -1
- package/dist/services/insight/intent.d.ts +0 -5
- package/dist/services/insight/intent.d.ts.map +0 -1
- package/dist/services/insight/intent.js +0 -145
- package/dist/services/insight/intent.js.map +0 -1
- package/dist/services/insight/jsonl.d.ts +0 -10
- package/dist/services/insight/jsonl.d.ts.map +0 -1
- package/dist/services/insight/jsonl.js +0 -36
- package/dist/services/insight/jsonl.js.map +0 -1
- package/dist/services/insight/prompt.d.ts +0 -3
- package/dist/services/insight/prompt.d.ts.map +0 -1
- package/dist/services/insight/prompt.js +0 -99
- package/dist/services/insight/prompt.js.map +0 -1
- package/dist/services/insight/redact.d.ts +0 -4
- package/dist/services/insight/redact.d.ts.map +0 -1
- package/dist/services/insight/redact.js +0 -67
- package/dist/services/insight/redact.js.map +0 -1
- package/dist/services/insight/report.d.ts +0 -29
- package/dist/services/insight/report.d.ts.map +0 -1
- package/dist/services/insight/report.js +0 -1247
- package/dist/services/insight/report.js.map +0 -1
- package/dist/services/insight/safe-detail.d.ts +0 -5
- package/dist/services/insight/safe-detail.d.ts.map +0 -1
- package/dist/services/insight/safe-detail.js +0 -59
- package/dist/services/insight/safe-detail.js.map +0 -1
- package/dist/services/insight/scrub.d.ts +0 -22
- package/dist/services/insight/scrub.d.ts.map +0 -1
- package/dist/services/insight/scrub.js +0 -70
- package/dist/services/insight/scrub.js.map +0 -1
- package/dist/services/insight/subagent-reader.d.ts +0 -19
- package/dist/services/insight/subagent-reader.d.ts.map +0 -1
- package/dist/services/insight/subagent-reader.js +0 -111
- package/dist/services/insight/subagent-reader.js.map +0 -1
- package/dist/services/insight/types.d.ts +0 -448
- package/dist/services/insight/types.d.ts.map +0 -1
- package/dist/services/insight/types.js +0 -2
- package/dist/services/insight/types.js.map +0 -1
- package/dist/services/invite-store.d.ts +0 -28
- package/dist/services/invite-store.d.ts.map +0 -1
- package/dist/services/invite-store.js +0 -85
- package/dist/services/invite-store.js.map +0 -1
- package/dist/services/issue-board-store.d.ts +0 -214
- package/dist/services/issue-board-store.d.ts.map +0 -1
- package/dist/services/issue-board-store.js +0 -472
- package/dist/services/issue-board-store.js.map +0 -1
- package/dist/services/issue-claim-flow.d.ts +0 -160
- package/dist/services/issue-claim-flow.d.ts.map +0 -1
- package/dist/services/issue-claim-flow.js +0 -222
- package/dist/services/issue-claim-flow.js.map +0 -1
- package/dist/services/issue-outbox-pump.d.ts +0 -25
- package/dist/services/issue-outbox-pump.d.ts.map +0 -1
- package/dist/services/issue-outbox-pump.js +0 -102
- package/dist/services/issue-outbox-pump.js.map +0 -1
- package/dist/services/issue-release.d.ts +0 -78
- package/dist/services/issue-release.d.ts.map +0 -1
- package/dist/services/issue-release.js +0 -89
- package/dist/services/issue-release.js.map +0 -1
- package/dist/services/issue-report.d.ts +0 -72
- package/dist/services/issue-report.d.ts.map +0 -1
- package/dist/services/issue-report.js +0 -84
- package/dist/services/issue-report.js.map +0 -1
- package/dist/services/issue-status-view.d.ts +0 -52
- package/dist/services/issue-status-view.d.ts.map +0 -1
- package/dist/services/issue-status-view.js +0 -42
- package/dist/services/issue-status-view.js.map +0 -1
- package/dist/services/issue-status-writer.d.ts +0 -98
- package/dist/services/issue-status-writer.d.ts.map +0 -1
- package/dist/services/issue-status-writer.js +0 -123
- package/dist/services/issue-status-writer.js.map +0 -1
- package/dist/services/jsonl-cursor.d.ts +0 -24
- package/dist/services/jsonl-cursor.d.ts.map +0 -1
- package/dist/services/jsonl-cursor.js +0 -110
- package/dist/services/jsonl-cursor.js.map +0 -1
- package/dist/services/kiro-session.d.ts +0 -2
- package/dist/services/kiro-session.d.ts.map +0 -1
- package/dist/services/kiro-session.js +0 -19
- package/dist/services/kiro-session.js.map +0 -1
- package/dist/services/local-cli-opener.d.ts +0 -65
- package/dist/services/local-cli-opener.d.ts.map +0 -1
- package/dist/services/local-cli-opener.js +0 -426
- package/dist/services/local-cli-opener.js.map +0 -1
- package/dist/services/message-listener-run-preview-store.d.ts +0 -43
- package/dist/services/message-listener-run-preview-store.d.ts.map +0 -1
- package/dist/services/message-listener-run-preview-store.js +0 -152
- package/dist/services/message-listener-run-preview-store.js.map +0 -1
- package/dist/services/message-listener-store.d.ts +0 -44
- package/dist/services/message-listener-store.d.ts.map +0 -1
- package/dist/services/message-listener-store.js +0 -179
- package/dist/services/message-listener-store.js.map +0 -1
- package/dist/services/message-listener.d.ts +0 -129
- package/dist/services/message-listener.d.ts.map +0 -1
- package/dist/services/message-listener.js +0 -441
- package/dist/services/message-listener.js.map +0 -1
- package/dist/services/message-queue.d.ts +0 -9
- package/dist/services/message-queue.d.ts.map +0 -1
- package/dist/services/message-queue.js +0 -79
- package/dist/services/message-queue.js.map +0 -1
- package/dist/services/mtr-transcript.d.ts +0 -14
- package/dist/services/mtr-transcript.d.ts.map +0 -1
- package/dist/services/mtr-transcript.js +0 -291
- package/dist/services/mtr-transcript.js.map +0 -1
- package/dist/services/observed-bots-store.d.ts +0 -33
- package/dist/services/observed-bots-store.d.ts.map +0 -1
- package/dist/services/observed-bots-store.js +0 -103
- package/dist/services/observed-bots-store.js.map +0 -1
- package/dist/services/oncall-store.d.ts +0 -140
- package/dist/services/oncall-store.d.ts.map +0 -1
- package/dist/services/oncall-store.js +0 -403
- package/dist/services/oncall-store.js.map +0 -1
- package/dist/services/open-platform-rename.d.ts +0 -73
- package/dist/services/open-platform-rename.d.ts.map +0 -1
- package/dist/services/open-platform-rename.js +0 -396
- package/dist/services/open-platform-rename.js.map +0 -1
- package/dist/services/opencode-paths.d.ts +0 -7
- package/dist/services/opencode-paths.d.ts.map +0 -1
- package/dist/services/opencode-paths.js +0 -18
- package/dist/services/opencode-paths.js.map +0 -1
- package/dist/services/overload-alert-migration.d.ts +0 -15
- package/dist/services/overload-alert-migration.d.ts.map +0 -1
- package/dist/services/overload-alert-migration.js +0 -115
- package/dist/services/overload-alert-migration.js.map +0 -1
- package/dist/services/pairing-store.d.ts +0 -47
- package/dist/services/pairing-store.d.ts.map +0 -1
- package/dist/services/pairing-store.js +0 -132
- package/dist/services/pairing-store.js.map +0 -1
- package/dist/services/pi-transcript.d.ts +0 -26
- package/dist/services/pi-transcript.d.ts.map +0 -1
- package/dist/services/pi-transcript.js +0 -327
- package/dist/services/pi-transcript.js.map +0 -1
- package/dist/services/platform-team-store.d.ts +0 -52
- package/dist/services/platform-team-store.d.ts.map +0 -1
- package/dist/services/platform-team-store.js +0 -159
- package/dist/services/platform-team-store.js.map +0 -1
- package/dist/services/plugin-registry-store.d.ts +0 -8
- package/dist/services/plugin-registry-store.d.ts.map +0 -1
- package/dist/services/plugin-registry-store.js +0 -153
- package/dist/services/plugin-registry-store.js.map +0 -1
- package/dist/services/project-scanner.d.ts +0 -28
- package/dist/services/project-scanner.d.ts.map +0 -1
- package/dist/services/project-scanner.js +0 -203
- package/dist/services/project-scanner.js.map +0 -1
- package/dist/services/quota-dedup.d.ts +0 -33
- package/dist/services/quota-dedup.d.ts.map +0 -1
- package/dist/services/quota-dedup.js +0 -67
- package/dist/services/quota-dedup.js.map +0 -1
- package/dist/services/relay-picker.d.ts +0 -27
- package/dist/services/relay-picker.d.ts.map +0 -1
- package/dist/services/relay-picker.js +0 -88
- package/dist/services/relay-picker.js.map +0 -1
- package/dist/services/restart-intent-store.d.ts +0 -41
- package/dist/services/restart-intent-store.d.ts.map +0 -1
- package/dist/services/restart-intent-store.js +0 -194
- package/dist/services/restart-intent-store.js.map +0 -1
- package/dist/services/resumable-session-discovery.d.ts +0 -15
- package/dist/services/resumable-session-discovery.d.ts.map +0 -1
- package/dist/services/resumable-session-discovery.js +0 -357
- package/dist/services/resumable-session-discovery.js.map +0 -1
- package/dist/services/role-profile-store.d.ts +0 -25
- package/dist/services/role-profile-store.d.ts.map +0 -1
- package/dist/services/role-profile-store.js +0 -176
- package/dist/services/role-profile-store.js.map +0 -1
- package/dist/services/sandbox-migration.d.ts +0 -14
- package/dist/services/sandbox-migration.d.ts.map +0 -1
- package/dist/services/sandbox-migration.js +0 -85
- package/dist/services/sandbox-migration.js.map +0 -1
- package/dist/services/sandbox-store.d.ts +0 -50
- package/dist/services/sandbox-store.d.ts.map +0 -1
- package/dist/services/sandbox-store.js +0 -155
- package/dist/services/sandbox-store.js.map +0 -1
- package/dist/services/schedule-split-migration.d.ts +0 -2
- package/dist/services/schedule-split-migration.d.ts.map +0 -1
- package/dist/services/schedule-split-migration.js +0 -159
- package/dist/services/schedule-split-migration.js.map +0 -1
- package/dist/services/schedule-store.d.ts +0 -138
- package/dist/services/schedule-store.d.ts.map +0 -1
- package/dist/services/schedule-store.js +0 -619
- package/dist/services/schedule-store.js.map +0 -1
- package/dist/services/seen-message-store.d.ts +0 -12
- package/dist/services/seen-message-store.d.ts.map +0 -1
- package/dist/services/seen-message-store.js +0 -119
- package/dist/services/seen-message-store.js.map +0 -1
- package/dist/services/send-policy.d.ts +0 -182
- package/dist/services/send-policy.d.ts.map +0 -1
- package/dist/services/send-policy.js +0 -189
- package/dist/services/send-policy.js.map +0 -1
- package/dist/services/session-lifecycle-hooks.d.ts +0 -10
- package/dist/services/session-lifecycle-hooks.d.ts.map +0 -1
- package/dist/services/session-lifecycle-hooks.js +0 -78
- package/dist/services/session-lifecycle-hooks.js.map +0 -1
- package/dist/services/session-store.d.ts +0 -68
- package/dist/services/session-store.d.ts.map +0 -1
- package/dist/services/session-store.js +0 -419
- package/dist/services/session-store.js.map +0 -1
- package/dist/services/skill-registry-store.d.ts +0 -121
- package/dist/services/skill-registry-store.d.ts.map +0 -1
- package/dist/services/skill-registry-store.js +0 -1240
- package/dist/services/skill-registry-store.js.map +0 -1
- package/dist/services/structured-bridge-clis.d.ts +0 -29
- package/dist/services/structured-bridge-clis.d.ts.map +0 -1
- package/dist/services/structured-bridge-clis.js +0 -76
- package/dist/services/structured-bridge-clis.js.map +0 -1
- package/dist/services/submit-confirmation.d.ts +0 -22
- package/dist/services/submit-confirmation.d.ts.map +0 -1
- package/dist/services/submit-confirmation.js +0 -12
- package/dist/services/submit-confirmation.js.map +0 -1
- package/dist/services/substitute-chat-toggle-store.d.ts +0 -3
- package/dist/services/substitute-chat-toggle-store.d.ts.map +0 -1
- package/dist/services/substitute-chat-toggle-store.js +0 -58
- package/dist/services/substitute-chat-toggle-store.js.map +0 -1
- package/dist/services/substitute-mode-normalize.d.ts +0 -25
- package/dist/services/substitute-mode-normalize.d.ts.map +0 -1
- package/dist/services/substitute-mode-normalize.js +0 -80
- package/dist/services/substitute-mode-normalize.js.map +0 -1
- package/dist/services/substitute-mode-store.d.ts +0 -69
- package/dist/services/substitute-mode-store.d.ts.map +0 -1
- package/dist/services/substitute-mode-store.js +0 -142
- package/dist/services/substitute-mode-store.js.map +0 -1
- package/dist/services/summary-range-store.d.ts +0 -21
- package/dist/services/summary-range-store.d.ts.map +0 -1
- package/dist/services/summary-range-store.js +0 -89
- package/dist/services/summary-range-store.js.map +0 -1
- package/dist/services/team-board-store.d.ts +0 -33
- package/dist/services/team-board-store.d.ts.map +0 -1
- package/dist/services/team-board-store.js +0 -88
- package/dist/services/team-board-store.js.map +0 -1
- package/dist/services/team-bot-directory.d.ts +0 -29
- package/dist/services/team-bot-directory.d.ts.map +0 -1
- package/dist/services/team-bot-directory.js +0 -118
- package/dist/services/team-bot-directory.js.map +0 -1
- package/dist/services/team-bots-store.d.ts +0 -34
- package/dist/services/team-bots-store.d.ts.map +0 -1
- package/dist/services/team-bots-store.js +0 -111
- package/dist/services/team-bots-store.js.map +0 -1
- package/dist/services/team-groups-store.d.ts +0 -29
- package/dist/services/team-groups-store.d.ts.map +0 -1
- package/dist/services/team-groups-store.js +0 -70
- package/dist/services/team-groups-store.js.map +0 -1
- package/dist/services/team-roster.d.ts +0 -64
- package/dist/services/team-roster.d.ts.map +0 -1
- package/dist/services/team-roster.js +0 -108
- package/dist/services/team-roster.js.map +0 -1
- package/dist/services/team-store.d.ts +0 -54
- package/dist/services/team-store.d.ts.map +0 -1
- package/dist/services/team-store.js +0 -156
- package/dist/services/team-store.js.map +0 -1
- package/dist/services/traex-paths.d.ts +0 -26
- package/dist/services/traex-paths.d.ts.map +0 -1
- package/dist/services/traex-paths.js +0 -40
- package/dist/services/traex-paths.js.map +0 -1
- package/dist/services/traex-transcript.d.ts +0 -59
- package/dist/services/traex-transcript.d.ts.map +0 -1
- package/dist/services/traex-transcript.js +0 -370
- package/dist/services/traex-transcript.js.map +0 -1
- package/dist/services/traex-user-input.d.ts +0 -19
- package/dist/services/traex-user-input.d.ts.map +0 -1
- package/dist/services/traex-user-input.js +0 -57
- package/dist/services/traex-user-input.js.map +0 -1
- package/dist/services/transcript-resolver.d.ts +0 -35
- package/dist/services/transcript-resolver.d.ts.map +0 -1
- package/dist/services/transcript-resolver.js +0 -297
- package/dist/services/transcript-resolver.js.map +0 -1
- package/dist/services/trigger-log-store.d.ts +0 -105
- package/dist/services/trigger-log-store.d.ts.map +0 -1
- package/dist/services/trigger-log-store.js +0 -203
- package/dist/services/trigger-log-store.js.map +0 -1
- package/dist/services/trigger-types.d.ts +0 -124
- package/dist/services/trigger-types.d.ts.map +0 -1
- package/dist/services/trigger-types.js +0 -72
- package/dist/services/trigger-types.js.map +0 -1
- package/dist/services/turn-terminal-deduper.d.ts +0 -14
- package/dist/services/turn-terminal-deduper.d.ts.map +0 -1
- package/dist/services/turn-terminal-deduper.js +0 -34
- package/dist/services/turn-terminal-deduper.js.map +0 -1
- package/dist/services/usage-ledger.d.ts +0 -112
- package/dist/services/usage-ledger.d.ts.map +0 -1
- package/dist/services/usage-ledger.js +0 -485
- package/dist/services/usage-ledger.js.map +0 -1
- package/dist/services/vc-meeting-action-gate.d.ts +0 -246
- package/dist/services/vc-meeting-action-gate.d.ts.map +0 -1
- package/dist/services/vc-meeting-action-gate.js +0 -756
- package/dist/services/vc-meeting-action-gate.js.map +0 -1
- package/dist/services/vc-meeting-action-store.d.ts +0 -222
- package/dist/services/vc-meeting-action-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-action-store.js +0 -806
- package/dist/services/vc-meeting-action-store.js.map +0 -1
- package/dist/services/vc-meeting-consumer-isolation.d.ts +0 -29
- package/dist/services/vc-meeting-consumer-isolation.d.ts.map +0 -1
- package/dist/services/vc-meeting-consumer-isolation.js +0 -39
- package/dist/services/vc-meeting-consumer-isolation.js.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +0 -72
- package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js +0 -343
- package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-store.d.ts +0 -39
- package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-store.js +0 -191
- package/dist/services/vc-meeting-consumer-profile-store.js.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-templates.d.ts +0 -32
- package/dist/services/vc-meeting-consumer-profile-templates.d.ts.map +0 -1
- package/dist/services/vc-meeting-consumer-profile-templates.js +0 -106
- package/dist/services/vc-meeting-consumer-profile-templates.js.map +0 -1
- package/dist/services/vc-meeting-daemon-auth.d.ts +0 -29
- package/dist/services/vc-meeting-daemon-auth.d.ts.map +0 -1
- package/dist/services/vc-meeting-daemon-auth.js +0 -117
- package/dist/services/vc-meeting-daemon-auth.js.map +0 -1
- package/dist/services/vc-meeting-delivery-feed.d.ts +0 -52
- package/dist/services/vc-meeting-delivery-feed.d.ts.map +0 -1
- package/dist/services/vc-meeting-delivery-feed.js +0 -232
- package/dist/services/vc-meeting-delivery-feed.js.map +0 -1
- package/dist/services/vc-meeting-delivery-hub-store.d.ts +0 -215
- package/dist/services/vc-meeting-delivery-hub-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-delivery-hub-store.js +0 -1241
- package/dist/services/vc-meeting-delivery-hub-store.js.map +0 -1
- package/dist/services/vc-meeting-delivery-protocol.d.ts +0 -166
- package/dist/services/vc-meeting-delivery-protocol.d.ts.map +0 -1
- package/dist/services/vc-meeting-delivery-protocol.js +0 -452
- package/dist/services/vc-meeting-delivery-protocol.js.map +0 -1
- package/dist/services/vc-meeting-delivery-receiver.d.ts +0 -80
- package/dist/services/vc-meeting-delivery-receiver.d.ts.map +0 -1
- package/dist/services/vc-meeting-delivery-receiver.js +0 -552
- package/dist/services/vc-meeting-delivery-receiver.js.map +0 -1
- package/dist/services/vc-meeting-delivery-store.d.ts +0 -349
- package/dist/services/vc-meeting-delivery-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-delivery-store.js +0 -1036
- package/dist/services/vc-meeting-delivery-store.js.map +0 -1
- package/dist/services/vc-meeting-feed-metadata-store.d.ts +0 -58
- package/dist/services/vc-meeting-feed-metadata-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-feed-metadata-store.js +0 -356
- package/dist/services/vc-meeting-feed-metadata-store.js.map +0 -1
- package/dist/services/vc-meeting-im-reply.d.ts +0 -56
- package/dist/services/vc-meeting-im-reply.d.ts.map +0 -1
- package/dist/services/vc-meeting-im-reply.js +0 -295
- package/dist/services/vc-meeting-im-reply.js.map +0 -1
- package/dist/services/vc-meeting-im-routing.d.ts +0 -131
- package/dist/services/vc-meeting-im-routing.d.ts.map +0 -1
- package/dist/services/vc-meeting-im-routing.js +0 -449
- package/dist/services/vc-meeting-im-routing.js.map +0 -1
- package/dist/services/vc-meeting-listener-message-store.d.ts +0 -23
- package/dist/services/vc-meeting-listener-message-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-listener-message-store.js +0 -142
- package/dist/services/vc-meeting-listener-message-store.js.map +0 -1
- package/dist/services/vc-meeting-listener-output-protocol.d.ts +0 -27
- package/dist/services/vc-meeting-listener-output-protocol.d.ts.map +0 -1
- package/dist/services/vc-meeting-listener-output-protocol.js +0 -58
- package/dist/services/vc-meeting-listener-output-protocol.js.map +0 -1
- package/dist/services/vc-meeting-listener-topic-store.d.ts +0 -31
- package/dist/services/vc-meeting-listener-topic-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-listener-topic-store.js +0 -120
- package/dist/services/vc-meeting-listener-topic-store.js.map +0 -1
- package/dist/services/vc-meeting-member-policy.d.ts +0 -37
- package/dist/services/vc-meeting-member-policy.d.ts.map +0 -1
- package/dist/services/vc-meeting-member-policy.js +0 -102
- package/dist/services/vc-meeting-member-policy.js.map +0 -1
- package/dist/services/vc-meeting-preparations-store.d.ts +0 -22
- package/dist/services/vc-meeting-preparations-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-preparations-store.js +0 -131
- package/dist/services/vc-meeting-preparations-store.js.map +0 -1
- package/dist/services/vc-meeting-profile-instructions.d.ts +0 -22
- package/dist/services/vc-meeting-profile-instructions.d.ts.map +0 -1
- package/dist/services/vc-meeting-profile-instructions.js +0 -64
- package/dist/services/vc-meeting-profile-instructions.js.map +0 -1
- package/dist/services/vc-meeting-runtime-store.d.ts +0 -132
- package/dist/services/vc-meeting-runtime-store.d.ts.map +0 -1
- package/dist/services/vc-meeting-runtime-store.js +0 -852
- package/dist/services/vc-meeting-runtime-store.js.map +0 -1
- package/dist/services/vc-meeting-send-policy.d.ts +0 -96
- package/dist/services/vc-meeting-send-policy.d.ts.map +0 -1
- package/dist/services/vc-meeting-send-policy.js +0 -158
- package/dist/services/vc-meeting-send-policy.js.map +0 -1
- package/dist/services/vc-meeting-terminal-reconciler.d.ts +0 -93
- package/dist/services/vc-meeting-terminal-reconciler.d.ts.map +0 -1
- package/dist/services/vc-meeting-terminal-reconciler.js +0 -198
- package/dist/services/vc-meeting-terminal-reconciler.js.map +0 -1
- package/dist/services/voice/audio.d.ts +0 -32
- package/dist/services/voice/audio.d.ts.map +0 -1
- package/dist/services/voice/audio.js +0 -114
- package/dist/services/voice/audio.js.map +0 -1
- package/dist/services/voice/index.d.ts +0 -37
- package/dist/services/voice/index.d.ts.map +0 -1
- package/dist/services/voice/index.js +0 -105
- package/dist/services/voice/index.js.map +0 -1
- package/dist/services/voice/openai.d.ts +0 -24
- package/dist/services/voice/openai.d.ts.map +0 -1
- package/dist/services/voice/openai.js +0 -47
- package/dist/services/voice/openai.js.map +0 -1
- package/dist/services/voice/sami.d.ts +0 -22
- package/dist/services/voice/sami.d.ts.map +0 -1
- package/dist/services/voice/sami.js +0 -128
- package/dist/services/voice/sami.js.map +0 -1
- package/dist/services/voice/types.d.ts +0 -32
- package/dist/services/voice/types.d.ts.map +0 -1
- package/dist/services/voice/types.js +0 -2
- package/dist/services/voice/types.js.map +0 -1
- package/dist/services/webhook-audit.d.ts +0 -10
- package/dist/services/webhook-audit.d.ts.map +0 -1
- package/dist/services/webhook-audit.js +0 -116
- package/dist/services/webhook-audit.js.map +0 -1
- package/dist/services/webhook-key.d.ts +0 -16
- package/dist/services/webhook-key.d.ts.map +0 -1
- package/dist/services/webhook-key.js +0 -123
- package/dist/services/webhook-key.js.map +0 -1
- package/dist/services/webhook-lifecycle-extractors.d.ts +0 -6
- package/dist/services/webhook-lifecycle-extractors.d.ts.map +0 -1
- package/dist/services/webhook-lifecycle-extractors.js +0 -44
- package/dist/services/webhook-lifecycle-extractors.js.map +0 -1
- package/dist/services/webhook-lifecycle-store.d.ts +0 -45
- package/dist/services/webhook-lifecycle-store.d.ts.map +0 -1
- package/dist/services/webhook-lifecycle-store.js +0 -159
- package/dist/services/webhook-lifecycle-store.js.map +0 -1
- package/dist/services/whiteboard-store.d.ts +0 -67
- package/dist/services/whiteboard-store.d.ts.map +0 -1
- package/dist/services/whiteboard-store.js +0 -450
- package/dist/services/whiteboard-store.js.map +0 -1
- package/dist/services/worktree-slug-ai.d.ts +0 -3
- package/dist/services/worktree-slug-ai.d.ts.map +0 -1
- package/dist/services/worktree-slug-ai.js +0 -82
- package/dist/services/worktree-slug-ai.js.map +0 -1
- package/dist/setup/agent-preset.d.ts +0 -78
- package/dist/setup/agent-preset.d.ts.map +0 -1
- package/dist/setup/agent-preset.js +0 -127
- package/dist/setup/agent-preset.js.map +0 -1
- package/dist/setup/app-name.d.ts +0 -7
- package/dist/setup/app-name.d.ts.map +0 -1
- package/dist/setup/app-name.js +0 -10
- package/dist/setup/app-name.js.map +0 -1
- package/dist/setup/bot-config-editor.d.ts +0 -160
- package/dist/setup/bot-config-editor.d.ts.map +0 -1
- package/dist/setup/bot-config-editor.js +0 -459
- package/dist/setup/bot-config-editor.js.map +0 -1
- package/dist/setup/bots-store.d.ts +0 -3
- package/dist/setup/bots-store.d.ts.map +0 -1
- package/dist/setup/bots-store.js +0 -24
- package/dist/setup/bots-store.js.map +0 -1
- package/dist/setup/cli-availability.d.ts +0 -26
- package/dist/setup/cli-availability.d.ts.map +0 -1
- package/dist/setup/cli-availability.js +0 -77
- package/dist/setup/cli-availability.js.map +0 -1
- package/dist/setup/cli-selection.d.ts +0 -145
- package/dist/setup/cli-selection.d.ts.map +0 -1
- package/dist/setup/cli-selection.js +0 -402
- package/dist/setup/cli-selection.js.map +0 -1
- package/dist/setup/detect-platform.d.ts +0 -14
- package/dist/setup/detect-platform.d.ts.map +0 -1
- package/dist/setup/detect-platform.js +0 -139
- package/dist/setup/detect-platform.js.map +0 -1
- package/dist/setup/ensure-fonts.d.ts +0 -13
- package/dist/setup/ensure-fonts.d.ts.map +0 -1
- package/dist/setup/ensure-fonts.js +0 -225
- package/dist/setup/ensure-fonts.js.map +0 -1
- package/dist/setup/ensure-herdr-integrations.d.ts +0 -102
- package/dist/setup/ensure-herdr-integrations.d.ts.map +0 -1
- package/dist/setup/ensure-herdr-integrations.js +0 -432
- package/dist/setup/ensure-herdr-integrations.js.map +0 -1
- package/dist/setup/ensure-herdr.d.ts +0 -12
- package/dist/setup/ensure-herdr.d.ts.map +0 -1
- package/dist/setup/ensure-herdr.js +0 -70
- package/dist/setup/ensure-herdr.js.map +0 -1
- package/dist/setup/ensure-opus.d.ts +0 -13
- package/dist/setup/ensure-opus.d.ts.map +0 -1
- package/dist/setup/ensure-opus.js +0 -64
- package/dist/setup/ensure-opus.js.map +0 -1
- package/dist/setup/ensure-tmux.d.ts +0 -91
- package/dist/setup/ensure-tmux.d.ts.map +0 -1
- package/dist/setup/ensure-tmux.js +0 -418
- package/dist/setup/ensure-tmux.js.map +0 -1
- package/dist/setup/ensure-zellij.d.ts +0 -48
- package/dist/setup/ensure-zellij.d.ts.map +0 -1
- package/dist/setup/ensure-zellij.js +0 -94
- package/dist/setup/ensure-zellij.js.map +0 -1
- package/dist/setup/ensure-zmx.d.ts +0 -31
- package/dist/setup/ensure-zmx.d.ts.map +0 -1
- package/dist/setup/ensure-zmx.js +0 -161
- package/dist/setup/ensure-zmx.js.map +0 -1
- package/dist/setup/index.d.ts +0 -38
- package/dist/setup/index.d.ts.map +0 -1
- package/dist/setup/index.js +0 -194
- package/dist/setup/index.js.map +0 -1
- package/dist/setup/interactive-select.d.ts +0 -52
- package/dist/setup/interactive-select.d.ts.map +0 -1
- package/dist/setup/interactive-select.js +0 -271
- package/dist/setup/interactive-select.js.map +0 -1
- package/dist/setup/lark-scopes.json +0 -305
- package/dist/setup/open-platform-automation.d.ts +0 -417
- package/dist/setup/open-platform-automation.d.ts.map +0 -1
- package/dist/setup/open-platform-automation.js +0 -1610
- package/dist/setup/open-platform-automation.js.map +0 -1
- package/dist/setup/open-platform-outcome.d.ts +0 -50
- package/dist/setup/open-platform-outcome.d.ts.map +0 -1
- package/dist/setup/open-platform-outcome.js +0 -56
- package/dist/setup/open-platform-outcome.js.map +0 -1
- package/dist/setup/register-app.d.ts +0 -52
- package/dist/setup/register-app.d.ts.map +0 -1
- package/dist/setup/register-app.js +0 -91
- package/dist/setup/register-app.js.map +0 -1
- package/dist/setup/setup-args.d.ts +0 -89
- package/dist/setup/setup-args.d.ts.map +0 -1
- package/dist/setup/setup-args.js +0 -387
- package/dist/setup/setup-args.js.map +0 -1
- package/dist/setup/verify-permissions.d.ts +0 -150
- package/dist/setup/verify-permissions.d.ts.map +0 -1
- package/dist/setup/verify-permissions.js +0 -353
- package/dist/setup/verify-permissions.js.map +0 -1
- package/dist/skills/definitions.d.ts +0 -31
- package/dist/skills/definitions.d.ts.map +0 -1
- package/dist/skills/definitions.js +0 -1510
- package/dist/skills/definitions.js.map +0 -1
- package/dist/skills/injection-mode.d.ts +0 -93
- package/dist/skills/injection-mode.d.ts.map +0 -1
- package/dist/skills/injection-mode.js +0 -204
- package/dist/skills/injection-mode.js.map +0 -1
- package/dist/skills/installer.d.ts +0 -60
- package/dist/skills/installer.d.ts.map +0 -1
- package/dist/skills/installer.js +0 -217
- package/dist/skills/installer.js.map +0 -1
- package/dist/types.d.ts +0 -1131
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/utils/allowed-users-apply.d.ts +0 -76
- package/dist/utils/allowed-users-apply.d.ts.map +0 -1
- package/dist/utils/allowed-users-apply.js +0 -124
- package/dist/utils/allowed-users-apply.js.map +0 -1
- package/dist/utils/allowed-users-cache.d.ts +0 -29
- package/dist/utils/allowed-users-cache.d.ts.map +0 -1
- package/dist/utils/allowed-users-cache.js +0 -82
- package/dist/utils/allowed-users-cache.js.map +0 -1
- package/dist/utils/anchor-serializer.d.ts +0 -12
- package/dist/utils/anchor-serializer.d.ts.map +0 -1
- package/dist/utils/anchor-serializer.js +0 -64
- package/dist/utils/anchor-serializer.js.map +0 -1
- package/dist/utils/atomic-write.d.ts +0 -34
- package/dist/utils/atomic-write.d.ts.map +0 -1
- package/dist/utils/atomic-write.js +0 -183
- package/dist/utils/atomic-write.js.map +0 -1
- package/dist/utils/bot-routing.d.ts +0 -80
- package/dist/utils/bot-routing.d.ts.map +0 -1
- package/dist/utils/bot-routing.js +0 -167
- package/dist/utils/bot-routing.js.map +0 -1
- package/dist/utils/bounded-map.d.ts +0 -15
- package/dist/utils/bounded-map.d.ts.map +0 -1
- package/dist/utils/bounded-map.js +0 -29
- package/dist/utils/bounded-map.js.map +0 -1
- package/dist/utils/canonical-input-hash.d.ts +0 -5
- package/dist/utils/canonical-input-hash.d.ts.map +0 -1
- package/dist/utils/canonical-input-hash.js +0 -43
- package/dist/utils/canonical-input-hash.js.map +0 -1
- package/dist/utils/canonical-json.d.ts +0 -10
- package/dist/utils/canonical-json.d.ts.map +0 -1
- package/dist/utils/canonical-json.js +0 -23
- package/dist/utils/canonical-json.js.map +0 -1
- package/dist/utils/child-env.d.ts +0 -147
- package/dist/utils/child-env.d.ts.map +0 -1
- package/dist/utils/child-env.js +0 -299
- package/dist/utils/child-env.js.map +0 -1
- package/dist/utils/cli-usage-limit.d.ts +0 -62
- package/dist/utils/cli-usage-limit.d.ts.map +0 -1
- package/dist/utils/cli-usage-limit.js +0 -169
- package/dist/utils/cli-usage-limit.js.map +0 -1
- package/dist/utils/codex-app-context.d.ts +0 -9
- package/dist/utils/codex-app-context.d.ts.map +0 -1
- package/dist/utils/codex-app-context.js +0 -47
- package/dist/utils/codex-app-context.js.map +0 -1
- package/dist/utils/codex-update-dialog.d.ts +0 -17
- package/dist/utils/codex-update-dialog.d.ts.map +0 -1
- package/dist/utils/codex-update-dialog.js +0 -33
- package/dist/utils/codex-update-dialog.js.map +0 -1
- package/dist/utils/crash-log.d.ts +0 -22
- package/dist/utils/crash-log.d.ts.map +0 -1
- package/dist/utils/crash-log.js +0 -37
- package/dist/utils/crash-log.js.map +0 -1
- package/dist/utils/daemon-discovery.d.ts +0 -25
- package/dist/utils/daemon-discovery.d.ts.map +0 -1
- package/dist/utils/daemon-discovery.js +0 -86
- package/dist/utils/daemon-discovery.js.map +0 -1
- package/dist/utils/effort-confirm-dialog.d.ts +0 -40
- package/dist/utils/effort-confirm-dialog.d.ts.map +0 -1
- package/dist/utils/effort-confirm-dialog.js +0 -74
- package/dist/utils/effort-confirm-dialog.js.map +0 -1
- package/dist/utils/executable.d.ts +0 -3
- package/dist/utils/executable.d.ts.map +0 -1
- package/dist/utils/executable.js +0 -24
- package/dist/utils/executable.js.map +0 -1
- package/dist/utils/file-lock.d.ts +0 -19
- package/dist/utils/file-lock.d.ts.map +0 -1
- package/dist/utils/file-lock.js +0 -1038
- package/dist/utils/file-lock.js.map +0 -1
- package/dist/utils/font-installer.d.ts +0 -2
- package/dist/utils/font-installer.d.ts.map +0 -1
- package/dist/utils/font-installer.js +0 -60
- package/dist/utils/font-installer.js.map +0 -1
- package/dist/utils/fs-durability.d.ts +0 -20
- package/dist/utils/fs-durability.d.ts.map +0 -1
- package/dist/utils/fs-durability.js +0 -84
- package/dist/utils/fs-durability.js.map +0 -1
- package/dist/utils/global-install.d.ts +0 -27
- package/dist/utils/global-install.d.ts.map +0 -1
- package/dist/utils/global-install.js +0 -184
- package/dist/utils/global-install.js.map +0 -1
- package/dist/utils/herdr-web-history.d.ts +0 -12
- package/dist/utils/herdr-web-history.d.ts.map +0 -1
- package/dist/utils/herdr-web-history.js +0 -74
- package/dist/utils/herdr-web-history.js.map +0 -1
- package/dist/utils/herdr-web-terminal-binding.d.ts +0 -39
- package/dist/utils/herdr-web-terminal-binding.d.ts.map +0 -1
- package/dist/utils/herdr-web-terminal-binding.js +0 -56
- package/dist/utils/herdr-web-terminal-binding.js.map +0 -1
- package/dist/utils/idle-detector.d.ts +0 -39
- package/dist/utils/idle-detector.d.ts.map +0 -1
- package/dist/utils/idle-detector.js +0 -159
- package/dist/utils/idle-detector.js.map +0 -1
- package/dist/utils/input-gate.d.ts +0 -103
- package/dist/utils/input-gate.d.ts.map +0 -1
- package/dist/utils/input-gate.js +0 -96
- package/dist/utils/input-gate.js.map +0 -1
- package/dist/utils/install-diagnostics.d.ts +0 -52
- package/dist/utils/install-diagnostics.d.ts.map +0 -1
- package/dist/utils/install-diagnostics.js +0 -157
- package/dist/utils/install-diagnostics.js.map +0 -1
- package/dist/utils/install-info.d.ts +0 -19
- package/dist/utils/install-info.d.ts.map +0 -1
- package/dist/utils/install-info.js +0 -68
- package/dist/utils/install-info.js.map +0 -1
- package/dist/utils/lark-upload.d.ts +0 -3
- package/dist/utils/lark-upload.d.ts.map +0 -1
- package/dist/utils/lark-upload.js +0 -31
- package/dist/utils/lark-upload.js.map +0 -1
- package/dist/utils/listen-with-probe.d.ts +0 -47
- package/dist/utils/listen-with-probe.d.ts.map +0 -1
- package/dist/utils/listen-with-probe.js +0 -142
- package/dist/utils/listen-with-probe.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -17
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -80
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/pending-input-queue.d.ts +0 -122
- package/dist/utils/pending-input-queue.d.ts.map +0 -1
- package/dist/utils/pending-input-queue.js +0 -170
- package/dist/utils/pending-input-queue.js.map +0 -1
- package/dist/utils/process-identity.d.ts +0 -7
- package/dist/utils/process-identity.d.ts.map +0 -1
- package/dist/utils/process-identity.js +0 -62
- package/dist/utils/process-identity.js.map +0 -1
- package/dist/utils/ready-gate.d.ts +0 -90
- package/dist/utils/ready-gate.d.ts.map +0 -1
- package/dist/utils/ready-gate.js +0 -104
- package/dist/utils/ready-gate.js.map +0 -1
- package/dist/utils/render-dimensions.d.ts +0 -56
- package/dist/utils/render-dimensions.d.ts.map +0 -1
- package/dist/utils/render-dimensions.js +0 -65
- package/dist/utils/render-dimensions.js.map +0 -1
- package/dist/utils/runtime-build-id.d.ts +0 -21
- package/dist/utils/runtime-build-id.d.ts.map +0 -1
- package/dist/utils/runtime-build-id.js +0 -83
- package/dist/utils/runtime-build-id.js.map +0 -1
- package/dist/utils/screenshot-renderer.d.ts +0 -11
- package/dist/utils/screenshot-renderer.d.ts.map +0 -1
- package/dist/utils/screenshot-renderer.js +0 -267
- package/dist/utils/screenshot-renderer.js.map +0 -1
- package/dist/utils/stdio-epipe-guard.d.ts +0 -39
- package/dist/utils/stdio-epipe-guard.d.ts.map +0 -1
- package/dist/utils/stdio-epipe-guard.js +0 -67
- package/dist/utils/stdio-epipe-guard.js.map +0 -1
- package/dist/utils/stuck-detector.d.ts +0 -45
- package/dist/utils/stuck-detector.d.ts.map +0 -1
- package/dist/utils/stuck-detector.js +0 -188
- package/dist/utils/stuck-detector.js.map +0 -1
- package/dist/utils/stuck-key-guard.d.ts +0 -76
- package/dist/utils/stuck-key-guard.d.ts.map +0 -1
- package/dist/utils/stuck-key-guard.js +0 -77
- package/dist/utils/stuck-key-guard.js.map +0 -1
- package/dist/utils/terminal-favicon.d.ts +0 -2
- package/dist/utils/terminal-favicon.d.ts.map +0 -1
- package/dist/utils/terminal-favicon.js +0 -5
- package/dist/utils/terminal-favicon.js.map +0 -1
- package/dist/utils/terminal-renderer.d.ts +0 -59
- package/dist/utils/terminal-renderer.d.ts.map +0 -1
- package/dist/utils/terminal-renderer.js +0 -121
- package/dist/utils/terminal-renderer.js.map +0 -1
- package/dist/utils/timezone.d.ts +0 -51
- package/dist/utils/timezone.d.ts.map +0 -1
- package/dist/utils/timezone.js +0 -110
- package/dist/utils/timezone.js.map +0 -1
- package/dist/utils/timing.d.ts +0 -30
- package/dist/utils/timing.d.ts.map +0 -1
- package/dist/utils/timing.js +0 -41
- package/dist/utils/timing.js.map +0 -1
- package/dist/utils/transient-snapshot.d.ts +0 -53
- package/dist/utils/transient-snapshot.d.ts.map +0 -1
- package/dist/utils/transient-snapshot.js +0 -123
- package/dist/utils/transient-snapshot.js.map +0 -1
- package/dist/utils/tui-input-delivery.d.ts +0 -32
- package/dist/utils/tui-input-delivery.d.ts.map +0 -1
- package/dist/utils/tui-input-delivery.js +0 -53
- package/dist/utils/tui-input-delivery.js.map +0 -1
- package/dist/utils/user-token.d.ts +0 -53
- package/dist/utils/user-token.d.ts.map +0 -1
- package/dist/utils/user-token.js +0 -296
- package/dist/utils/user-token.js.map +0 -1
- package/dist/utils/version-info.d.ts +0 -25
- package/dist/utils/version-info.d.ts.map +0 -1
- package/dist/utils/version-info.js +0 -48
- package/dist/utils/version-info.js.map +0 -1
- package/dist/utils/web-terminal-listen.d.ts +0 -30
- package/dist/utils/web-terminal-listen.d.ts.map +0 -1
- package/dist/utils/web-terminal-listen.js +0 -81
- package/dist/utils/web-terminal-listen.js.map +0 -1
- package/dist/utils/web-terminal-seed.d.ts +0 -40
- package/dist/utils/web-terminal-seed.d.ts.map +0 -1
- package/dist/utils/web-terminal-seed.js +0 -46
- package/dist/utils/web-terminal-seed.js.map +0 -1
- package/dist/utils/worker-http.d.ts +0 -7
- package/dist/utils/worker-http.d.ts.map +0 -1
- package/dist/utils/worker-http.js +0 -27
- package/dist/utils/worker-http.js.map +0 -1
- package/dist/utils/working-dir.d.ts +0 -11
- package/dist/utils/working-dir.d.ts.map +0 -1
- package/dist/utils/working-dir.js +0 -45
- package/dist/utils/working-dir.js.map +0 -1
- package/dist/utils/xml.d.ts +0 -19
- package/dist/utils/xml.d.ts.map +0 -1
- package/dist/utils/xml.js +0 -26
- package/dist/utils/xml.js.map +0 -1
- package/dist/vc-agent/cards.d.ts +0 -94
- package/dist/vc-agent/cards.d.ts.map +0 -1
- package/dist/vc-agent/cards.js +0 -927
- package/dist/vc-agent/cards.js.map +0 -1
- package/dist/vc-agent/meeting-state.d.ts +0 -39
- package/dist/vc-agent/meeting-state.d.ts.map +0 -1
- package/dist/vc-agent/meeting-state.js +0 -186
- package/dist/vc-agent/meeting-state.js.map +0 -1
- package/dist/vc-agent/normalizer.d.ts +0 -13
- package/dist/vc-agent/normalizer.d.ts.map +0 -1
- package/dist/vc-agent/normalizer.js +0 -470
- package/dist/vc-agent/normalizer.js.map +0 -1
- package/dist/vc-agent/polling-source.d.ts +0 -69
- package/dist/vc-agent/polling-source.d.ts.map +0 -1
- package/dist/vc-agent/polling-source.js +0 -194
- package/dist/vc-agent/polling-source.js.map +0 -1
- package/dist/vc-agent/push-source.d.ts +0 -13
- package/dist/vc-agent/push-source.d.ts.map +0 -1
- package/dist/vc-agent/push-source.js +0 -109
- package/dist/vc-agent/push-source.js.map +0 -1
- package/dist/vc-agent/realtime/audio-source.d.ts +0 -6
- package/dist/vc-agent/realtime/audio-source.d.ts.map +0 -1
- package/dist/vc-agent/realtime/audio-source.js +0 -17
- package/dist/vc-agent/realtime/audio-source.js.map +0 -1
- package/dist/vc-agent/realtime/endpoint.d.ts +0 -6
- package/dist/vc-agent/realtime/endpoint.d.ts.map +0 -1
- package/dist/vc-agent/realtime/endpoint.js +0 -25
- package/dist/vc-agent/realtime/endpoint.js.map +0 -1
- package/dist/vc-agent/realtime/errors.d.ts +0 -9
- package/dist/vc-agent/realtime/errors.d.ts.map +0 -1
- package/dist/vc-agent/realtime/errors.js +0 -17
- package/dist/vc-agent/realtime/errors.js.map +0 -1
- package/dist/vc-agent/realtime/events.d.ts +0 -24
- package/dist/vc-agent/realtime/events.d.ts.map +0 -1
- package/dist/vc-agent/realtime/events.js +0 -190
- package/dist/vc-agent/realtime/events.js.map +0 -1
- package/dist/vc-agent/realtime/frontier.d.ts +0 -34
- package/dist/vc-agent/realtime/frontier.d.ts.map +0 -1
- package/dist/vc-agent/realtime/frontier.js +0 -40
- package/dist/vc-agent/realtime/frontier.js.map +0 -1
- package/dist/vc-agent/realtime/index.d.ts +0 -11
- package/dist/vc-agent/realtime/index.d.ts.map +0 -1
- package/dist/vc-agent/realtime/index.js +0 -11
- package/dist/vc-agent/realtime/index.js.map +0 -1
- package/dist/vc-agent/realtime/pacer.d.ts +0 -21
- package/dist/vc-agent/realtime/pacer.d.ts.map +0 -1
- package/dist/vc-agent/realtime/pacer.js +0 -80
- package/dist/vc-agent/realtime/pacer.js.map +0 -1
- package/dist/vc-agent/realtime/protobuf.d.ts +0 -33
- package/dist/vc-agent/realtime/protobuf.d.ts.map +0 -1
- package/dist/vc-agent/realtime/protobuf.js +0 -159
- package/dist/vc-agent/realtime/protobuf.js.map +0 -1
- package/dist/vc-agent/realtime/protocol.d.ts +0 -4
- package/dist/vc-agent/realtime/protocol.d.ts.map +0 -1
- package/dist/vc-agent/realtime/protocol.js +0 -59
- package/dist/vc-agent/realtime/protocol.js.map +0 -1
- package/dist/vc-agent/realtime/session.d.ts +0 -39
- package/dist/vc-agent/realtime/session.d.ts.map +0 -1
- package/dist/vc-agent/realtime/session.js +0 -221
- package/dist/vc-agent/realtime/session.js.map +0 -1
- package/dist/vc-agent/realtime/transport.d.ts +0 -23
- package/dist/vc-agent/realtime/transport.d.ts.map +0 -1
- package/dist/vc-agent/realtime/transport.js +0 -112
- package/dist/vc-agent/realtime/transport.js.map +0 -1
- package/dist/vc-agent/realtime/types.d.ts +0 -84
- package/dist/vc-agent/realtime/types.d.ts.map +0 -1
- package/dist/vc-agent/realtime/types.js +0 -5
- package/dist/vc-agent/realtime/types.js.map +0 -1
- package/dist/vc-agent/types.d.ts +0 -143
- package/dist/vc-agent/types.d.ts.map +0 -1
- package/dist/vc-agent/types.js +0 -2
- package/dist/vc-agent/types.js.map +0 -1
- package/dist/worker.d.ts +0 -3
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js +0 -12831
- package/dist/worker.js.map +0 -1
- package/dist/workflows/attempt-terminal.d.ts +0 -25
- package/dist/workflows/attempt-terminal.d.ts.map +0 -1
- package/dist/workflows/attempt-terminal.js +0 -7
- package/dist/workflows/attempt-terminal.js.map +0 -1
- package/dist/workflows/definition.d.ts +0 -1705
- package/dist/workflows/definition.d.ts.map +0 -1
- package/dist/workflows/definition.js +0 -552
- package/dist/workflows/definition.js.map +0 -1
- package/dist/workflows/events/payloads.d.ts +0 -1116
- package/dist/workflows/events/payloads.d.ts.map +0 -1
- package/dist/workflows/events/payloads.js +0 -397
- package/dist/workflows/events/payloads.js.map +0 -1
- package/dist/workflows/events/replay.d.ts +0 -265
- package/dist/workflows/events/replay.d.ts.map +0 -1
- package/dist/workflows/events/replay.js +0 -716
- package/dist/workflows/events/replay.js.map +0 -1
- package/dist/workflows/events/schema.d.ts +0 -6093
- package/dist/workflows/events/schema.d.ts.map +0 -1
- package/dist/workflows/events/schema.js +0 -328
- package/dist/workflows/events/schema.js.map +0 -1
- package/dist/workflows/events/types.d.ts +0 -38
- package/dist/workflows/events/types.d.ts.map +0 -1
- package/dist/workflows/events/types.js +0 -2
- package/dist/workflows/events/types.js.map +0 -1
- package/dist/workflows/hostExecutors/botmux-schedule.d.ts +0 -47
- package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/botmux-schedule.js +0 -198
- package/dist/workflows/hostExecutors/botmux-schedule.js.map +0 -1
- package/dist/workflows/hostExecutors/feishu-im.d.ts +0 -12
- package/dist/workflows/hostExecutors/feishu-im.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/feishu-im.js +0 -49
- package/dist/workflows/hostExecutors/feishu-im.js.map +0 -1
- package/dist/workflows/hostExecutors/feishu-reply.d.ts +0 -24
- package/dist/workflows/hostExecutors/feishu-reply.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/feishu-reply.js +0 -88
- package/dist/workflows/hostExecutors/feishu-reply.js.map +0 -1
- package/dist/workflows/hostExecutors/feishu-send.d.ts +0 -23
- package/dist/workflows/hostExecutors/feishu-send.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/feishu-send.js +0 -124
- package/dist/workflows/hostExecutors/feishu-send.js.map +0 -1
- package/dist/workflows/hostExecutors/index.d.ts +0 -7
- package/dist/workflows/hostExecutors/index.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/index.js +0 -7
- package/dist/workflows/hostExecutors/index.js.map +0 -1
- package/dist/workflows/hostExecutors/registry.d.ts +0 -5
- package/dist/workflows/hostExecutors/registry.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/registry.js +0 -36
- package/dist/workflows/hostExecutors/registry.js.map +0 -1
- package/dist/workflows/hostExecutors/types.d.ts +0 -70
- package/dist/workflows/hostExecutors/types.d.ts.map +0 -1
- package/dist/workflows/hostExecutors/types.js +0 -2
- package/dist/workflows/hostExecutors/types.js.map +0 -1
- package/dist/workflows/migration/v2-definition-paths.d.ts +0 -3
- package/dist/workflows/migration/v2-definition-paths.d.ts.map +0 -1
- package/dist/workflows/migration/v2-definition-paths.js +0 -10
- package/dist/workflows/migration/v2-definition-paths.js.map +0 -1
- package/dist/workflows/migration/v2-ledger.d.ts +0 -138
- package/dist/workflows/migration/v2-ledger.d.ts.map +0 -1
- package/dist/workflows/migration/v2-ledger.js +0 -599
- package/dist/workflows/migration/v2-ledger.js.map +0 -1
- package/dist/workflows/migration/v2-migration-service.d.ts +0 -40
- package/dist/workflows/migration/v2-migration-service.d.ts.map +0 -1
- package/dist/workflows/migration/v2-migration-service.js +0 -454
- package/dist/workflows/migration/v2-migration-service.js.map +0 -1
- package/dist/workflows/migration/v2-read-only-ids.d.ts +0 -7
- package/dist/workflows/migration/v2-read-only-ids.d.ts.map +0 -1
- package/dist/workflows/migration/v2-read-only-ids.js +0 -9
- package/dist/workflows/migration/v2-read-only-ids.js.map +0 -1
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +0 -976
- package/dist/workflows/migration/v2-run-archive-schema.d.ts.map +0 -1
- package/dist/workflows/migration/v2-run-archive-schema.js +0 -113
- package/dist/workflows/migration/v2-run-archive-schema.js.map +0 -1
- package/dist/workflows/migration/v2-run-archive.d.ts +0 -92
- package/dist/workflows/migration/v2-run-archive.d.ts.map +0 -1
- package/dist/workflows/migration/v2-run-archive.js +0 -1220
- package/dist/workflows/migration/v2-run-archive.js.map +0 -1
- package/dist/workflows/migration/v2-scanner.d.ts +0 -22
- package/dist/workflows/migration/v2-scanner.d.ts.map +0 -1
- package/dist/workflows/migration/v2-scanner.js +0 -114
- package/dist/workflows/migration/v2-scanner.js.map +0 -1
- package/dist/workflows/migration/v2-to-v3.d.ts +0 -32
- package/dist/workflows/migration/v2-to-v3.d.ts.map +0 -1
- package/dist/workflows/migration/v2-to-v3.js +0 -498
- package/dist/workflows/migration/v2-to-v3.js.map +0 -1
- package/dist/workflows/ops-projection.d.ts +0 -226
- package/dist/workflows/ops-projection.d.ts.map +0 -1
- package/dist/workflows/ops-projection.js +0 -804
- package/dist/workflows/ops-projection.js.map +0 -1
- package/dist/workflows/shared/idempotency-key.d.ts +0 -19
- package/dist/workflows/shared/idempotency-key.d.ts.map +0 -1
- package/dist/workflows/shared/idempotency-key.js +0 -23
- package/dist/workflows/shared/idempotency-key.js.map +0 -1
- package/dist/workflows/shared/params.d.ts +0 -97
- package/dist/workflows/shared/params.d.ts.map +0 -1
- package/dist/workflows/shared/params.js +0 -282
- package/dist/workflows/shared/params.js.map +0 -1
- package/dist/workflows/shared/provider-reconciler.d.ts +0 -18
- package/dist/workflows/shared/provider-reconciler.d.ts.map +0 -1
- package/dist/workflows/shared/provider-reconciler.js +0 -17
- package/dist/workflows/shared/provider-reconciler.js.map +0 -1
- package/dist/workflows/shared/sandbox-policy.d.ts +0 -23
- package/dist/workflows/shared/sandbox-policy.d.ts.map +0 -1
- package/dist/workflows/shared/sandbox-policy.js +0 -21
- package/dist/workflows/shared/sandbox-policy.js.map +0 -1
- package/dist/workflows/shared/worker-process.d.ts +0 -29
- package/dist/workflows/shared/worker-process.d.ts.map +0 -1
- package/dist/workflows/shared/worker-process.js +0 -56
- package/dist/workflows/shared/worker-process.js.map +0 -1
- package/dist/workflows/v3/architect.d.ts +0 -37
- package/dist/workflows/v3/architect.d.ts.map +0 -1
- package/dist/workflows/v3/architect.js +0 -239
- package/dist/workflows/v3/architect.js.map +0 -1
- package/dist/workflows/v3/artifact-contract.d.ts +0 -41
- package/dist/workflows/v3/artifact-contract.d.ts.map +0 -1
- package/dist/workflows/v3/artifact-contract.js +0 -20
- package/dist/workflows/v3/artifact-contract.js.map +0 -1
- package/dist/workflows/v3/attempt-ledger.d.ts +0 -23
- package/dist/workflows/v3/attempt-ledger.d.ts.map +0 -1
- package/dist/workflows/v3/attempt-ledger.js +0 -74
- package/dist/workflows/v3/attempt-ledger.js.map +0 -1
- package/dist/workflows/v3/bot-resolve.d.ts +0 -39
- package/dist/workflows/v3/bot-resolve.d.ts.map +0 -1
- package/dist/workflows/v3/bot-resolve.js +0 -214
- package/dist/workflows/v3/bot-resolve.js.map +0 -1
- package/dist/workflows/v3/botmux-attempt-lease.d.ts +0 -7
- package/dist/workflows/v3/botmux-attempt-lease.d.ts.map +0 -1
- package/dist/workflows/v3/botmux-attempt-lease.js +0 -189
- package/dist/workflows/v3/botmux-attempt-lease.js.map +0 -1
- package/dist/workflows/v3/botmux-host-policy.d.ts +0 -7
- package/dist/workflows/v3/botmux-host-policy.d.ts.map +0 -1
- package/dist/workflows/v3/botmux-host-policy.js +0 -34
- package/dist/workflows/v3/botmux-host-policy.js.map +0 -1
- package/dist/workflows/v3/cli-daemon-command-authority.d.ts +0 -59
- package/dist/workflows/v3/cli-daemon-command-authority.d.ts.map +0 -1
- package/dist/workflows/v3/cli-daemon-command-authority.js +0 -175
- package/dist/workflows/v3/cli-daemon-command-authority.js.map +0 -1
- package/dist/workflows/v3/cli-run.d.ts +0 -60
- package/dist/workflows/v3/cli-run.d.ts.map +0 -1
- package/dist/workflows/v3/cli-run.js +0 -368
- package/dist/workflows/v3/cli-run.js.map +0 -1
- package/dist/workflows/v3/contract.d.ts +0 -243
- package/dist/workflows/v3/contract.d.ts.map +0 -1
- package/dist/workflows/v3/contract.js +0 -89
- package/dist/workflows/v3/contract.js.map +0 -1
- package/dist/workflows/v3/core-control.d.ts +0 -16
- package/dist/workflows/v3/core-control.d.ts.map +0 -1
- package/dist/workflows/v3/core-control.js +0 -60
- package/dist/workflows/v3/core-control.js.map +0 -1
- package/dist/workflows/v3/daemon-ipc-auth.d.ts +0 -113
- package/dist/workflows/v3/daemon-ipc-auth.d.ts.map +0 -1
- package/dist/workflows/v3/daemon-ipc-auth.js +0 -294
- package/dist/workflows/v3/daemon-ipc-auth.js.map +0 -1
- package/dist/workflows/v3/daemon-ipc-body.d.ts +0 -30
- package/dist/workflows/v3/daemon-ipc-body.d.ts.map +0 -1
- package/dist/workflows/v3/daemon-ipc-body.js +0 -65
- package/dist/workflows/v3/daemon-ipc-body.js.map +0 -1
- package/dist/workflows/v3/daemon-ipc-client.d.ts +0 -32
- package/dist/workflows/v3/daemon-ipc-client.d.ts.map +0 -1
- package/dist/workflows/v3/daemon-ipc-client.js +0 -74
- package/dist/workflows/v3/daemon-ipc-client.js.map +0 -1
- package/dist/workflows/v3/daemon-run.d.ts +0 -396
- package/dist/workflows/v3/daemon-run.d.ts.map +0 -1
- package/dist/workflows/v3/daemon-run.js +0 -1573
- package/dist/workflows/v3/daemon-run.js.map +0 -1
- package/dist/workflows/v3/dag-loader.d.ts +0 -5
- package/dist/workflows/v3/dag-loader.d.ts.map +0 -1
- package/dist/workflows/v3/dag-loader.js +0 -22
- package/dist/workflows/v3/dag-loader.js.map +0 -1
- package/dist/workflows/v3/dag.d.ts +0 -342
- package/dist/workflows/v3/dag.d.ts.map +0 -1
- package/dist/workflows/v3/dag.js +0 -1210
- package/dist/workflows/v3/dag.js.map +0 -1
- package/dist/workflows/v3/distillation-compiler.d.ts +0 -36
- package/dist/workflows/v3/distillation-compiler.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-compiler.js +0 -704
- package/dist/workflows/v3/distillation-compiler.js.map +0 -1
- package/dist/workflows/v3/distillation-private-root.d.ts +0 -10
- package/dist/workflows/v3/distillation-private-root.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-private-root.js +0 -34
- package/dist/workflows/v3/distillation-private-root.js.map +0 -1
- package/dist/workflows/v3/distillation-runner.d.ts +0 -68
- package/dist/workflows/v3/distillation-runner.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-runner.js +0 -1030
- package/dist/workflows/v3/distillation-runner.js.map +0 -1
- package/dist/workflows/v3/distillation-schema.d.ts +0 -63
- package/dist/workflows/v3/distillation-schema.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-schema.js +0 -184
- package/dist/workflows/v3/distillation-schema.js.map +0 -1
- package/dist/workflows/v3/distillation-service.d.ts +0 -78
- package/dist/workflows/v3/distillation-service.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-service.js +0 -416
- package/dist/workflows/v3/distillation-service.js.map +0 -1
- package/dist/workflows/v3/distillation-source.d.ts +0 -35
- package/dist/workflows/v3/distillation-source.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-source.js +0 -118
- package/dist/workflows/v3/distillation-source.js.map +0 -1
- package/dist/workflows/v3/distillation-store.d.ts +0 -185
- package/dist/workflows/v3/distillation-store.d.ts.map +0 -1
- package/dist/workflows/v3/distillation-store.js +0 -1127
- package/dist/workflows/v3/distillation-store.js.map +0 -1
- package/dist/workflows/v3/drive-lease.d.ts +0 -7
- package/dist/workflows/v3/drive-lease.d.ts.map +0 -1
- package/dist/workflows/v3/drive-lease.js +0 -10
- package/dist/workflows/v3/drive-lease.js.map +0 -1
- package/dist/workflows/v3/ephemeral-pool.d.ts +0 -29
- package/dist/workflows/v3/ephemeral-pool.d.ts.map +0 -1
- package/dist/workflows/v3/ephemeral-pool.js +0 -536
- package/dist/workflows/v3/ephemeral-pool.js.map +0 -1
- package/dist/workflows/v3/event-contract.d.ts +0 -273
- package/dist/workflows/v3/event-contract.d.ts.map +0 -1
- package/dist/workflows/v3/event-contract.js +0 -8
- package/dist/workflows/v3/event-contract.js.map +0 -1
- package/dist/workflows/v3/gate-policy.d.ts +0 -12
- package/dist/workflows/v3/gate-policy.d.ts.map +0 -1
- package/dist/workflows/v3/gate-policy.js +0 -20
- package/dist/workflows/v3/gate-policy.js.map +0 -1
- package/dist/workflows/v3/gate-wait-store.d.ts +0 -99
- package/dist/workflows/v3/gate-wait-store.d.ts.map +0 -1
- package/dist/workflows/v3/gate-wait-store.js +0 -263
- package/dist/workflows/v3/gate-wait-store.js.map +0 -1
- package/dist/workflows/v3/goal-cli.d.ts +0 -58
- package/dist/workflows/v3/goal-cli.d.ts.map +0 -1
- package/dist/workflows/v3/goal-cli.js +0 -430
- package/dist/workflows/v3/goal-cli.js.map +0 -1
- package/dist/workflows/v3/grill-state.d.ts +0 -107
- package/dist/workflows/v3/grill-state.d.ts.map +0 -1
- package/dist/workflows/v3/grill-state.js +0 -168
- package/dist/workflows/v3/grill-state.js.map +0 -1
- package/dist/workflows/v3/host-bindings.d.ts +0 -40
- package/dist/workflows/v3/host-bindings.d.ts.map +0 -1
- package/dist/workflows/v3/host-bindings.js +0 -272
- package/dist/workflows/v3/host-bindings.js.map +0 -1
- package/dist/workflows/v3/host-effect-ledger.d.ts +0 -22
- package/dist/workflows/v3/host-effect-ledger.d.ts.map +0 -1
- package/dist/workflows/v3/host-effect-ledger.js +0 -110
- package/dist/workflows/v3/host-effect-ledger.js.map +0 -1
- package/dist/workflows/v3/host-execution.d.ts +0 -142
- package/dist/workflows/v3/host-execution.d.ts.map +0 -1
- package/dist/workflows/v3/host-execution.js +0 -424
- package/dist/workflows/v3/host-execution.js.map +0 -1
- package/dist/workflows/v3/host.d.ts +0 -124
- package/dist/workflows/v3/host.d.ts.map +0 -1
- package/dist/workflows/v3/host.js +0 -628
- package/dist/workflows/v3/host.js.map +0 -1
- package/dist/workflows/v3/human-gate.d.ts +0 -8
- package/dist/workflows/v3/human-gate.d.ts.map +0 -1
- package/dist/workflows/v3/human-gate.js +0 -8
- package/dist/workflows/v3/human-gate.js.map +0 -1
- package/dist/workflows/v3/in-process-attempt-lease.d.ts +0 -10
- package/dist/workflows/v3/in-process-attempt-lease.d.ts.map +0 -1
- package/dist/workflows/v3/in-process-attempt-lease.js +0 -47
- package/dist/workflows/v3/in-process-attempt-lease.js.map +0 -1
- package/dist/workflows/v3/journal.d.ts +0 -52
- package/dist/workflows/v3/journal.d.ts.map +0 -1
- package/dist/workflows/v3/journal.js +0 -190
- package/dist/workflows/v3/journal.js.map +0 -1
- package/dist/workflows/v3/library-materialize.d.ts +0 -88
- package/dist/workflows/v3/library-materialize.d.ts.map +0 -1
- package/dist/workflows/v3/library-materialize.js +0 -298
- package/dist/workflows/v3/library-materialize.js.map +0 -1
- package/dist/workflows/v3/library-schema.d.ts +0 -159
- package/dist/workflows/v3/library-schema.d.ts.map +0 -1
- package/dist/workflows/v3/library-schema.js +0 -667
- package/dist/workflows/v3/library-schema.js.map +0 -1
- package/dist/workflows/v3/library-service.d.ts +0 -126
- package/dist/workflows/v3/library-service.d.ts.map +0 -1
- package/dist/workflows/v3/library-service.js +0 -542
- package/dist/workflows/v3/library-service.js.map +0 -1
- package/dist/workflows/v3/library-store.d.ts +0 -124
- package/dist/workflows/v3/library-store.d.ts.map +0 -1
- package/dist/workflows/v3/library-store.js +0 -665
- package/dist/workflows/v3/library-store.js.map +0 -1
- package/dist/workflows/v3/manifest.d.ts +0 -17
- package/dist/workflows/v3/manifest.d.ts.map +0 -1
- package/dist/workflows/v3/manifest.js +0 -266
- package/dist/workflows/v3/manifest.js.map +0 -1
- package/dist/workflows/v3/ops-projection.d.ts +0 -110
- package/dist/workflows/v3/ops-projection.d.ts.map +0 -1
- package/dist/workflows/v3/ops-projection.js +0 -0
- package/dist/workflows/v3/ops-projection.js.map +0 -1
- package/dist/workflows/v3/orchestrator.d.ts +0 -175
- package/dist/workflows/v3/orchestrator.d.ts.map +0 -1
- package/dist/workflows/v3/orchestrator.js +0 -418
- package/dist/workflows/v3/orchestrator.js.map +0 -1
- package/dist/workflows/v3/portable-artifact-snapshot.d.ts +0 -15
- package/dist/workflows/v3/portable-artifact-snapshot.d.ts.map +0 -1
- package/dist/workflows/v3/portable-artifact-snapshot.js +0 -76
- package/dist/workflows/v3/portable-artifact-snapshot.js.map +0 -1
- package/dist/workflows/v3/portable-final-outputs.d.ts +0 -37
- package/dist/workflows/v3/portable-final-outputs.d.ts.map +0 -1
- package/dist/workflows/v3/portable-final-outputs.js +0 -137
- package/dist/workflows/v3/portable-final-outputs.js.map +0 -1
- package/dist/workflows/v3/portable-run-snapshot.d.ts +0 -14
- package/dist/workflows/v3/portable-run-snapshot.d.ts.map +0 -1
- package/dist/workflows/v3/portable-run-snapshot.js +0 -176
- package/dist/workflows/v3/portable-run-snapshot.js.map +0 -1
- package/dist/workflows/v3/portable-runtime.d.ts +0 -83
- package/dist/workflows/v3/portable-runtime.d.ts.map +0 -1
- package/dist/workflows/v3/portable-runtime.js +0 -135
- package/dist/workflows/v3/portable-runtime.js.map +0 -1
- package/dist/workflows/v3/progress-projection.d.ts +0 -102
- package/dist/workflows/v3/progress-projection.d.ts.map +0 -1
- package/dist/workflows/v3/progress-projection.js +0 -219
- package/dist/workflows/v3/progress-projection.js.map +0 -1
- package/dist/workflows/v3/run-envelope.d.ts +0 -1324
- package/dist/workflows/v3/run-envelope.d.ts.map +0 -1
- package/dist/workflows/v3/run-envelope.js +0 -712
- package/dist/workflows/v3/run-envelope.js.map +0 -1
- package/dist/workflows/v3/runtime-host-contract.d.ts +0 -182
- package/dist/workflows/v3/runtime-host-contract.d.ts.map +0 -1
- package/dist/workflows/v3/runtime-host-contract.js +0 -9
- package/dist/workflows/v3/runtime-host-contract.js.map +0 -1
- package/dist/workflows/v3/runtime.d.ts +0 -16
- package/dist/workflows/v3/runtime.d.ts.map +0 -1
- package/dist/workflows/v3/runtime.js +0 -18
- package/dist/workflows/v3/runtime.js.map +0 -1
- package/dist/workflows/v3/session-relay-client.d.ts +0 -61
- package/dist/workflows/v3/session-relay-client.d.ts.map +0 -1
- package/dist/workflows/v3/session-relay-client.js +0 -92
- package/dist/workflows/v3/session-relay-client.js.map +0 -1
- package/dist/workflows/v3/session-relay.d.ts +0 -66
- package/dist/workflows/v3/session-relay.d.ts.map +0 -1
- package/dist/workflows/v3/session-relay.js +0 -157
- package/dist/workflows/v3/session-relay.js.map +0 -1
- package/dist/workflows/v3/shared-node-runtime.d.ts +0 -203
- package/dist/workflows/v3/shared-node-runtime.d.ts.map +0 -1
- package/dist/workflows/v3/shared-node-runtime.js +0 -2978
- package/dist/workflows/v3/shared-node-runtime.js.map +0 -1
- package/dist/workflows/v3/shared-runtime.d.ts +0 -17
- package/dist/workflows/v3/shared-runtime.d.ts.map +0 -1
- package/dist/workflows/v3/shared-runtime.js +0 -12
- package/dist/workflows/v3/shared-runtime.js.map +0 -1
- package/dist/workflows/v3/spec.d.ts +0 -32
- package/dist/workflows/v3/spec.d.ts.map +0 -1
- package/dist/workflows/v3/spec.js +0 -173
- package/dist/workflows/v3/spec.js.map +0 -1
- package/dist/workflows/v3/start-intent.d.ts +0 -8
- package/dist/workflows/v3/start-intent.d.ts.map +0 -1
- package/dist/workflows/v3/start-intent.js +0 -34
- package/dist/workflows/v3/start-intent.js.map +0 -1
- package/dist/workflows/v3/state.d.ts +0 -83
- package/dist/workflows/v3/state.d.ts.map +0 -1
- package/dist/workflows/v3/state.js +0 -525
- package/dist/workflows/v3/state.js.map +0 -1
- package/dist/workflows/v3/template-bindings.d.ts +0 -22
- package/dist/workflows/v3/template-bindings.d.ts.map +0 -1
- package/dist/workflows/v3/template-bindings.js +0 -204
- package/dist/workflows/v3/template-bindings.js.map +0 -1
- package/dist/workflows/v3/worker-fence.d.ts +0 -158
- package/dist/workflows/v3/worker-fence.d.ts.map +0 -1
- package/dist/workflows/v3/worker-fence.js +0 -690
- package/dist/workflows/v3/worker-fence.js.map +0 -1
- package/ecosystem.config.cjs +0 -15
|
@@ -1,2486 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { openBotOnboarding } from './bot-onboarding.js';
|
|
4
|
-
import { agentSelectionKey, cliIdOf, createRefreshGate, displayCliId, fallbackCliOptionsState, fetchBotDefaults, fetchCliOptions, fmtSince, modelSuggestionsForOption, resolveSubstituteTarget, selectedCliOption, } from './bot-defaults.js';
|
|
5
|
-
import { mountReactPage } from './react-mount.js';
|
|
6
|
-
import { useT } from './react-hooks.js';
|
|
7
|
-
import { store } from './store.js';
|
|
8
|
-
import { CreateActionButton, DropdownMenu, Html, InfoTip as BaseInfoTip, LoadingState, OverflowText, RefreshIconButton, dropdownLabel, } from './dashboard-components.js';
|
|
9
|
-
import { botAvatarHtml, loadNameMaps, overrideBotAvatar, ui } from './ui.js';
|
|
10
|
-
function runtimeDraftFromBot(bot) {
|
|
11
|
-
const runtime = bot.cliRuntime;
|
|
12
|
-
if (!runtime || typeof runtime !== 'object') {
|
|
13
|
-
const legacyPath = typeof bot.cliPathOverride === 'string' ? bot.cliPathOverride.trim() : '';
|
|
14
|
-
return {
|
|
15
|
-
mode: legacyPath ? 'legacy' : 'official',
|
|
16
|
-
id: '',
|
|
17
|
-
displayName: '',
|
|
18
|
-
// Carry the path into the custom form so migrating a legacy entry does
|
|
19
|
-
// not require retyping it; the legacy state itself remains read-only.
|
|
20
|
-
executable: legacyPath,
|
|
21
|
-
legacyPath,
|
|
22
|
-
updateProvider: 'auto',
|
|
23
|
-
packageName: '',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
const provider = runtime.update?.provider;
|
|
27
|
-
const updateProvider = provider === 'self' || provider === 'npm' || provider === 'none'
|
|
28
|
-
? provider
|
|
29
|
-
: 'auto';
|
|
30
|
-
return {
|
|
31
|
-
mode: 'custom',
|
|
32
|
-
id: typeof runtime.id === 'string' ? runtime.id : '',
|
|
33
|
-
displayName: typeof runtime.displayName === 'string' ? runtime.displayName : '',
|
|
34
|
-
executable: typeof runtime.executable === 'string' ? runtime.executable : '',
|
|
35
|
-
legacyPath: '',
|
|
36
|
-
updateProvider,
|
|
37
|
-
packageName: runtime.update?.provider === 'npm' && typeof runtime.update.packageName === 'string'
|
|
38
|
-
? runtime.update.packageName
|
|
39
|
-
: '',
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export const BOT_DEFAULTS_TABS = [
|
|
43
|
-
'common',
|
|
44
|
-
'sessions',
|
|
45
|
-
'security',
|
|
46
|
-
'cards',
|
|
47
|
-
'advanced',
|
|
48
|
-
];
|
|
49
|
-
export function BotDefaultsTabs(props) {
|
|
50
|
-
const tr = useT();
|
|
51
|
-
const tabRefs = useRef([]);
|
|
52
|
-
const labels = {
|
|
53
|
-
common: tr('botDefaults.tabCommon'),
|
|
54
|
-
sessions: tr('botDefaults.tabSessions'),
|
|
55
|
-
security: tr('botDefaults.tabSecurity'),
|
|
56
|
-
cards: tr('botDefaults.tabCards'),
|
|
57
|
-
advanced: tr('botDefaults.tabAdvanced'),
|
|
58
|
-
};
|
|
59
|
-
function selectAt(index) {
|
|
60
|
-
const nextIndex = (index + BOT_DEFAULTS_TABS.length) % BOT_DEFAULTS_TABS.length;
|
|
61
|
-
const next = BOT_DEFAULTS_TABS[nextIndex];
|
|
62
|
-
props.onChange(next);
|
|
63
|
-
tabRefs.current[nextIndex]?.focus();
|
|
64
|
-
}
|
|
65
|
-
return (_jsxs("nav", { className: "bd-tab-bar", "aria-label": tr('botDefaults.tabNavigation'), children: [_jsx("div", { className: "bd-tabs", role: "tablist", children: BOT_DEFAULTS_TABS.map((tab, index) => (_jsx("button", { ref: node => { tabRefs.current[index] = node; }, id: `bd-tab-${tab}`, type: "button", role: "tab", className: `bd-tab${props.active === tab ? ' active' : ''}`, "aria-selected": props.active === tab, "aria-controls": `bd-panel-${tab}`, tabIndex: props.active === tab ? 0 : -1, "data-bd-tab": tab, onClick: () => props.onChange(tab), onKeyDown: event => {
|
|
66
|
-
if (event.key === 'ArrowRight') {
|
|
67
|
-
event.preventDefault();
|
|
68
|
-
selectAt(index + 1);
|
|
69
|
-
}
|
|
70
|
-
else if (event.key === 'ArrowLeft') {
|
|
71
|
-
event.preventDefault();
|
|
72
|
-
selectAt(index - 1);
|
|
73
|
-
}
|
|
74
|
-
else if (event.key === 'Home') {
|
|
75
|
-
event.preventDefault();
|
|
76
|
-
selectAt(0);
|
|
77
|
-
}
|
|
78
|
-
else if (event.key === 'End') {
|
|
79
|
-
event.preventDefault();
|
|
80
|
-
selectAt(BOT_DEFAULTS_TABS.length - 1);
|
|
81
|
-
}
|
|
82
|
-
}, children: labels[tab] }, tab))) }), _jsx("small", { className: "bd-tab-hint", children: tr('botDefaults.tabHint') })] }));
|
|
83
|
-
}
|
|
84
|
-
// Two-column waterfall (masonry) for the task panels. A plain row-major grid
|
|
85
|
-
// locks each row to its tallest tile, stranding a short tile beside a tall one
|
|
86
|
-
// with a dead gap below. This lays tiles out by greedily dropping each into the
|
|
87
|
-
// currently shortest column and writing back an inline grid-column /
|
|
88
|
-
// grid-row-start over the CSS 1px row track. Tiles stay direct grid children —
|
|
89
|
-
// never reparented into per-column wrappers — so their unsaved form drafts
|
|
90
|
-
// (the whole point of the focused editor) never remount. Degrades to the plain
|
|
91
|
-
// auto-fill grid when there is only one column (mobile / narrow) or before the
|
|
92
|
-
// first measure.
|
|
93
|
-
const BD_GRID_ROW_PX = 1; // must match grid-auto-rows in style.css
|
|
94
|
-
const BD_GRID_GAP_PX = 14; // must match .bd-tab-grid gap
|
|
95
|
-
export function BdTabGrid(props) {
|
|
96
|
-
const ref = useRef(null);
|
|
97
|
-
useEffect(() => {
|
|
98
|
-
const grid = ref.current;
|
|
99
|
-
if (!grid || typeof window === 'undefined')
|
|
100
|
-
return undefined;
|
|
101
|
-
const clearPlacement = (tiles) => {
|
|
102
|
-
for (const tile of tiles) {
|
|
103
|
-
tile.style.gridColumn = '';
|
|
104
|
-
tile.style.gridRowStart = '';
|
|
105
|
-
tile.style.gridRowEnd = '';
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
const layout = () => {
|
|
109
|
-
const tiles = Array.from(grid.children).filter((n) => n instanceof HTMLElement);
|
|
110
|
-
if (!tiles.length)
|
|
111
|
-
return;
|
|
112
|
-
// A hidden panel (display:none) reports 0 width — skip; the ResizeObserver
|
|
113
|
-
// re-fires with real geometry the moment the tab becomes visible.
|
|
114
|
-
const gridWidth = grid.clientWidth;
|
|
115
|
-
if (gridWidth <= 0)
|
|
116
|
-
return;
|
|
117
|
-
// Decide the column count from the SAME width the CSS @container rule keys
|
|
118
|
-
// off (the .bd-detail container), instead of parsing
|
|
119
|
-
// getComputedStyle().gridTemplateColumns — that value contains spaces
|
|
120
|
-
// inside minmax(...) and, once we write an inline grid-column, can report a
|
|
121
|
-
// stale/implicit extra track, which previously produced a rogue 3rd column.
|
|
122
|
-
// Reading the container keeps JS placement and the CSS track count in lockstep.
|
|
123
|
-
const container = grid.closest('.bd-detail');
|
|
124
|
-
const decideWidth = container?.clientWidth ?? gridWidth;
|
|
125
|
-
const columns = decideWidth >= 1024 ? 2 : 1;
|
|
126
|
-
// Single column (mobile / narrow): normal flow already stacks with no gap.
|
|
127
|
-
if (columns < 2) {
|
|
128
|
-
clearPlacement(tiles);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const rowStep = BD_GRID_ROW_PX + BD_GRID_GAP_PX;
|
|
132
|
-
const colBottom = new Array(columns).fill(0); // running bottom, row units
|
|
133
|
-
for (const tile of tiles) {
|
|
134
|
-
const spanRows = Math.max(1, Math.ceil((tile.getBoundingClientRect().height + BD_GRID_GAP_PX) / rowStep));
|
|
135
|
-
if (tile.classList.contains('bd-tile-wide')) {
|
|
136
|
-
// full-width tile: start below the tallest column, then level every
|
|
137
|
-
// column to its bottom so following tiles pack beneath it evenly.
|
|
138
|
-
const start = Math.max(...colBottom);
|
|
139
|
-
tile.style.gridColumn = '1 / -1';
|
|
140
|
-
tile.style.gridRowStart = String(start + 1);
|
|
141
|
-
tile.style.gridRowEnd = String(start + 1 + spanRows);
|
|
142
|
-
colBottom.fill(start + spanRows);
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
// drop into the currently shortest column (true waterfall)
|
|
146
|
-
let target = 0;
|
|
147
|
-
for (let c = 1; c < columns; c++)
|
|
148
|
-
if (colBottom[c] < colBottom[target])
|
|
149
|
-
target = c;
|
|
150
|
-
const start = colBottom[target];
|
|
151
|
-
tile.style.gridColumn = String(target + 1);
|
|
152
|
-
tile.style.gridRowStart = String(start + 1);
|
|
153
|
-
tile.style.gridRowEnd = String(start + 1 + spanRows);
|
|
154
|
-
colBottom[target] = start + spanRows;
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
// Measure after paint; re-run on any tile resize (content toggles, textarea
|
|
158
|
-
// growth, async loads, tab becoming visible) and on viewport resize.
|
|
159
|
-
const raf = window.requestAnimationFrame(layout);
|
|
160
|
-
const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(() => layout()) : null;
|
|
161
|
-
if (ro) {
|
|
162
|
-
ro.observe(grid);
|
|
163
|
-
for (const child of Array.from(grid.children))
|
|
164
|
-
ro.observe(child);
|
|
165
|
-
}
|
|
166
|
-
window.addEventListener('resize', layout);
|
|
167
|
-
return () => {
|
|
168
|
-
window.cancelAnimationFrame(raf);
|
|
169
|
-
ro?.disconnect();
|
|
170
|
-
window.removeEventListener('resize', layout);
|
|
171
|
-
};
|
|
172
|
-
});
|
|
173
|
-
return (_jsx("div", { ref: ref, className: props.className ? `bd-tab-grid ${props.className}` : 'bd-tab-grid', children: props.children }));
|
|
174
|
-
}
|
|
175
|
-
function statusClass(status, extra = '') {
|
|
176
|
-
const suffix = status ? ` ${status.ok ? 'hint-ok' : 'hint-warn-inline'}` : '';
|
|
177
|
-
return `oncall-status${extra ? ` ${extra}` : ''}${suffix}`;
|
|
178
|
-
}
|
|
179
|
-
function StatusSpan(props) {
|
|
180
|
-
return _jsx("span", { className: statusClass(props.status), ...(props.attr ?? {}), children: props.status?.text ?? '' });
|
|
181
|
-
}
|
|
182
|
-
function InfoTip(props) {
|
|
183
|
-
const ariaLabel = typeof props.children === 'string' ? props.children : undefined;
|
|
184
|
-
return _jsx(BaseInfoTip, { className: "bd-info-tip", label: ariaLabel, children: props.children });
|
|
185
|
-
}
|
|
186
|
-
function FieldTitle(props) {
|
|
187
|
-
return (_jsxs("span", { className: "bd-field-title", children: [_jsx("span", { className: "bd-field-title-text", children: props.children }), props.help ? _jsx(InfoTip, { children: props.help }) : null] }));
|
|
188
|
-
}
|
|
189
|
-
function DropdownField(props) {
|
|
190
|
-
const tr = useT();
|
|
191
|
-
return (_jsxs(_Fragment, { children: [_jsx(DropdownMenu, { id: `bd-menu-${props.dataInput}`, className: ['bd-field-menu', props.className].filter(Boolean).join(' '), ariaLabel: props.ariaLabel, disabled: props.disabled, label: dropdownLabel(props.options, props.value), value: props.value, options: props.options, searchable: props.searchable, searchPlaceholder: props.searchable ? tr('common.dropdownSearch') : undefined, searchEmptyLabel: props.searchable ? tr('common.dropdownSearchEmpty') : undefined, onChange: props.onChange }), _jsx("input", { type: "hidden", "data-input": props.dataInput, value: props.value, readOnly: true })] }));
|
|
192
|
-
}
|
|
193
|
-
function ToggleRow(props) {
|
|
194
|
-
return (_jsxs("label", { className: "toggle-row", children: [_jsx("input", { type: "checkbox", "data-action": props.dataAction, checked: props.checked, disabled: props.disabled, onChange: event => props.onChange(event.currentTarget.checked) }), _jsx("span", { className: "switch", "aria-hidden": "true" }), _jsx("span", { className: "toggle-tx", children: _jsx("strong", { children: _jsx(FieldTitle, { help: props.help, children: props.title }) }) })] }));
|
|
195
|
-
}
|
|
196
|
-
async function sendJson(method, url, body) {
|
|
197
|
-
const r = await fetch(url, {
|
|
198
|
-
method,
|
|
199
|
-
headers: { 'content-type': 'application/json' },
|
|
200
|
-
body: body === undefined ? undefined : JSON.stringify(body),
|
|
201
|
-
});
|
|
202
|
-
const parsed = await r.json().catch(() => ({}));
|
|
203
|
-
return { ok: r.ok && parsed?.ok !== false, status: r.status, body: parsed };
|
|
204
|
-
}
|
|
205
|
-
function responseErrorText(res) {
|
|
206
|
-
const reason = typeof res.body?.reason === 'string' ? res.body.reason : '';
|
|
207
|
-
const manual = typeof res.body?.manualCommand === 'string' ? res.body.manualCommand : '';
|
|
208
|
-
if (reason && manual)
|
|
209
|
-
return `${reason}(${manual})`;
|
|
210
|
-
return String(reason || res.body?.error || res.status);
|
|
211
|
-
}
|
|
212
|
-
function caughtErrorText(e) {
|
|
213
|
-
return e?.message ?? String(e);
|
|
214
|
-
}
|
|
215
|
-
function positiveIntegerOrNull(raw) {
|
|
216
|
-
const value = raw.trim();
|
|
217
|
-
if (!value)
|
|
218
|
-
return null;
|
|
219
|
-
if (!/^[1-9]\d*$/.test(value))
|
|
220
|
-
return 'invalid';
|
|
221
|
-
return Number(value);
|
|
222
|
-
}
|
|
223
|
-
function nonNegativeInteger(raw, fallback) {
|
|
224
|
-
const value = raw.trim();
|
|
225
|
-
if (value === '')
|
|
226
|
-
return fallback;
|
|
227
|
-
if (!/^(0|[1-9]\d*)$/.test(value))
|
|
228
|
-
return null;
|
|
229
|
-
return Number(value);
|
|
230
|
-
}
|
|
231
|
-
const substituteTargetIdFields = ['email', 'openId', 'userId', 'unionId'];
|
|
232
|
-
function parseSubstituteChats(text) {
|
|
233
|
-
const values = text.split(/[\r\n,,;;]+/).map(s => s.trim()).filter(Boolean);
|
|
234
|
-
return [...new Set(values)];
|
|
235
|
-
}
|
|
236
|
-
function formatSubstituteChats(chats) {
|
|
237
|
-
return (chats ?? []).join('\n');
|
|
238
|
-
}
|
|
239
|
-
function substituteTargetIdField(target) {
|
|
240
|
-
return substituteTargetIdFields.find(field => target?.[field]?.trim()) ?? 'email';
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Build the substitute target to PUT for one edited row. Returns null when the id value is
|
|
244
|
-
* blank. When the id value/field was edited, every carried-over resolved id is dropped so the
|
|
245
|
-
* server re-resolves the new value — otherwise `persisted` keeps a previously-resolved openId
|
|
246
|
-
* alongside the email and the server (which prefers openId) would substitute the stale person.
|
|
247
|
-
* An unchanged row keeps its resolved ids so the stable id is preserved.
|
|
248
|
-
*/
|
|
249
|
-
export function buildSubstituteTarget(row) {
|
|
250
|
-
const idValue = row.idValue.trim();
|
|
251
|
-
if (!idValue)
|
|
252
|
-
return null;
|
|
253
|
-
const target = { ...row.persisted };
|
|
254
|
-
const idEdited = row.persisted[row.idField] !== idValue
|
|
255
|
-
|| (row.originalIdField != null && row.originalIdField !== row.idField);
|
|
256
|
-
if (idEdited) {
|
|
257
|
-
for (const field of substituteTargetIdFields)
|
|
258
|
-
delete target[field];
|
|
259
|
-
}
|
|
260
|
-
target[row.idField] = idValue;
|
|
261
|
-
const name = row.name.trim();
|
|
262
|
-
if (name)
|
|
263
|
-
target.name = name;
|
|
264
|
-
else
|
|
265
|
-
delete target.name;
|
|
266
|
-
return target;
|
|
267
|
-
}
|
|
268
|
-
function brandStateLabel(brand, tr) {
|
|
269
|
-
if (brand == null)
|
|
270
|
-
return tr('botDefaults.brandStateDefault');
|
|
271
|
-
return brand.trim() === '' ? tr('botDefaults.brandStateOff') : tr('botDefaults.brandStateCustom');
|
|
272
|
-
}
|
|
273
|
-
function quotaStateLabel(quota, tr) {
|
|
274
|
-
return quota == null
|
|
275
|
-
? tr('botDefaults.quotaStateOff')
|
|
276
|
-
: tr('botDefaults.quotaStateOn', { count: quota });
|
|
277
|
-
}
|
|
278
|
-
function sessionCapStateLabel(cap, tr) {
|
|
279
|
-
return cap == null
|
|
280
|
-
? tr('botDefaults.maxLiveWorkersStateDefault')
|
|
281
|
-
: tr('botDefaults.maxLiveWorkersStateOn', { count: cap });
|
|
282
|
-
}
|
|
283
|
-
function patchCardPrefsFromBody(bot, body) {
|
|
284
|
-
return {
|
|
285
|
-
...bot,
|
|
286
|
-
usageDisplay: body.usageDisplay,
|
|
287
|
-
disableStreamingCard: body.disableStreamingCard,
|
|
288
|
-
silentTurnReactions: body.silentTurnReactions,
|
|
289
|
-
codexAppCleanInput: body.codexAppCleanInput,
|
|
290
|
-
writableTerminalLinkInCard: body.writableTerminalLinkInCard,
|
|
291
|
-
privateCard: body.privateCard,
|
|
292
|
-
summaryMemory: body.summaryMemory,
|
|
293
|
-
summaryMemoryPath: body.summaryMemoryPath,
|
|
294
|
-
botToBotSameDir: body.botToBotSameDir,
|
|
295
|
-
autoStartOnGroupJoin: body.autoStartOnGroupJoin,
|
|
296
|
-
autoStartOnGroupJoinPrompt: body.autoStartOnGroupJoinPrompt,
|
|
297
|
-
autoStartOnNewTopic: body.autoStartOnNewTopic,
|
|
298
|
-
regularGroupReplyMode: body.regularGroupReplyMode,
|
|
299
|
-
regularGroupMentionMode: body.regularGroupMentionMode,
|
|
300
|
-
docSubscribeDefaultMode: body.docSubscribeDefaultMode,
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
export function BotDefaultsPage() {
|
|
304
|
-
const tr = useT();
|
|
305
|
-
const mountedRef = useRef(true);
|
|
306
|
-
// Latest-wins guard: mount's first refresh() and bots.changed-triggered
|
|
307
|
-
// refresh()es can overlap, so a slow earlier response must not clobber a
|
|
308
|
-
// newer roster ("后发先回"). Only the latest in-flight request commits.
|
|
309
|
-
const refreshGateRef = useRef(createRefreshGate());
|
|
310
|
-
const [bots, setBots] = useState([]);
|
|
311
|
-
const [cliState, setCliState] = useState(fallbackCliOptionsState);
|
|
312
|
-
const [loadError, setLoadError] = useState(null);
|
|
313
|
-
const [loading, setLoading] = useState(true);
|
|
314
|
-
const [refreshing, setRefreshing] = useState(false);
|
|
315
|
-
const [query, setQuery] = useState('');
|
|
316
|
-
const [selectedAppId, setSelectedAppId] = useState(null);
|
|
317
|
-
const [profileRoleVersion, setProfileRoleVersion] = useState(0);
|
|
318
|
-
const [, setAvatarVersion] = useState(0);
|
|
319
|
-
const [onboardingBusy, setOnboardingBusy] = useState(false);
|
|
320
|
-
const [activeTab, setActiveTab] = useState('common');
|
|
321
|
-
const refresh = useCallback(async (clearProfileRoles = false) => {
|
|
322
|
-
if (clearProfileRoles)
|
|
323
|
-
setProfileRoleVersion(version => version + 1);
|
|
324
|
-
const req = refreshGateRef.current.begin();
|
|
325
|
-
setLoading(true);
|
|
326
|
-
try {
|
|
327
|
-
const [nextBots, nextCli] = await Promise.all([fetchBotDefaults(), fetchCliOptions()]);
|
|
328
|
-
// Drop a stale response: a newer refresh() started after us (e.g. a
|
|
329
|
-
// bots.changed fired while this request was in flight) — committing here
|
|
330
|
-
// would overwrite the fresher roster and re-hide the new bot.
|
|
331
|
-
if (!mountedRef.current || !req.commit())
|
|
332
|
-
return;
|
|
333
|
-
setBots(nextBots.bots);
|
|
334
|
-
setLoadError(nextBots.error);
|
|
335
|
-
setCliState(nextCli);
|
|
336
|
-
}
|
|
337
|
-
finally {
|
|
338
|
-
// Only the latest request owns the loading flag — an out-of-order earlier
|
|
339
|
-
// response must not flip loading off while the newest is still pending.
|
|
340
|
-
if (mountedRef.current && req.commit())
|
|
341
|
-
setLoading(false);
|
|
342
|
-
}
|
|
343
|
-
}, []);
|
|
344
|
-
useEffect(() => {
|
|
345
|
-
mountedRef.current = true;
|
|
346
|
-
void refresh();
|
|
347
|
-
void loadNameMaps().then(() => {
|
|
348
|
-
if (mountedRef.current)
|
|
349
|
-
setAvatarVersion(value => value + 1);
|
|
350
|
-
});
|
|
351
|
-
// Auto-refresh the roster when a bot is added / removed / renamed on the
|
|
352
|
-
// daemon side (SSE bots.changed), so the list stays live without a manual
|
|
353
|
-
// reload. The bot rows carry their own botName/cliId from /api/bots, so a
|
|
354
|
-
// plain refresh() is enough to surface a freshly-added bot.
|
|
355
|
-
const offBots = store.onBotsChanged(() => {
|
|
356
|
-
if (mountedRef.current)
|
|
357
|
-
void refresh();
|
|
358
|
-
});
|
|
359
|
-
return () => { mountedRef.current = false; offBots(); };
|
|
360
|
-
}, [refresh]);
|
|
361
|
-
const filtered = useMemo(() => {
|
|
362
|
-
const q = query.trim().toLowerCase();
|
|
363
|
-
return bots.filter(bot => !q ||
|
|
364
|
-
(bot.botName ?? '').toLowerCase().includes(q) ||
|
|
365
|
-
(bot.larkAppId ?? '').toLowerCase().includes(q));
|
|
366
|
-
}, [bots, query]);
|
|
367
|
-
useEffect(() => {
|
|
368
|
-
if (loadError || loading)
|
|
369
|
-
return;
|
|
370
|
-
if (filtered.length === 0) {
|
|
371
|
-
if (selectedAppId !== null)
|
|
372
|
-
setSelectedAppId(null);
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
375
|
-
if (!selectedAppId || !filtered.some(bot => bot.larkAppId === selectedAppId)) {
|
|
376
|
-
setSelectedAppId(filtered[0].larkAppId);
|
|
377
|
-
}
|
|
378
|
-
}, [filtered, loadError, loading, selectedAppId]);
|
|
379
|
-
const selectedBot = selectedAppId ? filtered.find(bot => bot.larkAppId === selectedAppId) ?? null : null;
|
|
380
|
-
const patchBot = useCallback((appId, patch) => {
|
|
381
|
-
setBots(rows => rows.map(bot => {
|
|
382
|
-
if (bot.larkAppId !== appId)
|
|
383
|
-
return bot;
|
|
384
|
-
return typeof patch === 'function' ? patch(bot) : { ...bot, ...patch };
|
|
385
|
-
}));
|
|
386
|
-
}, []);
|
|
387
|
-
const reload = async () => {
|
|
388
|
-
setRefreshing(true);
|
|
389
|
-
try {
|
|
390
|
-
await refresh(true);
|
|
391
|
-
}
|
|
392
|
-
finally {
|
|
393
|
-
if (mountedRef.current)
|
|
394
|
-
setRefreshing(false);
|
|
395
|
-
}
|
|
396
|
-
};
|
|
397
|
-
let detail;
|
|
398
|
-
if (loading) {
|
|
399
|
-
detail = _jsx(LoadingState, { label: tr('common.loading') });
|
|
400
|
-
}
|
|
401
|
-
else if (loadError) {
|
|
402
|
-
detail = (_jsxs("p", { className: "hint-warn", children: ["\u65E0\u6CD5\u52A0\u8F7D bot \u5217\u8868\uFF1A", loadError, _jsx("br", {}), "\u5E38\u89C1\u539F\u56E0\uFF1Adashboard / daemon \u8FDB\u7A0B\u8FD8\u5728\u8DD1\u65E7\u4EE3\u7801\uFF0C\u6267\u884C ", _jsx("code", { children: "botmux restart" }), " \u540E\u5237\u65B0\u3002"] }));
|
|
403
|
-
}
|
|
404
|
-
else if (filtered.length === 0) {
|
|
405
|
-
detail = _jsx("p", { className: "empty", children: tr('botDefaults.empty') });
|
|
406
|
-
}
|
|
407
|
-
else if (selectedBot) {
|
|
408
|
-
detail = (_jsx(BotDefaultsCard, { bot: selectedBot, cliState: cliState, patchBot: patchBot, activeTab: activeTab, onTabChange: setActiveTab }, `${selectedBot.larkAppId}:${profileRoleVersion}`));
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
detail = null;
|
|
412
|
-
}
|
|
413
|
-
return (_jsxs("section", { className: "page bot-defaults-page", children: [_jsxs("div", { className: "page-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: tr('nav.botDefaults') }), _jsx("h1", { children: tr('botDefaults.title') })] }), _jsxs("div", { className: "page-heading-actions", children: [_jsx(RefreshIconButton, { id: "bd-refresh", label: tr('botDefaults.refresh'), busy: refreshing, disabled: refreshing, onClick: () => void reload() }), ui.authed ? (_jsx(CreateActionButton, { className: "page-primary-action add-bot-btn", disabled: onboardingBusy, onClick: () => {
|
|
414
|
-
setOnboardingBusy(true);
|
|
415
|
-
void openBotOnboarding().finally(() => setOnboardingBusy(false));
|
|
416
|
-
}, children: tr('botOnboarding.add') })) : null] })] }), _jsxs("div", { className: "bd-layout", children: [_jsxs("aside", { id: "bd-roster", className: "bd-roster", children: [_jsx("form", { id: "bd-filters", className: "filters dashboard-toolbar", onSubmit: event => event.preventDefault(), children: _jsx("input", { type: "search", name: "q", placeholder: tr('botDefaults.search'), value: query, onChange: event => setQuery(event.currentTarget.value) }) }), _jsxs("div", { className: "bd-roster-meta", children: [_jsx("span", { children: tr('botDefaults.rosterCount', { count: filtered.length }) }), query.trim() && filtered.length !== bots.length ? (_jsx("span", { children: tr('botDefaults.rosterFiltered', { total: bots.length }) })) : null] }), _jsx("div", { className: "bd-roster-list", children: !loadError && filtered.map(bot => (_jsx(RosterItem, { bot: bot, selected: bot.larkAppId === selectedAppId, onSelect: () => setSelectedAppId(bot.larkAppId) }, bot.larkAppId))) })] }), _jsx("div", { id: "bd-list", className: "bd-detail", children: detail })] })] }));
|
|
417
|
-
}
|
|
418
|
-
function RosterItem(props) {
|
|
419
|
-
const { bot } = props;
|
|
420
|
-
const name = bot.botName ?? bot.larkAppId;
|
|
421
|
-
const cli = displayCliId(bot, cliIdOf(bot.larkAppId));
|
|
422
|
-
return (_jsxs("div", { className: `bd-roster-item${props.selected ? ' on' : ''}`, "data-appid": bot.larkAppId, role: "button", tabIndex: 0, onClick: props.onSelect, onKeyDown: event => {
|
|
423
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
424
|
-
event.preventDefault();
|
|
425
|
-
props.onSelect();
|
|
426
|
-
}
|
|
427
|
-
}, children: [_jsx(Html, { html: botAvatarHtml({ name, larkAppId: bot.larkAppId, size: 'sm' }) }), _jsxs("div", { className: "bd-roster-tx", children: [_jsx("b", { children: _jsx(OverflowText, { text: name, showPopover: false, textClassName: "bd-roster-name" }) }), _jsx("span", { children: cli || bot.larkAppId.slice(0, 14) })] }), bot.defaultOncall?.enabled ? _jsx("span", { className: "bd-roster-flag", children: "oncall" }) : null] }));
|
|
428
|
-
}
|
|
429
|
-
function BotDefaultsCard(props) {
|
|
430
|
-
const tr = useT();
|
|
431
|
-
const { bot, cliState, patchBot } = props;
|
|
432
|
-
const name = bot.botName ?? bot.larkAppId;
|
|
433
|
-
const cli = displayCliId(bot, cliIdOf(bot.larkAppId));
|
|
434
|
-
const putCardPref = useCallback(async (patch) => {
|
|
435
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/card-prefs`, patch);
|
|
436
|
-
if (res.ok) {
|
|
437
|
-
patchBot(bot.larkAppId, current => patchCardPrefsFromBody(current, res.body));
|
|
438
|
-
}
|
|
439
|
-
return res;
|
|
440
|
-
}, [bot.larkAppId, patchBot]);
|
|
441
|
-
if (bot.error) {
|
|
442
|
-
return (_jsxs("article", { className: "bd-card bd-profile", "data-appid": bot.larkAppId, children: [_jsxs("header", { className: "bd-profile-head", children: [_jsx(Html, { html: botAvatarHtml({ name, larkAppId: bot.larkAppId }) }), _jsxs("div", { className: "bd-profile-id", children: [_jsx("strong", { children: name }), _jsx("code", { children: bot.larkAppId })] })] }), _jsxs("p", { className: "hint-warn-inline", children: ["\u67E5\u8BE2\u5931\u8D25\uFF1A", bot.error] })] }));
|
|
443
|
-
}
|
|
444
|
-
const def = bot.defaultOncall ?? { enabled: false, workingDir: '', since: 0 };
|
|
445
|
-
return (_jsxs("article", { className: "bd-card bd-profile", "data-appid": bot.larkAppId, children: [_jsxs("div", { className: "bd-profile-chrome", children: [_jsxs("header", { className: "bd-profile-head", children: [_jsx(BotAvatarControl, { bot: bot, name: name, patchBot: patchBot }), _jsx("div", { className: "bd-profile-main", children: _jsx(BotProfileIdentity, { bot: bot, cli: cli, patchBot: patchBot, meta: (_jsxs(_Fragment, { children: [_jsxs("small", { className: "bd-meta-ok", children: ["\u25CF ", tr('botDefaults.metaOnline')] }), (def.since ?? 0) > 0 ? _jsxs("small", { "data-oncall-since": true, children: [tr('botDefaults.lastEnabled'), ": ", fmtSince(def.since ?? 0)] }) : null, (bot.autoboundChatCount ?? 0) > 0 ? _jsx("small", { children: tr('botDefaults.autobound', { count: bot.autoboundChatCount ?? 0 }) }) : null] })) }) })] }), _jsx(BotDefaultsTabs, { active: props.activeTab, onChange: props.onTabChange })] }), _jsxs("div", { className: "bd-body bd-tab-panels", children: [_jsx("div", { id: "bd-panel-common", role: "tabpanel", "aria-labelledby": "bd-tab-common", className: "bd-tab-panel", hidden: props.activeTab !== 'common', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(BotAgentSection, { bot: bot, sessionFallback: cli, cliState: cliState, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(WorkingDirSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(RoleSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-sessions", role: "tabpanel", "aria-labelledby": "bd-tab-sessions", className: "bd-tab-panel", hidden: props.activeTab !== 'sessions', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(SessionModeSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SubstituteModeSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(CrossBotSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(SessionCapSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(StartupCommandsSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SummaryTriggerSection, { bot: bot, patchBot: patchBot, putCardPref: putCardPref }) })] }) }), _jsx("div", { id: "bd-panel-security", role: "tabpanel", "aria-labelledby": "bd-tab-security", className: "bd-tab-panel", hidden: props.activeTab !== 'security', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(SandboxSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId !== 'riff' && bot.sandbox === true ? (_jsx("section", { className: "bd-tile bd-tile-wide", children: _jsx(SandboxPathsSection, { bot: bot, patchBot: patchBot }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(GrantSection, { bot: bot, patchBot: patchBot }) }), _jsx("section", { className: "bd-tile", children: _jsx(SlashCommandPermissionsSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-cards", role: "tabpanel", "aria-labelledby": "bd-tab-cards", className: "bd-tab-panel", hidden: props.activeTab !== 'cards', children: _jsxs(BdTabGrid, { children: [_jsx("section", { className: "bd-tile", children: _jsx(CardBehaviorSection, { bot: bot, putCardPref: putCardPref }) }), _jsx("section", { className: "bd-tile", children: _jsx(BrandSection, { bot: bot, patchBot: patchBot }) })] }) }), _jsx("div", { id: "bd-panel-advanced", role: "tabpanel", "aria-labelledby": "bd-tab-advanced", className: "bd-tab-panel", hidden: props.activeTab !== 'advanced', children: _jsxs(BdTabGrid, { children: [bot.cliId !== 'riff' ? (_jsx("section", { className: "bd-tile", children: _jsx(BackendTypeSection, { bot: bot, patchBot: patchBot }) })) : null, bot.cliId === 'codex-app' ? (_jsx("section", { className: "bd-tile", children: _jsx(CodexAppDisplaySection, { bot: bot, putCardPref: putCardPref }) })) : null, _jsx("section", { className: "bd-tile", children: _jsx(RuntimeEnvironmentSection, { bot: bot, patchBot: patchBot }) })] }) })] })] }));
|
|
446
|
-
}
|
|
447
|
-
function RuntimeEnvironmentSection(props) {
|
|
448
|
-
const tr = useT();
|
|
449
|
-
return (_jsxs("section", { className: "bd-section bd-runtime-env", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionRuntimeEnv') }), _jsx(LaunchShellSection, { bot: props.bot, patchBot: props.patchBot }), _jsx(EnvSection, { bot: props.bot, patchBot: props.patchBot })] }));
|
|
450
|
-
}
|
|
451
|
-
/** console 头像上传只实测过 512×512 PNG,前端统一归一化成这一形态再上传。 */
|
|
452
|
-
const AVATAR_UPLOAD_SIDE = 512;
|
|
453
|
-
/** 任意用户图片 → 512×512 PNG dataURL(短边 cover 裁剪居中)。 */
|
|
454
|
-
async function normalizeAvatarImage(file) {
|
|
455
|
-
const bitmap = await createImageBitmap(file);
|
|
456
|
-
try {
|
|
457
|
-
const side = Math.min(bitmap.width, bitmap.height);
|
|
458
|
-
if (!side)
|
|
459
|
-
throw new Error('empty image');
|
|
460
|
-
const canvas = document.createElement('canvas');
|
|
461
|
-
canvas.width = AVATAR_UPLOAD_SIDE;
|
|
462
|
-
canvas.height = AVATAR_UPLOAD_SIDE;
|
|
463
|
-
const ctx = canvas.getContext('2d');
|
|
464
|
-
if (!ctx)
|
|
465
|
-
throw new Error('canvas unavailable');
|
|
466
|
-
const sx = (bitmap.width - side) / 2;
|
|
467
|
-
const sy = (bitmap.height - side) / 2;
|
|
468
|
-
ctx.drawImage(bitmap, sx, sy, side, side, 0, 0, AVATAR_UPLOAD_SIDE, AVATAR_UPLOAD_SIDE);
|
|
469
|
-
return canvas.toDataURL('image/png');
|
|
470
|
-
}
|
|
471
|
-
finally {
|
|
472
|
-
bitmap.close();
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
/** 档案头头像:点击选图 → 归一化 → 走开放平台自动化真改飞书应用头像并发版。
|
|
476
|
-
* 与改名同款失败语义:缺飞书 Web 登录态时给扫码入口,登录成功自动重试。 */
|
|
477
|
-
function BotAvatarControl(props) {
|
|
478
|
-
const tr = useT();
|
|
479
|
-
const { bot, name, patchBot } = props;
|
|
480
|
-
const inputRef = useRef(null);
|
|
481
|
-
const [busy, setBusy] = useState(false);
|
|
482
|
-
const [status, setStatus] = useState(null);
|
|
483
|
-
const [loginVisible, setLoginVisible] = useState(false);
|
|
484
|
-
const [loginOpen, setLoginOpen] = useState(false);
|
|
485
|
-
// 待上传图片留到登录成功后重试;成功/明确失败时清掉。
|
|
486
|
-
const pendingRef = useRef(null);
|
|
487
|
-
function avatarFailText(error, message) {
|
|
488
|
-
const known = ['no_session', 'session_expired', 'no_access', 'unsupported_brand'];
|
|
489
|
-
const detail = known.includes(error) ? tr(`botDefaults.avatarWarn.${error}`) : (message || error);
|
|
490
|
-
return tr('botDefaults.avatarFailed', { error: detail });
|
|
491
|
-
}
|
|
492
|
-
const upload = useCallback(async (imageBase64) => {
|
|
493
|
-
setBusy(true);
|
|
494
|
-
setStatus({ text: `⏳ ${tr('botDefaults.avatarUploading')}`, ok: true });
|
|
495
|
-
try {
|
|
496
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/avatar`, { imageBase64 });
|
|
497
|
-
if (res.ok && res.body.ok) {
|
|
498
|
-
const url = typeof res.body.avatarUrl === 'string' ? res.body.avatarUrl : '';
|
|
499
|
-
if (url)
|
|
500
|
-
overrideBotAvatar(bot.larkAppId, name, url);
|
|
501
|
-
// 行内容不变,触发一次重绘让 orb 读到覆写后的头像映射。
|
|
502
|
-
patchBot(bot.larkAppId, current => ({ ...current }));
|
|
503
|
-
pendingRef.current = null;
|
|
504
|
-
setLoginVisible(false);
|
|
505
|
-
setStatus({ text: `✓ ${tr('botDefaults.avatarOkFeishu')}`, ok: true });
|
|
506
|
-
}
|
|
507
|
-
else {
|
|
508
|
-
const err = String(res.body?.error ?? '');
|
|
509
|
-
const message = typeof res.body?.message === 'string' ? res.body.message : undefined;
|
|
510
|
-
setStatus({ text: `✗ ${avatarFailText(err, message ?? responseErrorText(res))}` });
|
|
511
|
-
const needLogin = err === 'no_session' || err === 'session_expired';
|
|
512
|
-
setLoginVisible(needLogin);
|
|
513
|
-
if (!needLogin)
|
|
514
|
-
pendingRef.current = null;
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
catch (e) {
|
|
518
|
-
setStatus({ text: `✗ ${tr('botDefaults.avatarFailed', { error: caughtErrorText(e) })}` });
|
|
519
|
-
}
|
|
520
|
-
finally {
|
|
521
|
-
setBusy(false);
|
|
522
|
-
}
|
|
523
|
-
}, [bot.larkAppId, name, patchBot, tr]);
|
|
524
|
-
async function handleFile(file) {
|
|
525
|
-
if (!file || busy)
|
|
526
|
-
return;
|
|
527
|
-
// 归一化阶段就置 busy:canvas 解码大图有可感知耗时,这个窗口里不该还能
|
|
528
|
-
// 再开一次选图/触发并发提交(服务端另有 per-app 串行队列兜底)。
|
|
529
|
-
setBusy(true);
|
|
530
|
-
let dataUrl;
|
|
531
|
-
try {
|
|
532
|
-
dataUrl = await normalizeAvatarImage(file);
|
|
533
|
-
}
|
|
534
|
-
catch {
|
|
535
|
-
setBusy(false);
|
|
536
|
-
setStatus({ text: `✗ ${tr('botDefaults.avatarBadImage')}` });
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
pendingRef.current = dataUrl;
|
|
540
|
-
await upload(dataUrl);
|
|
541
|
-
}
|
|
542
|
-
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "bd-profile-avatar bd-avatar-editable", "data-avatar-control": true, children: [_jsxs("button", { type: "button", className: "bd-avatar-btn", "data-action": "edit-bot-avatar", title: tr('botDefaults.avatarTitle'), "aria-label": tr('botDefaults.avatarTitle'), disabled: busy, onClick: () => inputRef.current?.click(), children: [_jsx(Html, { html: botAvatarHtml({ name, larkAppId: bot.larkAppId, dot: 'ok' }) }), _jsx("span", { className: "bd-avatar-edit-badge", "aria-hidden": "true", children: busy ? '⏳' : '✎' })] }), _jsx("input", { ref: inputRef, type: "file", accept: "image/*", hidden: true, "data-input": "botAvatarFile", onChange: event => {
|
|
543
|
-
const file = event.currentTarget.files?.[0];
|
|
544
|
-
event.currentTarget.value = ''; // 允许再次选择同一文件
|
|
545
|
-
void handleFile(file);
|
|
546
|
-
} }), loginOpen ? (_jsx(FeishuLoginModal, { onClose: () => setLoginOpen(false), onSuccess: () => {
|
|
547
|
-
setLoginVisible(false);
|
|
548
|
-
setLoginOpen(false);
|
|
549
|
-
if (pendingRef.current)
|
|
550
|
-
void upload(pendingRef.current);
|
|
551
|
-
} })) : null] }), status ? (_jsxs("small", { className: statusClass(status, 'bd-avatar-status'), "data-avatar-status": true, children: [status.text, loginVisible ? (_jsx("button", { type: "button", className: "bd-feishu-login", "data-action": "feishu-login-avatar", onClick: () => setLoginOpen(true), children: tr('feishuLogin.entry') })) : null] })) : null] }));
|
|
552
|
-
}
|
|
553
|
-
function BotProfileIdentity(props) {
|
|
554
|
-
const tr = useT();
|
|
555
|
-
const { bot, cli, patchBot } = props;
|
|
556
|
-
const name = bot.botName ?? bot.larkAppId;
|
|
557
|
-
const [editing, setEditing] = useState(false);
|
|
558
|
-
const [draft, setDraft] = useState(name);
|
|
559
|
-
const [busy, setBusy] = useState(false);
|
|
560
|
-
const [status, setStatus] = useState(null);
|
|
561
|
-
const [loginVisible, setLoginVisible] = useState(false);
|
|
562
|
-
const [loginOpen, setLoginOpen] = useState(false);
|
|
563
|
-
useEffect(() => {
|
|
564
|
-
if (!editing)
|
|
565
|
-
setDraft(name);
|
|
566
|
-
}, [editing, name]);
|
|
567
|
-
function setEditMode(on) {
|
|
568
|
-
setEditing(on);
|
|
569
|
-
if (on) {
|
|
570
|
-
setDraft(name);
|
|
571
|
-
setStatus(null);
|
|
572
|
-
setLoginVisible(false);
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
function renameWarningText(warning, message) {
|
|
576
|
-
const known = ['no_session', 'session_expired', 'no_access', 'unsupported_brand'];
|
|
577
|
-
const detail = known.includes(warning)
|
|
578
|
-
? tr(`botDefaults.renameWarn.${warning}`)
|
|
579
|
-
: (message || warning);
|
|
580
|
-
return tr('botDefaults.renameLocalOnly', { reason: detail });
|
|
581
|
-
}
|
|
582
|
-
const submitRename = useCallback(async () => {
|
|
583
|
-
const nextName = draft.trim();
|
|
584
|
-
if (!nextName) {
|
|
585
|
-
setStatus({ text: `✗ ${tr('botDefaults.renameEmpty')}` });
|
|
586
|
-
return;
|
|
587
|
-
}
|
|
588
|
-
setBusy(true);
|
|
589
|
-
setStatus({ text: `⏳ ${tr('botDefaults.renaming')}`, ok: true });
|
|
590
|
-
try {
|
|
591
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/rename`, { name: nextName });
|
|
592
|
-
if (res.ok && res.body.ok) {
|
|
593
|
-
const effective = typeof res.body.botName === 'string' && res.body.botName ? res.body.botName : nextName;
|
|
594
|
-
patchBot(bot.larkAppId, current => ({
|
|
595
|
-
...current,
|
|
596
|
-
botName: effective,
|
|
597
|
-
larkBotName: res.body.mode === 'feishu' ? nextName : current.larkBotName,
|
|
598
|
-
displayName: res.body.mode === 'feishu' ? null : nextName,
|
|
599
|
-
}));
|
|
600
|
-
setEditMode(false);
|
|
601
|
-
if (res.body.mode === 'feishu') {
|
|
602
|
-
setStatus({ text: `✓ ${tr('botDefaults.renameOkFeishu')}`, ok: true });
|
|
603
|
-
setLoginVisible(false);
|
|
604
|
-
}
|
|
605
|
-
else {
|
|
606
|
-
setStatus({ text: `⚠ ${renameWarningText(String(res.body.warning ?? ''), res.body.message)}` });
|
|
607
|
-
setLoginVisible(res.body.warning === 'no_session' || res.body.warning === 'session_expired');
|
|
608
|
-
}
|
|
609
|
-
}
|
|
610
|
-
else {
|
|
611
|
-
setStatus({ text: `✗ ${tr('botDefaults.renameFailed', { error: responseErrorText(res) })}` });
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
catch (e) {
|
|
615
|
-
setStatus({ text: `✗ ${tr('botDefaults.renameFailed', { error: caughtErrorText(e) })}` });
|
|
616
|
-
}
|
|
617
|
-
finally {
|
|
618
|
-
setBusy(false);
|
|
619
|
-
}
|
|
620
|
-
}, [bot.larkAppId, draft, patchBot, tr]);
|
|
621
|
-
return (_jsxs("div", { className: "bd-profile-id", children: [!editing ? (_jsxs("div", { className: "bd-profile-title-row", "data-name-row": true, children: [_jsxs("div", { className: "bd-profile-title-content", children: [_jsx("strong", { "data-bot-name": true, children: name }), cli ? _jsx("span", { className: "mate-role bd-profile-cli-tag", children: cli }) : null, props.meta ? _jsx("span", { className: "bd-profile-meta bd-meta", children: props.meta }) : null] }), _jsx("button", { type: "button", className: "bd-name-edit", "data-action": "edit-bot-name", title: tr('botDefaults.renameTitle'), "aria-label": tr('botDefaults.renameTitle'), onClick: () => setEditMode(true), children: _jsx("svg", { viewBox: "0 0 16 16", width: "14", height: "14", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M11.5 2.5l2 2L6 12l-2.5.5L4 10z" }) }) })] })) : (_jsxs("span", { className: "bd-name-editor", "data-name-editor": true, children: [_jsx("input", { type: "text", className: "bd-name-input", "data-input": "botRename", maxLength: 64, value: draft, disabled: busy, autoFocus: true, onChange: event => setDraft(event.currentTarget.value), onKeyDown: event => {
|
|
622
|
-
if (event.key === 'Enter') {
|
|
623
|
-
event.preventDefault();
|
|
624
|
-
void submitRename();
|
|
625
|
-
}
|
|
626
|
-
else if (event.key === 'Escape') {
|
|
627
|
-
setEditMode(false);
|
|
628
|
-
}
|
|
629
|
-
} }), _jsx("button", { type: "button", className: "primary", "data-action": "save-bot-name", disabled: busy, onClick: () => void submitRename(), children: tr('botDefaults.renameSave') }), _jsx("button", { type: "button", "data-action": "cancel-bot-name", disabled: busy, onClick: () => setEditMode(false), children: tr('botDefaults.renameCancel') })] })), _jsx("code", { children: bot.larkAppId }), _jsx("small", { className: statusClass(status, 'bd-name-status'), "data-name-status": true, children: status?.text ?? '' }), _jsx("button", { type: "button", className: "bd-feishu-login", "data-action": "feishu-login", hidden: !loginVisible, onClick: () => setLoginOpen(true), children: tr('feishuLogin.entry') }), loginOpen ? (_jsx(FeishuLoginModal, { onClose: () => setLoginOpen(false), onSuccess: () => {
|
|
630
|
-
setLoginVisible(false);
|
|
631
|
-
setLoginOpen(false);
|
|
632
|
-
void submitRename();
|
|
633
|
-
} })) : null] }));
|
|
634
|
-
}
|
|
635
|
-
function FeishuLoginModal(props) {
|
|
636
|
-
const tr = useT();
|
|
637
|
-
const { onClose, onSuccess } = props;
|
|
638
|
-
const timerRef = useRef(null);
|
|
639
|
-
const successTimerRef = useRef(null);
|
|
640
|
-
const [hint, setHint] = useState(tr('feishuLogin.starting'));
|
|
641
|
-
const [qrDataUrl, setQrDataUrl] = useState(null);
|
|
642
|
-
const [retry, setRetry] = useState(false);
|
|
643
|
-
const stopTimer = useCallback(() => {
|
|
644
|
-
if (timerRef.current !== null) {
|
|
645
|
-
window.clearInterval(timerRef.current);
|
|
646
|
-
timerRef.current = null;
|
|
647
|
-
}
|
|
648
|
-
}, []);
|
|
649
|
-
const renderLogin = useCallback((login) => {
|
|
650
|
-
if (!login)
|
|
651
|
-
return 'active';
|
|
652
|
-
if (login.status === 'awaiting_scan' && login.qrDataUrl) {
|
|
653
|
-
setQrDataUrl(login.qrDataUrl);
|
|
654
|
-
setHint(login.message || tr('feishuLogin.scanHint'));
|
|
655
|
-
setRetry(false);
|
|
656
|
-
return 'active';
|
|
657
|
-
}
|
|
658
|
-
if (login.status === 'starting') {
|
|
659
|
-
setHint(login.message || tr('feishuLogin.starting'));
|
|
660
|
-
setQrDataUrl(null);
|
|
661
|
-
setRetry(false);
|
|
662
|
-
return 'active';
|
|
663
|
-
}
|
|
664
|
-
if (login.status === 'success') {
|
|
665
|
-
stopTimer();
|
|
666
|
-
setQrDataUrl(null);
|
|
667
|
-
setRetry(false);
|
|
668
|
-
setHint(tr('feishuLogin.success'));
|
|
669
|
-
successTimerRef.current = window.setTimeout(() => onSuccess(), 900);
|
|
670
|
-
return 'done';
|
|
671
|
-
}
|
|
672
|
-
stopTimer();
|
|
673
|
-
setQrDataUrl(null);
|
|
674
|
-
setHint(tr('feishuLogin.failed', { reason: login.message || login.reason || '' }));
|
|
675
|
-
setRetry(true);
|
|
676
|
-
return 'done';
|
|
677
|
-
}, [onSuccess, stopTimer, tr]);
|
|
678
|
-
const poll = useCallback(async () => {
|
|
679
|
-
try {
|
|
680
|
-
const r = await fetch('/api/feishu-login/status');
|
|
681
|
-
const body = await r.json().catch(() => ({}));
|
|
682
|
-
renderLogin(body.login);
|
|
683
|
-
}
|
|
684
|
-
catch {
|
|
685
|
-
// transient; keep polling
|
|
686
|
-
}
|
|
687
|
-
}, [renderLogin]);
|
|
688
|
-
const begin = useCallback(async () => {
|
|
689
|
-
stopTimer();
|
|
690
|
-
setHint(tr('feishuLogin.starting'));
|
|
691
|
-
setQrDataUrl(null);
|
|
692
|
-
setRetry(false);
|
|
693
|
-
let phase = 'active';
|
|
694
|
-
try {
|
|
695
|
-
const r = await fetch('/api/feishu-login/start', { method: 'POST' });
|
|
696
|
-
const body = await r.json().catch(() => ({}));
|
|
697
|
-
phase = renderLogin(body.login);
|
|
698
|
-
}
|
|
699
|
-
catch (e) {
|
|
700
|
-
setHint(tr('feishuLogin.failed', { reason: caughtErrorText(e) }));
|
|
701
|
-
setRetry(true);
|
|
702
|
-
return;
|
|
703
|
-
}
|
|
704
|
-
if (phase === 'active' && timerRef.current === null) {
|
|
705
|
-
timerRef.current = window.setInterval(() => void poll(), 1500);
|
|
706
|
-
}
|
|
707
|
-
}, [poll, renderLogin, stopTimer, tr]);
|
|
708
|
-
useEffect(() => {
|
|
709
|
-
void begin();
|
|
710
|
-
return () => {
|
|
711
|
-
stopTimer();
|
|
712
|
-
if (successTimerRef.current !== null)
|
|
713
|
-
window.clearTimeout(successTimerRef.current);
|
|
714
|
-
};
|
|
715
|
-
}, [begin, stopTimer]);
|
|
716
|
-
return (_jsx("div", { className: "feishu-login-overlay", onClick: event => {
|
|
717
|
-
if (event.currentTarget === event.target)
|
|
718
|
-
onClose();
|
|
719
|
-
}, children: _jsxs("div", { className: "feishu-login-modal", role: "dialog", "aria-modal": "true", children: [_jsx("button", { type: "button", className: "feishu-login-close", "data-close": true, "aria-label": tr('feishuLogin.close'), onClick: onClose, children: "x" }), _jsx("h3", { className: "feishu-login-title", children: tr('feishuLogin.title') }), _jsx("p", { className: "feishu-login-hint", "data-hint": true, children: hint }), _jsx("div", { className: "feishu-login-qr", "data-qr": true, children: qrDataUrl ? _jsx("img", { className: "qr-image", src: qrDataUrl, alt: tr('feishuLogin.qrAlt') }) : null }), _jsx("div", { className: "feishu-login-actions", children: _jsx("button", { type: "button", className: "primary", "data-retry": true, hidden: !retry, onClick: () => void begin(), children: tr('feishuLogin.retry') }) })] }) }));
|
|
720
|
-
}
|
|
721
|
-
export function BotAgentSection(props) {
|
|
722
|
-
const tr = useT();
|
|
723
|
-
const { bot, cliState, patchBot } = props;
|
|
724
|
-
const initialKey = agentSelectionKey(bot, props.sessionFallback);
|
|
725
|
-
const runtimeConfigKey = JSON.stringify([bot.cliRuntime ?? null, bot.cliPathOverride ?? null]);
|
|
726
|
-
const [cliKey, setCliKey] = useState(initialKey);
|
|
727
|
-
const [cliSelectionTouched, setCliSelectionTouched] = useState(false);
|
|
728
|
-
const [model, setModel] = useState(typeof bot.model === 'string' ? bot.model : '');
|
|
729
|
-
const [runtimeDraft, setRuntimeDraft] = useState(() => runtimeDraftFromBot(bot));
|
|
730
|
-
const [runtimeTouched, setRuntimeTouched] = useState(false);
|
|
731
|
-
const [runtimeStatus, setRuntimeStatus] = useState(null);
|
|
732
|
-
const [agentStatus, setAgentStatus] = useState(null);
|
|
733
|
-
const [agentBusy, setAgentBusy] = useState(false);
|
|
734
|
-
const [skillValue, setSkillValue] = useState(skillInjectionResolved(bot));
|
|
735
|
-
const [skillStatus, setSkillStatus] = useState(null);
|
|
736
|
-
const [skillBusy, setSkillBusy] = useState(false);
|
|
737
|
-
useEffect(() => {
|
|
738
|
-
setCliKey(agentSelectionKey(bot, props.sessionFallback));
|
|
739
|
-
setCliSelectionTouched(false);
|
|
740
|
-
setModel(typeof bot.model === 'string' ? bot.model : '');
|
|
741
|
-
setRuntimeDraft(runtimeDraftFromBot(bot));
|
|
742
|
-
setRuntimeTouched(false);
|
|
743
|
-
setSkillValue(skillInjectionResolved(bot));
|
|
744
|
-
}, [
|
|
745
|
-
bot.agentSelectionKey,
|
|
746
|
-
bot.cliId,
|
|
747
|
-
bot.larkAppId,
|
|
748
|
-
bot.model,
|
|
749
|
-
runtimeConfigKey,
|
|
750
|
-
bot.wrapperCli,
|
|
751
|
-
bot.skillInjection,
|
|
752
|
-
bot.skillInjectionDefault,
|
|
753
|
-
props.sessionFallback,
|
|
754
|
-
]);
|
|
755
|
-
const option = selectedCliOption(cliState.options, cliKey);
|
|
756
|
-
const suggestions = modelSuggestionsForOption(option, cliState);
|
|
757
|
-
const modelDisabledByCli = option?.gateway === 'ttadk' && option.acceptsModel === false;
|
|
758
|
-
const modelPlaceholder = modelDisabledByCli
|
|
759
|
-
? tr('botOnboarding.modelTtadkCocoPlaceholder')
|
|
760
|
-
: option?.gateway === 'ttadk'
|
|
761
|
-
? tr('botOnboarding.modelTtadkPlaceholder').replace('{model}', cliState.ttadkModelDefault)
|
|
762
|
-
: tr('botDefaults.agentModelPlaceholder');
|
|
763
|
-
function updateCli(nextKey) {
|
|
764
|
-
const previousKey = cliKey;
|
|
765
|
-
setCliKey(nextKey);
|
|
766
|
-
setCliSelectionTouched(true);
|
|
767
|
-
if (nextKey !== previousKey && (nextKey !== 'codex' || previousKey !== 'codex')) {
|
|
768
|
-
setRuntimeDraft(runtimeDraftFromBot({ cliRuntime: null, cliPathOverride: null }));
|
|
769
|
-
// If the user leaves Codex and comes back before saving, the visible
|
|
770
|
-
// Official state is intentional and must clear the old runtime/path.
|
|
771
|
-
setRuntimeTouched(true);
|
|
772
|
-
setRuntimeStatus(null);
|
|
773
|
-
}
|
|
774
|
-
const nextOption = selectedCliOption(cliState.options, nextKey);
|
|
775
|
-
const isTtadk = nextOption?.gateway === 'ttadk';
|
|
776
|
-
const acceptsModel = isTtadk && nextOption.acceptsModel !== false;
|
|
777
|
-
if (isTtadk && !acceptsModel) {
|
|
778
|
-
setModel('');
|
|
779
|
-
}
|
|
780
|
-
else if (acceptsModel) {
|
|
781
|
-
setModel(current => current.trim() ? current : cliState.ttadkModelDefault);
|
|
782
|
-
}
|
|
783
|
-
else {
|
|
784
|
-
setModel(current => current.trim() === cliState.ttadkModelDefault ? '' : current);
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
function updateRuntimeMode(mode) {
|
|
788
|
-
setRuntimeDraft(current => ({ ...current, mode }));
|
|
789
|
-
setRuntimeTouched(true);
|
|
790
|
-
setRuntimeStatus(null);
|
|
791
|
-
setAgentStatus(null);
|
|
792
|
-
}
|
|
793
|
-
function updateRuntimeDraft(patch) {
|
|
794
|
-
setRuntimeDraft(current => ({ ...current, ...patch }));
|
|
795
|
-
setRuntimeTouched(true);
|
|
796
|
-
setRuntimeStatus(null);
|
|
797
|
-
setAgentStatus(null);
|
|
798
|
-
}
|
|
799
|
-
async function saveAgent() {
|
|
800
|
-
setAgentStatus(null);
|
|
801
|
-
setRuntimeStatus(null);
|
|
802
|
-
let cliRuntime;
|
|
803
|
-
if (runtimeTouched)
|
|
804
|
-
cliRuntime = null;
|
|
805
|
-
if (runtimeTouched && cliKey === 'codex' && runtimeDraft.mode === 'custom') {
|
|
806
|
-
const id = runtimeDraft.id.trim();
|
|
807
|
-
const executable = runtimeDraft.executable.trim();
|
|
808
|
-
const displayName = runtimeDraft.displayName.trim();
|
|
809
|
-
const packageName = runtimeDraft.packageName.trim();
|
|
810
|
-
if (!id || !executable) {
|
|
811
|
-
const text = tr('botDefaults.runtimeRequired');
|
|
812
|
-
setAgentStatus({ text });
|
|
813
|
-
setRuntimeStatus({ text });
|
|
814
|
-
return;
|
|
815
|
-
}
|
|
816
|
-
if (runtimeDraft.updateProvider === 'npm' && !packageName) {
|
|
817
|
-
const text = tr('botDefaults.runtimePackageRequired');
|
|
818
|
-
setAgentStatus({ text });
|
|
819
|
-
setRuntimeStatus({ text });
|
|
820
|
-
return;
|
|
821
|
-
}
|
|
822
|
-
cliRuntime = {
|
|
823
|
-
id,
|
|
824
|
-
...(displayName ? { displayName } : {}),
|
|
825
|
-
executable,
|
|
826
|
-
update: runtimeDraft.updateProvider === 'npm'
|
|
827
|
-
? { provider: 'npm', packageName }
|
|
828
|
-
: { provider: runtimeDraft.updateProvider },
|
|
829
|
-
};
|
|
830
|
-
}
|
|
831
|
-
setAgentBusy(true);
|
|
832
|
-
try {
|
|
833
|
-
const body = {
|
|
834
|
-
cliId: cliKey,
|
|
835
|
-
model,
|
|
836
|
-
...(runtimeTouched ? { cliRuntime } : {}),
|
|
837
|
-
};
|
|
838
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/agent`, body);
|
|
839
|
-
if (res.ok && res.body.ok) {
|
|
840
|
-
const closedCount = Number.isInteger(res.body.closedMismatchedSessions) && res.body.closedMismatchedSessions > 0
|
|
841
|
-
? res.body.closedMismatchedSessions
|
|
842
|
-
: 0;
|
|
843
|
-
const closedText = closedCount > 0
|
|
844
|
-
? tr('botDefaults.agentClosedCount', { count: closedCount })
|
|
845
|
-
: '';
|
|
846
|
-
setAgentStatus(res.body.availabilityWarning
|
|
847
|
-
? { text: `⚠️ ${res.body.availabilityWarning}${closedText ? ` · ${closedText}` : ''}` }
|
|
848
|
-
: { text: `✓ ${closedText || tr('botDefaults.agentSaved')}`, ok: true });
|
|
849
|
-
patchBot(bot.larkAppId, {
|
|
850
|
-
cliId: res.body.cliId,
|
|
851
|
-
cliRuntime: res.body.cliRuntime === undefined
|
|
852
|
-
? runtimeTouched ? cliRuntime ?? null : bot.cliRuntime ?? null
|
|
853
|
-
: res.body.cliRuntime,
|
|
854
|
-
cliPathOverride: res.body.cliPathOverride === undefined
|
|
855
|
-
? runtimeTouched ? null : bot.cliPathOverride ?? null
|
|
856
|
-
: res.body.cliPathOverride,
|
|
857
|
-
wrapperCli: res.body.wrapperCli ?? null,
|
|
858
|
-
model: res.body.model ?? '',
|
|
859
|
-
agentSelectionKey: res.body.selectionKey ?? cliKey,
|
|
860
|
-
});
|
|
861
|
-
setRuntimeTouched(false);
|
|
862
|
-
if (cliRuntime) {
|
|
863
|
-
const probe = res.body.runtimeProbe;
|
|
864
|
-
if (probe && typeof probe.version === 'string') {
|
|
865
|
-
setRuntimeStatus({
|
|
866
|
-
text: tr('botDefaults.runtimeProbeOk', {
|
|
867
|
-
version: probe.version,
|
|
868
|
-
provider: typeof probe.updateProvider === 'string' ? probe.updateProvider : runtimeDraft.updateProvider,
|
|
869
|
-
}),
|
|
870
|
-
ok: true,
|
|
871
|
-
});
|
|
872
|
-
}
|
|
873
|
-
else {
|
|
874
|
-
setRuntimeStatus({ text: tr('botDefaults.runtimeProbeMissing') });
|
|
875
|
-
}
|
|
876
|
-
}
|
|
877
|
-
}
|
|
878
|
-
else {
|
|
879
|
-
const detail = typeof res.body?.message === 'string' && res.body.message
|
|
880
|
-
? res.body.message
|
|
881
|
-
: responseErrorText(res);
|
|
882
|
-
const text = `✗ ${detail}`;
|
|
883
|
-
setAgentStatus({ text });
|
|
884
|
-
if (cliKey === 'codex' && runtimeDraft.mode === 'custom')
|
|
885
|
-
setRuntimeStatus({ text });
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
catch (e) {
|
|
889
|
-
const text = `✗ ${caughtErrorText(e)}`;
|
|
890
|
-
setAgentStatus({ text });
|
|
891
|
-
if (cliKey === 'codex' && runtimeDraft.mode === 'custom')
|
|
892
|
-
setRuntimeStatus({ text });
|
|
893
|
-
}
|
|
894
|
-
finally {
|
|
895
|
-
setAgentBusy(false);
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
/**
|
|
899
|
-
* Persist the CLI selection as riff before saving riff config. Selecting
|
|
900
|
-
* riff in the dropdown hides the「保存 Agent」button (model/skill rows are
|
|
901
|
-
* replaced by RiffSection), so without this the cliId change would never
|
|
902
|
-
* reach PUT /agent — the bot would stay on its old CLI and backendType
|
|
903
|
-
* would never auto-flip to riff. Returns false when persisting failed.
|
|
904
|
-
*/
|
|
905
|
-
async function persistRiffCliSelection() {
|
|
906
|
-
if (bot.cliId === 'riff')
|
|
907
|
-
return true; // already persisted
|
|
908
|
-
try {
|
|
909
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/agent`, { cliId: 'riff', model: '' });
|
|
910
|
-
if (res.ok && res.body.ok) {
|
|
911
|
-
patchBot(bot.larkAppId, {
|
|
912
|
-
cliId: res.body.cliId,
|
|
913
|
-
cliRuntime: res.body.cliRuntime ?? null,
|
|
914
|
-
wrapperCli: res.body.wrapperCli ?? null,
|
|
915
|
-
model: res.body.model ?? '',
|
|
916
|
-
agentSelectionKey: res.body.selectionKey ?? 'riff',
|
|
917
|
-
});
|
|
918
|
-
return true;
|
|
919
|
-
}
|
|
920
|
-
setAgentStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
921
|
-
return false;
|
|
922
|
-
}
|
|
923
|
-
catch (e) {
|
|
924
|
-
setAgentStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
925
|
-
return false;
|
|
926
|
-
}
|
|
927
|
-
}
|
|
928
|
-
async function saveSkillInjection(next) {
|
|
929
|
-
setSkillValue(next);
|
|
930
|
-
setSkillStatus(null);
|
|
931
|
-
setSkillBusy(true);
|
|
932
|
-
try {
|
|
933
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/skill-injection`, { skillInjection: next });
|
|
934
|
-
if (res.ok && res.body.ok) {
|
|
935
|
-
setSkillStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
936
|
-
patchBot(bot.larkAppId, { skillInjection: res.body.skillInjection ?? null });
|
|
937
|
-
}
|
|
938
|
-
else {
|
|
939
|
-
setSkillStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
940
|
-
}
|
|
941
|
-
}
|
|
942
|
-
catch (e) {
|
|
943
|
-
setSkillStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
944
|
-
}
|
|
945
|
-
finally {
|
|
946
|
-
setSkillBusy(false);
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
const siSupport = bot.skillInjectionSupport === 'dynamic' ? 'dynamic' : bot.skillInjectionSupport === 'global' ? 'global' : 'none';
|
|
950
|
-
const isRiff = cliKey === 'riff';
|
|
951
|
-
// Old dashboard payloads can omit agentSelectionKey while still carrying a
|
|
952
|
-
// legacy wrapperCli. Keep the custom-runtime editor hidden until the user
|
|
953
|
-
// explicitly selects bare Codex; structured runtimes and wrappers cannot mix.
|
|
954
|
-
const isBareCodex = cliKey === 'codex' && (!bot.wrapperCli || cliSelectionTouched);
|
|
955
|
-
const usesAlternativeCodexExecutable = isBareCodex && runtimeDraft.mode !== 'official';
|
|
956
|
-
// 与添加机器人弹窗一致:按名称首字母排序,便于在 20+ 个 CLI 里定位。
|
|
957
|
-
const cliOptions = [...cliState.options]
|
|
958
|
-
.sort((a, b) => a.label.localeCompare(b.label, 'en', { sensitivity: 'base' }))
|
|
959
|
-
.map(option => ({
|
|
960
|
-
value: option.id,
|
|
961
|
-
label: option.available === false && !(option.id === 'codex' && usesAlternativeCodexExecutable)
|
|
962
|
-
? tr('botDefaults.agentMissingOption', { label: option.label, command: option.command ?? option.id })
|
|
963
|
-
: `${option.label}(${option.id})`,
|
|
964
|
-
}));
|
|
965
|
-
const dynamicSkillOptions = [
|
|
966
|
-
{ value: 'dynamic', label: tr('botDefaults.skillInjectionDynamic') },
|
|
967
|
-
];
|
|
968
|
-
const skillOptions = [
|
|
969
|
-
// Non-selectable cue: dynamic injection isn't available for this CLI (parity with the old UI).
|
|
970
|
-
{ value: 'dynamic', label: tr('botDefaults.skillInjectionDynamicUnsupported'), disabled: true },
|
|
971
|
-
{ value: 'prompt', label: tr('botDefaults.skillInjectionPrompt') },
|
|
972
|
-
{ value: 'global', label: tr('botDefaults.skillInjectionGlobal') },
|
|
973
|
-
{ value: 'off', label: tr('botDefaults.skillInjectionOff') },
|
|
974
|
-
];
|
|
975
|
-
const runtimeProviderOptions = [
|
|
976
|
-
{ value: 'auto', label: tr('botDefaults.runtimeProviderAuto') },
|
|
977
|
-
{ value: 'self', label: tr('botDefaults.runtimeProviderSelf') },
|
|
978
|
-
{ value: 'npm', label: tr('botDefaults.runtimeProviderNpm') },
|
|
979
|
-
{ value: 'none', label: tr('botDefaults.runtimeProviderNone') },
|
|
980
|
-
];
|
|
981
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionAgent') }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx("span", { children: tr('botDefaults.agentCli') }), _jsx(DropdownField, { dataInput: "agentCliId", ariaLabel: tr('botDefaults.agentCli'), value: cliKey, disabled: agentBusy, options: cliOptions, searchable: true, onChange: updateCli }), option?.available === false && !usesAlternativeCodexExecutable ? (_jsx("small", { className: "hint-warn", children: tr('botDefaults.agentMissingHint', { command: option.command ?? cliKey }) })) : null] }) }), isBareCodex ? (_jsxs("div", { className: "bd-codex-runtime", "data-codex-runtime": "", children: [_jsx("div", { className: "bd-runtime-heading", children: _jsx(FieldTitle, { help: tr('botDefaults.runtimeHelp'), children: tr('botDefaults.runtimeTitle') }) }), _jsxs("div", { className: "bd-runtime-mode", role: "group", "aria-label": tr('botDefaults.runtimeTitle'), children: [_jsx("button", { type: "button", "data-action": "runtime-official", "aria-pressed": runtimeDraft.mode === 'official', disabled: agentBusy, onClick: () => updateRuntimeMode('official'), children: tr('botDefaults.runtimeOfficial') }), _jsx("button", { type: "button", "data-action": "runtime-custom", "aria-pressed": runtimeDraft.mode === 'custom', disabled: agentBusy, onClick: () => updateRuntimeMode('custom'), children: tr('botDefaults.runtimeCustom') })] }), _jsx("input", { type: "hidden", "data-input": "agentRuntimeMode", value: runtimeDraft.mode, readOnly: true }), _jsx("p", { className: "bd-runtime-note", children: tr(runtimeDraft.mode === 'official'
|
|
982
|
-
? 'botDefaults.runtimeOfficialNote'
|
|
983
|
-
: runtimeDraft.mode === 'legacy'
|
|
984
|
-
? 'botDefaults.runtimeLegacyNote'
|
|
985
|
-
: 'botDefaults.runtimeCustomNote') }), runtimeDraft.mode === 'legacy' ? (_jsx("div", { className: "bd-runtime-fields", "data-runtime-legacy": "", children: _jsxs("label", { className: "bd-runtime-wide", children: [_jsx("span", { children: tr('botDefaults.runtimeLegacyPath') }), _jsx("input", { type: "text", value: runtimeDraft.legacyPath, readOnly: true, "aria-readonly": "true", "data-input": "agentRuntimeLegacyPath" })] }) })) : null, runtimeDraft.mode === 'custom' ? (_jsxs("div", { className: "bd-runtime-fields", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.runtimeIdHelp'), children: tr('botDefaults.runtimeId') }), _jsx("input", { type: "text", "data-input": "agentRuntimeId", value: runtimeDraft.id, disabled: agentBusy, autoComplete: "off", onChange: event => updateRuntimeDraft({ id: event.currentTarget.value }) })] }), _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.runtimeDisplayName') }), _jsx("input", { type: "text", "data-input": "agentRuntimeDisplayName", placeholder: tr('botDefaults.runtimeDisplayNamePlaceholder'), value: runtimeDraft.displayName, disabled: agentBusy, autoComplete: "off", onChange: event => updateRuntimeDraft({ displayName: event.currentTarget.value }) })] }), _jsxs("label", { className: "bd-runtime-wide", children: [_jsx(FieldTitle, { help: tr('botDefaults.runtimeExecutableHelp'), children: tr('botDefaults.runtimeExecutable') }), _jsx("input", { type: "text", "data-input": "agentRuntimeExecutable", value: runtimeDraft.executable, disabled: agentBusy, autoCapitalize: "none", autoComplete: "off", spellCheck: false, onChange: event => updateRuntimeDraft({ executable: event.currentTarget.value }) })] }), _jsxs("div", { className: "bd-field", children: [_jsx("span", { children: tr('botDefaults.runtimeUpdateProvider') }), _jsx(DropdownField, { dataInput: "agentRuntimeUpdateProvider", ariaLabel: tr('botDefaults.runtimeUpdateProvider'), value: runtimeDraft.updateProvider, disabled: agentBusy, options: runtimeProviderOptions, onChange: updateProvider => updateRuntimeDraft({ updateProvider }) })] }), runtimeDraft.updateProvider === 'npm' ? (_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.runtimePackageHelp'), children: tr('botDefaults.runtimePackageName') }), _jsx("input", { type: "text", "data-input": "agentRuntimePackageName", value: runtimeDraft.packageName, disabled: agentBusy, autoCapitalize: "none", autoComplete: "off", spellCheck: false, onChange: event => updateRuntimeDraft({ packageName: event.currentTarget.value }) })] })) : null] })) : null, _jsx(StatusSpan, { status: runtimeStatus, attr: { 'data-runtime-status': '' } })] })) : null, !isRiff && (_jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.agentHelp'), children: tr('botDefaults.agentModel') }), _jsx("input", { type: "text", "data-input": "agentModel", list: `agent-model-suggestions-${bot.larkAppId}`, placeholder: modelPlaceholder, value: model, disabled: agentBusy || modelDisabledByCli, onChange: event => setModel(event.currentTarget.value) }), _jsx("datalist", { id: `agent-model-suggestions-${bot.larkAppId}`, children: suggestions.map(item => _jsx("option", { value: item }, item)) })] }) })), isRiff && _jsx(RiffSection, { bot: bot, patchBot: patchBot, persistCliSelection: persistRiffCliSelection }), !isRiff && siSupport === 'dynamic' ? (_jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.skillInjectionHelpDynamic'), children: tr('botDefaults.skillInjection') }), _jsx(DropdownField, { dataInput: "skillInjection", ariaLabel: tr('botDefaults.skillInjection'), value: "dynamic", disabled: true, options: dynamicSkillOptions, onChange: () => undefined })] }) })) : !isRiff && siSupport === 'global' ? (_jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.skillInjectionHelp'), children: tr('botDefaults.skillInjection') }), _jsx(DropdownField, { dataInput: "skillInjection", ariaLabel: tr('botDefaults.skillInjection'), value: skillValue, disabled: skillBusy, options: skillOptions, onChange: next => void saveSkillInjection(next) })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: skillStatus, attr: { 'data-skill-injection-status': '' } }) })] })) : null, !isRiff && (_jsxs("div", { className: "actions bd-section-actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-agent", disabled: agentBusy, onClick: () => void saveAgent(), children: tr('botDefaults.agentSave') }), _jsx(StatusSpan, { status: agentStatus, attr: { 'data-agent-status': '' } })] }))] }));
|
|
986
|
-
}
|
|
987
|
-
function skillInjectionResolved(bot) {
|
|
988
|
-
const override = bot.skillInjection === 'global' || bot.skillInjection === 'prompt' || bot.skillInjection === 'off' ? bot.skillInjection : '';
|
|
989
|
-
const def = bot.skillInjectionDefault === 'global' || bot.skillInjectionDefault === 'off' ? bot.skillInjectionDefault : 'prompt';
|
|
990
|
-
return override || def;
|
|
991
|
-
}
|
|
992
|
-
function WorkingDirSection(props) {
|
|
993
|
-
const tr = useT();
|
|
994
|
-
const { bot, patchBot } = props;
|
|
995
|
-
const initial = workingDirState(bot);
|
|
996
|
-
const [mode, setMode] = useState(initial.mode);
|
|
997
|
-
const [workingDir, setWorkingDir] = useState(initial.workingDir);
|
|
998
|
-
const [autoWorktree, setAutoWorktree] = useState(bot.defaultWorkingDirAutoWorktree === true);
|
|
999
|
-
const [status, setStatus] = useState(null);
|
|
1000
|
-
const [busy, setBusy] = useState(false);
|
|
1001
|
-
useEffect(() => {
|
|
1002
|
-
const next = workingDirState(bot);
|
|
1003
|
-
setMode(next.mode);
|
|
1004
|
-
setWorkingDir(next.workingDir);
|
|
1005
|
-
setAutoWorktree(bot.defaultWorkingDirAutoWorktree === true);
|
|
1006
|
-
}, [
|
|
1007
|
-
bot.defaultOncall?.enabled,
|
|
1008
|
-
bot.defaultOncall?.workingDir,
|
|
1009
|
-
bot.defaultWorkingDir,
|
|
1010
|
-
bot.defaultWorkingDirAutoWorktree,
|
|
1011
|
-
]);
|
|
1012
|
-
async function save() {
|
|
1013
|
-
setStatus(null);
|
|
1014
|
-
const dir = workingDir.trim();
|
|
1015
|
-
if (mode !== 'off' && !dir) {
|
|
1016
|
-
setStatus({ text: tr('botDefaults.required') });
|
|
1017
|
-
return;
|
|
1018
|
-
}
|
|
1019
|
-
const nextAutoWorktree = mode === 'default' && autoWorktree;
|
|
1020
|
-
setBusy(true);
|
|
1021
|
-
try {
|
|
1022
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/working-dir-mode`, {
|
|
1023
|
-
mode,
|
|
1024
|
-
workingDir: dir,
|
|
1025
|
-
autoWorktree: nextAutoWorktree,
|
|
1026
|
-
});
|
|
1027
|
-
if (res.ok && res.body.ok) {
|
|
1028
|
-
const resolvedNote = res.body.resolvedPath ? ` → ${res.body.resolvedPath}` : '';
|
|
1029
|
-
setStatus({ text: `✓ ${tr('botDefaults.workingDirSaved')}${resolvedNote}`, ok: true });
|
|
1030
|
-
patchBot(bot.larkAppId, {
|
|
1031
|
-
defaultOncall: res.body.defaultOncall ?? bot.defaultOncall,
|
|
1032
|
-
defaultWorkingDir: res.body.defaultWorkingDir ?? null,
|
|
1033
|
-
defaultWorkingDirAutoWorktree: res.body.defaultWorkingDirAutoWorktree === true,
|
|
1034
|
-
});
|
|
1035
|
-
}
|
|
1036
|
-
else {
|
|
1037
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1038
|
-
}
|
|
1039
|
-
}
|
|
1040
|
-
catch (e) {
|
|
1041
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1042
|
-
}
|
|
1043
|
-
finally {
|
|
1044
|
-
setBusy(false);
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
const modeOptions = [
|
|
1048
|
-
{ value: 'off', label: tr('botDefaults.workingDirModeOff') },
|
|
1049
|
-
{ value: 'default', label: tr('botDefaults.workingDirModeDefault') },
|
|
1050
|
-
{ value: 'oncall', label: tr('botDefaults.workingDirModeOncall') },
|
|
1051
|
-
];
|
|
1052
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionWorkingDir') }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.workingDirModeHelp'), children: tr('botDefaults.workingDirMode') }), _jsx(DropdownField, { dataInput: "workingDirMode", ariaLabel: tr('botDefaults.workingDirMode'), value: mode, disabled: busy, options: modeOptions, onChange: next => setMode(next) })] }) }), _jsx("div", { className: "bd-row", "data-wd-dir-row": true, hidden: mode === 'off', children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.workingDirField') }), _jsx("input", { type: "text", "data-input": "workingDir", placeholder: "e.g. /root/iserver/botmux", value: workingDir, disabled: busy, onChange: event => setWorkingDir(event.currentTarget.value) })] }) }), _jsxs("label", { className: "toggle-row", "data-wd-worktree-row": true, hidden: mode !== 'default', children: [_jsx("input", { type: "checkbox", "data-input": "autoWorktree", checked: autoWorktree, disabled: busy, onChange: event => setAutoWorktree(event.currentTarget.checked) }), _jsx("span", { className: "switch", "aria-hidden": "true" }), _jsx("span", { className: "toggle-tx", children: _jsx("strong", { children: _jsx(FieldTitle, { help: tr('botDefaults.autoWorktreeHelp'), children: tr('botDefaults.autoWorktree') }) }) })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-working-dir", disabled: busy, onClick: () => void save(), children: tr('botDefaults.save') }), _jsx(StatusSpan, { status: status, attr: { 'data-status': '' } })] }), _jsx(AutoStartControls, { bot: bot, putCardPref: props.putCardPref })] }));
|
|
1053
|
-
}
|
|
1054
|
-
function workingDirState(bot) {
|
|
1055
|
-
const def = bot.defaultOncall ?? { enabled: false, workingDir: '' };
|
|
1056
|
-
const mode = def.enabled ? 'oncall' : (bot.defaultWorkingDir ? 'default' : 'off');
|
|
1057
|
-
return { mode, workingDir: bot.defaultWorkingDir || def.workingDir || '' };
|
|
1058
|
-
}
|
|
1059
|
-
function AutoStartControls(props) {
|
|
1060
|
-
const tr = useT();
|
|
1061
|
-
const { bot, putCardPref } = props;
|
|
1062
|
-
const [onJoin, setOnJoin] = useState(bot.autoStartOnGroupJoin === true);
|
|
1063
|
-
const [onTopic, setOnTopic] = useState(bot.autoStartOnNewTopic === true);
|
|
1064
|
-
const [prompt, setPrompt] = useState(typeof bot.autoStartOnGroupJoinPrompt === 'string' ? bot.autoStartOnGroupJoinPrompt : '');
|
|
1065
|
-
const [status, setStatus] = useState(null);
|
|
1066
|
-
const [busy, setBusy] = useState(null);
|
|
1067
|
-
useEffect(() => {
|
|
1068
|
-
setOnJoin(bot.autoStartOnGroupJoin === true);
|
|
1069
|
-
setOnTopic(bot.autoStartOnNewTopic === true);
|
|
1070
|
-
setPrompt(typeof bot.autoStartOnGroupJoinPrompt === 'string' ? bot.autoStartOnGroupJoinPrompt : '');
|
|
1071
|
-
}, [bot.autoStartOnGroupJoin, bot.autoStartOnGroupJoinPrompt, bot.autoStartOnNewTopic]);
|
|
1072
|
-
async function savePatch(patch, key) {
|
|
1073
|
-
setBusy(key);
|
|
1074
|
-
setStatus(null);
|
|
1075
|
-
try {
|
|
1076
|
-
const res = await putCardPref(patch);
|
|
1077
|
-
setStatus(res.ok ? { text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true } : { text: `✗ ${responseErrorText(res)}` });
|
|
1078
|
-
}
|
|
1079
|
-
catch (e) {
|
|
1080
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1081
|
-
}
|
|
1082
|
-
finally {
|
|
1083
|
-
setBusy(null);
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
return (_jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: tr('botDefaults.sectionAutoStart') }), _jsx(ToggleRow, { checked: onJoin, disabled: busy === 'join', dataAction: "toggle-auto-join", title: tr('botDefaults.autoStartJoin'), help: tr('botDefaults.autoStartJoinHelp'), onChange: checked => {
|
|
1087
|
-
setOnJoin(checked);
|
|
1088
|
-
void savePatch({ autoStartOnGroupJoin: checked }, 'join');
|
|
1089
|
-
} }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.autoStartJoinPrompt') }), _jsx("textarea", { "data-input": "autoJoinPrompt", rows: 3, placeholder: tr('botDefaults.autoStartJoinPromptPlaceholder'), value: prompt, onChange: event => setPrompt(event.currentTarget.value) })] }) }), _jsx(ToggleRow, { checked: onTopic, disabled: busy === 'topic', dataAction: "toggle-auto-topic", title: tr('botDefaults.autoStartTopic'), help: tr('botDefaults.autoStartTopicHelp'), onChange: checked => {
|
|
1090
|
-
setOnTopic(checked);
|
|
1091
|
-
void savePatch({ autoStartOnNewTopic: checked }, 'topic');
|
|
1092
|
-
} }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-auto-join-prompt", disabled: busy === 'prompt', onClick: () => void savePatch({ autoStartOnGroupJoinPrompt: prompt }, 'prompt'), children: tr('botDefaults.autoStartJoinPromptSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-auto-start-status': '' } })] })] }));
|
|
1093
|
-
}
|
|
1094
|
-
function SandboxSection(props) {
|
|
1095
|
-
const tr = useT();
|
|
1096
|
-
const { bot, patchBot } = props;
|
|
1097
|
-
const [enabled, setEnabled] = useState(bot.sandbox === true);
|
|
1098
|
-
const [status, setStatus] = useState(null);
|
|
1099
|
-
const [busy, setBusy] = useState(false);
|
|
1100
|
-
useEffect(() => setEnabled(bot.sandbox === true), [bot.sandbox]);
|
|
1101
|
-
async function toggle(next) {
|
|
1102
|
-
setEnabled(next);
|
|
1103
|
-
setStatus(null);
|
|
1104
|
-
setBusy(true);
|
|
1105
|
-
try {
|
|
1106
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/sandbox`, { enabled: next });
|
|
1107
|
-
if (res.ok && res.body.ok) {
|
|
1108
|
-
setStatus({ text: `✓ ${tr('botDefaults.sandboxSaved')}`, ok: true });
|
|
1109
|
-
patchBot(bot.larkAppId, { sandbox: res.body.sandbox === true });
|
|
1110
|
-
}
|
|
1111
|
-
else {
|
|
1112
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1113
|
-
setEnabled(!next);
|
|
1114
|
-
}
|
|
1115
|
-
}
|
|
1116
|
-
catch (e) {
|
|
1117
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1118
|
-
setEnabled(!next);
|
|
1119
|
-
}
|
|
1120
|
-
finally {
|
|
1121
|
-
setBusy(false);
|
|
1122
|
-
}
|
|
1123
|
-
}
|
|
1124
|
-
// The unified fs-policy always provides deny-by-default file read/write
|
|
1125
|
-
// isolation. This capability line is narrower: whether the CLI's global data
|
|
1126
|
-
// root can additionally be redirected into this bot's private BOT_HOME
|
|
1127
|
-
// (claude/codex, no wrapper), keeping CLI credentials/config/history separate
|
|
1128
|
-
// from sibling bots. Keep that distinction explicit in the UI copy.
|
|
1129
|
-
const readIsoSupported = bot.readIsolationSupported === true;
|
|
1130
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionSandbox') }), _jsx(ToggleRow, { checked: enabled, disabled: busy, dataAction: "toggle-sandbox", title: tr('botDefaults.sandboxToggle'), help: tr('botDefaults.sandboxHelp'), onChange: checked => void toggle(checked) }), _jsx("p", { className: "bd-section-note", "data-read-iso-capability": readIsoSupported ? 'yes' : 'no', children: readIsoSupported ? `+ ${tr('botDefaults.sandboxReadIsoOn')}` : tr('botDefaults.sandboxReadIsoOff') }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: status, attr: { 'data-sandbox-status': '' } }) })] }));
|
|
1131
|
-
}
|
|
1132
|
-
/** Restrictiveness ranking — mirrors fs-policy.ts RESTRICTIVENESS so a same-path
|
|
1133
|
-
* cross-tier conflict resolves the SAME way the sandbox will (deny > ro > rw). */
|
|
1134
|
-
const SBX_RESTRICTIVENESS = { readWrite: 0, readOnly: 1, deny: 2 };
|
|
1135
|
-
/** Effective access for `path` under the three tiers: DEEPEST (longest-prefix)
|
|
1136
|
-
* matching rule wins; at equal depth (same path across tiers) the MORE
|
|
1137
|
-
* RESTRICTIVE tier wins — mirrors fs-policy.ts accessForPath + mergeFsRules so
|
|
1138
|
-
* the UI's live labels + path tester agree with what the sandbox enforces.
|
|
1139
|
-
* `home` expands a leading `~` the same way the worker does before matching, so
|
|
1140
|
-
* `~`-relative entries line up with absolute tree nodes. */
|
|
1141
|
-
export function effectiveAccess(tiers, path, home) {
|
|
1142
|
-
const expand = (p) => (p === '~' || p.startsWith('~/')) ? home.replace(/\/+$/, '') + p.slice(1) : p;
|
|
1143
|
-
const norm = (p) => expand(p).replace(/\/+$/, '') || '/';
|
|
1144
|
-
const target = norm(path);
|
|
1145
|
-
const covers = (parent, child) => {
|
|
1146
|
-
const a = norm(parent), b = norm(child);
|
|
1147
|
-
return a === b || b.startsWith(a === '/' ? '/' : a + '/');
|
|
1148
|
-
};
|
|
1149
|
-
const depth = (p) => norm(p) === '/' ? 0 : norm(p).split('/').filter(Boolean).length;
|
|
1150
|
-
let best;
|
|
1151
|
-
const consider = (access, rule) => {
|
|
1152
|
-
if (!covers(rule, target))
|
|
1153
|
-
return;
|
|
1154
|
-
const d = depth(rule);
|
|
1155
|
-
if (!best || d > best.ruleDepth
|
|
1156
|
-
|| (d === best.ruleDepth && SBX_RESTRICTIVENESS[access] > SBX_RESTRICTIVENESS[best.access])) {
|
|
1157
|
-
best = { access, ruleDepth: d, rule };
|
|
1158
|
-
}
|
|
1159
|
-
};
|
|
1160
|
-
for (const p of tiers.readWrite)
|
|
1161
|
-
consider('readWrite', p);
|
|
1162
|
-
for (const p of tiers.readOnly)
|
|
1163
|
-
consider('readOnly', p);
|
|
1164
|
-
for (const p of tiers.deny)
|
|
1165
|
-
consider('deny', p);
|
|
1166
|
-
return best ? { access: best.access, rule: best.rule } : { access: 'none' };
|
|
1167
|
-
}
|
|
1168
|
-
function emptyTiers() { return { readWrite: [], readOnly: [], deny: [] }; }
|
|
1169
|
-
function normTiers(t) {
|
|
1170
|
-
if (!t)
|
|
1171
|
-
return emptyTiers();
|
|
1172
|
-
return { readWrite: [...(t.readWrite ?? [])], readOnly: [...(t.readOnly ?? [])], deny: [...(t.deny ?? [])] };
|
|
1173
|
-
}
|
|
1174
|
-
function tiersEqual(a, b) {
|
|
1175
|
-
const k = (x) => [...x].sort().join('\n');
|
|
1176
|
-
return k(a.readWrite) === k(b.readWrite) && k(a.readOnly) === k(b.readOnly) && k(a.deny) === k(b.deny);
|
|
1177
|
-
}
|
|
1178
|
-
/** Serialize tiers to the copy-paste text form (one path per line, tier-tagged). */
|
|
1179
|
-
function tiersToText(t) {
|
|
1180
|
-
const lines = [];
|
|
1181
|
-
for (const p of t.readWrite)
|
|
1182
|
-
lines.push(`rw ${p}`);
|
|
1183
|
-
for (const p of t.readOnly)
|
|
1184
|
-
lines.push(`ro ${p}`);
|
|
1185
|
-
for (const p of t.deny)
|
|
1186
|
-
lines.push(`deny ${p}`);
|
|
1187
|
-
return lines.join('\n');
|
|
1188
|
-
}
|
|
1189
|
-
/** Parse the copy-paste text form back into tiers. Tolerates `rw`/`readWrite`,
|
|
1190
|
-
* `ro`/`readOnly`, `deny`/`-`; blank lines and `#` comments are ignored. */
|
|
1191
|
-
function textToTiers(text) {
|
|
1192
|
-
const t = emptyTiers();
|
|
1193
|
-
for (const raw of text.split('\n')) {
|
|
1194
|
-
const line = raw.trim();
|
|
1195
|
-
if (!line || line.startsWith('#'))
|
|
1196
|
-
continue;
|
|
1197
|
-
const m = /^(\S+)\s+(.+)$/.exec(line);
|
|
1198
|
-
if (!m)
|
|
1199
|
-
continue;
|
|
1200
|
-
const tag = m[1].toLowerCase();
|
|
1201
|
-
const path = m[2].trim();
|
|
1202
|
-
if (tag === 'rw' || tag === 'readwrite' || tag === 'rw:')
|
|
1203
|
-
t.readWrite.push(path);
|
|
1204
|
-
else if (tag === 'ro' || tag === 'readonly' || tag === 'ro:')
|
|
1205
|
-
t.readOnly.push(path);
|
|
1206
|
-
else if (tag === 'deny' || tag === '-' || tag === 'deny:')
|
|
1207
|
-
t.deny.push(path);
|
|
1208
|
-
}
|
|
1209
|
-
return t;
|
|
1210
|
-
}
|
|
1211
|
-
function SandboxPathsSection(props) {
|
|
1212
|
-
const tr = useT();
|
|
1213
|
-
const { bot, patchBot } = props;
|
|
1214
|
-
const [tiers, setTiers] = useState(() => normTiers(bot.sandboxPaths));
|
|
1215
|
-
const [text, setText] = useState(() => tiersToText(normTiers(bot.sandboxPaths)));
|
|
1216
|
-
const [textMode, setTextMode] = useState(false);
|
|
1217
|
-
const [status, setStatus] = useState(null);
|
|
1218
|
-
const [busy, setBusy] = useState(false);
|
|
1219
|
-
const [testPath, setTestPath] = useState('');
|
|
1220
|
-
// Lazy directory tree: path → child dir list (undefined = not yet loaded).
|
|
1221
|
-
const [children, setChildren] = useState({});
|
|
1222
|
-
const [expanded, setExpanded] = useState(new Set());
|
|
1223
|
-
const [roots, setRoots] = useState([]);
|
|
1224
|
-
// Canonical $HOME (first fs-list root) — used to expand `~` in tiers/tester
|
|
1225
|
-
// the SAME way the worker does, so `~`-relative entries match absolute tree
|
|
1226
|
-
// nodes and effective-access labels are accurate.
|
|
1227
|
-
const [homeRoot, setHomeRoot] = useState('~');
|
|
1228
|
-
const saved = useMemo(() => normTiers(bot.sandboxPaths), [bot.sandboxPaths]);
|
|
1229
|
-
useEffect(() => { setTiers(normTiers(bot.sandboxPaths)); setText(tiersToText(normTiers(bot.sandboxPaths))); }, [bot.sandboxPaths]);
|
|
1230
|
-
const dirty = !tiersEqual(tiers, saved);
|
|
1231
|
-
const loadDir = useCallback(async (path) => {
|
|
1232
|
-
try {
|
|
1233
|
-
const q = path ? `?path=${encodeURIComponent(path)}` : '';
|
|
1234
|
-
const r = await fetch(`/api/fs/list${q}`);
|
|
1235
|
-
const j = await r.json();
|
|
1236
|
-
if (!j.ok)
|
|
1237
|
-
return;
|
|
1238
|
-
if (!path) {
|
|
1239
|
-
setRoots(j.entries.map((e) => ({ name: e.name, path: e.path })));
|
|
1240
|
-
// Backend returns canonical $HOME explicitly (realpath'd) so `~` expansion
|
|
1241
|
-
// here matches the realpath'd child nodes + the worker's sandbox binds.
|
|
1242
|
-
if (typeof j.home === 'string' && j.home.startsWith('/'))
|
|
1243
|
-
setHomeRoot(j.home);
|
|
1244
|
-
}
|
|
1245
|
-
else
|
|
1246
|
-
setChildren(prev => ({ ...prev, [path]: j.entries.map((e) => ({ name: e.name, path: e.path })) }));
|
|
1247
|
-
}
|
|
1248
|
-
catch { /* listing is best-effort; manual/text entry still works */ }
|
|
1249
|
-
}, []);
|
|
1250
|
-
useEffect(() => { if (!textMode && roots.length === 0)
|
|
1251
|
-
void loadDir(''); }, [textMode, roots.length, loadDir]);
|
|
1252
|
-
// The tier a path is EXPLICITLY set to (undefined = inherits from ancestor).
|
|
1253
|
-
const explicitTier = useCallback((path) => {
|
|
1254
|
-
const n = path.replace(/\/+$/, '') || '/';
|
|
1255
|
-
if (tiers.readWrite.some(p => (p.replace(/\/+$/, '') || '/') === n))
|
|
1256
|
-
return 'readWrite';
|
|
1257
|
-
if (tiers.readOnly.some(p => (p.replace(/\/+$/, '') || '/') === n))
|
|
1258
|
-
return 'readOnly';
|
|
1259
|
-
if (tiers.deny.some(p => (p.replace(/\/+$/, '') || '/') === n))
|
|
1260
|
-
return 'deny';
|
|
1261
|
-
return undefined;
|
|
1262
|
-
}, [tiers]);
|
|
1263
|
-
// Cycle a node: inherit → readWrite → readOnly → deny → inherit.
|
|
1264
|
-
const cycleNode = useCallback((path) => {
|
|
1265
|
-
setStatus(null);
|
|
1266
|
-
const n = path.replace(/\/+$/, '') || '/';
|
|
1267
|
-
const cur = explicitTier(path);
|
|
1268
|
-
const next = cur === undefined ? 'readWrite' : cur === 'readWrite' ? 'readOnly' : cur === 'readOnly' ? 'deny' : undefined;
|
|
1269
|
-
setTiers(prev => {
|
|
1270
|
-
const strip = (arr) => arr.filter(p => (p.replace(/\/+$/, '') || '/') !== n);
|
|
1271
|
-
const t = { readWrite: strip(prev.readWrite), readOnly: strip(prev.readOnly), deny: strip(prev.deny) };
|
|
1272
|
-
if (next)
|
|
1273
|
-
t[next].push(path);
|
|
1274
|
-
setText(tiersToText(t));
|
|
1275
|
-
return t;
|
|
1276
|
-
});
|
|
1277
|
-
}, [explicitTier]);
|
|
1278
|
-
function syncFromText(next) {
|
|
1279
|
-
setText(next);
|
|
1280
|
-
setTiers(textToTiers(next));
|
|
1281
|
-
setStatus(null);
|
|
1282
|
-
}
|
|
1283
|
-
async function save() {
|
|
1284
|
-
setBusy(true);
|
|
1285
|
-
setStatus(null);
|
|
1286
|
-
try {
|
|
1287
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/sandbox-paths`, tiers);
|
|
1288
|
-
if (res.ok && res.body.ok) {
|
|
1289
|
-
setStatus({ text: `✓ ${tr('botDefaults.sbxPathsSaved')}`, ok: true });
|
|
1290
|
-
patchBot(bot.larkAppId, { sandboxPaths: res.body.sandboxPaths ?? { readWrite: [], readOnly: [], deny: [] } });
|
|
1291
|
-
}
|
|
1292
|
-
else {
|
|
1293
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1294
|
-
}
|
|
1295
|
-
}
|
|
1296
|
-
catch (e) {
|
|
1297
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1298
|
-
}
|
|
1299
|
-
finally {
|
|
1300
|
-
setBusy(false);
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
const tierBadge = (a) => a === 'readWrite' ? tr('botDefaults.sbxRw')
|
|
1304
|
-
: a === 'readOnly' ? tr('botDefaults.sbxRo')
|
|
1305
|
-
: a === 'deny' ? tr('botDefaults.sbxDeny')
|
|
1306
|
-
: tr('botDefaults.sbxNone');
|
|
1307
|
-
function TreeNode(props) {
|
|
1308
|
-
const { name, path, depth } = props;
|
|
1309
|
-
const isOpen = expanded.has(path);
|
|
1310
|
-
const explicit = explicitTier(path);
|
|
1311
|
-
const eff = effectiveAccess(tiers, path, homeRoot);
|
|
1312
|
-
const kids = children[path];
|
|
1313
|
-
return (_jsxs("div", { className: "bd-sbx-node", children: [_jsxs("div", { className: "bd-sbx-row", style: { paddingLeft: depth * 16 }, children: [_jsx("span", { className: "bd-sbx-twisty", onClick: () => {
|
|
1314
|
-
setExpanded(prev => { const s = new Set(prev); s.has(path) ? s.delete(path) : s.add(path); return s; });
|
|
1315
|
-
if (!kids)
|
|
1316
|
-
void loadDir(path);
|
|
1317
|
-
}, children: isOpen ? '▾' : '▸' }), _jsx("span", { className: "bd-sbx-name", title: path, children: name }), _jsx("button", { type: "button", className: `bd-sbx-state bd-sbx-state-${explicit ?? 'inherit'}`, "data-action": "cycle-sandbox-path", "data-path": path, title: explicit ? undefined : `${tr('botDefaults.sbxInherit')}: ${tierBadge(eff.access)}`, onClick: () => cycleNode(path), children: explicit ? tierBadge(explicit) : `↳ ${tierBadge(eff.access)}` })] }), isOpen && (_jsxs("div", { className: "bd-sbx-kids", children: [kids?.map(c => _jsx(TreeNode, { name: c.name, path: c.path, depth: depth + 1 }, c.path)), kids && kids.length === 0 && (_jsx("div", { className: "bd-sbx-empty", style: { paddingLeft: (depth + 1) * 16 + 20 }, children: tr('botDefaults.sbxNoSubdirs') }))] }))] }));
|
|
1318
|
-
}
|
|
1319
|
-
const testResult = testPath.trim() ? effectiveAccess(tiers, testPath.trim(), homeRoot) : null;
|
|
1320
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionSandboxPaths') }), _jsx("p", { className: "bd-section-note", children: tr('botDefaults.sbxPathsHelp') }), _jsx("div", { className: "actions", style: { gap: 8, flexWrap: 'wrap' }, children: _jsx("button", { type: "button", className: "bd-btn", onClick: () => setTextMode(m => !m), children: textMode ? tr('botDefaults.sbxPathsTreeMode') : tr('botDefaults.sbxPathsTextMode') }) }), textMode ? (_jsx("textarea", { className: "bd-sbx-text", "data-field": "sandbox-paths-text", rows: 8, value: text, spellCheck: false, placeholder: 'rw ~/my-data\nro ~/reference-repos\ndeny ~/my-data/secrets', onChange: e => syncFromText(e.target.value) })) : (_jsx("div", { className: "bd-sbx-tree", "data-field": "sandbox-paths-tree", children: roots.map(r => _jsx(TreeNode, { name: r.name, path: r.path, depth: 0 }, r.path)) })), _jsxs("div", { className: "bd-sbx-tester", children: [_jsx("input", { className: "bd-sbx-test-input", "data-field": "sandbox-path-test", placeholder: tr('botDefaults.sbxTestPlaceholder'), value: testPath, onChange: e => setTestPath(e.target.value) }), testResult && (_jsxs("span", { className: `bd-sbx-test-out bd-sbx-state-${testResult.access}`, "data-test-access": testResult.access, children: [tierBadge(testResult.access), testResult.rule ? ` ← ${testResult.rule}` : ''] }))] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "bd-btn bd-btn-primary", "data-action": "save-sandbox-paths", disabled: busy || !dirty, onClick: () => void save(), children: tr('botDefaults.sbxPathsSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-sandbox-paths-status': '' } })] })] }));
|
|
1321
|
-
}
|
|
1322
|
-
const BACKEND_TYPE_OPTIONS = [
|
|
1323
|
-
{ value: '', labelKey: 'botDefaults.backendAuto' },
|
|
1324
|
-
{ value: 'tmux', labelKey: 'botDefaults.backendTmux' },
|
|
1325
|
-
{ value: 'herdr', labelKey: 'botDefaults.backendHerdr' },
|
|
1326
|
-
{ value: 'zellij', labelKey: 'botDefaults.backendZellij' },
|
|
1327
|
-
{ value: 'zmx', labelKey: 'botDefaults.backendZmx' },
|
|
1328
|
-
{ value: 'pty', labelKey: 'botDefaults.backendPty' },
|
|
1329
|
-
];
|
|
1330
|
-
function BackendTypeSection(props) {
|
|
1331
|
-
const tr = useT();
|
|
1332
|
-
const { bot, patchBot } = props;
|
|
1333
|
-
const [value, setValue] = useState(typeof bot.backendType === 'string' ? bot.backendType : '');
|
|
1334
|
-
const [status, setStatus] = useState(null);
|
|
1335
|
-
const [busy, setBusy] = useState(false);
|
|
1336
|
-
useEffect(() => setValue(typeof bot.backendType === 'string' ? bot.backendType : ''), [bot.backendType]);
|
|
1337
|
-
const options = useMemo(() => BACKEND_TYPE_OPTIONS.map(o => ({ value: o.value, label: tr(o.labelKey) })), [tr]);
|
|
1338
|
-
async function save(next) {
|
|
1339
|
-
const prev = value;
|
|
1340
|
-
setValue(next);
|
|
1341
|
-
setStatus(null);
|
|
1342
|
-
setBusy(true);
|
|
1343
|
-
try {
|
|
1344
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(bot.larkAppId)}/backend-type`, { backendType: next });
|
|
1345
|
-
if (res.ok && res.body.ok) {
|
|
1346
|
-
setStatus({ text: `✓ ${tr('botDefaults.backendSaved')}`, ok: true });
|
|
1347
|
-
patchBot(bot.larkAppId, { backendType: typeof res.body.backendType === 'string' ? res.body.backendType : null });
|
|
1348
|
-
}
|
|
1349
|
-
else {
|
|
1350
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1351
|
-
setValue(prev); // revert optimistic selection
|
|
1352
|
-
}
|
|
1353
|
-
}
|
|
1354
|
-
catch (e) {
|
|
1355
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1356
|
-
setValue(prev);
|
|
1357
|
-
}
|
|
1358
|
-
finally {
|
|
1359
|
-
setBusy(false);
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
1362
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionBackend') }), _jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.backendHelp'), children: tr('botDefaults.backendLabel') }), _jsx(DropdownField, { dataInput: "backendType", ariaLabel: tr('botDefaults.backendLabel'), value: value, disabled: busy, options: options, onChange: next => void save(next) })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: status, attr: { 'data-backend-status': '' } }) })] })] }));
|
|
1363
|
-
}
|
|
1364
|
-
function RoleSection(props) {
|
|
1365
|
-
const tr = useT();
|
|
1366
|
-
const { bot, patchBot } = props;
|
|
1367
|
-
const [loaded, setLoaded] = useState(typeof bot.teamRole === 'string');
|
|
1368
|
-
const [role, setRole] = useState(typeof bot.teamRole === 'string' ? bot.teamRole : '');
|
|
1369
|
-
const [injectMode, setInjectMode] = useState('every');
|
|
1370
|
-
const [status, setStatus] = useState(null);
|
|
1371
|
-
const [busy, setBusy] = useState(false);
|
|
1372
|
-
useEffect(() => {
|
|
1373
|
-
let active = true;
|
|
1374
|
-
const roleUrl = `/api/team/local-bots/${encodeURIComponent(bot.larkAppId)}/role`;
|
|
1375
|
-
if (typeof bot.teamRole === 'string') {
|
|
1376
|
-
// Already resolved (incl. right after our own save, which patchBot's teamRole
|
|
1377
|
-
// re-fires this effect) — sync the field but DON'T clear status, or the freshly
|
|
1378
|
-
// set "✓ 已保存/已删除" toast gets wiped a frame later.
|
|
1379
|
-
setLoaded(true);
|
|
1380
|
-
setRole(bot.teamRole);
|
|
1381
|
-
return () => { active = false; };
|
|
1382
|
-
}
|
|
1383
|
-
setStatus(null);
|
|
1384
|
-
setLoaded(false);
|
|
1385
|
-
setRole('');
|
|
1386
|
-
void (async () => {
|
|
1387
|
-
try {
|
|
1388
|
-
const r = await fetch(roleUrl);
|
|
1389
|
-
const body = await r.json().catch(() => ({}));
|
|
1390
|
-
if (!active)
|
|
1391
|
-
return;
|
|
1392
|
-
if (r.ok && body.ok) {
|
|
1393
|
-
const next = body.role ?? '';
|
|
1394
|
-
setRole(next);
|
|
1395
|
-
setInjectMode(body.injectMode === 'once' ? 'once' : 'every');
|
|
1396
|
-
setLoaded(true);
|
|
1397
|
-
patchBot(bot.larkAppId, { teamRole: next });
|
|
1398
|
-
}
|
|
1399
|
-
else {
|
|
1400
|
-
setStatus({ text: `✗ ${tr('botDefaults.roleLoadErr')}: ${body.error ?? r.status}` });
|
|
1401
|
-
}
|
|
1402
|
-
}
|
|
1403
|
-
catch (e) {
|
|
1404
|
-
if (active)
|
|
1405
|
-
setStatus({ text: `✗ ${tr('botDefaults.roleLoadErr')}: ${caughtErrorText(e)}` });
|
|
1406
|
-
}
|
|
1407
|
-
})();
|
|
1408
|
-
return () => { active = false; };
|
|
1409
|
-
}, [bot.larkAppId, bot.teamRole, patchBot, tr]);
|
|
1410
|
-
// injectMode isn't cached on the bot row, so when the team role is already
|
|
1411
|
-
// resolved (cache hit above skips the GET) fetch just the mode once per bot.
|
|
1412
|
-
useEffect(() => {
|
|
1413
|
-
let active = true;
|
|
1414
|
-
if (typeof bot.teamRole !== 'string')
|
|
1415
|
-
return () => { active = false; };
|
|
1416
|
-
void (async () => {
|
|
1417
|
-
try {
|
|
1418
|
-
const r = await fetch(`/api/team/local-bots/${encodeURIComponent(bot.larkAppId)}/role`);
|
|
1419
|
-
const body = await r.json().catch(() => ({}));
|
|
1420
|
-
if (active && r.ok && body.ok)
|
|
1421
|
-
setInjectMode(body.injectMode === 'once' ? 'once' : 'every');
|
|
1422
|
-
}
|
|
1423
|
-
catch { /* keep default 'every' */ }
|
|
1424
|
-
})();
|
|
1425
|
-
return () => { active = false; };
|
|
1426
|
-
}, [bot.larkAppId]);
|
|
1427
|
-
async function putRole(nextRole, deleted, mode = injectMode) {
|
|
1428
|
-
if (!loaded)
|
|
1429
|
-
return;
|
|
1430
|
-
setStatus(null);
|
|
1431
|
-
setBusy(true);
|
|
1432
|
-
try {
|
|
1433
|
-
const res = await sendJson('PUT', `/api/team/local-bots/${encodeURIComponent(bot.larkAppId)}/role`, { role: nextRole, injectMode: mode });
|
|
1434
|
-
if (res.ok && res.body.ok) {
|
|
1435
|
-
const stored = nextRole.trim();
|
|
1436
|
-
setRole(stored);
|
|
1437
|
-
if (res.body.injectMode === 'once' || res.body.injectMode === 'every')
|
|
1438
|
-
setInjectMode(res.body.injectMode);
|
|
1439
|
-
patchBot(bot.larkAppId, { teamRole: stored });
|
|
1440
|
-
setStatus({ text: `✓ ${deleted ? tr('botDefaults.roleDeleted') : tr('botDefaults.roleSaved')}`, ok: true });
|
|
1441
|
-
}
|
|
1442
|
-
else {
|
|
1443
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1444
|
-
}
|
|
1445
|
-
}
|
|
1446
|
-
catch (e) {
|
|
1447
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1448
|
-
}
|
|
1449
|
-
finally {
|
|
1450
|
-
setBusy(false);
|
|
1451
|
-
}
|
|
1452
|
-
}
|
|
1453
|
-
const injectOptions = [
|
|
1454
|
-
{ value: 'every', label: tr('roles.injectModeEvery') },
|
|
1455
|
-
{ value: 'once', label: tr('roles.injectModeOnce') },
|
|
1456
|
-
];
|
|
1457
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: _jsx(FieldTitle, { help: tr('botDefaults.roleHelp'), children: tr('botDefaults.sectionRole') }) }), _jsx("textarea", { "data-input": "teamRole", rows: 6, placeholder: tr('botDefaults.rolePlaceholder'), disabled: !loaded || busy, value: role, onChange: event => setRole(event.currentTarget.value) }), _jsxs("div", { className: "bd-role-inject", children: [_jsx("span", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('roles.injectModeHint'), children: tr('roles.injectModeLabel') }) }), _jsx(DropdownMenu, { id: `bd-role-inject-${bot.larkAppId}`, className: "bd-role-inject-menu", ariaLabel: tr('roles.injectModeLabel'), disabled: !loaded || busy, label: dropdownLabel(injectOptions, injectMode), value: injectMode, options: injectOptions, onChange: mode => { const next = mode === 'once' ? 'once' : 'every'; setInjectMode(next); void putRole(role, role.trim() === '', next); } })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-role", disabled: !loaded || busy, onClick: () => void putRole(role, role.trim() === ''), children: tr('botDefaults.roleSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-role-status': '' } })] }), _jsx(ProfileRoles, { appId: bot.larkAppId })] }));
|
|
1458
|
-
}
|
|
1459
|
-
function ProfileRoles(props) {
|
|
1460
|
-
const tr = useT();
|
|
1461
|
-
const [state, setState] = useState({ loaded: false, loading: true, items: [] });
|
|
1462
|
-
useEffect(() => {
|
|
1463
|
-
let active = true;
|
|
1464
|
-
setState({ loaded: false, loading: true, items: [] });
|
|
1465
|
-
void (async () => {
|
|
1466
|
-
try {
|
|
1467
|
-
const r = await fetch('/api/role-profiles');
|
|
1468
|
-
const body = await r.json().catch(() => ({}));
|
|
1469
|
-
if (!active)
|
|
1470
|
-
return;
|
|
1471
|
-
if (!r.ok)
|
|
1472
|
-
throw new Error(body?.error ?? String(r.status));
|
|
1473
|
-
const profiles = Array.isArray(body.profiles) ? body.profiles : [];
|
|
1474
|
-
const items = profiles
|
|
1475
|
-
.filter((profile) => (profile.botEntries ?? []).some((entry) => entry?.larkAppId === props.appId && entry?.hasEntry))
|
|
1476
|
-
.map((profile) => ({ profileId: String(profile.profileId) }));
|
|
1477
|
-
setState({
|
|
1478
|
-
loaded: true,
|
|
1479
|
-
loading: false,
|
|
1480
|
-
items,
|
|
1481
|
-
});
|
|
1482
|
-
}
|
|
1483
|
-
catch (e) {
|
|
1484
|
-
if (active)
|
|
1485
|
-
setState({ loaded: true, loading: false, error: caughtErrorText(e), items: [] });
|
|
1486
|
-
}
|
|
1487
|
-
})();
|
|
1488
|
-
return () => { active = false; };
|
|
1489
|
-
}, [props.appId]);
|
|
1490
|
-
async function loadDetail(profileId) {
|
|
1491
|
-
const item = state.items.find(entry => entry.profileId === profileId);
|
|
1492
|
-
if (!item || item.loaded || item.loading)
|
|
1493
|
-
return;
|
|
1494
|
-
setState(current => ({
|
|
1495
|
-
...current,
|
|
1496
|
-
items: current.items.map(entry => entry.profileId === profileId ? { ...entry, loading: true } : entry),
|
|
1497
|
-
}));
|
|
1498
|
-
try {
|
|
1499
|
-
const r = await fetch(`/api/role-profiles/${encodeURIComponent(profileId)}/${encodeURIComponent(props.appId)}`);
|
|
1500
|
-
const body = await r.json().catch(() => ({}));
|
|
1501
|
-
if (!r.ok)
|
|
1502
|
-
throw new Error(body?.error ?? String(r.status));
|
|
1503
|
-
setState(current => ({
|
|
1504
|
-
...current,
|
|
1505
|
-
items: current.items.map(entry => entry.profileId === profileId
|
|
1506
|
-
? { ...entry, loading: false, loaded: true, content: body?.hasEntry ? String(body.content ?? '') : '' }
|
|
1507
|
-
: entry),
|
|
1508
|
-
}));
|
|
1509
|
-
}
|
|
1510
|
-
catch (e) {
|
|
1511
|
-
setState(current => ({
|
|
1512
|
-
...current,
|
|
1513
|
-
items: current.items.map(entry => entry.profileId === profileId ? { ...entry, loading: false, error: caughtErrorText(e) } : entry),
|
|
1514
|
-
}));
|
|
1515
|
-
}
|
|
1516
|
-
}
|
|
1517
|
-
let body;
|
|
1518
|
-
if (state.loading)
|
|
1519
|
-
body = _jsx(LoadingState, { label: tr('common.loading'), compact: true });
|
|
1520
|
-
else if (state.error)
|
|
1521
|
-
body = _jsx("p", { className: "hint-warn-inline", children: tr('botDefaults.profileRolesLoadFailed', { error: state.error }) });
|
|
1522
|
-
else if (state.items.length === 0)
|
|
1523
|
-
body = _jsx("p", { className: "empty", children: tr('botDefaults.profileRolesEmpty') });
|
|
1524
|
-
else {
|
|
1525
|
-
body = state.items.map(item => (_jsxs("details", { className: "bd-profile-role-entry", "data-profile-id": item.profileId, onToggle: event => {
|
|
1526
|
-
if (event.currentTarget.open)
|
|
1527
|
-
void loadDetail(item.profileId);
|
|
1528
|
-
}, children: [_jsx("summary", { children: _jsx("span", { className: "bd-profile-role-id", children: item.profileId }) }), _jsx("div", { className: "bd-profile-role-content", "data-profile-role-body": item.profileId, children: item.loading ? _jsx(LoadingState, { label: tr('common.loading'), compact: true }) : item.error ? (_jsx("p", { className: "hint-warn-inline", children: tr('botDefaults.profileRoleDetailLoadFailed', { error: item.error }) })) : item.loaded ? (_jsx("pre", { children: item.content ?? '' })) : (_jsx("p", { className: "empty", children: tr('botDefaults.profileRoleClickToLoad') })) })] }, item.profileId)));
|
|
1529
|
-
}
|
|
1530
|
-
return (_jsxs("div", { className: "bd-profile-roles", "data-profile-roles": true, children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.profileRolesHelp'), children: tr('botDefaults.profileRoles') }) }), _jsx("div", { className: "bd-profile-role-list", "data-profile-role-list": true, children: body })] }));
|
|
1531
|
-
}
|
|
1532
|
-
export function CardBehaviorSection(props) {
|
|
1533
|
-
const tr = useT();
|
|
1534
|
-
const { bot, putCardPref } = props;
|
|
1535
|
-
const [usageDisplay, setUsageDisplay] = useState(bot.usageDisplay ?? 'streaming');
|
|
1536
|
-
const [disableStreaming, setDisableStreaming] = useState(bot.disableStreamingCard === true);
|
|
1537
|
-
const [silentReactions, setSilentReactions] = useState(bot.silentTurnReactions === true);
|
|
1538
|
-
const [writableLink, setWritableLink] = useState(bot.writableTerminalLinkInCard === true);
|
|
1539
|
-
const [privateCard, setPrivateCard] = useState(bot.privateCard === true);
|
|
1540
|
-
const [status, setStatus] = useState(null);
|
|
1541
|
-
const [busy, setBusy] = useState(null);
|
|
1542
|
-
useEffect(() => {
|
|
1543
|
-
setUsageDisplay(bot.usageDisplay ?? 'streaming');
|
|
1544
|
-
setDisableStreaming(bot.disableStreamingCard === true);
|
|
1545
|
-
setSilentReactions(bot.silentTurnReactions === true);
|
|
1546
|
-
setWritableLink(bot.writableTerminalLinkInCard === true);
|
|
1547
|
-
setPrivateCard(bot.privateCard === true);
|
|
1548
|
-
}, [bot.disableStreamingCard, bot.privateCard, bot.usageDisplay, bot.silentTurnReactions, bot.writableTerminalLinkInCard]);
|
|
1549
|
-
async function savePatch(patch, key, rollback) {
|
|
1550
|
-
setBusy(key);
|
|
1551
|
-
setStatus(null);
|
|
1552
|
-
try {
|
|
1553
|
-
const res = await putCardPref(patch);
|
|
1554
|
-
if (res.ok) {
|
|
1555
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
1556
|
-
}
|
|
1557
|
-
else {
|
|
1558
|
-
rollback?.();
|
|
1559
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1560
|
-
}
|
|
1561
|
-
}
|
|
1562
|
-
catch (e) {
|
|
1563
|
-
rollback?.();
|
|
1564
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1565
|
-
}
|
|
1566
|
-
finally {
|
|
1567
|
-
setBusy(null);
|
|
1568
|
-
}
|
|
1569
|
-
}
|
|
1570
|
-
const usageDisplayOptions = [
|
|
1571
|
-
{ value: 'streaming', label: tr('botDefaults.usageDisplayStreaming') },
|
|
1572
|
-
{ value: 'footer', label: tr('botDefaults.usageDisplayFooter') },
|
|
1573
|
-
{ value: 'off', label: tr('botDefaults.usageDisplayOff') },
|
|
1574
|
-
];
|
|
1575
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionCard') }), bot.usageSupported === true && (_jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.usageDisplayHelp'), children: tr('botDefaults.usageDisplay') }), _jsx(DropdownField, { dataInput: "usageDisplay", ariaLabel: tr('botDefaults.usageDisplay'), value: usageDisplay, disabled: busy === 'usage', options: usageDisplayOptions, onChange: next => {
|
|
1576
|
-
const previous = usageDisplay;
|
|
1577
|
-
setUsageDisplay(next);
|
|
1578
|
-
void savePatch({ usageDisplay: next }, 'usage', () => setUsageDisplay(previous));
|
|
1579
|
-
} })] }) })), _jsxs("div", { className: "bd-toggle-grid bd-card-behavior-grid", children: [_jsx(ToggleRow, { checked: disableStreaming, disabled: busy === 'streaming', dataAction: "toggle-disable-streaming", title: tr('botDefaults.disableStreaming'), help: tr('botDefaults.disableStreamingHelp'), onChange: checked => {
|
|
1580
|
-
setDisableStreaming(checked);
|
|
1581
|
-
void savePatch({ disableStreamingCard: checked }, 'streaming');
|
|
1582
|
-
} }), _jsx(ToggleRow, { checked: silentReactions, disabled: !disableStreaming || busy === 'silent', dataAction: "toggle-silent-reactions", title: tr('botDefaults.silentTurnReactions'), help: tr('botDefaults.silentTurnReactionsHelp'), onChange: checked => {
|
|
1583
|
-
setSilentReactions(checked);
|
|
1584
|
-
void savePatch({ silentTurnReactions: checked }, 'silent');
|
|
1585
|
-
} }), _jsx(ToggleRow, { checked: writableLink, disabled: disableStreaming || busy === 'writable', dataAction: "toggle-writable-link", title: tr('botDefaults.writableLink'), help: tr('botDefaults.writableLinkHelp'), onChange: checked => {
|
|
1586
|
-
setWritableLink(checked);
|
|
1587
|
-
void savePatch({ writableTerminalLinkInCard: checked }, 'writable');
|
|
1588
|
-
} }), _jsx(ToggleRow, { checked: privateCard, disabled: busy === 'private', dataAction: "toggle-private-card", title: tr('botDefaults.privateCard'), help: tr('botDefaults.privateCardHelp'), onChange: checked => {
|
|
1589
|
-
setPrivateCard(checked);
|
|
1590
|
-
void savePatch({ privateCard: checked }, 'private');
|
|
1591
|
-
} })] }), _jsxs("div", { className: "actions", children: [_jsx("small", { "data-card-pref-moot": true, className: "hint-warn-inline", hidden: !disableStreaming, children: tr('botDefaults.writableLinkMoot') }), _jsx(StatusSpan, { status: status, attr: { 'data-card-pref-status': '' } })] })] }));
|
|
1592
|
-
}
|
|
1593
|
-
export function CodexAppDisplaySection(props) {
|
|
1594
|
-
const tr = useT();
|
|
1595
|
-
const [cleanInput, setCleanInput] = useState(props.bot.codexAppCleanInput === true);
|
|
1596
|
-
const [status, setStatus] = useState(null);
|
|
1597
|
-
const [busy, setBusy] = useState(false);
|
|
1598
|
-
useEffect(() => setCleanInput(props.bot.codexAppCleanInput === true), [props.bot.codexAppCleanInput]);
|
|
1599
|
-
async function save(checked) {
|
|
1600
|
-
const previous = cleanInput;
|
|
1601
|
-
setCleanInput(checked);
|
|
1602
|
-
setBusy(true);
|
|
1603
|
-
setStatus(null);
|
|
1604
|
-
try {
|
|
1605
|
-
const res = await props.putCardPref({ codexAppCleanInput: checked });
|
|
1606
|
-
if (res.ok) {
|
|
1607
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
1608
|
-
}
|
|
1609
|
-
else {
|
|
1610
|
-
setCleanInput(previous);
|
|
1611
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1612
|
-
}
|
|
1613
|
-
}
|
|
1614
|
-
catch (e) {
|
|
1615
|
-
setCleanInput(previous);
|
|
1616
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1617
|
-
}
|
|
1618
|
-
finally {
|
|
1619
|
-
setBusy(false);
|
|
1620
|
-
}
|
|
1621
|
-
}
|
|
1622
|
-
return (_jsxs("section", { className: "bd-section", "data-codex-app-display": true, children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionCodexAppDisplay') }), _jsx(ToggleRow, { checked: cleanInput, disabled: busy, dataAction: "toggle-codex-app-clean-input", title: tr('botDefaults.codexAppCleanInput'), help: tr('botDefaults.codexAppCleanInputHelp'), onChange: checked => void save(checked) }), _jsx("small", { className: "bd-section-note", children: tr('botDefaults.codexAppCleanInputCompat') }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: status, attr: { 'data-codex-app-clean-input-status': '' } }) })] }));
|
|
1623
|
-
}
|
|
1624
|
-
function CrossBotSection(props) {
|
|
1625
|
-
const tr = useT();
|
|
1626
|
-
const [sameDir, setSameDir] = useState(props.bot.botToBotSameDir !== false);
|
|
1627
|
-
const [status, setStatus] = useState(null);
|
|
1628
|
-
const [busy, setBusy] = useState(false);
|
|
1629
|
-
useEffect(() => setSameDir(props.bot.botToBotSameDir !== false), [props.bot.botToBotSameDir]);
|
|
1630
|
-
async function save(next) {
|
|
1631
|
-
setSameDir(next);
|
|
1632
|
-
setBusy(true);
|
|
1633
|
-
setStatus(null);
|
|
1634
|
-
try {
|
|
1635
|
-
const res = await props.putCardPref({ botToBotSameDir: next });
|
|
1636
|
-
setStatus(res.ok ? { text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true } : { text: `✗ ${responseErrorText(res)}` });
|
|
1637
|
-
}
|
|
1638
|
-
catch (e) {
|
|
1639
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1640
|
-
}
|
|
1641
|
-
finally {
|
|
1642
|
-
setBusy(false);
|
|
1643
|
-
}
|
|
1644
|
-
}
|
|
1645
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionCrossBot') }), _jsx(ToggleRow, { checked: sameDir, disabled: busy, dataAction: "toggle-cross-bot-samedir", title: tr('botDefaults.botToBotSameDir'), help: tr('botDefaults.botToBotSameDirHelp'), onChange: checked => void save(checked) }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: status, attr: { 'data-crossbot-status': '' } }) })] }));
|
|
1646
|
-
}
|
|
1647
|
-
function SummaryTriggerSection(props) {
|
|
1648
|
-
const tr = useT();
|
|
1649
|
-
const initial = summaryRange(props.bot);
|
|
1650
|
-
const [limit, setLimit] = useState(String(initial.limit));
|
|
1651
|
-
const [sinceHours, setSinceHours] = useState(String(initial.sinceHours));
|
|
1652
|
-
const [memoryOn, setMemoryOn] = useState(props.bot.summaryMemory === true);
|
|
1653
|
-
const [memoryPath, setMemoryPath] = useState(summaryMemoryPath(props.bot));
|
|
1654
|
-
const [status, setStatus] = useState(null);
|
|
1655
|
-
const [memoryStatus, setMemoryStatus] = useState(null);
|
|
1656
|
-
const [busy, setBusy] = useState(false);
|
|
1657
|
-
const [memoryBusy, setMemoryBusy] = useState(false);
|
|
1658
|
-
useEffect(() => {
|
|
1659
|
-
const next = summaryRange(props.bot);
|
|
1660
|
-
setLimit(String(next.limit));
|
|
1661
|
-
setSinceHours(String(next.sinceHours));
|
|
1662
|
-
setMemoryOn(props.bot.summaryMemory === true);
|
|
1663
|
-
setMemoryPath(summaryMemoryPath(props.bot));
|
|
1664
|
-
}, [props.bot.summaryRange?.limit, props.bot.summaryRange?.sinceHours, props.bot.summaryMemory, props.bot.summaryMemoryPath]);
|
|
1665
|
-
async function save() {
|
|
1666
|
-
setStatus(null);
|
|
1667
|
-
const nextLimit = nonNegativeInteger(limit, 50);
|
|
1668
|
-
const nextSinceHours = nonNegativeInteger(sinceHours, 24);
|
|
1669
|
-
if (nextLimit == null || nextSinceHours == null) {
|
|
1670
|
-
setStatus({ text: `✗ ${tr('botDefaults.summaryNumberInvalid')}` });
|
|
1671
|
-
return;
|
|
1672
|
-
}
|
|
1673
|
-
setBusy(true);
|
|
1674
|
-
try {
|
|
1675
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/summary-range`, {
|
|
1676
|
-
limit: nextLimit,
|
|
1677
|
-
sinceHours: nextSinceHours,
|
|
1678
|
-
});
|
|
1679
|
-
if (res.ok && res.body.ok) {
|
|
1680
|
-
const next = res.body.summaryRange ?? { limit: nextLimit, sinceHours: nextSinceHours };
|
|
1681
|
-
const normalized = summaryRange({ ...props.bot, summaryRange: next });
|
|
1682
|
-
setLimit(String(normalized.limit));
|
|
1683
|
-
setSinceHours(String(normalized.sinceHours));
|
|
1684
|
-
props.patchBot(props.bot.larkAppId, { summaryRange: next });
|
|
1685
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
1686
|
-
}
|
|
1687
|
-
else {
|
|
1688
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1689
|
-
}
|
|
1690
|
-
}
|
|
1691
|
-
catch (e) {
|
|
1692
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1693
|
-
}
|
|
1694
|
-
finally {
|
|
1695
|
-
setBusy(false);
|
|
1696
|
-
}
|
|
1697
|
-
}
|
|
1698
|
-
async function saveMemory(next, nextPath = memoryPath) {
|
|
1699
|
-
const prev = memoryOn;
|
|
1700
|
-
const prevPath = memoryPath;
|
|
1701
|
-
const normalizedPath = normalizeSummaryMemoryPath(nextPath);
|
|
1702
|
-
setMemoryOn(next);
|
|
1703
|
-
setMemoryPath(normalizedPath);
|
|
1704
|
-
setMemoryStatus(null);
|
|
1705
|
-
setMemoryBusy(true);
|
|
1706
|
-
try {
|
|
1707
|
-
const res = await props.putCardPref({ summaryMemory: next, summaryMemoryPath: normalizedPath });
|
|
1708
|
-
if (res.ok && res.body.ok) {
|
|
1709
|
-
const saved = res.body.summaryMemory === true;
|
|
1710
|
-
const savedPath = summaryMemoryPath({ ...props.bot, summaryMemoryPath: res.body.summaryMemoryPath });
|
|
1711
|
-
setMemoryOn(saved);
|
|
1712
|
-
setMemoryPath(savedPath);
|
|
1713
|
-
props.patchBot(props.bot.larkAppId, { summaryMemory: saved, summaryMemoryPath: savedPath });
|
|
1714
|
-
setMemoryStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
1715
|
-
}
|
|
1716
|
-
else {
|
|
1717
|
-
setMemoryOn(prev);
|
|
1718
|
-
setMemoryPath(prevPath);
|
|
1719
|
-
setMemoryStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1720
|
-
}
|
|
1721
|
-
}
|
|
1722
|
-
catch (e) {
|
|
1723
|
-
setMemoryOn(prev);
|
|
1724
|
-
setMemoryPath(prevPath);
|
|
1725
|
-
setMemoryStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1726
|
-
}
|
|
1727
|
-
finally {
|
|
1728
|
-
setMemoryBusy(false);
|
|
1729
|
-
}
|
|
1730
|
-
}
|
|
1731
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: _jsx(FieldTitle, { help: tr('botDefaults.summaryLimitHelp'), children: tr('botDefaults.sectionSummaryTrigger') }) }), _jsxs("div", { className: "bd-row bd-summary-limits", children: [_jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.summaryLimit') }), _jsx("input", { type: "number", min: 0, step: 1, "data-input": "summaryLimit", value: limit, disabled: busy, onChange: event => setLimit(event.currentTarget.value) })] }), _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.summarySinceHours') }), _jsx("input", { type: "number", min: 0, step: 1, "data-input": "summarySinceHours", value: sinceHours, disabled: busy, onChange: event => setSinceHours(event.currentTarget.value) })] })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-summary-trigger", disabled: busy, onClick: () => void save(), children: tr('botDefaults.summarySave') }), _jsx(StatusSpan, { status: status, attr: { 'data-summary-trigger-status': '' } })] }), _jsx(ToggleRow, { checked: memoryOn, disabled: memoryBusy, title: tr('botDefaults.summaryMemory'), help: tr('botDefaults.summaryMemoryHelp'), onChange: checked => void saveMemory(checked) }), _jsx("div", { className: "bd-row bd-summary-limits", children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.summaryMemoryPath') }), _jsx("input", { type: "text", "data-input": "summaryMemoryPath", value: memoryPath, disabled: memoryBusy, onChange: event => setMemoryPath(event.currentTarget.value) })] }) }), _jsx("div", { className: "actions", children: _jsx("button", { type: "button", className: "primary", "data-action": "save-summary-memory-path", disabled: memoryBusy, onClick: () => void saveMemory(memoryOn, memoryPath), children: tr('botDefaults.summaryMemoryPathSave') }) }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: memoryStatus, attr: { 'data-summary-memory-status': '' } }) })] }));
|
|
1732
|
-
}
|
|
1733
|
-
function normalizeSummaryMemoryPath(raw) {
|
|
1734
|
-
const value = raw.trim();
|
|
1735
|
-
return value || 'summary.md';
|
|
1736
|
-
}
|
|
1737
|
-
function summaryMemoryPath(bot) {
|
|
1738
|
-
return normalizeSummaryMemoryPath(typeof bot.summaryMemoryPath === 'string' ? bot.summaryMemoryPath : '');
|
|
1739
|
-
}
|
|
1740
|
-
function summaryRange(bot) {
|
|
1741
|
-
const range = bot.summaryRange ?? { limit: 50, sinceHours: 24 };
|
|
1742
|
-
return {
|
|
1743
|
-
limit: Number.isInteger(range.limit) && Number(range.limit) >= 0 ? Number(range.limit) : 50,
|
|
1744
|
-
sinceHours: Number.isInteger(range.sinceHours) && Number(range.sinceHours) >= 0 ? Number(range.sinceHours) : 24,
|
|
1745
|
-
};
|
|
1746
|
-
}
|
|
1747
|
-
function SessionModeSection(props) {
|
|
1748
|
-
const tr = useT();
|
|
1749
|
-
const [p2p, setP2p] = useState(props.bot.p2pMode === 'thread' ? 'thread' : 'chat');
|
|
1750
|
-
const [regular, setRegular] = useState(regularGroupMode(props.bot));
|
|
1751
|
-
const [mention, setMention] = useState(mentionMode(props.bot));
|
|
1752
|
-
const [docMode, setDocMode] = useState(props.bot.docSubscribeDefaultMode === 'all' ? 'all' : 'mention-only');
|
|
1753
|
-
const [busy, setBusy] = useState(null);
|
|
1754
|
-
const [p2pStatus, setP2pStatus] = useState(null);
|
|
1755
|
-
const [regularStatus, setRegularStatus] = useState(null);
|
|
1756
|
-
const [mentionStatus, setMentionStatus] = useState(null);
|
|
1757
|
-
const [docStatus, setDocStatus] = useState(null);
|
|
1758
|
-
useEffect(() => {
|
|
1759
|
-
setP2p(props.bot.p2pMode === 'thread' ? 'thread' : 'chat');
|
|
1760
|
-
setRegular(regularGroupMode(props.bot));
|
|
1761
|
-
setMention(mentionMode(props.bot));
|
|
1762
|
-
setDocMode(props.bot.docSubscribeDefaultMode === 'all' ? 'all' : 'mention-only');
|
|
1763
|
-
}, [
|
|
1764
|
-
props.bot.docSubscribeDefaultMode,
|
|
1765
|
-
props.bot.p2pMode,
|
|
1766
|
-
props.bot.regularGroupMentionMode,
|
|
1767
|
-
props.bot.regularGroupReplyMode,
|
|
1768
|
-
]);
|
|
1769
|
-
async function saveP2p(next) {
|
|
1770
|
-
const mode = next === 'chat' ? 'chat' : 'thread';
|
|
1771
|
-
setP2p(mode);
|
|
1772
|
-
setBusy('p2p');
|
|
1773
|
-
setP2pStatus(null);
|
|
1774
|
-
try {
|
|
1775
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/p2p-mode`, { p2pMode: mode });
|
|
1776
|
-
if (res.ok && res.body.ok) {
|
|
1777
|
-
props.patchBot(props.bot.larkAppId, { p2pMode: res.body.p2pMode === 'thread' ? 'thread' : 'chat' });
|
|
1778
|
-
setP2pStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
1779
|
-
}
|
|
1780
|
-
else {
|
|
1781
|
-
setP2pStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
1782
|
-
}
|
|
1783
|
-
}
|
|
1784
|
-
catch (e) {
|
|
1785
|
-
setP2pStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1786
|
-
}
|
|
1787
|
-
finally {
|
|
1788
|
-
setBusy(null);
|
|
1789
|
-
}
|
|
1790
|
-
}
|
|
1791
|
-
async function saveCardMode(key, patch, setStatus) {
|
|
1792
|
-
setBusy(key);
|
|
1793
|
-
setStatus(null);
|
|
1794
|
-
try {
|
|
1795
|
-
const res = await props.putCardPref(patch);
|
|
1796
|
-
setStatus(res.ok ? { text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true } : { text: `✗ ${responseErrorText(res)}` });
|
|
1797
|
-
}
|
|
1798
|
-
catch (e) {
|
|
1799
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
1800
|
-
}
|
|
1801
|
-
finally {
|
|
1802
|
-
setBusy(null);
|
|
1803
|
-
}
|
|
1804
|
-
}
|
|
1805
|
-
const p2pOptions = [
|
|
1806
|
-
{ value: 'thread', label: tr('botDefaults.p2pThread') },
|
|
1807
|
-
{ value: 'chat', label: tr('botDefaults.p2pChat') },
|
|
1808
|
-
];
|
|
1809
|
-
const regularOptions = [
|
|
1810
|
-
{ value: 'chat', label: tr('botDefaults.regularGroupModeChat') },
|
|
1811
|
-
{ value: 'chat-topic', label: tr('botDefaults.regularGroupModeChatTopic') },
|
|
1812
|
-
{ value: 'new-topic', label: tr('botDefaults.regularGroupModeNewTopic') },
|
|
1813
|
-
{ value: 'shared', label: tr('botDefaults.regularGroupModeShared') },
|
|
1814
|
-
];
|
|
1815
|
-
const mentionOptions = [
|
|
1816
|
-
{ value: 'always', label: tr('botDefaults.mentionModeAlways') },
|
|
1817
|
-
{ value: 'topic', label: tr('botDefaults.mentionModeTopic') },
|
|
1818
|
-
{ value: 'never', label: tr('botDefaults.mentionModeNever') },
|
|
1819
|
-
{ value: 'ambient', label: tr('botDefaults.mentionModeAmbient') },
|
|
1820
|
-
];
|
|
1821
|
-
const docOptions = [
|
|
1822
|
-
{ value: 'mention-only', label: tr('botDefaults.docSubscribeModeMention') },
|
|
1823
|
-
{ value: 'all', label: tr('botDefaults.docSubscribeModeAll') },
|
|
1824
|
-
];
|
|
1825
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionSessionMode') }), _jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.p2pHelp'), children: tr('botDefaults.p2pMode') }), _jsx(DropdownField, { dataInput: "p2pMode", ariaLabel: tr('botDefaults.p2pMode'), value: p2p, disabled: busy === 'p2p', options: p2pOptions, onChange: next => void saveP2p(next) })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: p2pStatus, attr: { 'data-p2p-status': '' } }) })] }), _jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.regularGroupModeHelp'), children: tr('botDefaults.regularGroupMode') }), _jsx(DropdownField, { dataInput: "regularGroupMode", ariaLabel: tr('botDefaults.regularGroupMode'), value: regular, disabled: busy === 'regular', options: regularOptions, onChange: next => {
|
|
1826
|
-
setRegular(next);
|
|
1827
|
-
void saveCardMode('regular', { regularGroupReplyMode: next }, setRegularStatus);
|
|
1828
|
-
} })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: regularStatus, attr: { 'data-regular-group-status': '' } }) })] }), _jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.mentionModeHelp'), children: tr('botDefaults.mentionMode') }), _jsx(DropdownField, { dataInput: "regularGroupMentionMode", ariaLabel: tr('botDefaults.mentionMode'), value: mention, disabled: busy === 'mention', options: mentionOptions, onChange: next => {
|
|
1829
|
-
setMention(next);
|
|
1830
|
-
void saveCardMode('mention', { regularGroupMentionMode: next }, setMentionStatus);
|
|
1831
|
-
} })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: mentionStatus, attr: { 'data-mention-mode-status': '' } }) })] }), _jsxs("div", { className: "bd-row", children: [_jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.docSubscribeModeHelp'), children: tr('botDefaults.docSubscribeMode') }), _jsx(DropdownField, { dataInput: "docSubscribeDefaultMode", ariaLabel: tr('botDefaults.docSubscribeMode'), value: docMode, disabled: busy === 'doc', options: docOptions, onChange: next => {
|
|
1832
|
-
setDocMode(next);
|
|
1833
|
-
void saveCardMode('doc', { docSubscribeDefaultMode: next }, setDocStatus);
|
|
1834
|
-
} })] }), _jsx("div", { className: "actions", children: _jsx(StatusSpan, { status: docStatus, attr: { 'data-doc-subscribe-mode-status': '' } }) })] })] }));
|
|
1835
|
-
}
|
|
1836
|
-
function SubstituteModeSection(props) {
|
|
1837
|
-
const tr = useT();
|
|
1838
|
-
const initial = props.bot.substituteMode ?? null;
|
|
1839
|
-
const [enabled, setEnabled] = useState(initial?.enabled === true);
|
|
1840
|
-
function substituteReasonText(reason) {
|
|
1841
|
-
switch (reason) {
|
|
1842
|
-
case 'cross_app_open_id': return tr('botDefaults.substituteReasonCrossAppOpenId');
|
|
1843
|
-
case 'not_visible': return tr('botDefaults.substituteReasonNotVisible');
|
|
1844
|
-
case 'resolve_failed': return tr('botDefaults.substituteReasonResolveFailed');
|
|
1845
|
-
case 'unresolvable': return tr('botDefaults.substituteReasonUnresolvable');
|
|
1846
|
-
default: return tr('botDefaults.substituteUnresolved');
|
|
1847
|
-
}
|
|
1848
|
-
}
|
|
1849
|
-
const [disclosure, setDisclosure] = useState(initial?.disclosure === 'none' ? 'none' : 'prefix');
|
|
1850
|
-
const [replyMode, setReplyMode] = useState(initial?.replyMode === 'quote' ? 'quote' : 'thread');
|
|
1851
|
-
const [controlCard, setControlCard] = useState(initial?.disableControlCard !== true);
|
|
1852
|
-
const [chatsText, setChatsText] = useState(() => formatSubstituteChats(initial?.chats));
|
|
1853
|
-
const [excludedChatsText, setExcludedChatsText] = useState(() => formatSubstituteChats(initial?.excludedChats));
|
|
1854
|
-
// 话题群相关开关缺省开:只有显式 false 才是关(与 normalize 语义一致)。
|
|
1855
|
-
const [topicGroups, setTopicGroups] = useState(initial?.topicGroups !== false);
|
|
1856
|
-
const [topicActiveSessionTrigger, setTopicActiveSessionTrigger] = useState(initial?.topicActiveSessionTrigger !== false);
|
|
1857
|
-
const [status, setStatus] = useState(null);
|
|
1858
|
-
const [busy, setBusy] = useState(false);
|
|
1859
|
-
const targetSequence = useRef(0);
|
|
1860
|
-
const skipModeSync = useRef(false);
|
|
1861
|
-
function makeTargetDraft(target) {
|
|
1862
|
-
const idField = substituteTargetIdField(target);
|
|
1863
|
-
return {
|
|
1864
|
-
key: ++targetSequence.current,
|
|
1865
|
-
idField,
|
|
1866
|
-
idValue: target?.[idField] ?? '',
|
|
1867
|
-
name: target?.name ?? '',
|
|
1868
|
-
persisted: target ? { ...target } : {},
|
|
1869
|
-
originalIdField: target ? idField : undefined,
|
|
1870
|
-
resolution: target?.name || target?.avatarUrl
|
|
1871
|
-
? { ok: true, name: target.name, avatarUrl: target.avatarUrl }
|
|
1872
|
-
: undefined,
|
|
1873
|
-
};
|
|
1874
|
-
}
|
|
1875
|
-
// Monotonic per-row resolve epoch: two quick blurs create two in-flight
|
|
1876
|
-
// requests; only the latest one may apply, or a slow stale response would
|
|
1877
|
-
// overwrite the fresh result (last-completion-wins race).
|
|
1878
|
-
const resolveEpochs = useRef(new Map());
|
|
1879
|
-
async function resolveTargetRow(key) {
|
|
1880
|
-
const epoch = (resolveEpochs.current.get(key) ?? 0) + 1;
|
|
1881
|
-
resolveEpochs.current.set(key, epoch);
|
|
1882
|
-
const isCurrent = () => resolveEpochs.current.get(key) === epoch;
|
|
1883
|
-
setTargetRows(rows => rows.map(row => row.key === key ? { ...row, resolving: true } : row));
|
|
1884
|
-
try {
|
|
1885
|
-
const row = targetRows.find(r => r.key === key);
|
|
1886
|
-
if (!row)
|
|
1887
|
-
return;
|
|
1888
|
-
const idValue = row.idValue.trim();
|
|
1889
|
-
if (!idValue) {
|
|
1890
|
-
setTargetRows(rows => rows.map(r => r.key === key ? { ...r, resolving: false, resolution: undefined } : r));
|
|
1891
|
-
return;
|
|
1892
|
-
}
|
|
1893
|
-
const target = { [row.idField]: idValue };
|
|
1894
|
-
if (row.name.trim())
|
|
1895
|
-
target.name = row.name.trim();
|
|
1896
|
-
const res = await resolveSubstituteTarget(props.bot.larkAppId, target);
|
|
1897
|
-
if (!isCurrent())
|
|
1898
|
-
return;
|
|
1899
|
-
setTargetRows(rows => rows.map(r => {
|
|
1900
|
-
if (r.key !== key)
|
|
1901
|
-
return r;
|
|
1902
|
-
if (!res.ok)
|
|
1903
|
-
return { ...r, resolving: false, resolution: { ok: false } };
|
|
1904
|
-
const entry = res.resolution;
|
|
1905
|
-
if (entry?.ok === true) {
|
|
1906
|
-
// userId passthrough: nothing was verified (no openId / profile) —
|
|
1907
|
-
// keep the editable name input instead of showing a fake chip.
|
|
1908
|
-
if (!entry.openId)
|
|
1909
|
-
return { ...r, resolving: false, resolution: undefined };
|
|
1910
|
-
const persisted = { ...r.persisted };
|
|
1911
|
-
persisted.openId = entry.openId;
|
|
1912
|
-
if (entry.name)
|
|
1913
|
-
persisted.name = entry.name;
|
|
1914
|
-
if (entry.avatarUrl)
|
|
1915
|
-
persisted.avatarUrl = entry.avatarUrl;
|
|
1916
|
-
return {
|
|
1917
|
-
...r,
|
|
1918
|
-
name: entry.name ?? r.name,
|
|
1919
|
-
persisted,
|
|
1920
|
-
resolving: false,
|
|
1921
|
-
resolution: { ok: true, name: entry.name, avatarUrl: entry.avatarUrl },
|
|
1922
|
-
};
|
|
1923
|
-
}
|
|
1924
|
-
return {
|
|
1925
|
-
...r,
|
|
1926
|
-
resolving: false,
|
|
1927
|
-
resolution: { ok: false, reason: entry?.reason },
|
|
1928
|
-
};
|
|
1929
|
-
}));
|
|
1930
|
-
}
|
|
1931
|
-
catch {
|
|
1932
|
-
if (!isCurrent())
|
|
1933
|
-
return;
|
|
1934
|
-
setTargetRows(rows => rows.map(r => r.key === key ? { ...r, resolving: false, resolution: { ok: false } } : r));
|
|
1935
|
-
}
|
|
1936
|
-
}
|
|
1937
|
-
const [targetRows, setTargetRows] = useState(() => {
|
|
1938
|
-
const targets = initial?.targets ?? [];
|
|
1939
|
-
return targets.length ? targets.map(target => makeTargetDraft(target)) : [makeTargetDraft()];
|
|
1940
|
-
});
|
|
1941
|
-
useEffect(() => {
|
|
1942
|
-
if (skipModeSync.current) {
|
|
1943
|
-
skipModeSync.current = false;
|
|
1944
|
-
return;
|
|
1945
|
-
}
|
|
1946
|
-
const next = props.bot.substituteMode ?? null;
|
|
1947
|
-
setEnabled(next?.enabled === true);
|
|
1948
|
-
setDisclosure(next?.disclosure === 'none' ? 'none' : 'prefix');
|
|
1949
|
-
setReplyMode(next?.replyMode === 'quote' ? 'quote' : 'thread');
|
|
1950
|
-
setControlCard(next?.disableControlCard !== true);
|
|
1951
|
-
setChatsText(formatSubstituteChats(next?.chats));
|
|
1952
|
-
setExcludedChatsText(formatSubstituteChats(next?.excludedChats));
|
|
1953
|
-
setTopicGroups(next?.topicGroups !== false);
|
|
1954
|
-
setTopicActiveSessionTrigger(next?.topicActiveSessionTrigger !== false);
|
|
1955
|
-
const targets = next?.targets ?? [];
|
|
1956
|
-
setTargetRows(targets.length ? targets.map(target => makeTargetDraft(target)) : [makeTargetDraft()]);
|
|
1957
|
-
}, [props.bot.larkAppId, props.bot.substituteMode]);
|
|
1958
|
-
async function save(body) {
|
|
1959
|
-
setBusy(true);
|
|
1960
|
-
setStatus(null);
|
|
1961
|
-
try {
|
|
1962
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/substitute-mode`, body);
|
|
1963
|
-
if (res.ok && res.body.ok) {
|
|
1964
|
-
const next = res.body.substituteMode && typeof res.body.substituteMode === 'object'
|
|
1965
|
-
? res.body.substituteMode
|
|
1966
|
-
: null;
|
|
1967
|
-
const resolution = Array.isArray(res.body?.resolution)
|
|
1968
|
-
? res.body.resolution
|
|
1969
|
-
: [];
|
|
1970
|
-
const unresolved = resolution
|
|
1971
|
-
.filter(entry => entry?.ok === false)
|
|
1972
|
-
.map(entry => String(entry.input ?? '').trim())
|
|
1973
|
-
.filter(Boolean);
|
|
1974
|
-
setEnabled(next?.enabled === true);
|
|
1975
|
-
setDisclosure(next?.disclosure === 'none' ? 'none' : 'prefix');
|
|
1976
|
-
setReplyMode(next?.replyMode === 'quote' ? 'quote' : 'thread');
|
|
1977
|
-
setControlCard(next?.disableControlCard !== true);
|
|
1978
|
-
setChatsText(formatSubstituteChats(next?.chats));
|
|
1979
|
-
setExcludedChatsText(formatSubstituteChats(next?.excludedChats));
|
|
1980
|
-
setTopicGroups(next?.topicGroups !== false);
|
|
1981
|
-
setTopicActiveSessionTrigger(next?.topicActiveSessionTrigger !== false);
|
|
1982
|
-
if (resolution.length) {
|
|
1983
|
-
skipModeSync.current = true;
|
|
1984
|
-
setTargetRows(rows => {
|
|
1985
|
-
const pending = [...resolution];
|
|
1986
|
-
return rows.map(row => {
|
|
1987
|
-
const input = row.idValue.trim();
|
|
1988
|
-
const index = pending.findIndex(entry => String(entry.input ?? '').trim() === input);
|
|
1989
|
-
if (index < 0)
|
|
1990
|
-
return row;
|
|
1991
|
-
const entry = pending.splice(index, 1)[0];
|
|
1992
|
-
if (entry?.ok === true) {
|
|
1993
|
-
const persisted = { ...row.persisted };
|
|
1994
|
-
if (entry.openId)
|
|
1995
|
-
persisted.openId = entry.openId;
|
|
1996
|
-
if (row.idField === 'email')
|
|
1997
|
-
persisted.email = input;
|
|
1998
|
-
if (entry.name)
|
|
1999
|
-
persisted.name = entry.name;
|
|
2000
|
-
if (entry.avatarUrl)
|
|
2001
|
-
persisted.avatarUrl = entry.avatarUrl;
|
|
2002
|
-
return {
|
|
2003
|
-
...row,
|
|
2004
|
-
name: entry.name ?? row.name,
|
|
2005
|
-
persisted,
|
|
2006
|
-
resolution: { ok: true, name: entry.name, avatarUrl: entry.avatarUrl },
|
|
2007
|
-
};
|
|
2008
|
-
}
|
|
2009
|
-
return {
|
|
2010
|
-
...row,
|
|
2011
|
-
resolution: { ok: false, reason: entry?.reason },
|
|
2012
|
-
};
|
|
2013
|
-
});
|
|
2014
|
-
});
|
|
2015
|
-
}
|
|
2016
|
-
else {
|
|
2017
|
-
const targets = next?.targets ?? [];
|
|
2018
|
-
setTargetRows(targets.length ? targets.map(target => makeTargetDraft(target)) : [makeTargetDraft()]);
|
|
2019
|
-
}
|
|
2020
|
-
props.patchBot(props.bot.larkAppId, { substituteMode: next });
|
|
2021
|
-
setStatus(unresolved.length
|
|
2022
|
-
? { text: `✗ ${tr('botDefaults.substituteTargetsInvalid')}: ${unresolved.join(', ')}` }
|
|
2023
|
-
: { text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2024
|
-
}
|
|
2025
|
-
else {
|
|
2026
|
-
const unresolved = Array.isArray(res.body?.resolution)
|
|
2027
|
-
? res.body.resolution
|
|
2028
|
-
.filter((entry) => entry?.ok === false)
|
|
2029
|
-
.map((entry) => String(entry.input ?? '').trim())
|
|
2030
|
-
.filter(Boolean)
|
|
2031
|
-
: [];
|
|
2032
|
-
setStatus({ text: unresolved.length
|
|
2033
|
-
? `✗ ${tr('botDefaults.substituteTargetsInvalid')}: ${unresolved.join(', ')}`
|
|
2034
|
-
: `✗ ${responseErrorText(res)}` });
|
|
2035
|
-
}
|
|
2036
|
-
}
|
|
2037
|
-
catch (error) {
|
|
2038
|
-
setStatus({ text: `✗ ${caughtErrorText(error)}` });
|
|
2039
|
-
}
|
|
2040
|
-
finally {
|
|
2041
|
-
setBusy(false);
|
|
2042
|
-
}
|
|
2043
|
-
}
|
|
2044
|
-
function saveCurrent() {
|
|
2045
|
-
const targets = [];
|
|
2046
|
-
let invalid = false;
|
|
2047
|
-
for (const row of targetRows) {
|
|
2048
|
-
const target = buildSubstituteTarget(row);
|
|
2049
|
-
if (!target) {
|
|
2050
|
-
invalid ||= Boolean(row.name.trim());
|
|
2051
|
-
continue;
|
|
2052
|
-
}
|
|
2053
|
-
targets.push(target);
|
|
2054
|
-
}
|
|
2055
|
-
if (invalid || (enabled && targets.length === 0)) {
|
|
2056
|
-
setStatus({ text: `✗ ${tr('botDefaults.substituteTargetsInvalid')}` });
|
|
2057
|
-
return;
|
|
2058
|
-
}
|
|
2059
|
-
void save({ enabled, targets, disclosure, chats: parseSubstituteChats(chatsText), excludedChats: parseSubstituteChats(excludedChatsText), replyMode, disableControlCard: !controlCard, topicGroups, topicActiveSessionTrigger });
|
|
2060
|
-
}
|
|
2061
|
-
const disclosureOptions = [
|
|
2062
|
-
{ value: 'prefix', label: tr('botDefaults.substituteDisclosurePrefix') },
|
|
2063
|
-
{ value: 'none', label: tr('botDefaults.substituteDisclosureNone') },
|
|
2064
|
-
];
|
|
2065
|
-
const replyModeOptions = [
|
|
2066
|
-
{ value: 'thread', label: tr('botDefaults.substituteReplyModeThread') },
|
|
2067
|
-
{ value: 'quote', label: tr('botDefaults.substituteReplyModeQuote') },
|
|
2068
|
-
];
|
|
2069
|
-
return (_jsxs("section", { className: "bd-section bd-substitute-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionSubstitute') }), _jsx(ToggleRow, { checked: enabled, disabled: busy, dataAction: "toggle-substitute-mode", title: tr('botDefaults.substituteEnabled'), help: tr('botDefaults.substituteHelp'), onChange: setEnabled }), _jsx(ToggleRow, { checked: topicGroups, disabled: busy, dataAction: "toggle-substitute-topic-groups", title: tr('botDefaults.substituteTopicGroups'), help: tr('botDefaults.substituteTopicGroupsHelp'), onChange: setTopicGroups }), _jsx(ToggleRow, { checked: topicActiveSessionTrigger, disabled: busy || !topicGroups, dataAction: "toggle-substitute-topic-active", title: tr('botDefaults.substituteTopicActive'), help: tr('botDefaults.substituteTopicActiveHelp'), onChange: setTopicActiveSessionTrigger }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { children: tr('botDefaults.substituteDisclosure') }), _jsx(DropdownField, { dataInput: "substituteDisclosure", ariaLabel: tr('botDefaults.substituteDisclosure'), value: disclosure, disabled: busy, options: disclosureOptions, onChange: value => setDisclosure(value) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx(FieldTitle, { help: tr('botDefaults.substituteReplyModeHelp'), children: tr('botDefaults.substituteReplyMode') }), _jsx(DropdownField, { dataInput: "substituteReplyMode", ariaLabel: tr('botDefaults.substituteReplyMode'), value: replyMode, disabled: busy, options: replyModeOptions, onChange: value => setReplyMode(value) })] }) }), _jsx(ToggleRow, { checked: controlCard, disabled: busy, dataAction: "toggle-substitute-control-card", title: tr('botDefaults.substituteControlCard'), help: tr('botDefaults.substituteControlCardHelp'), onChange: setControlCard }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.substituteChatsHelp'), children: tr('botDefaults.substituteChats') }), _jsx("textarea", { "data-input": "substituteChats", rows: 3, placeholder: tr('botDefaults.substituteChatsPlaceholder'), value: chatsText, disabled: busy, onChange: event => setChatsText(event.currentTarget.value) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.substituteExcludedChatsHelp'), children: tr('botDefaults.substituteExcludedChats') }), _jsx("textarea", { "data-input": "substituteExcludedChats", rows: 3, placeholder: tr('botDefaults.substituteExcludedChatsPlaceholder'), value: excludedChatsText, disabled: busy, onChange: event => setExcludedChatsText(event.currentTarget.value) })] }) }), _jsxs("div", { className: "bd-row bd-substitute-targets", children: [_jsx(FieldTitle, { help: tr('botDefaults.substituteTargetsHelp'), children: tr('botDefaults.substituteTargets') }), _jsxs("div", { className: "bd-substitute-target-list", "data-input": "substituteTargets", children: [targetRows.map((target, index) => (_jsxs("div", { className: "bd-substitute-target-row", children: [_jsx(DropdownField, { dataInput: `substituteTargetType-${target.key}`, className: "bd-substitute-target-type", ariaLabel: `${tr('botDefaults.substituteTargetType')} ${index + 1}`, value: target.idField, disabled: busy, options: substituteTargetIdFields.map(value => ({
|
|
2070
|
-
value,
|
|
2071
|
-
label: tr(`botDefaults.substituteTarget${value[0].toUpperCase()}${value.slice(1)}`),
|
|
2072
|
-
})), onChange: idField => {
|
|
2073
|
-
setTargetRows(rows => rows.map(row => row.key === target.key
|
|
2074
|
-
? { ...row, idField, idValue: row.persisted[idField] ?? '', resolution: undefined }
|
|
2075
|
-
: row));
|
|
2076
|
-
} }), _jsx("input", { className: "bd-substitute-target-id", type: "text", "data-input": `substituteTargetId-${target.key}`, "aria-label": `${tr('botDefaults.substituteTargetType')} ${index + 1}`, placeholder: tr('botDefaults.substituteTargetIdPlaceholder'), value: target.idValue, disabled: busy, onChange: event => {
|
|
2077
|
-
const idValue = event.currentTarget.value;
|
|
2078
|
-
setTargetRows(rows => rows.map(row => row.key === target.key ? { ...row, idValue, resolution: undefined } : row));
|
|
2079
|
-
}, onBlur: () => {
|
|
2080
|
-
if (target.idValue.trim())
|
|
2081
|
-
void resolveTargetRow(target.key);
|
|
2082
|
-
} }), _jsx("div", { className: "bd-substitute-target-name", children: target.resolving ? (_jsx("span", { className: "bd-substitute-target-resolving", children: tr('botDefaults.substituteResolving') })) : target.resolution?.ok === true && (target.name || target.resolution.avatarUrl) ? (_jsxs(_Fragment, { children: [target.resolution.avatarUrl ? (_jsx(Html, { html: botAvatarHtml({ name: target.resolution.name, avatarUrl: target.resolution.avatarUrl, size: 'sm' }) })) : null, _jsx("span", { className: "bd-substitute-target-name-chip", "data-chip": `substituteTargetName-${target.key}`, "aria-label": `${tr('botDefaults.substituteTargetName')} ${index + 1}`, children: target.name })] })) : target.resolution?.ok === false ? (_jsx("span", { className: "bd-substitute-target-resolution-badge", children: substituteReasonText(target.resolution.reason) })) : (_jsx("input", { type: "text", "data-input": `substituteTargetName-${target.key}`, "aria-label": `${tr('botDefaults.substituteTargetName')} ${index + 1}`, placeholder: tr('botDefaults.substituteTargetNamePlaceholder'), value: target.name, disabled: busy, onChange: event => {
|
|
2083
|
-
const name = event.currentTarget.value;
|
|
2084
|
-
setTargetRows(rows => rows.map(row => row.key === target.key ? { ...row, name } : row));
|
|
2085
|
-
} })) }), _jsx("button", { type: "button", className: "bd-substitute-target-remove", "data-action": "remove-substitute-target", title: tr('botDefaults.substituteTargetRemove'), "aria-label": tr('botDefaults.substituteTargetRemove'), disabled: busy, onClick: () => {
|
|
2086
|
-
setTargetRows(rows => {
|
|
2087
|
-
const remaining = rows.filter(row => row.key !== target.key);
|
|
2088
|
-
return remaining.length ? remaining : [makeTargetDraft()];
|
|
2089
|
-
});
|
|
2090
|
-
}, children: _jsx("span", { "aria-hidden": "true", children: "\u00D7" }) })] }, target.key))), _jsx("button", { type: "button", className: "bd-substitute-target-add", "data-action": "add-substitute-target", title: tr('botDefaults.substituteTargetAdd'), "aria-label": tr('botDefaults.substituteTargetAdd'), disabled: busy, onClick: () => setTargetRows(rows => [...rows, makeTargetDraft()]), children: _jsx("span", { "aria-hidden": "true", children: "+" }) })] })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-substitute-mode", disabled: busy, onClick: saveCurrent, children: tr('botDefaults.substituteSave') }), _jsx("button", { type: "button", "data-action": "off-substitute-mode", disabled: busy, onClick: () => void save({ enabled: false, targets: [] }), children: tr('botDefaults.substituteOff') }), _jsx(StatusSpan, { status: status, attr: { 'data-substitute-status': '' } })] })] }));
|
|
2091
|
-
}
|
|
2092
|
-
function regularGroupMode(bot) {
|
|
2093
|
-
return bot.regularGroupReplyMode === 'chat' || bot.regularGroupReplyMode === 'new-topic' || bot.regularGroupReplyMode === 'shared'
|
|
2094
|
-
? bot.regularGroupReplyMode
|
|
2095
|
-
: 'chat-topic';
|
|
2096
|
-
}
|
|
2097
|
-
function mentionMode(bot) {
|
|
2098
|
-
return bot.regularGroupMentionMode === 'topic' || bot.regularGroupMentionMode === 'never' || bot.regularGroupMentionMode === 'ambient'
|
|
2099
|
-
? bot.regularGroupMentionMode
|
|
2100
|
-
: 'always';
|
|
2101
|
-
}
|
|
2102
|
-
function SessionCapSection(props) {
|
|
2103
|
-
const tr = useT();
|
|
2104
|
-
const initial = typeof props.bot.maxLiveWorkers === 'number' ? props.bot.maxLiveWorkers : null;
|
|
2105
|
-
const logical = Number.isFinite(props.bot.logicalSessionCount) ? Number(props.bot.logicalSessionCount) : 0;
|
|
2106
|
-
const resident = Number.isFinite(props.bot.residentSessionCount) ? Number(props.bot.residentSessionCount) : 0;
|
|
2107
|
-
const dormant = Number.isFinite(props.bot.dormantSessionCount) ? Number(props.bot.dormantSessionCount) : 0;
|
|
2108
|
-
const [cap, setCap] = useState(initial);
|
|
2109
|
-
const effectiveCap = cap ?? 30;
|
|
2110
|
-
const [input, setInput] = useState(initial == null ? '' : String(initial));
|
|
2111
|
-
const [status, setStatus] = useState(null);
|
|
2112
|
-
const [busy, setBusy] = useState(false);
|
|
2113
|
-
useEffect(() => {
|
|
2114
|
-
const next = typeof props.bot.maxLiveWorkers === 'number' ? props.bot.maxLiveWorkers : null;
|
|
2115
|
-
setCap(next);
|
|
2116
|
-
setInput(next == null ? '' : String(next));
|
|
2117
|
-
}, [props.bot.maxLiveWorkers]);
|
|
2118
|
-
async function save(value) {
|
|
2119
|
-
setStatus(null);
|
|
2120
|
-
setBusy(true);
|
|
2121
|
-
try {
|
|
2122
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/max-live-workers`, { maxLiveWorkers: value });
|
|
2123
|
-
if (res.ok && res.body.ok) {
|
|
2124
|
-
const next = typeof res.body.maxLiveWorkers === 'number' ? res.body.maxLiveWorkers : null;
|
|
2125
|
-
setCap(next);
|
|
2126
|
-
setInput(next == null ? '' : String(next));
|
|
2127
|
-
props.patchBot(props.bot.larkAppId, { maxLiveWorkers: next });
|
|
2128
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2129
|
-
}
|
|
2130
|
-
else {
|
|
2131
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2132
|
-
}
|
|
2133
|
-
}
|
|
2134
|
-
catch (e) {
|
|
2135
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2136
|
-
}
|
|
2137
|
-
finally {
|
|
2138
|
-
setBusy(false);
|
|
2139
|
-
}
|
|
2140
|
-
}
|
|
2141
|
-
function saveInput() {
|
|
2142
|
-
const parsed = positiveIntegerOrNull(input);
|
|
2143
|
-
if (parsed === 'invalid') {
|
|
2144
|
-
setStatus({ text: `✗ ${tr('botDefaults.maxLiveWorkersInvalid')}` });
|
|
2145
|
-
return;
|
|
2146
|
-
}
|
|
2147
|
-
void save(parsed);
|
|
2148
|
-
}
|
|
2149
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionSessionCap') }), _jsxs("div", { className: "bd-row bd-quota", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.maxLiveWorkersHelp'), children: tr('botDefaults.maxLiveWorkers') }), _jsx("input", { type: "number", min: 1, step: 1, "data-input": "maxLiveWorkers", placeholder: tr('botDefaults.maxLiveWorkersPlaceholder'), value: input, disabled: busy, onChange: event => setInput(event.currentTarget.value) })] }), _jsx("small", { "data-session-cap-state": true, children: sessionCapStateLabel(cap, tr) }), _jsx("small", { className: "bd-help bd-session-residency", children: tr('botDefaults.maxLiveWorkersUsage', {
|
|
2150
|
-
resident,
|
|
2151
|
-
cap: effectiveCap,
|
|
2152
|
-
dormant,
|
|
2153
|
-
logical,
|
|
2154
|
-
}) })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-session-cap", disabled: busy, onClick: saveInput, children: tr('botDefaults.maxLiveWorkersSave') }), _jsx("button", { type: "button", "data-action": "off-session-cap", disabled: busy, onClick: () => { setInput(''); void save(null); }, children: tr('botDefaults.maxLiveWorkersOff') }), _jsx(StatusSpan, { status: status, attr: { 'data-session-cap-status': '' } })] })] }));
|
|
2155
|
-
}
|
|
2156
|
-
function StartupCommandsSection(props) {
|
|
2157
|
-
const tr = useT();
|
|
2158
|
-
const [value, setValue] = useState(typeof props.bot.startupCommands === 'string' ? props.bot.startupCommands : '');
|
|
2159
|
-
const [status, setStatus] = useState(null);
|
|
2160
|
-
const [busy, setBusy] = useState(false);
|
|
2161
|
-
useEffect(() => setValue(typeof props.bot.startupCommands === 'string' ? props.bot.startupCommands : ''), [props.bot.startupCommands]);
|
|
2162
|
-
async function save() {
|
|
2163
|
-
setStatus(null);
|
|
2164
|
-
setBusy(true);
|
|
2165
|
-
try {
|
|
2166
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/startup-commands`, { startupCommands: value });
|
|
2167
|
-
if (res.ok && res.body.ok) {
|
|
2168
|
-
const next = typeof res.body.startupCommands === 'string' ? res.body.startupCommands : '';
|
|
2169
|
-
setValue(next);
|
|
2170
|
-
props.patchBot(props.bot.larkAppId, { startupCommands: next });
|
|
2171
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2172
|
-
}
|
|
2173
|
-
else {
|
|
2174
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2175
|
-
}
|
|
2176
|
-
}
|
|
2177
|
-
catch (e) {
|
|
2178
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2179
|
-
}
|
|
2180
|
-
finally {
|
|
2181
|
-
setBusy(false);
|
|
2182
|
-
}
|
|
2183
|
-
}
|
|
2184
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: _jsx(FieldTitle, { help: tr('botDefaults.startupCommandsHelp'), children: tr('botDefaults.sectionStartupCommands') }) }), _jsx("textarea", { "data-input": "startupCommands", rows: 3, placeholder: tr('botDefaults.startupCommandsPlaceholder'), value: value, disabled: busy, onChange: event => setValue(event.currentTarget.value) }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-startup-commands", disabled: busy, onClick: () => void save(), children: tr('botDefaults.startupCommandsSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-startup-commands-status': '' } })] })] }));
|
|
2185
|
-
}
|
|
2186
|
-
// Slash 命令权限:把 /botconfig 的 customPassthroughCommands(透传给 CLI)与
|
|
2187
|
-
// canTalkDaemonCommands(daemon 命令降到 canTalk)搬到 Dashboard 可视化编辑。
|
|
2188
|
-
// 两者都是 stringList immediate 字段,走各自的 PUT 代理路由,空串=清除回默认。
|
|
2189
|
-
function SlashCommandPermissionsSection(props) {
|
|
2190
|
-
const tr = useT();
|
|
2191
|
-
const [passthrough, setPassthrough] = useState(typeof props.bot.customPassthroughCommands === 'string' ? props.bot.customPassthroughCommands : '');
|
|
2192
|
-
const [canTalk, setCanTalk] = useState(typeof props.bot.canTalkDaemonCommands === 'string' ? props.bot.canTalkDaemonCommands : '');
|
|
2193
|
-
const [status, setStatus] = useState(null);
|
|
2194
|
-
const [busy, setBusy] = useState(null);
|
|
2195
|
-
useEffect(() => {
|
|
2196
|
-
setPassthrough(typeof props.bot.customPassthroughCommands === 'string' ? props.bot.customPassthroughCommands : '');
|
|
2197
|
-
}, [props.bot.customPassthroughCommands]);
|
|
2198
|
-
// 分开两个 effect:只让「被保存的那个字段」的 prop 变化重置对应输入框,否则保存
|
|
2199
|
-
// 一个字段触发 patchBot 重渲染会连带把另一个字段的未保存草稿一并清空。
|
|
2200
|
-
useEffect(() => {
|
|
2201
|
-
setCanTalk(typeof props.bot.canTalkDaemonCommands === 'string' ? props.bot.canTalkDaemonCommands : '');
|
|
2202
|
-
}, [props.bot.canTalkDaemonCommands]);
|
|
2203
|
-
async function savePassthrough() {
|
|
2204
|
-
setStatus(null);
|
|
2205
|
-
setBusy('passthrough');
|
|
2206
|
-
try {
|
|
2207
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/custom-passthrough`, { customPassthroughCommands: passthrough });
|
|
2208
|
-
if (res.ok && res.body.ok) {
|
|
2209
|
-
const next = typeof res.body.customPassthroughCommands === 'string' ? res.body.customPassthroughCommands : '';
|
|
2210
|
-
setPassthrough(next);
|
|
2211
|
-
props.patchBot(props.bot.larkAppId, { customPassthroughCommands: next });
|
|
2212
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2213
|
-
}
|
|
2214
|
-
else {
|
|
2215
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2216
|
-
}
|
|
2217
|
-
}
|
|
2218
|
-
catch (e) {
|
|
2219
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2220
|
-
}
|
|
2221
|
-
finally {
|
|
2222
|
-
setBusy(null);
|
|
2223
|
-
}
|
|
2224
|
-
}
|
|
2225
|
-
async function saveCanTalk() {
|
|
2226
|
-
setStatus(null);
|
|
2227
|
-
setBusy('cantalk');
|
|
2228
|
-
try {
|
|
2229
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/cantalk-daemon-commands`, { canTalkDaemonCommands: canTalk });
|
|
2230
|
-
if (res.ok && res.body.ok) {
|
|
2231
|
-
const next = typeof res.body.canTalkDaemonCommands === 'string' ? res.body.canTalkDaemonCommands : '';
|
|
2232
|
-
setCanTalk(next);
|
|
2233
|
-
props.patchBot(props.bot.larkAppId, { canTalkDaemonCommands: next });
|
|
2234
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2235
|
-
}
|
|
2236
|
-
else {
|
|
2237
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2238
|
-
}
|
|
2239
|
-
}
|
|
2240
|
-
catch (e) {
|
|
2241
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2242
|
-
}
|
|
2243
|
-
finally {
|
|
2244
|
-
setBusy(null);
|
|
2245
|
-
}
|
|
2246
|
-
}
|
|
2247
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: _jsx(FieldTitle, { help: tr('botDefaults.sectionSlashCommandsHelp'), children: tr('botDefaults.sectionSlashCommands') }) }), _jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.customPassthroughHelp'), children: tr('botDefaults.customPassthrough') }) }), _jsx("textarea", { "data-input": "customPassthroughCommands", rows: 2, placeholder: tr('botDefaults.customPassthroughPlaceholder'), value: passthrough, disabled: busy === 'passthrough', onChange: event => setPassthrough(event.currentTarget.value) }), _jsx("div", { className: "actions", children: _jsx("button", { type: "button", className: "primary", "data-action": "save-custom-passthrough", disabled: busy === 'passthrough', onClick: () => void savePassthrough(), children: tr('botDefaults.customPassthroughSave') }) })] }), _jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.canTalkDaemonHelp'), children: tr('botDefaults.canTalkDaemon') }) }), _jsx("textarea", { "data-input": "canTalkDaemonCommands", rows: 2, placeholder: tr('botDefaults.canTalkDaemonPlaceholder'), value: canTalk, disabled: busy === 'cantalk', onChange: event => setCanTalk(event.currentTarget.value) }), _jsx("div", { className: "actions", children: _jsx("button", { type: "button", className: "primary", "data-action": "save-cantalk-daemon", disabled: busy === 'cantalk', onClick: () => void saveCanTalk(), children: tr('botDefaults.canTalkDaemonSave') }) })] }), _jsx(StatusSpan, { status: status, attr: { 'data-slash-commands-status': '' } })] }));
|
|
2248
|
-
}
|
|
2249
|
-
function LaunchShellSection(props) {
|
|
2250
|
-
const tr = useT();
|
|
2251
|
-
const [value, setValue] = useState(typeof props.bot.launchShell === 'string' ? props.bot.launchShell : '');
|
|
2252
|
-
const [status, setStatus] = useState(null);
|
|
2253
|
-
const [busy, setBusy] = useState(false);
|
|
2254
|
-
useEffect(() => setValue(typeof props.bot.launchShell === 'string' ? props.bot.launchShell : ''), [props.bot.launchShell]);
|
|
2255
|
-
async function save() {
|
|
2256
|
-
setStatus(null);
|
|
2257
|
-
setBusy(true);
|
|
2258
|
-
try {
|
|
2259
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/launch-shell`, { launchShell: value });
|
|
2260
|
-
if (res.ok && res.body.ok) {
|
|
2261
|
-
const next = typeof res.body.launchShell === 'string' ? res.body.launchShell : '';
|
|
2262
|
-
setValue(next);
|
|
2263
|
-
props.patchBot(props.bot.larkAppId, { launchShell: next });
|
|
2264
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2265
|
-
}
|
|
2266
|
-
else {
|
|
2267
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2268
|
-
}
|
|
2269
|
-
}
|
|
2270
|
-
catch (e) {
|
|
2271
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2272
|
-
}
|
|
2273
|
-
finally {
|
|
2274
|
-
setBusy(false);
|
|
2275
|
-
}
|
|
2276
|
-
}
|
|
2277
|
-
return (_jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.launchShellHelp'), children: tr('botDefaults.sectionLaunchShell') }) }), _jsx("input", { type: "text", "data-input": "launchShell", placeholder: tr('botDefaults.launchShellPlaceholder'), value: value, disabled: busy, onChange: event => setValue(event.currentTarget.value) }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-launch-shell", disabled: busy, onClick: () => void save(), children: tr('botDefaults.launchShellSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-launch-shell-status': '' } })] })] }));
|
|
2278
|
-
}
|
|
2279
|
-
function EnvSection(props) {
|
|
2280
|
-
const tr = useT();
|
|
2281
|
-
const [value, setValue] = useState(typeof props.bot.env === 'string' ? props.bot.env : '');
|
|
2282
|
-
const [status, setStatus] = useState(null);
|
|
2283
|
-
const [busy, setBusy] = useState(false);
|
|
2284
|
-
useEffect(() => setValue(typeof props.bot.env === 'string' ? props.bot.env : ''), [props.bot.env]);
|
|
2285
|
-
async function save() {
|
|
2286
|
-
setStatus(null);
|
|
2287
|
-
setBusy(true);
|
|
2288
|
-
try {
|
|
2289
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/env`, { env: value });
|
|
2290
|
-
if (res.ok && res.body.ok) {
|
|
2291
|
-
const next = typeof res.body.env === 'string' ? res.body.env : '';
|
|
2292
|
-
setValue(next);
|
|
2293
|
-
props.patchBot(props.bot.larkAppId, { env: next });
|
|
2294
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2295
|
-
}
|
|
2296
|
-
else {
|
|
2297
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2298
|
-
}
|
|
2299
|
-
}
|
|
2300
|
-
catch (e) {
|
|
2301
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2302
|
-
}
|
|
2303
|
-
finally {
|
|
2304
|
-
setBusy(false);
|
|
2305
|
-
}
|
|
2306
|
-
}
|
|
2307
|
-
return (_jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.envHelp'), children: tr('botDefaults.sectionEnv') }) }), _jsx("textarea", { "data-input": "env", rows: 5, placeholder: tr('botDefaults.envPlaceholder'), value: value, disabled: busy, onChange: event => setValue(event.currentTarget.value) }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-env", disabled: busy, onClick: () => void save(), children: tr('botDefaults.envSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-env-status': '' } })] })] }));
|
|
2308
|
-
}
|
|
2309
|
-
/** riff UI 建议主动选择的模型(服务端另有隐藏降级备胎,不在此列)。 */
|
|
2310
|
-
const RIFF_MODEL_SUGGESTIONS = ['gpt-5.5', 'gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna', 'gpt-5.4', 'gpt-5.4-pro'];
|
|
2311
|
-
/** codex 思考等级档位(与 riff 服务端对齐);'' = 跟随 riff 默认(medium)。 */
|
|
2312
|
-
const RIFF_REASONING_EFFORT_OPTIONS = ['', 'low', 'medium', 'high', 'xhigh'];
|
|
2313
|
-
/** riff task-execute 的 sandboxCluster;缺省行为与服务端一致,回落 BOE。 */
|
|
2314
|
-
const RIFF_SANDBOX_CLUSTER_OPTIONS = ['boe', 'cn'];
|
|
2315
|
-
function RiffSection(props) {
|
|
2316
|
-
const tr = useT();
|
|
2317
|
-
const riff = props.bot.riff && typeof props.bot.riff === 'object' ? props.bot.riff : {};
|
|
2318
|
-
const [baseUrl, setBaseUrl] = useState(typeof riff.baseUrl === 'string' ? riff.baseUrl : '');
|
|
2319
|
-
const [sandboxCluster, setSandboxCluster] = useState(riff.sandboxCluster === 'cn' ? 'cn' : 'boe');
|
|
2320
|
-
const [model, setModel] = useState(typeof riff.model === 'string' ? riff.model : '');
|
|
2321
|
-
const [reasoningEffort, setReasoningEffort] = useState(typeof riff.reasoningEffort === 'string' ? riff.reasoningEffort : '');
|
|
2322
|
-
const [jwtEnv, setJwtEnv] = useState(typeof riff.jwtEnv === 'string' ? riff.jwtEnv : '');
|
|
2323
|
-
const [systemPrompt, setSystemPrompt] = useState(typeof riff.systemPrompt === 'string' ? riff.systemPrompt : '');
|
|
2324
|
-
const [setupCommands, setSetupCommands] = useState(Array.isArray(riff.setupCommands) ? riff.setupCommands.join('\n') : '');
|
|
2325
|
-
const [status, setStatus] = useState(null);
|
|
2326
|
-
const [busy, setBusy] = useState(false);
|
|
2327
|
-
useEffect(() => {
|
|
2328
|
-
const r = props.bot.riff && typeof props.bot.riff === 'object' ? props.bot.riff : {};
|
|
2329
|
-
setBaseUrl(typeof r.baseUrl === 'string' ? r.baseUrl : '');
|
|
2330
|
-
setSandboxCluster(r.sandboxCluster === 'cn' ? 'cn' : 'boe');
|
|
2331
|
-
setModel(typeof r.model === 'string' ? r.model : '');
|
|
2332
|
-
setReasoningEffort(typeof r.reasoningEffort === 'string' ? r.reasoningEffort : '');
|
|
2333
|
-
setJwtEnv(typeof r.jwtEnv === 'string' ? r.jwtEnv : '');
|
|
2334
|
-
setSystemPrompt(typeof r.systemPrompt === 'string' ? r.systemPrompt : '');
|
|
2335
|
-
setSetupCommands(Array.isArray(r.setupCommands) ? r.setupCommands.join('\n') : '');
|
|
2336
|
-
}, [props.bot.riff]);
|
|
2337
|
-
async function save() {
|
|
2338
|
-
setStatus(null);
|
|
2339
|
-
setBusy(true);
|
|
2340
|
-
try {
|
|
2341
|
-
const config = {};
|
|
2342
|
-
if (baseUrl.trim())
|
|
2343
|
-
config.baseUrl = baseUrl.trim();
|
|
2344
|
-
config.sandboxCluster = sandboxCluster;
|
|
2345
|
-
if (model.trim())
|
|
2346
|
-
config.model = model.trim();
|
|
2347
|
-
if (reasoningEffort)
|
|
2348
|
-
config.reasoningEffort = reasoningEffort;
|
|
2349
|
-
if (jwtEnv.trim())
|
|
2350
|
-
config.jwtEnv = jwtEnv.trim();
|
|
2351
|
-
if (systemPrompt.trim())
|
|
2352
|
-
config.systemPrompt = systemPrompt.trim();
|
|
2353
|
-
if (setupCommands.trim()) {
|
|
2354
|
-
config.setupCommands = setupCommands.split('\n').map(s => s.trim()).filter(Boolean);
|
|
2355
|
-
}
|
|
2356
|
-
const json = Object.keys(config).length ? JSON.stringify(config) : '';
|
|
2357
|
-
// Save order matters: riff config FIRST, agent switch AFTER. PUT /agent
|
|
2358
|
-
// flips cliId/backendType AND closes CLI-mismatched sessions immediately,
|
|
2359
|
-
// so doing it first would leave a half-configured riff bot (and killed
|
|
2360
|
-
// sessions) when the /riff write fails. A saved-but-unused riff config
|
|
2361
|
-
// from the reverse failure mode is harmless.
|
|
2362
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/riff`, { riff: json });
|
|
2363
|
-
if (res.ok && res.body.ok) {
|
|
2364
|
-
const next = typeof res.body.riff === 'string' && res.body.riff ? JSON.parse(res.body.riff) : null;
|
|
2365
|
-
props.patchBot(props.bot.larkAppId, { riff: next });
|
|
2366
|
-
if (props.persistCliSelection && !(await props.persistCliSelection())) {
|
|
2367
|
-
setStatus({ text: `✗ ${tr('botDefaults.riffCliPersistFailed')}` });
|
|
2368
|
-
return;
|
|
2369
|
-
}
|
|
2370
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2371
|
-
}
|
|
2372
|
-
else {
|
|
2373
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2374
|
-
}
|
|
2375
|
-
}
|
|
2376
|
-
catch (e) {
|
|
2377
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2378
|
-
}
|
|
2379
|
-
finally {
|
|
2380
|
-
setBusy(false);
|
|
2381
|
-
}
|
|
2382
|
-
}
|
|
2383
|
-
return (_jsxs("div", { className: "bd-subsection", children: [_jsx("h4", { className: "bd-subsection-title", children: _jsx(FieldTitle, { help: tr('botDefaults.riffHelp'), children: tr('botDefaults.sectionRiff') }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.riffBaseUrl') }), _jsx("input", { type: "text", "data-input": "riff-base-url", placeholder: tr('botDefaults.riffBaseUrlPlaceholder'), value: baseUrl, disabled: busy, onChange: e => setBaseUrl(e.currentTarget.value) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx("span", { children: _jsx(FieldTitle, { help: tr('botDefaults.riffSandboxClusterHelp'), children: tr('botDefaults.riffSandboxCluster') }) }), _jsx(DropdownField, { dataInput: "riff-sandbox-cluster", ariaLabel: tr('botDefaults.riffSandboxCluster'), value: sandboxCluster, disabled: busy, options: RIFF_SANDBOX_CLUSTER_OPTIONS.map(value => ({ value, label: value.toUpperCase() })), onChange: next => setSandboxCluster(next) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: _jsx(FieldTitle, { help: tr('botDefaults.riffModelHelp'), children: tr('botDefaults.riffModel') }) }), _jsx("input", { type: "text", "data-input": "riff-model", list: `riff-model-suggestions-${props.bot.larkAppId}`, placeholder: tr('botDefaults.riffModelPlaceholder'), value: model, disabled: busy, onChange: e => setModel(e.currentTarget.value) }), _jsx("datalist", { id: `riff-model-suggestions-${props.bot.larkAppId}`, children: RIFF_MODEL_SUGGESTIONS.map(item => _jsx("option", { value: item }, item)) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("div", { className: "bd-field", children: [_jsx("span", { children: _jsx(FieldTitle, { help: tr('botDefaults.riffReasoningEffortHelp'), children: tr('botDefaults.riffReasoningEffort') }) }), _jsx(DropdownField, { dataInput: "riff-reasoning-effort", ariaLabel: tr('botDefaults.riffReasoningEffort'), value: reasoningEffort, disabled: busy, options: RIFF_REASONING_EFFORT_OPTIONS.map(v => ({ value: v, label: v === '' ? tr('botDefaults.riffReasoningEffortDefault') : v })), onChange: next => setReasoningEffort(next) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: _jsx(FieldTitle, { help: tr('botDefaults.riffJwtEnvHelp'), children: tr('botDefaults.riffJwtEnv') }) }), _jsx("input", { type: "text", "data-input": "riff-jwt-env", placeholder: tr('botDefaults.riffJwtEnvPlaceholder'), value: jwtEnv, disabled: busy, onChange: e => setJwtEnv(e.currentTarget.value) })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.riffSystemPrompt') }), _jsx("textarea", { "data-input": "riff-system-prompt", placeholder: tr('botDefaults.riffSystemPromptPlaceholder'), value: systemPrompt, disabled: busy, onChange: e => setSystemPrompt(e.currentTarget.value), rows: 4 })] }) }), _jsx("div", { className: "bd-row", children: _jsxs("label", { children: [_jsx("span", { children: tr('botDefaults.riffSetupCommands') }), _jsx("textarea", { "data-input": "riff-setup-commands", placeholder: tr('botDefaults.riffSetupCommandsPlaceholder'), value: setupCommands, disabled: busy, onChange: e => setSetupCommands(e.currentTarget.value), rows: 3 })] }) }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-riff", disabled: busy, onClick: () => void save(), children: tr('botDefaults.riffSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-riff-status': '' } })] })] }));
|
|
2384
|
-
}
|
|
2385
|
-
function BrandSection(props) {
|
|
2386
|
-
const tr = useT();
|
|
2387
|
-
const initial = props.bot.brandLabel ?? null;
|
|
2388
|
-
const [brand, setBrand] = useState(initial);
|
|
2389
|
-
const [input, setInput] = useState(initial ?? '');
|
|
2390
|
-
const [status, setStatus] = useState(null);
|
|
2391
|
-
const [busy, setBusy] = useState(false);
|
|
2392
|
-
useEffect(() => {
|
|
2393
|
-
const next = props.bot.brandLabel ?? null;
|
|
2394
|
-
setBrand(next);
|
|
2395
|
-
setInput(next ?? '');
|
|
2396
|
-
}, [props.bot.brandLabel]);
|
|
2397
|
-
async function save(nextBrand) {
|
|
2398
|
-
setStatus(null);
|
|
2399
|
-
setBusy(true);
|
|
2400
|
-
try {
|
|
2401
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/brand-label`, { brandLabel: nextBrand });
|
|
2402
|
-
if (res.ok && res.body.ok) {
|
|
2403
|
-
const next = res.body.brandLabel ?? null;
|
|
2404
|
-
setBrand(next);
|
|
2405
|
-
setInput(next ?? '');
|
|
2406
|
-
props.patchBot(props.bot.larkAppId, { brandLabel: next });
|
|
2407
|
-
setStatus({ text: '✓', ok: true });
|
|
2408
|
-
}
|
|
2409
|
-
else {
|
|
2410
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2411
|
-
}
|
|
2412
|
-
}
|
|
2413
|
-
catch (e) {
|
|
2414
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2415
|
-
}
|
|
2416
|
-
finally {
|
|
2417
|
-
setBusy(false);
|
|
2418
|
-
}
|
|
2419
|
-
}
|
|
2420
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionBrand') }), _jsxs("div", { className: "bd-row bd-brand", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.brandLabelHelp'), children: tr('botDefaults.brandLabel') }), _jsx("input", { type: "text", "data-input": "brandLabel", placeholder: tr('botDefaults.brandLabelPlaceholder'), value: input, disabled: busy, onChange: event => setInput(event.currentTarget.value) })] }), _jsx("small", { "data-brand-state": true, children: brandStateLabel(brand, tr) })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-brand", disabled: busy, onClick: () => void save(input), children: tr('botDefaults.brandSave') }), _jsx("button", { type: "button", "data-action": "reset-brand", disabled: busy, onClick: () => void save(null), children: tr('botDefaults.brandReset') }), _jsx(StatusSpan, { status: status, attr: { 'data-brand-status': '' } })] })] }));
|
|
2421
|
-
}
|
|
2422
|
-
function GrantSection(props) {
|
|
2423
|
-
const tr = useT();
|
|
2424
|
-
const [autoCard, setAutoCard] = useState(props.bot.autoGrantRequestCards !== false);
|
|
2425
|
-
const [restrict, setRestrict] = useState(props.bot.restrictGrantCommands === true);
|
|
2426
|
-
const [quota, setQuota] = useState(typeof props.bot.messageQuotaDefaultLimit === 'number' ? props.bot.messageQuotaDefaultLimit : null);
|
|
2427
|
-
const [quotaInput, setQuotaInput] = useState(typeof props.bot.messageQuotaDefaultLimit === 'number' ? String(props.bot.messageQuotaDefaultLimit) : '');
|
|
2428
|
-
const [status, setStatus] = useState(null);
|
|
2429
|
-
const [busy, setBusy] = useState(null);
|
|
2430
|
-
useEffect(() => {
|
|
2431
|
-
setAutoCard(props.bot.autoGrantRequestCards !== false);
|
|
2432
|
-
setRestrict(props.bot.restrictGrantCommands === true);
|
|
2433
|
-
const next = typeof props.bot.messageQuotaDefaultLimit === 'number' ? props.bot.messageQuotaDefaultLimit : null;
|
|
2434
|
-
setQuota(next);
|
|
2435
|
-
setQuotaInput(next == null ? '' : String(next));
|
|
2436
|
-
}, [props.bot.autoGrantRequestCards, props.bot.messageQuotaDefaultLimit, props.bot.restrictGrantCommands]);
|
|
2437
|
-
async function savePatch(patch, key) {
|
|
2438
|
-
setBusy(key);
|
|
2439
|
-
setStatus(null);
|
|
2440
|
-
try {
|
|
2441
|
-
const res = await sendJson('PUT', `/api/bots/${encodeURIComponent(props.bot.larkAppId)}/grant-prefs`, patch);
|
|
2442
|
-
if (res.ok && res.body.ok) {
|
|
2443
|
-
const nextQuota = typeof res.body.messageQuotaDefaultLimit === 'number' ? res.body.messageQuotaDefaultLimit : null;
|
|
2444
|
-
setAutoCard(res.body.autoGrantRequestCards !== false);
|
|
2445
|
-
setRestrict(res.body.restrictGrantCommands === true);
|
|
2446
|
-
setQuota(nextQuota);
|
|
2447
|
-
if ('messageQuotaDefaultLimit' in patch)
|
|
2448
|
-
setQuotaInput(nextQuota == null ? '' : String(nextQuota));
|
|
2449
|
-
props.patchBot(props.bot.larkAppId, {
|
|
2450
|
-
autoGrantRequestCards: res.body.autoGrantRequestCards !== false,
|
|
2451
|
-
restrictGrantCommands: res.body.restrictGrantCommands === true,
|
|
2452
|
-
messageQuotaDefaultLimit: nextQuota,
|
|
2453
|
-
});
|
|
2454
|
-
setStatus({ text: `✓ ${tr('botDefaults.cardPrefSaved')}`, ok: true });
|
|
2455
|
-
}
|
|
2456
|
-
else {
|
|
2457
|
-
setStatus({ text: `✗ ${responseErrorText(res)}` });
|
|
2458
|
-
}
|
|
2459
|
-
}
|
|
2460
|
-
catch (e) {
|
|
2461
|
-
setStatus({ text: `✗ ${caughtErrorText(e)}` });
|
|
2462
|
-
}
|
|
2463
|
-
finally {
|
|
2464
|
-
setBusy(null);
|
|
2465
|
-
}
|
|
2466
|
-
}
|
|
2467
|
-
function saveQuota() {
|
|
2468
|
-
const parsed = positiveIntegerOrNull(quotaInput);
|
|
2469
|
-
if (parsed === 'invalid') {
|
|
2470
|
-
setStatus({ text: `✗ ${tr('botDefaults.quotaInvalid')}` });
|
|
2471
|
-
return;
|
|
2472
|
-
}
|
|
2473
|
-
void savePatch({ messageQuotaDefaultLimit: parsed }, 'quota');
|
|
2474
|
-
}
|
|
2475
|
-
return (_jsxs("section", { className: "bd-section", children: [_jsx("h3", { className: "bd-section-title", children: tr('botDefaults.sectionGrant') }), _jsxs("div", { className: "bd-toggle-grid bd-grant-toggle-grid", children: [_jsx(ToggleRow, { checked: autoCard, disabled: busy === 'autoGrant', dataAction: "toggle-auto-grant-card", title: tr('botDefaults.autoGrantCard'), help: tr('botDefaults.autoGrantCardHelp'), onChange: checked => {
|
|
2476
|
-
setAutoCard(checked);
|
|
2477
|
-
void savePatch({ autoGrantRequestCards: checked }, 'autoGrant');
|
|
2478
|
-
} }), _jsx(ToggleRow, { checked: restrict, disabled: busy === 'restrict', dataAction: "toggle-restrict-grant", title: tr('botDefaults.restrictGrant'), help: tr('botDefaults.restrictGrantHelp'), onChange: checked => {
|
|
2479
|
-
setRestrict(checked);
|
|
2480
|
-
void savePatch({ restrictGrantCommands: checked }, 'restrict');
|
|
2481
|
-
} })] }), _jsxs("div", { className: "bd-row bd-quota", children: [_jsxs("label", { children: [_jsx(FieldTitle, { help: tr('botDefaults.quotaHelp'), children: tr('botDefaults.quotaDefault') }), _jsx("input", { type: "number", min: 1, step: 1, "data-input": "quotaLimit", placeholder: tr('botDefaults.quotaPlaceholder'), value: quotaInput, disabled: busy === 'quota', onChange: event => setQuotaInput(event.currentTarget.value) })] }), _jsx("small", { "data-quota-state": true, children: quotaStateLabel(quota, tr) })] }), _jsxs("div", { className: "actions", children: [_jsx("button", { type: "button", className: "primary", "data-action": "save-quota", disabled: busy === 'quota', onClick: saveQuota, children: tr('botDefaults.quotaSave') }), _jsx(StatusSpan, { status: status, attr: { 'data-grant-status': '' } })] })] }));
|
|
2482
|
-
}
|
|
2483
|
-
export function renderBotDefaultsPage(root) {
|
|
2484
|
-
return mountReactPage(root, _jsx(BotDefaultsPage, {}));
|
|
2485
|
-
}
|
|
2486
|
-
//# sourceMappingURL=bot-defaults-page.js.map
|