botmux 3.11.0 → 3.12.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/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +18 -0
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +154 -2
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/cli/coco.js +3 -3
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex.js +2 -2
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/kimi.d.ts.map +1 -1
- package/dist/adapters/cli/kimi.js +22 -8
- package/dist/adapters/cli/kimi.js.map +1 -1
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +3 -1
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +4 -1
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +23 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -0
- package/dist/cli/dashboard-command.js +61 -0
- package/dist/cli/dashboard-command.js.map +1 -0
- package/dist/cli/dashboard-endpoint.d.ts +3 -3
- package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
- package/dist/cli/dashboard-endpoint.js +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +101 -49
- package/dist/cli.js.map +1 -1
- package/dist/codex-rpc-engine.d.ts +33 -3
- package/dist/codex-rpc-engine.d.ts.map +1 -1
- package/dist/codex-rpc-engine.js +182 -20
- package/dist/codex-rpc-engine.js.map +1 -1
- package/dist/codex-rpc-lifecycle.d.ts +42 -7
- package/dist/codex-rpc-lifecycle.d.ts.map +1 -1
- package/dist/codex-rpc-lifecycle.js +73 -7
- package/dist/codex-rpc-lifecycle.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/core/command-handler.d.ts +3 -2
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +19 -4
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +16 -11
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +17 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +13 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/dispatch.d.ts +9 -10
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +17 -10
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +5 -0
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/role-resolver.d.ts +5 -2
- package/dist/core/role-resolver.d.ts.map +1 -1
- package/dist/core/role-resolver.js +55 -23
- package/dist/core/role-resolver.js.map +1 -1
- package/dist/core/session-manager.d.ts +2 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +20 -18
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skills/cli-admin-command.d.ts.map +1 -1
- package/dist/core/skills/cli-admin-command.js +142 -3
- package/dist/core/skills/cli-admin-command.js.map +1 -1
- package/dist/core/skills/frontmatter.d.ts.map +1 -1
- package/dist/core/skills/frontmatter.js +44 -7
- package/dist/core/skills/frontmatter.js.map +1 -1
- package/dist/core/skills/im-command.d.ts +6 -0
- package/dist/core/skills/im-command.d.ts.map +1 -1
- package/dist/core/skills/im-command.js +34 -7
- package/dist/core/skills/im-command.js.map +1 -1
- package/dist/core/skills/install-command.d.ts +4 -0
- package/dist/core/skills/install-command.d.ts.map +1 -0
- package/dist/core/skills/install-command.js +89 -0
- package/dist/core/skills/install-command.js.map +1 -0
- package/dist/core/skills/package.d.ts.map +1 -1
- package/dist/core/skills/package.js +10 -3
- package/dist/core/skills/package.js.map +1 -1
- package/dist/core/skills/policy.d.ts +5 -1
- package/dist/core/skills/policy.d.ts.map +1 -1
- package/dist/core/skills/policy.js +66 -3
- package/dist/core/skills/policy.js.map +1 -1
- package/dist/core/skills/references.d.ts +9 -1
- package/dist/core/skills/references.d.ts.map +1 -1
- package/dist/core/skills/references.js +35 -2
- package/dist/core/skills/references.js.map +1 -1
- package/dist/core/skills/registry-paths.d.ts +1 -0
- package/dist/core/skills/registry-paths.d.ts.map +1 -1
- package/dist/core/skills/registry-paths.js +3 -0
- package/dist/core/skills/registry-paths.js.map +1 -1
- package/dist/core/skills/session-resolver.d.ts +2 -1
- package/dist/core/skills/session-resolver.d.ts.map +1 -1
- package/dist/core/skills/session-resolver.js +1 -0
- package/dist/core/skills/session-resolver.js.map +1 -1
- package/dist/core/skills/session-runtime.d.ts.map +1 -1
- package/dist/core/skills/session-runtime.js +2 -0
- package/dist/core/skills/session-runtime.js.map +1 -1
- package/dist/core/skills/sources.d.ts +23 -0
- package/dist/core/skills/sources.d.ts.map +1 -1
- package/dist/core/skills/sources.js +128 -12
- package/dist/core/skills/sources.js.map +1 -1
- package/dist/core/skills/types.d.ts +22 -1
- package/dist/core/skills/types.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.d.ts +4 -4
- package/dist/core/terminal-write-auth.d.ts.map +1 -1
- package/dist/core/terminal-write-auth.js +18 -6
- package/dist/core/terminal-write-auth.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +52 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +101 -12
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts +21 -11
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +39 -25
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +2 -114
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +0 -1
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +0 -1
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +66 -6
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/dashboard-summary-endpoint.d.ts +39 -0
- package/dist/dashboard/dashboard-summary-endpoint.d.ts.map +1 -0
- package/dist/dashboard/dashboard-summary-endpoint.js +50 -0
- package/dist/dashboard/dashboard-summary-endpoint.js.map +1 -0
- package/dist/dashboard/dashboard-summary.d.ts +62 -0
- package/dist/dashboard/dashboard-summary.d.ts.map +1 -0
- package/dist/dashboard/dashboard-summary.js +106 -0
- package/dist/dashboard/dashboard-summary.js.map +1 -0
- package/dist/dashboard/public-redact.d.ts.map +1 -1
- package/dist/dashboard/public-redact.js +3 -0
- package/dist/dashboard/public-redact.js.map +1 -1
- package/dist/dashboard/skill-install-request.js +10 -11
- package/dist/dashboard/skill-install-request.js.map +1 -1
- package/dist/dashboard/skill-pack-response.d.ts +15 -0
- package/dist/dashboard/skill-pack-response.d.ts.map +1 -0
- package/dist/dashboard/skill-pack-response.js +32 -0
- package/dist/dashboard/skill-pack-response.js.map +1 -0
- package/dist/dashboard/web/connectors-page.d.ts +69 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
- package/dist/dashboard/web/connectors-page.js +47 -7
- package/dist/dashboard/web/connectors-page.js.map +1 -1
- package/dist/dashboard/web/feed-group-picker.d.ts +13 -0
- package/dist/dashboard/web/feed-group-picker.d.ts.map +1 -0
- package/dist/dashboard/web/feed-group-picker.js +45 -0
- package/dist/dashboard/web/feed-group-picker.js.map +1 -0
- package/dist/dashboard/web/groups-page.d.ts.map +1 -1
- package/dist/dashboard/web/groups-page.js +2 -5
- package/dist/dashboard/web/groups-page.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +309 -40
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/preferences.d.ts +4 -2
- package/dist/dashboard/web/preferences.d.ts.map +1 -1
- package/dist/dashboard/web/preferences.js +14 -6
- package/dist/dashboard/web/preferences.js.map +1 -1
- package/dist/dashboard/web/roles-page.d.ts.map +1 -1
- package/dist/dashboard/web/roles-page.js +36 -4
- package/dist/dashboard/web/roles-page.js.map +1 -1
- package/dist/dashboard/web/roles.d.ts +3 -1
- package/dist/dashboard/web/roles.d.ts.map +1 -1
- package/dist/dashboard/web/roles.js +10 -2
- package/dist/dashboard/web/roles.js.map +1 -1
- package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
- package/dist/dashboard/web/schedules-page.js +8 -2
- package/dist/dashboard/web/schedules-page.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
- package/dist/dashboard/web/sessions-page.js +101 -5
- package/dist/dashboard/web/sessions-page.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +3 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +13 -6
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/skills/bot-assignments-tab.d.ts +27 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.js +257 -0
- package/dist/dashboard/web/skills/bot-assignments-tab.js.map +1 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.d.ts +25 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.js +20 -0
- package/dist/dashboard/web/skills/delivery-settings-tab.js.map +1 -0
- package/dist/dashboard/web/skills/shared.d.ts +86 -0
- package/dist/dashboard/web/skills/shared.d.ts.map +1 -0
- package/dist/dashboard/web/skills/shared.js +178 -0
- package/dist/dashboard/web/skills/shared.js.map +1 -0
- package/dist/dashboard/web/skills/skill-library-tab.d.ts +75 -0
- package/dist/dashboard/web/skills/skill-library-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/skill-library-tab.js +108 -0
- package/dist/dashboard/web/skills/skill-library-tab.js.map +1 -0
- package/dist/dashboard/web/skills/skill-packs-tab.d.ts +21 -0
- package/dist/dashboard/web/skills/skill-packs-tab.d.ts.map +1 -0
- package/dist/dashboard/web/skills/skill-packs-tab.js +185 -0
- package/dist/dashboard/web/skills/skill-packs-tab.js.map +1 -0
- package/dist/dashboard/web/skills/types.d.ts +95 -0
- package/dist/dashboard/web/skills/types.d.ts.map +1 -0
- package/dist/dashboard/web/skills/types.js +2 -0
- package/dist/dashboard/web/skills/types.js.map +1 -0
- package/dist/dashboard/web/skills/use-skills-data.d.ts +31 -0
- package/dist/dashboard/web/skills/use-skills-data.d.ts.map +1 -0
- package/dist/dashboard/web/skills/use-skills-data.js +86 -0
- package/dist/dashboard/web/skills/use-skills-data.js.map +1 -0
- package/dist/dashboard/web/skills-page.d.ts +34 -31
- package/dist/dashboard/web/skills-page.d.ts.map +1 -1
- package/dist/dashboard/web/skills-page.js +321 -176
- package/dist/dashboard/web/skills-page.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts +18 -0
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +35 -1
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-GED4FEMS.js → bot-defaults-page-HL655CNR.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-HK7NIBJG.js → chunk-5PAYQ3KT.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-KRHWZEXU.js → chunk-5ZL7NLR5.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-6ALR252E.js +1 -0
- package/dist/dashboard-web/chunks/{chunk-VBXJOJFH.js → chunk-BFUTTYVK.js} +1 -1
- package/dist/dashboard-web/chunks/chunk-ELL53D62.js +55 -0
- package/dist/dashboard-web/chunks/connectors-page-3QQACF23.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-SDZMJ7UV.js +8 -0
- package/dist/dashboard-web/chunks/{insights-page-54UBPPOC.js → insights-page-ZZ3JEJ6L.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-PORHVKRH.js → monitor-room-ROJ5GZ4N.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-XGA7AXNL.js → monitoring-page-IATV7KJF.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-AO3AFG45.js → office-page-TYO5OIIT.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-F5BUTYR6.js → overview-page-VJUULZF2.js} +1 -1
- package/dist/dashboard-web/chunks/roles-page-7RJJKZGK.js +1 -0
- package/dist/dashboard-web/chunks/schedules-page-JTEJ5IXW.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-KD7HDT3U.js +8 -0
- package/dist/dashboard-web/chunks/{settings-page-OJAZLZQT.js → settings-page-7CTTFBRS.js} +1 -1
- package/dist/dashboard-web/chunks/skills-page-57NZECJ3.js +4 -0
- package/dist/dashboard-web/chunks/{team-federation-page-ZJVAP7HW.js → team-federation-page-6YYIMJG3.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-GYWTRGO2.js → v3-page-ZGKBSBK3.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-MSDAG6P7.js → whiteboards-page-AACJF6DB.js} +1 -1
- package/dist/dashboard-web/style.css +1952 -377
- package/dist/dashboard.js +316 -47
- package/dist/dashboard.js.map +1 -1
- package/dist/desktop/main/ipc.js +1 -1
- package/dist/desktop/main/runtime-service.js +2 -2
- package/dist/desktop/main/runtime-service.js.map +1 -1
- package/dist/desktop/shared/types.d.ts +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +5 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +5 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index-daemon.js +6 -1
- package/dist/index-daemon.js.map +1 -1
- package/dist/services/adopt-input-sequence.d.ts +52 -0
- package/dist/services/adopt-input-sequence.d.ts.map +1 -0
- package/dist/services/adopt-input-sequence.js +50 -0
- package/dist/services/adopt-input-sequence.js.map +1 -0
- package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
- package/dist/services/bridge-fallback-gate.js +34 -11
- package/dist/services/bridge-fallback-gate.js.map +1 -1
- package/dist/services/codex-bridge-queue.d.ts +103 -7
- package/dist/services/codex-bridge-queue.d.ts.map +1 -1
- package/dist/services/codex-bridge-queue.js +291 -17
- package/dist/services/codex-bridge-queue.js.map +1 -1
- package/dist/services/codex-transcript.d.ts +4 -3
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/connector-store.d.ts +14 -1
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/connector-topic-template.d.ts +7 -0
- package/dist/services/connector-topic-template.d.ts.map +1 -0
- package/dist/services/connector-topic-template.js +210 -0
- package/dist/services/connector-topic-template.js.map +1 -0
- package/dist/services/project-scanner.d.ts +33 -0
- package/dist/services/project-scanner.d.ts.map +1 -1
- package/dist/services/project-scanner.js +40 -1
- package/dist/services/project-scanner.js.map +1 -1
- package/dist/services/skill-pack-store.d.ts +50 -0
- package/dist/services/skill-pack-store.d.ts.map +1 -0
- package/dist/services/skill-pack-store.js +270 -0
- package/dist/services/skill-pack-store.js.map +1 -0
- package/dist/services/skill-registry-store.d.ts +8 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +100 -68
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/structured-bridge-clis.d.ts +8 -1
- package/dist/services/structured-bridge-clis.d.ts.map +1 -1
- package/dist/services/structured-bridge-clis.js +13 -0
- package/dist/services/structured-bridge-clis.js.map +1 -1
- package/dist/services/submit-confirmation.d.ts +50 -0
- package/dist/services/submit-confirmation.d.ts.map +1 -1
- package/dist/services/submit-confirmation.js +82 -0
- package/dist/services/submit-confirmation.js.map +1 -1
- package/dist/services/todo-state.d.ts +74 -0
- package/dist/services/todo-state.d.ts.map +1 -0
- package/dist/services/todo-state.js +351 -0
- package/dist/services/todo-state.js.map +1 -0
- package/dist/setup/agent-preset.d.ts.map +1 -1
- package/dist/setup/agent-preset.js +2 -0
- package/dist/setup/agent-preset.js.map +1 -1
- package/dist/setup/owner-identity.d.ts +47 -0
- package/dist/setup/owner-identity.d.ts.map +1 -0
- package/dist/setup/owner-identity.js +196 -0
- package/dist/setup/owner-identity.js.map +1 -0
- package/dist/setup/register-app.d.ts +4 -3
- package/dist/setup/register-app.d.ts.map +1 -1
- package/dist/setup/register-app.js.map +1 -1
- package/dist/setup/setup-args.d.ts +1 -1
- package/dist/setup/setup-args.d.ts.map +1 -1
- package/dist/setup/setup-args.js +7 -3
- package/dist/setup/setup-args.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/async-serial-queue.d.ts +9 -0
- package/dist/utils/async-serial-queue.d.ts.map +1 -0
- package/dist/utils/async-serial-queue.js +13 -0
- package/dist/utils/async-serial-queue.js.map +1 -0
- package/dist/utils/child-env.d.ts +25 -0
- package/dist/utils/child-env.d.ts.map +1 -1
- package/dist/utils/child-env.js +47 -0
- package/dist/utils/child-env.js.map +1 -1
- package/dist/utils/runtime-screen-status.d.ts +52 -0
- package/dist/utils/runtime-screen-status.d.ts.map +1 -0
- package/dist/utils/runtime-screen-status.js +60 -0
- package/dist/utils/runtime-screen-status.js.map +1 -0
- package/dist/worker.js +1697 -468
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +44 -44
- package/package.json +1 -1
- package/dist/dashboard-web/chunks/chunk-6J5LS5AU.js +0 -51
- package/dist/dashboard-web/chunks/connectors-page-EELM66G3.js +0 -1
- package/dist/dashboard-web/chunks/groups-page-WKUV6E42.js +0 -8
- package/dist/dashboard-web/chunks/roles-page-M5GIASJU.js +0 -1
- package/dist/dashboard-web/chunks/schedules-page-O232WQRR.js +0 -1
- package/dist/dashboard-web/chunks/sessions-page-YFRPSTIL.js +0 -6
- package/dist/dashboard-web/chunks/skills-page-EFZQPWV4.js +0 -4
package/dist/dashboard/auth.d.ts
CHANGED
|
@@ -9,11 +9,13 @@ export interface HmacAttempt {
|
|
|
9
9
|
* single set of `X-Botmux-Cli-*` headers signed only over `ts:nonce` is valid
|
|
10
10
|
* for ANY `/__cli/*` route on ANY dashboard — which lets a malicious local
|
|
11
11
|
* server, handed a discovery probe, forward the headers to the real dashboard
|
|
12
|
-
* (e.g. a `/__cli/current` probe relayed to `/__cli/
|
|
12
|
+
* (e.g. a `/__cli/current` probe relayed to `/__cli/ensure` or `/__cli/rotate`
|
|
13
|
+
* to mint a token).
|
|
13
14
|
* Binding `method + path + bound-port` makes the credential single-purpose:
|
|
14
15
|
* - the verifier uses the port IT actually bound (not the attacker-controlled
|
|
15
16
|
* Host header), so a forward from port X to the dashboard on port Y mismatches;
|
|
16
|
-
* - a `/__cli/current` capture can't be replayed to
|
|
17
|
+
* - a `/__cli/current` capture can't be replayed to either token-writing route
|
|
18
|
+
* (path differs).
|
|
17
19
|
*/
|
|
18
20
|
export declare function cliAuthBind(method: string, path: string, port: number | string): string;
|
|
19
21
|
/** Mint the three `X-Botmux-Cli-*` header values for a loopback request.
|
|
@@ -44,19 +46,25 @@ export declare function loadDashboardSecret(secretPath: string): string | null;
|
|
|
44
46
|
export declare function loadOrCreateDashboardSecret(secretPath: string): string;
|
|
45
47
|
/**
|
|
46
48
|
* Load the persisted active dashboard token from `tokenPath`, or `null` when
|
|
47
|
-
* the file is absent
|
|
49
|
+
* the file is genuinely absent or empty. Unsafe credential-file shapes fail
|
|
50
|
+
* closed instead of being treated as a missing token.
|
|
48
51
|
*
|
|
49
52
|
* Persisting the active token lets a previously-issued dashboard URL survive a
|
|
50
|
-
* `botmux restart
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* link.
|
|
53
|
+
* `botmux restart` and keeps multiple dashboard processes on one authority.
|
|
54
|
+
* Only `botmux dashboard rotate` replaces the file, which invalidates the old
|
|
55
|
+
* link for every process on its next request.
|
|
54
56
|
*/
|
|
55
57
|
export declare function loadPersistedToken(tokenPath: string): string | null;
|
|
56
|
-
/**
|
|
58
|
+
/** Durably persist the active dashboard token without following a leaf symlink. */
|
|
57
59
|
export declare function persistToken(tokenPath: string, token: string): void;
|
|
58
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Load the active token, creating and persisting the first one when absent.
|
|
62
|
+
* The file lock makes get-or-create linearizable across dashboard processes:
|
|
63
|
+
* every concurrent caller returns the same durable token.
|
|
64
|
+
*/
|
|
59
65
|
export declare function loadOrCreatePersistedToken(tokenPath: string): string;
|
|
66
|
+
/** Generate and durably replace the token while serialized with first creation. */
|
|
67
|
+
export declare function rotatePersistedToken(tokenPath: string): string;
|
|
60
68
|
/** Extract `botmux_dashboard_token` value from a Cookie header. */
|
|
61
69
|
export declare function parseCookie(header: string | undefined): string | undefined;
|
|
62
70
|
/** Build the `Set-Cookie` header value for a fresh dashboard token. */
|
|
@@ -78,8 +86,10 @@ export declare function buildSetCookie(token: string): string;
|
|
|
78
86
|
* - `GET /api/workflows/*` — zero-I/O legacy retirement
|
|
79
87
|
* tombstone (HTTP 410).
|
|
80
88
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
89
|
+
* Outside those always-public surfaces, the explicit `publicReadOnly`
|
|
90
|
+
* allow-list controls tokenless observation. Mutations and private reads still
|
|
91
|
+
* require the active session token, matching the chat web terminal's
|
|
92
|
+
* capability boundary.
|
|
83
93
|
*/
|
|
84
94
|
export type AuthDecision = {
|
|
85
95
|
kind: 'allow';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAExE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvF;AAED;;gFAEgF;AAChF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAM5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA4BlC;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIrE;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA+CtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEnE;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CASpE;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO1E;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAsBxB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;uDAImD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,YAAY,CAkDf"}
|
package/dist/dashboard/auth.js
CHANGED
|
@@ -2,6 +2,8 @@ import { randomBytes, createHmac, timingSafeEqual } from 'node:crypto';
|
|
|
2
2
|
import { readFileSync, existsSync, mkdirSync, chmodSync, linkSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
3
3
|
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
4
4
|
import { dirname } from 'node:path';
|
|
5
|
+
import { readSecureHostFileSync, secureHostFilePath, writeSecureHostFileSync, } from '../platform/secure-host-file.js';
|
|
6
|
+
import { withFileLockSync } from '../utils/file-lock.js';
|
|
5
7
|
const NONCE_TTL_MS = 60_000;
|
|
6
8
|
const TS_WINDOW_S = 30;
|
|
7
9
|
const seenNonces = new Map(); // nonce → expiresAt
|
|
@@ -11,11 +13,13 @@ const seenNonces = new Map(); // nonce → expiresAt
|
|
|
11
13
|
* single set of `X-Botmux-Cli-*` headers signed only over `ts:nonce` is valid
|
|
12
14
|
* for ANY `/__cli/*` route on ANY dashboard — which lets a malicious local
|
|
13
15
|
* server, handed a discovery probe, forward the headers to the real dashboard
|
|
14
|
-
* (e.g. a `/__cli/current` probe relayed to `/__cli/
|
|
16
|
+
* (e.g. a `/__cli/current` probe relayed to `/__cli/ensure` or `/__cli/rotate`
|
|
17
|
+
* to mint a token).
|
|
15
18
|
* Binding `method + path + bound-port` makes the credential single-purpose:
|
|
16
19
|
* - the verifier uses the port IT actually bound (not the attacker-controlled
|
|
17
20
|
* Host header), so a forward from port X to the dashboard on port Y mismatches;
|
|
18
|
-
* - a `/__cli/current` capture can't be replayed to
|
|
21
|
+
* - a `/__cli/current` capture can't be replayed to either token-writing route
|
|
22
|
+
* (path differs).
|
|
19
23
|
*/
|
|
20
24
|
export function cliAuthBind(method, path, port) {
|
|
21
25
|
return `${String(method).toUpperCase()} ${path} ${port}`;
|
|
@@ -147,36 +151,45 @@ export function loadOrCreateDashboardSecret(secretPath) {
|
|
|
147
151
|
}
|
|
148
152
|
/**
|
|
149
153
|
* Load the persisted active dashboard token from `tokenPath`, or `null` when
|
|
150
|
-
* the file is absent
|
|
154
|
+
* the file is genuinely absent or empty. Unsafe credential-file shapes fail
|
|
155
|
+
* closed instead of being treated as a missing token.
|
|
151
156
|
*
|
|
152
157
|
* Persisting the active token lets a previously-issued dashboard URL survive a
|
|
153
|
-
* `botmux restart
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
* link.
|
|
158
|
+
* `botmux restart` and keeps multiple dashboard processes on one authority.
|
|
159
|
+
* Only `botmux dashboard rotate` replaces the file, which invalidates the old
|
|
160
|
+
* link for every process on its next request.
|
|
157
161
|
*/
|
|
158
162
|
export function loadPersistedToken(tokenPath) {
|
|
159
|
-
|
|
160
|
-
if (existsSync(tokenPath))
|
|
161
|
-
return readFileSync(tokenPath, 'utf8').trim() || null;
|
|
162
|
-
}
|
|
163
|
-
catch { /* unreadable token file → behave as if none persisted */ }
|
|
164
|
-
return null;
|
|
163
|
+
return readSecureHostFileSync(tokenPath, 256)?.trim() || null;
|
|
165
164
|
}
|
|
166
|
-
/**
|
|
165
|
+
/** Durably persist the active dashboard token without following a leaf symlink. */
|
|
167
166
|
export function persistToken(tokenPath, token) {
|
|
168
|
-
|
|
169
|
-
atomicWriteFileSync(tokenPath, token, { mode: 0o600 });
|
|
170
|
-
chmodSync(tokenPath, 0o600);
|
|
167
|
+
writeSecureHostFileSync(tokenPath, token);
|
|
171
168
|
}
|
|
172
|
-
/**
|
|
169
|
+
/**
|
|
170
|
+
* Load the active token, creating and persisting the first one when absent.
|
|
171
|
+
* The file lock makes get-or-create linearizable across dashboard processes:
|
|
172
|
+
* every concurrent caller returns the same durable token.
|
|
173
|
+
*/
|
|
173
174
|
export function loadOrCreatePersistedToken(tokenPath) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
175
|
+
const securePath = secureHostFilePath(tokenPath);
|
|
176
|
+
return withFileLockSync(securePath, () => {
|
|
177
|
+
const existing = loadPersistedToken(securePath);
|
|
178
|
+
if (existing)
|
|
179
|
+
return existing;
|
|
180
|
+
const token = generateToken();
|
|
181
|
+
persistToken(securePath, token);
|
|
182
|
+
return token;
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/** Generate and durably replace the token while serialized with first creation. */
|
|
186
|
+
export function rotatePersistedToken(tokenPath) {
|
|
187
|
+
const securePath = secureHostFilePath(tokenPath);
|
|
188
|
+
return withFileLockSync(securePath, () => {
|
|
189
|
+
const token = generateToken();
|
|
190
|
+
persistToken(securePath, token);
|
|
191
|
+
return token;
|
|
192
|
+
});
|
|
180
193
|
}
|
|
181
194
|
/** Extract `botmux_dashboard_token` value from a Cookie header. */
|
|
182
195
|
export function parseCookie(header) {
|
|
@@ -203,8 +216,9 @@ export function buildSetCookie(token) {
|
|
|
203
216
|
* workflow tombstone are handled separately in decideDashboardAuth. Full v3
|
|
204
217
|
* workflow projections stay private because goals, node ids, and run ids can
|
|
205
218
|
* contain project or personal information.
|
|
206
|
-
* 口径:公开 = 会话板 / 排程(脱敏) / 设置(只读) / 群名册 / 事件流。 */
|
|
219
|
+
* 口径:公开 = 运行摘要 / 会话板 / 排程(脱敏) / 设置(只读) / 群名册 / 事件流。 */
|
|
207
220
|
const PUBLIC_READ_PATHS = new Set([
|
|
221
|
+
'/api/dashboard/v1/summary', // strongly-redacted dashboard aggregate
|
|
208
222
|
'/api/sessions', // session board
|
|
209
223
|
'/api/schedules', // schedules page — task prompt redacted for anon upstream
|
|
210
224
|
'/api/settings', // read-only settings — only public flags + authed:false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,GACpF,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/dashboard/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot-onboarding.d.ts","sourceRoot":"","sources":["../../src/dashboard/bot-onboarding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot-onboarding.d.ts","sourceRoot":"","sources":["../../src/dashboard/bot-onboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,12 @@ import { dirname, join } from 'node:path';
|
|
|
4
4
|
import { readBotsJsonOrEmpty, writeBotsJsonAtomic } from '../setup/bots-store.js';
|
|
5
5
|
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
6
6
|
import { logger } from '../utils/logger.js';
|
|
7
|
-
import { normalizeBotConfig, findInvalidAllowedUserEntries, hasOwnerEntry
|
|
7
|
+
import { normalizeBotConfig, findInvalidAllowedUserEntries, hasOwnerEntry } from '../setup/bot-config-editor.js';
|
|
8
|
+
import { detectUnusableOwnerEntries, resolveScannerAllowedUser, resolveSessionEmailAllowedUser, } from '../setup/owner-identity.js';
|
|
8
9
|
import { tryRegisterApp } from '../setup/register-app.js';
|
|
9
10
|
import { validateCredentials, readCriticalScopesFromApplicationInfo, buildRemainingSteps, } from '../setup/verify-permissions.js';
|
|
10
11
|
import { resolveSetupAppName } from '../setup/app-name.js';
|
|
11
12
|
import { automateOpenPlatformSetup, BOT_BASELINE_APP_EVENTS, BOT_BASELINE_CALLBACKS, createFeishuOpenPlatformApp, inspectCachedFeishuOpenPlatformSession, } from '../setup/open-platform-automation.js';
|
|
12
|
-
import { sdkDomain } from '../im/lark/lark-hosts.js';
|
|
13
|
-
import * as Lark from '@larksuiteoapi/node-sdk';
|
|
14
13
|
const require = createRequire(import.meta.url);
|
|
15
14
|
const QRCode = require('qrcode-terminal/vendor/QRCode');
|
|
16
15
|
const QRErrorCorrectLevel = require('qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel');
|
|
@@ -1552,115 +1551,4 @@ export class BotOnboardingManager {
|
|
|
1552
1551
|
this.requireDurableManagedInitialJobs();
|
|
1553
1552
|
}
|
|
1554
1553
|
}
|
|
1555
|
-
/**
|
|
1556
|
-
* 用新应用自身凭证验证扫码链路拿到的 open_id。
|
|
1557
|
-
* 能解析 union_id 时写 on_;没有 union_id 但 open_id 对当前 app 有效时写 ou_。
|
|
1558
|
-
* 查询失败或用户不在当前 app 视角时返回 undefined,调用方不得 fallback 写入该 ou_。
|
|
1559
|
-
*/
|
|
1560
|
-
async function resolveScannerAllowedUser(appId, appSecret, openId, brand = 'feishu') {
|
|
1561
|
-
try {
|
|
1562
|
-
const client = new Lark.Client({ appId, appSecret, domain: sdkDomain(brand), disableTokenCache: false });
|
|
1563
|
-
const res = await client.contact.v3.user.get({
|
|
1564
|
-
path: { user_id: openId },
|
|
1565
|
-
params: { user_id_type: 'open_id' },
|
|
1566
|
-
});
|
|
1567
|
-
if (res.code === 0 && res.data?.user) {
|
|
1568
|
-
return res.data.user.union_id ?? openId;
|
|
1569
|
-
}
|
|
1570
|
-
}
|
|
1571
|
-
catch { /* do not trust scanner open_id when verification fails */ }
|
|
1572
|
-
return undefined;
|
|
1573
|
-
}
|
|
1574
|
-
/**
|
|
1575
|
-
* 用新应用自身凭证把 Web 登录身份邮箱解析成 owner 条目。
|
|
1576
|
-
* - 解析出 union_id → 落 on_(跨 app 稳定,与扫码链路对齐)。
|
|
1577
|
-
* - 成功响应但查不到任何 user_id → 确凿不在本企业(如个人邮箱)→ undefined,
|
|
1578
|
-
* 调用方回落 needs_owner 让用户复核。
|
|
1579
|
-
* - 请求失败 / 无法证伪(contact scope 未生效、网络错误)→ 直接返回邮箱本身:
|
|
1580
|
-
* 它来自刚完成登录的开放平台会话本人, 运行时 resolveAllowedUsers 会再解析。
|
|
1581
|
-
*/
|
|
1582
|
-
async function resolveSessionEmailAllowedUser(appId, appSecret, email, brand = 'feishu') {
|
|
1583
|
-
try {
|
|
1584
|
-
const client = new Lark.Client({ appId, appSecret, domain: sdkDomain(brand), disableTokenCache: false });
|
|
1585
|
-
const res = await client.contact.v3.user.batchGetId({
|
|
1586
|
-
params: { user_id_type: 'union_id' },
|
|
1587
|
-
data: { emails: [email], include_resigned: false },
|
|
1588
|
-
});
|
|
1589
|
-
if (res?.code === 0) {
|
|
1590
|
-
const list = res.data?.user_list ?? [];
|
|
1591
|
-
const hit = list.find(u => typeof u?.user_id === 'string' && u.user_id);
|
|
1592
|
-
return hit ? hit.user_id : undefined;
|
|
1593
|
-
}
|
|
1594
|
-
}
|
|
1595
|
-
catch { /* 无法证伪 → 信任会话邮箱 */ }
|
|
1596
|
-
return email;
|
|
1597
|
-
}
|
|
1598
|
-
// 跨 app open_id 的固定错误码:用本 app 凭证查别的 app 视角的 ou_ 必返这个。
|
|
1599
|
-
const CROSS_APP_OPEN_ID_CODE = 99992361;
|
|
1600
|
-
/**
|
|
1601
|
-
* best-effort 找出「确凿不可用」的 owner 条目, 供 submitOwner 拒绝。只在能明确判定时
|
|
1602
|
-
* 才判不可用——避免 scope 未生效 / 权限不足 / 网络错误时把合法条目误杀:
|
|
1603
|
-
* - ou_:本 app 查到跨 app 错误码 (99992361) → 不可用 (典型误填别的 app 的 open_id)。
|
|
1604
|
-
* - 邮箱:batchGetId 成功返回但该邮箱没有对应 user → 不可用 (不在本企业)。
|
|
1605
|
-
* - on_:union_id 无法构造确凿的「不属于本 app」信号, 一律放行 (留给运行时解析)。
|
|
1606
|
-
* 任何抛错 / 非确定性响应都视为「无法证伪」→ 不计入 unusable。
|
|
1607
|
-
*/
|
|
1608
|
-
async function detectUnusableOwnerEntries(appId, appSecret, brand, entries) {
|
|
1609
|
-
if (!appSecret)
|
|
1610
|
-
return [];
|
|
1611
|
-
let client;
|
|
1612
|
-
try {
|
|
1613
|
-
client = new Lark.Client({ appId, appSecret, domain: sdkDomain(brand), disableTokenCache: false });
|
|
1614
|
-
}
|
|
1615
|
-
catch {
|
|
1616
|
-
return [];
|
|
1617
|
-
}
|
|
1618
|
-
const unusable = [];
|
|
1619
|
-
for (const entry of entries) {
|
|
1620
|
-
try {
|
|
1621
|
-
if (entry.startsWith('ou_')) {
|
|
1622
|
-
const res = await client.contact.v3.user.get({
|
|
1623
|
-
path: { user_id: entry },
|
|
1624
|
-
params: { user_id_type: 'open_id' },
|
|
1625
|
-
});
|
|
1626
|
-
if (res?.code === CROSS_APP_OPEN_ID_CODE)
|
|
1627
|
-
unusable.push(entry);
|
|
1628
|
-
}
|
|
1629
|
-
else if (entry.startsWith('on_')) {
|
|
1630
|
-
// union_id:无确凿的跨 app 否定信号, 放行。
|
|
1631
|
-
continue;
|
|
1632
|
-
}
|
|
1633
|
-
else if (isMobileEntry(entry)) {
|
|
1634
|
-
// 手机号走 batch_get_id 的 `mobiles` 字段(与运行时 resolver 同口径),
|
|
1635
|
-
// 不能落到下面的 emails 分支——否则手机号被当邮箱查, code 0 + 空 user_list
|
|
1636
|
-
// 会把合法手机号误判为「不在本企业」而拒绝(P2)。判定同 email:成功响应
|
|
1637
|
-
// 里没有任何带 user_id 的条目 → 确凿不在本企业。
|
|
1638
|
-
const res = await client.contact.v3.user.batchGetId({
|
|
1639
|
-
params: { user_id_type: 'open_id' },
|
|
1640
|
-
data: { mobiles: [normalizeMobileEntry(entry)], include_resigned: false },
|
|
1641
|
-
});
|
|
1642
|
-
if (res?.code === 0) {
|
|
1643
|
-
const list = res.data?.user_list ?? [];
|
|
1644
|
-
if (!list.some(u => u?.user_id))
|
|
1645
|
-
unusable.push(entry);
|
|
1646
|
-
}
|
|
1647
|
-
}
|
|
1648
|
-
else {
|
|
1649
|
-
const res = await client.contact.v3.user.batchGetId({
|
|
1650
|
-
params: { user_id_type: 'open_id' },
|
|
1651
|
-
data: { emails: [entry], include_resigned: false },
|
|
1652
|
-
});
|
|
1653
|
-
// 单封邮箱查询:成功响应里没有任何带 user_id 的条目 → 确凿不在本企业。
|
|
1654
|
-
// 用「是否存在 user_id」而非「邮箱精确匹配」判定, 避开 API 侧邮箱规范化误杀。
|
|
1655
|
-
if (res?.code === 0) {
|
|
1656
|
-
const list = res.data?.user_list ?? [];
|
|
1657
|
-
if (!list.some(u => u?.user_id))
|
|
1658
|
-
unusable.push(entry);
|
|
1659
|
-
}
|
|
1660
|
-
}
|
|
1661
|
-
}
|
|
1662
|
-
catch { /* 无法证伪:不计入 unusable */ }
|
|
1663
|
-
}
|
|
1664
|
-
return unusable;
|
|
1665
|
-
}
|
|
1666
1554
|
//# sourceMappingURL=bot-onboarding.js.map
|