agor-live 0.23.1 → 0.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/claude/index.cjs +51 -27
- package/dist/core/claude/index.js +51 -27
- package/dist/core/claude-cli/index.cjs +13 -0
- package/dist/core/claude-cli/index.js +13 -0
- package/dist/core/claude-cli/pricing.d.ts.map +1 -1
- package/dist/core/client/index.cjs +17 -0
- package/dist/core/client/index.js +16 -0
- package/dist/core/db/index.cjs +618 -421
- package/dist/core/db/index.js +550 -353
- package/dist/core/db/repositories/boards.d.ts +27 -0
- package/dist/core/db/repositories/boards.d.ts.map +1 -1
- package/dist/core/db/repositories/branches.d.ts +11 -1
- package/dist/core/db/repositories/branches.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-channels.d.ts +9 -0
- package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
- package/dist/core/db/repositories/sessions.d.ts +7 -0
- package/dist/core/db/repositories/sessions.d.ts.map +1 -1
- package/dist/core/environment/render-snapshot.cjs +6 -2
- package/dist/core/environment/render-snapshot.d.ts +2 -0
- package/dist/core/environment/render-snapshot.d.ts.map +1 -1
- package/dist/core/environment/render-snapshot.js +6 -2
- package/dist/core/environment/variable-resolver.cjs +3 -1
- package/dist/core/environment/variable-resolver.js +3 -1
- package/dist/core/index.cjs +684 -486
- package/dist/core/index.js +684 -486
- package/dist/core/lib/feathers-validation.cjs +3 -0
- package/dist/core/lib/feathers-validation.d.ts +1 -0
- package/dist/core/lib/feathers-validation.d.ts.map +1 -1
- package/dist/core/lib/feathers-validation.js +3 -0
- package/dist/core/local-actions/index.cjs +123 -56
- package/dist/core/local-actions/index.js +121 -54
- package/dist/core/mcp/index.cjs +21 -3
- package/dist/core/mcp/index.d.ts +1 -1
- package/dist/core/mcp/index.d.ts.map +1 -1
- package/dist/core/mcp/index.js +18 -3
- package/dist/core/mcp/template-patterns.d.ts +15 -0
- package/dist/core/mcp/template-patterns.d.ts.map +1 -0
- package/dist/core/mcp/template-resolver.d.ts +13 -0
- package/dist/core/mcp/template-resolver.d.ts.map +1 -1
- package/dist/core/models/browser.cjs +6 -0
- package/dist/core/models/browser.js +6 -0
- package/dist/core/models/claude.d.ts.map +1 -1
- package/dist/core/models/index.cjs +6 -0
- package/dist/core/models/index.js +6 -0
- package/dist/core/seed/index.cjs +360 -216
- package/dist/core/seed/index.js +329 -185
- package/dist/core/templates/handlebars-helpers.cjs +3 -1
- package/dist/core/templates/handlebars-helpers.d.ts +5 -0
- package/dist/core/templates/handlebars-helpers.d.ts.map +1 -1
- package/dist/core/templates/handlebars-helpers.js +3 -1
- package/dist/core/tools/mcp/auth-secrets.cjs +3460 -3
- package/dist/core/tools/mcp/auth-secrets.d.ts.map +1 -1
- package/dist/core/tools/mcp/auth-secrets.js +3477 -3
- package/dist/core/tools/mcp/http-headers.cjs +17 -1
- package/dist/core/tools/mcp/http-headers.d.ts.map +1 -1
- package/dist/core/tools/mcp/http-headers.js +15 -1
- package/dist/core/tools/mcp/oauth-refresh.cjs +67 -43
- package/dist/core/tools/mcp/oauth-refresh.js +65 -41
- package/dist/core/types/board.d.ts +12 -0
- package/dist/core/types/board.d.ts.map +1 -1
- package/dist/core/types/gateway.d.ts +14 -0
- package/dist/core/types/gateway.d.ts.map +1 -1
- package/dist/core/types/index.cjs +17 -0
- package/dist/core/types/index.js +16 -0
- package/dist/core/unix/index.cjs +67 -0
- package/dist/core/unix/index.js +67 -0
- package/dist/daemon/auth/executor-runtime-scope.d.ts.map +1 -1
- package/dist/daemon/auth/executor-runtime-scope.js +19 -5
- package/dist/daemon/auth/executor-session-token.d.ts +15 -0
- package/dist/daemon/auth/executor-session-token.d.ts.map +1 -0
- package/dist/daemon/auth/executor-session-token.js +17 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.d.ts +24 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.d.ts.map +1 -0
- package/dist/daemon/auth/issue-browser-tokens-hook.js +95 -0
- package/dist/daemon/auth/service-jwt-strategy.d.ts.map +1 -1
- package/dist/daemon/auth/service-jwt-strategy.js +14 -2
- package/dist/daemon/declarations.d.ts +1 -0
- package/dist/daemon/declarations.d.ts.map +1 -1
- package/dist/daemon/index.js +1365 -418
- package/dist/daemon/main.js +1365 -418
- package/dist/daemon/mcp/server.js +294 -31
- package/dist/daemon/mcp/tools/analytics.js +73 -24
- package/dist/daemon/mcp/tools/artifacts.js +73 -24
- package/dist/daemon/mcp/tools/boards.js +73 -24
- package/dist/daemon/mcp/tools/branches.js +73 -24
- package/dist/daemon/mcp/tools/card-types.js +73 -24
- package/dist/daemon/mcp/tools/cards.js +73 -24
- package/dist/daemon/mcp/tools/environment.js +73 -24
- package/dist/daemon/mcp/tools/gateway-channels.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/gateway-channels.js +190 -38
- package/dist/daemon/mcp/tools/knowledge.js +73 -24
- package/dist/daemon/mcp/tools/mcp-servers.js +73 -24
- package/dist/daemon/mcp/tools/messages.js +73 -24
- package/dist/daemon/mcp/tools/proxies.js +73 -24
- package/dist/daemon/mcp/tools/repos.js +73 -24
- package/dist/daemon/mcp/tools/schedules.js +73 -24
- package/dist/daemon/mcp/tools/search.js +73 -24
- package/dist/daemon/mcp/tools/sessions.js +73 -24
- package/dist/daemon/mcp/tools/tasks.js +73 -24
- package/dist/daemon/mcp/tools/users.js +76 -27
- package/dist/daemon/mcp/tools/widgets.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/widgets.js +257 -99
- package/dist/daemon/oauth-auth-helpers.d.ts +35 -0
- package/dist/daemon/oauth-auth-helpers.d.ts.map +1 -0
- package/dist/daemon/oauth-auth-helpers.js +14 -0
- package/dist/daemon/register-hooks.d.ts +1 -0
- package/dist/daemon/register-hooks.d.ts.map +1 -1
- package/dist/daemon/register-hooks.js +304 -53
- package/dist/daemon/register-routes.d.ts.map +1 -1
- package/dist/daemon/register-routes.js +738 -288
- package/dist/daemon/register-services.d.ts.map +1 -1
- package/dist/daemon/register-services.js +386 -155
- package/dist/daemon/services/boards.d.ts +5 -0
- package/dist/daemon/services/boards.d.ts.map +1 -1
- package/dist/daemon/services/boards.js +7 -0
- package/dist/daemon/services/branches.d.ts.map +1 -1
- package/dist/daemon/services/branches.js +31 -2
- package/dist/daemon/services/claude-models.d.ts.map +1 -1
- package/dist/daemon/services/claude-models.js +4 -1
- package/dist/daemon/services/gateway.d.ts +15 -0
- package/dist/daemon/services/gateway.d.ts.map +1 -1
- package/dist/daemon/services/gateway.js +34 -0
- package/dist/daemon/services/health-monitor.d.ts.map +1 -1
- package/dist/daemon/services/health-monitor.js +10 -7
- package/dist/daemon/services/session-streams.d.ts +29 -0
- package/dist/daemon/services/session-streams.d.ts.map +1 -0
- package/dist/daemon/services/session-streams.js +84 -0
- package/dist/daemon/services/session-token-service.d.ts.map +1 -1
- package/dist/daemon/services/session-token-service.js +8 -4
- package/dist/daemon/setup/index.js +43 -11
- package/dist/daemon/setup/socketio.d.ts.map +1 -1
- package/dist/daemon/setup/socketio.js +43 -11
- package/dist/daemon/startup.d.ts.map +1 -1
- package/dist/daemon/startup.js +37 -16
- package/dist/daemon/utils/authorization.js +19 -5
- package/dist/daemon/utils/emit-service-event.d.ts +56 -0
- package/dist/daemon/utils/emit-service-event.d.ts.map +1 -0
- package/dist/daemon/utils/emit-service-event.js +23 -0
- package/dist/daemon/utils/mcp-header-secrets.d.ts +3 -5
- package/dist/daemon/utils/mcp-header-secrets.d.ts.map +1 -1
- package/dist/daemon/utils/mcp-header-secrets.js +31 -2
- package/dist/daemon/utils/realtime-access-cache.d.ts +9 -0
- package/dist/daemon/utils/realtime-access-cache.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-access-cache.js +24 -0
- package/dist/daemon/utils/realtime-publish.d.ts +24 -0
- package/dist/daemon/utils/realtime-publish.d.ts.map +1 -1
- package/dist/daemon/utils/realtime-publish.js +120 -2
- package/dist/daemon/utils/session-queue-tenant-scope.d.ts +24 -0
- package/dist/daemon/utils/session-queue-tenant-scope.d.ts.map +1 -0
- package/dist/daemon/utils/session-queue-tenant-scope.js +133 -0
- package/dist/daemon/widgets/gateway-token/index.d.ts +114 -0
- package/dist/daemon/widgets/gateway-token/index.d.ts.map +1 -0
- package/dist/daemon/widgets/gateway-token/index.js +14711 -0
- package/dist/daemon/widgets/index.d.ts.map +1 -1
- package/dist/daemon/widgets/index.js +190 -16
- package/dist/daemon/widgets/registry.d.ts +7 -0
- package/dist/daemon/widgets/registry.d.ts.map +1 -1
- package/dist/daemon/widgets/submissions.js +12 -9
- package/dist/executor/commands/git.d.ts.map +1 -1
- package/dist/executor/commands/git.js +2 -0
- package/dist/executor/db/feathers-repositories.d.ts +19 -1
- package/dist/executor/db/feathers-repositories.d.ts.map +1 -1
- package/dist/executor/db/feathers-repositories.js +31 -1
- package/dist/executor/handlers/sdk/claude.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/claude.js +1 -1
- package/dist/executor/handlers/sdk/codex.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/codex.js +1 -1
- package/dist/executor/handlers/sdk/copilot.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/copilot.js +1 -1
- package/dist/executor/handlers/sdk/cursor.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/cursor.js +1 -0
- package/dist/executor/handlers/sdk/gemini.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/gemini.js +1 -1
- package/dist/executor/handlers/sdk/opencode.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/opencode.js +1 -1
- package/dist/executor/payload-types.d.ts +5 -5
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +8 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.js +58 -6
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/claude-tool.js +2 -2
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +13 -3
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/prompt-service.js +16 -3
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts +2 -1
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/query-builder.js +2 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.js +2 -2
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +3 -2
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +70 -6
- package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/copilot-tool.js +2 -2
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +3 -2
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -1
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +2 -2
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/gemini-tool.js +2 -2
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +3 -2
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -1
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +3 -2
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/opencode/opencode-tool.js +4 -1
- package/dist/executor/services/feathers-client.d.ts.map +1 -1
- package/dist/executor/services/feathers-client.js +119 -20
- package/dist/ui/assets/AgorEmojiPickerInner-leeNywMc.js +1 -0
- package/dist/ui/assets/App-Dpl4Cc0U.js +4 -0
- package/dist/ui/assets/App-Dpl4Cc0U.js.gz +0 -0
- package/dist/ui/assets/AppNode-wN3UZlFK.js +1 -0
- package/dist/ui/assets/AppNode-wN3UZlFK.js.gz +0 -0
- package/dist/ui/assets/{ArtifactConsentModal-oMMzRn8L.js → ArtifactConsentModal-DjzXcP_L.js} +1 -1
- package/dist/ui/assets/ArtifactConsentModal-DjzXcP_L.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js +9 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3b_EZ0F.js.gz +0 -0
- package/dist/ui/assets/ArtifactNode-DISy2T-6.js +9 -0
- package/dist/ui/assets/ArtifactNode-DISy2T-6.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js +19 -0
- package/dist/ui/assets/AutocompleteTextarea-DUpsoEGr.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js +34 -0
- package/dist/ui/assets/BoardObjectNodes-BakeGpIX.js.gz +0 -0
- package/dist/ui/assets/{CodeEditor.inner-Cuj6RuLL.js → CodeEditor.inner-HmSdTLW5.js} +1 -1
- package/dist/ui/assets/CodeEditor.inner-HmSdTLW5.js.gz +0 -0
- package/dist/ui/assets/ConversationView-mWaA-B1f.js +1 -0
- package/dist/ui/assets/ConversationView-mWaA-B1f.js.gz +0 -0
- package/dist/ui/assets/{EmbeddedTerminal-Lx5I9EOJ.js → EmbeddedTerminal-NNoyPA81.js} +1 -1
- package/dist/ui/assets/EmbeddedTerminal-NNoyPA81.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-CkxVnRvz.js +24 -0
- package/dist/ui/assets/KnowledgePage-CkxVnRvz.js.gz +0 -0
- package/dist/ui/assets/{MarketingScreenshotPage-CmDPBHOl.js → MarketingScreenshotPage-B86Gs8jx.js} +2 -2
- package/dist/ui/assets/MarketingScreenshotPage-B86Gs8jx.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BPs-SXvz.js +1 -0
- package/dist/ui/assets/MobileApp-BPs-SXvz.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-xVfDoEtz.js +13 -0
- package/dist/ui/assets/SessionCanvas-xVfDoEtz.js.gz +0 -0
- package/dist/ui/assets/{StreamdownDemoPage-okKKR2QH.js → StreamdownDemoPage-CvWLzVsv.js} +2 -2
- package/dist/ui/assets/StreamdownDemoPage-CvWLzVsv.js.gz +0 -0
- package/dist/ui/assets/{TerminalModal-D9jMGZXv.js → TerminalModal-ExOgsuOP.js} +2 -2
- package/dist/ui/assets/TerminalModal-ExOgsuOP.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js +1 -0
- package/dist/ui/assets/ThemeSwitcher-Cgyp5ruu.js.gz +0 -0
- package/dist/ui/assets/{ThemedSyntaxHighlighter.inner-C1FdIHn0.js → ThemedSyntaxHighlighter.inner-rpCN9S6K.js} +1 -1
- package/dist/ui/assets/{antd-DT5ackd0.js → antd-BCqimh1J.js} +5 -5
- package/dist/ui/assets/{antd-DT5ackd0.js.gz → antd-BCqimh1J.js.gz} +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-BxSQIjrE.js +1 -0
- package/dist/ui/assets/{architectureDiagram-VXUJARFQ-DwTJGGoj.js → architectureDiagram-VXUJARFQ-pDpGHSqT.js} +1 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-pDpGHSqT.js.gz +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-Dh1_TVW2.js → blockDiagram-VD42YOAC-uP8JTJpK.js} +1 -1
- package/dist/ui/assets/blockDiagram-VD42YOAC-uP8JTJpK.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-B1e96AcB.js → c4Diagram-YG6GDRKO-qQe72Mm7.js} +1 -1
- package/dist/ui/assets/c4Diagram-YG6GDRKO-qQe72Mm7.js.gz +0 -0
- package/dist/ui/assets/channel-CoUBs6Zn.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-BODpCjJx.js → chunk-4BX2VUAB-sz-YE8Nt.js} +1 -1
- package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js +3 -0
- package/dist/ui/assets/chunk-4ZMWKKQ3-3oKtfWXp.js.gz +0 -0
- package/dist/ui/assets/chunk-55IACEB6-BS04dgKF.js +1 -0
- package/dist/ui/assets/{chunk-ABZYJK2D-DCTXWSzV.js → chunk-ABZYJK2D-t3Gkphds.js} +3 -3
- package/dist/ui/assets/chunk-ABZYJK2D-t3Gkphds.js.gz +0 -0
- package/dist/ui/assets/{chunk-AGHRB4JF-CbNphBjE.js → chunk-AGHRB4JF-D_QmWxbY.js} +1 -1
- package/dist/ui/assets/chunk-AGHRB4JF-D_QmWxbY.js.gz +0 -0
- package/dist/ui/assets/{chunk-ATLVNIR6-rWg3qxof.js → chunk-ATLVNIR6-Bmg7-Ufz.js} +1 -1
- package/dist/ui/assets/chunk-ATLVNIR6-Bmg7-Ufz.js.gz +0 -0
- package/dist/ui/assets/{chunk-B4BG7PRW-CgtLCbpE.js → chunk-B4BG7PRW-dnSEE1u-.js} +1 -1
- package/dist/ui/assets/chunk-B4BG7PRW-dnSEE1u-.js.gz +0 -0
- package/dist/ui/assets/{chunk-CVBHYZKI-DTL6Zgr0.js → chunk-CVBHYZKI-BStaYnF0.js} +1 -1
- package/dist/ui/assets/{chunk-DI55MBZ5-Dwvx2Kva.js → chunk-DI55MBZ5-28dvx6o3.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-28dvx6o3.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-X-FURkEh.js +1 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-BogA_9CV.js → chunk-FMBD7UC4-C_63gC9S.js} +1 -1
- package/dist/ui/assets/{chunk-HN2XXSSU-2blQO3Gb.js → chunk-HN2XXSSU-UFD374KI.js} +1 -1
- package/dist/ui/assets/chunk-HN2XXSSU-UFD374KI.js.gz +0 -0
- package/dist/ui/assets/{chunk-JA3XYJ7Z-Cr1rmOui.js → chunk-JA3XYJ7Z-B60hLNeR.js} +1 -1
- package/dist/ui/assets/chunk-JA3XYJ7Z-B60hLNeR.js.gz +0 -0
- package/dist/ui/assets/{chunk-JZLCHNYA-BsgZ79Fa.js → chunk-JZLCHNYA-ButC6pwN.js} +1 -1
- package/dist/ui/assets/chunk-JZLCHNYA-ButC6pwN.js.gz +0 -0
- package/dist/ui/assets/{chunk-MI3HLSF2-dwYeUy5S.js → chunk-MI3HLSF2-BivYzoSV.js} +1 -1
- package/dist/ui/assets/chunk-MI3HLSF2-BivYzoSV.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js +2 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mVWzo5wJ.js.gz +0 -0
- package/dist/ui/assets/{chunk-QN33PNHL-DxdIDCAa.js → chunk-QN33PNHL-tXtHZpaG.js} +1 -1
- package/dist/ui/assets/{chunk-QXUST7PY-BCK2V0i-.js → chunk-QXUST7PY-DATib_Vv.js} +1 -1
- package/dist/ui/assets/chunk-QXUST7PY-DATib_Vv.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-y6l249e5.js +1 -0
- package/dist/ui/assets/{chunk-S3R3BYOJ-GP3zIxrB.js → chunk-S3R3BYOJ-BEtfmflI.js} +1 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-BEtfmflI.js.gz +0 -0
- package/dist/ui/assets/{chunk-TZMSLE5B-dX5RaM6g.js → chunk-TZMSLE5B-BY1ZtogK.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-BY1ZtogK.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-BYvq-uPY.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BYvq-uPY.js +1 -0
- package/dist/ui/assets/constants-CYzQKfD1.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-Dx0BJVDl.js → cose-bilkent-S5V4N54A-DPvYrqGG.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-DPvYrqGG.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-DiQSUxqN.js → dagre-6UL2VRFP-D800J6qb.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-D800J6qb.js.gz +0 -0
- package/dist/ui/assets/{dagre-Bekd9Vdj.js → dagre-TNc4wezg.js} +1 -1
- package/dist/ui/assets/dagre-TNc4wezg.js.gz +0 -0
- package/dist/ui/assets/{diagram-PSM6KHXK-DtJnDQjc.js → diagram-PSM6KHXK-CGdP9F-X.js} +1 -1
- package/dist/ui/assets/diagram-PSM6KHXK-CGdP9F-X.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-CobkCRdj.js → diagram-QEK2KX5R-BD5lOCe5.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-BD5lOCe5.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-DHEZYivc.js → diagram-S2PKOQOG-cp3l22vN.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-cp3l22vN.js.gz +0 -0
- package/dist/ui/assets/editor-Cr0W5BQI.js +39 -0
- package/dist/ui/assets/editor-Cr0W5BQI.js.gz +0 -0
- package/dist/ui/assets/{emoji-B0hLmSLZ.js → emoji-Bv3m24sO.js} +1 -1
- package/dist/ui/assets/emoji-Bv3m24sO.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-BVNeTZPQ.js → erDiagram-Q2GNP2WA-CQSXRgqr.js} +1 -1
- package/dist/ui/assets/erDiagram-Q2GNP2WA-CQSXRgqr.js.gz +0 -0
- package/dist/ui/assets/{flowDiagram-NV44I4VS-C73VFdyk.js → flowDiagram-NV44I4VS-CKcKpkph.js} +1 -1
- package/dist/ui/assets/flowDiagram-NV44I4VS-CKcKpkph.js.gz +0 -0
- package/dist/ui/assets/{ganttDiagram-LVOFAZNH-B_RosuD1.js → ganttDiagram-LVOFAZNH-DlAHzXO5.js} +1 -1
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-DlAHzXO5.js.gz +0 -0
- package/dist/ui/assets/{gitGraph-F6HP7TQM-DMFIqn4h.js → gitGraph-F6HP7TQM-DeuXy4B1.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-hxbgwNA1.js → gitGraphDiagram-NY62KEGX-aB-AI4Vq.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-aB-AI4Vq.js.gz +0 -0
- package/dist/ui/assets/index-B-qHc0o5.js +63 -0
- package/dist/ui/assets/index-B-qHc0o5.js.gz +0 -0
- package/dist/ui/assets/{info-NVLQJR56-DZ3K-w48.js → info-NVLQJR56-B9PG7xsc.js} +1 -1
- package/dist/ui/assets/{infoDiagram-ER5ION4S-CxnBJQu6.js → infoDiagram-ER5ION4S-C5Wpoqim.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CHYNj-f8.js → journeyDiagram-XKPGCS4Q-CHLziqfS.js} +1 -1
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHLziqfS.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-DQPCCsj2.js → kanban-definition-3W4ZIXB7-Dq7GzQE_.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-Dq7GzQE_.js.gz +0 -0
- package/dist/ui/assets/{line-DBRjKmfa.js → line-DHKNg83I.js} +1 -1
- package/dist/ui/assets/{linear-DFao5Wyp.js → linear-BvUfn0I8.js} +1 -1
- package/dist/ui/assets/linear-BvUfn0I8.js.gz +0 -0
- package/dist/ui/assets/{mermaid-parser.core-DYCfacHj.js → mermaid-parser.core-C6d9tKoo.js} +2 -2
- package/dist/ui/assets/mermaid-parser.core-C6d9tKoo.js.gz +0 -0
- package/dist/ui/assets/{mermaid.core-C6xGFSdE.js → mermaid.core-CxE5KezR.js} +3 -3
- package/dist/ui/assets/mermaid.core-CxE5KezR.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-L3Pw-YM7.js → mindmap-definition-VGOIOE7T-DmPoQ48w.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-DmPoQ48w.js.gz +0 -0
- package/dist/ui/assets/{packet-BFZMPI3H-CpL6iNoa.js → packet-BFZMPI3H-JZEkVZxU.js} +1 -1
- package/dist/ui/assets/{particles-CT8hcJOA.js → particles-CxMmUw86.js} +1 -1
- package/dist/ui/assets/particles-CxMmUw86.js.gz +0 -0
- package/dist/ui/assets/{pie-7BOR55EZ-hTqChbTo.js → pie-7BOR55EZ-_1II5pYQ.js} +1 -1
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-Bf4Nou75.js → pieDiagram-ADFJNKIX-DrNkH33i.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-DrNkH33i.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-DpjUTLB1.js → quadrantDiagram-AYHSOK5B-DOpC-HEF.js} +1 -1
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DOpC-HEF.js.gz +0 -0
- package/dist/ui/assets/{radar-NHE76QYJ-myy7OENC.js → radar-NHE76QYJ-DDmqhzEZ.js} +1 -1
- package/dist/ui/assets/{reactflow-Cubtnk8i.js → reactflow-D98uPOMq.js} +1 -1
- package/dist/ui/assets/reactflow-D98uPOMq.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-Bfrfh-0-.js → requirementDiagram-UZGBJVZJ-Bzx0iEPP.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bzx0iEPP.js.gz +0 -0
- package/dist/ui/assets/{sandpack-C58bwfIS.js → sandpack-059Z4UWP.js} +1 -1
- package/dist/ui/assets/sandpack-059Z4UWP.js.gz +0 -0
- package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js +1 -0
- package/dist/ui/assets/sandpackDefaults-CPMNDsw7.js.gz +0 -0
- package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-ClZAZ6va.js → sankeyDiagram-TZEHDZUN-Do9pvfDv.js} +1 -1
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-Do9pvfDv.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-CNgly63p.js → sequenceDiagram-WL72ISMW-CN8neUTA.js} +1 -1
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CN8neUTA.js.gz +0 -0
- package/dist/ui/assets/{src-DAeyG22O.js → src-DEbsv3pp.js} +2 -2
- package/dist/ui/assets/src-DEbsv3pp.js.gz +0 -0
- package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BrEAoDpE.js → stateDiagram-FKZM4ZOC-BluWJi8n.js} +1 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BluWJi8n.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DeyqBMDR.js +1 -0
- package/dist/ui/assets/{streamdown-BdAVfkeF.js → streamdown-BT1twtFc.js} +5 -5
- package/dist/ui/assets/streamdown-BT1twtFc.js.gz +0 -0
- package/dist/ui/assets/{syntax-BOfTnQiy.js → syntax-CBu6nLfm.js} +1 -1
- package/dist/ui/assets/syntax-CBu6nLfm.js.gz +0 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-CaRH3k4l.js → timeline-definition-IT6M3QCI-WdUNkiRj.js} +1 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-WdUNkiRj.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-CUaLOV_B.js → treemap-KMMF4GRG-CoriU4Jl.js} +1 -1
- package/dist/ui/assets/{useUserLocalStorage-C8sgXgXR.js → useUserLocalStorage-GidNiOPC.js} +1 -1
- package/dist/ui/assets/useUserLocalStorage-GidNiOPC.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BlhkI9T_.js → xychartDiagram-PRI3JC2R-CgBAKNt2.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CgBAKNt2.js.gz +0 -0
- package/dist/ui/index.html +9 -8
- package/dist/ui/index.html.gz +0 -0
- package/package.json +2 -2
- package/dist/ui/assets/AgorEmojiPickerInner-DQjr8M3_.js +0 -1
- package/dist/ui/assets/App-hJtcOxHv.js +0 -5
- package/dist/ui/assets/App-hJtcOxHv.js.gz +0 -0
- package/dist/ui/assets/AppNode-BhuMpn8O.js +0 -1
- package/dist/ui/assets/AppNode-BhuMpn8O.js.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-oMMzRn8L.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js +0 -9
- package/dist/ui/assets/ArtifactFullscreenPage-B3wT8t8f.js.gz +0 -0
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js +0 -9
- package/dist/ui/assets/ArtifactNode-BzQcrwFS.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js +0 -19
- package/dist/ui/assets/AutocompleteTextarea-Dau-V_30.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js +0 -34
- package/dist/ui/assets/BoardObjectNodes-DdKWv_ZT.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-Cuj6RuLL.js.gz +0 -0
- package/dist/ui/assets/ConversationView-9-3ma1u-.js +0 -1
- package/dist/ui/assets/ConversationView-9-3ma1u-.js.gz +0 -0
- package/dist/ui/assets/EmbeddedTerminal-Lx5I9EOJ.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js +0 -24
- package/dist/ui/assets/KnowledgePage-Dz8YAMYC.js.gz +0 -0
- package/dist/ui/assets/MarketingScreenshotPage-CmDPBHOl.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BpgSG_gz.js +0 -1
- package/dist/ui/assets/MobileApp-BpgSG_gz.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js +0 -13
- package/dist/ui/assets/SessionCanvas-B6_mtlxK.js.gz +0 -0
- package/dist/ui/assets/StreamdownDemoPage-okKKR2QH.js.gz +0 -0
- package/dist/ui/assets/TerminalModal-D9jMGZXv.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js +0 -1
- package/dist/ui/assets/ThemeSwitcher-D9HgT37l.js.gz +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-DMnxkQRZ.js +0 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DwTJGGoj.js.gz +0 -0
- package/dist/ui/assets/blockDiagram-VD42YOAC-Dh1_TVW2.js.gz +0 -0
- package/dist/ui/assets/c4Diagram-YG6GDRKO-B1e96AcB.js.gz +0 -0
- package/dist/ui/assets/channel-Jv4dT4S5.js +0 -1
- package/dist/ui/assets/chunk-55IACEB6-lJXvUquf.js +0 -1
- package/dist/ui/assets/chunk-ABZYJK2D-DCTXWSzV.js.gz +0 -0
- package/dist/ui/assets/chunk-AGHRB4JF-CbNphBjE.js.gz +0 -0
- package/dist/ui/assets/chunk-ATLVNIR6-rWg3qxof.js.gz +0 -0
- package/dist/ui/assets/chunk-B4BG7PRW-CgtLCbpE.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-Dwvx2Kva.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-DHyaqTsP.js +0 -1
- package/dist/ui/assets/chunk-HN2XXSSU-2blQO3Gb.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cr1rmOui.js.gz +0 -0
- package/dist/ui/assets/chunk-JZLCHNYA-BsgZ79Fa.js.gz +0 -0
- package/dist/ui/assets/chunk-MI3HLSF2-dwYeUy5S.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js +0 -2
- package/dist/ui/assets/chunk-N4CR4FBY-DEMgSRVe.js.gz +0 -0
- package/dist/ui/assets/chunk-QXUST7PY-BCK2V0i-.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-CALjGrEE.js +0 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-GP3zIxrB.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-dX5RaM6g.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-C3_RVP70.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-C3_RVP70.js +0 -1
- package/dist/ui/assets/constants-GjIDNVyt.js +0 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-Dx0BJVDl.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-DiQSUxqN.js.gz +0 -0
- package/dist/ui/assets/dagre-Bekd9Vdj.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DtJnDQjc.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-CobkCRdj.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-DHEZYivc.js.gz +0 -0
- package/dist/ui/assets/editor-DQIG-JYZ.js +0 -43
- package/dist/ui/assets/editor-DQIG-JYZ.js.gz +0 -0
- package/dist/ui/assets/emoji-B0hLmSLZ.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-BVNeTZPQ.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-C73VFdyk.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-B_RosuD1.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-hxbgwNA1.js.gz +0 -0
- package/dist/ui/assets/index-DTz1Dif6.js +0 -64
- package/dist/ui/assets/index-DTz1Dif6.js.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CHYNj-f8.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-DQPCCsj2.js.gz +0 -0
- package/dist/ui/assets/linear-DFao5Wyp.js.gz +0 -0
- package/dist/ui/assets/mermaid-parser.core-DYCfacHj.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-C6xGFSdE.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-L3Pw-YM7.js.gz +0 -0
- package/dist/ui/assets/particles-CT8hcJOA.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-Bf4Nou75.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DpjUTLB1.js.gz +0 -0
- package/dist/ui/assets/reactflow-Cubtnk8i.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-Bfrfh-0-.js.gz +0 -0
- package/dist/ui/assets/sandpack-C58bwfIS.js.gz +0 -0
- package/dist/ui/assets/sandpackDefaults-Bkga8XAE.js +0 -1
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-ClZAZ6va.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CNgly63p.js.gz +0 -0
- package/dist/ui/assets/src-DAeyG22O.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BrEAoDpE.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BNL52_oN.js +0 -1
- package/dist/ui/assets/streamdown-BdAVfkeF.js.gz +0 -0
- package/dist/ui/assets/syntax-BOfTnQiy.js.gz +0 -0
- package/dist/ui/assets/timeline-definition-IT6M3QCI-CaRH3k4l.js.gz +0 -0
- package/dist/ui/assets/useUserLocalStorage-C8sgXgXR.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-BlhkI9T_.js.gz +0 -0
|
@@ -14770,11 +14770,15 @@ import {
|
|
|
14770
14770
|
ThreadSessionMapRepository
|
|
14771
14771
|
} from "@agor/core/db";
|
|
14772
14772
|
import {
|
|
14773
|
-
|
|
14773
|
+
buildSlackManifest,
|
|
14774
|
+
getConnector,
|
|
14775
|
+
requiredBotEvents,
|
|
14776
|
+
requiredBotScopes
|
|
14774
14777
|
} from "@agor/core/gateway";
|
|
14775
14778
|
import {
|
|
14776
14779
|
GATEWAY_REDACTED_SENTINEL,
|
|
14777
14780
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14781
|
+
getRequiredSecretFields,
|
|
14778
14782
|
hasMinimumRole as hasMinimumRole2,
|
|
14779
14783
|
ROLES as ROLES2
|
|
14780
14784
|
} from "@agor/core/types";
|
|
@@ -14834,44 +14838,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14834
14838
|
agenticConfig: agenticConfigSchema.optional()
|
|
14835
14839
|
}).superRefine((value, issue2) => {
|
|
14836
14840
|
const config2 = value.config ?? {};
|
|
14837
|
-
if (value.
|
|
14838
|
-
|
|
14839
|
-
|
|
14840
|
-
|
|
14841
|
-
|
|
14842
|
-
|
|
14843
|
-
|
|
14844
|
-
|
|
14845
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14846
|
-
issue2.addIssue({
|
|
14847
|
-
code: "custom",
|
|
14848
|
-
path: ["config", "app_token"],
|
|
14849
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14850
|
-
});
|
|
14851
|
-
}
|
|
14852
|
-
}
|
|
14853
|
-
if (value.channelType === "github") {
|
|
14854
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14841
|
+
if (value.enabled !== false) {
|
|
14842
|
+
const requiredSecretMessages = {
|
|
14843
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14844
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14845
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14846
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14847
|
+
};
|
|
14848
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14855
14849
|
if (!config2[field]) {
|
|
14856
14850
|
issue2.addIssue({
|
|
14857
14851
|
code: "custom",
|
|
14858
14852
|
path: ["config", field],
|
|
14859
|
-
message: `config.${field} is required for
|
|
14853
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14860
14854
|
});
|
|
14861
14855
|
}
|
|
14862
14856
|
}
|
|
14863
14857
|
}
|
|
14864
|
-
if (value.channelType === "
|
|
14865
|
-
for (const field of ["app_id", "
|
|
14858
|
+
if (value.channelType === "github") {
|
|
14859
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14866
14860
|
if (!config2[field]) {
|
|
14867
14861
|
issue2.addIssue({
|
|
14868
14862
|
code: "custom",
|
|
14869
14863
|
path: ["config", field],
|
|
14870
|
-
message: `config.${field} is required for
|
|
14864
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14871
14865
|
});
|
|
14872
14866
|
}
|
|
14873
14867
|
}
|
|
14874
14868
|
}
|
|
14869
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14870
|
+
issue2.addIssue({
|
|
14871
|
+
code: "custom",
|
|
14872
|
+
path: ["config", "app_id"],
|
|
14873
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14874
|
+
});
|
|
14875
|
+
}
|
|
14876
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14877
|
+
issue2.addIssue({
|
|
14878
|
+
code: "custom",
|
|
14879
|
+
path: ["agorUserId"],
|
|
14880
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14881
|
+
});
|
|
14882
|
+
}
|
|
14875
14883
|
});
|
|
14876
14884
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14877
14885
|
sessionId: mcpOptionalId(
|
|
@@ -14935,6 +14943,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14935
14943
|
),
|
|
14936
14944
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14937
14945
|
});
|
|
14946
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14947
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14948
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14949
|
+
"botDisplayName",
|
|
14950
|
+
"Bot user display name. Defaults to appName."
|
|
14951
|
+
),
|
|
14952
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14953
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14954
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14955
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14956
|
+
"Resolve Slack user email \u2192 Agor user (adds the users:read.email scope). Defaults to true: each Slack user runs as their matched Agor account and unmatched users are rejected, so no fixed run-as user is needed. Set false to run every message as one fixed Agor user (then pass agorUserId to agor_gateway_channels_create)."
|
|
14957
|
+
),
|
|
14958
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14959
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14960
|
+
"Slack channel ID whitelist. Maps to config.allowed_channel_ids when you call agor_gateway_channels_create; it does NOT change the manifest scopes or events."
|
|
14961
|
+
)
|
|
14962
|
+
});
|
|
14938
14963
|
|
|
14939
14964
|
// src/mcp/tools/knowledge.ts
|
|
14940
14965
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15452,7 +15477,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15452
15477
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15453
15478
|
|
|
15454
15479
|
// src/mcp/tools/widgets.ts
|
|
15455
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15480
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15456
15481
|
|
|
15457
15482
|
// src/utils/append-system-message.ts
|
|
15458
15483
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15535,6 +15560,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15535
15560
|
}
|
|
15536
15561
|
});
|
|
15537
15562
|
|
|
15563
|
+
// src/widgets/gateway-token/index.ts
|
|
15564
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15565
|
+
import {
|
|
15566
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15567
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15568
|
+
ROLES as ROLES5
|
|
15569
|
+
} from "@agor/core/types";
|
|
15570
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15571
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15572
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15573
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15574
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15575
|
+
fields: external_exports.array(external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2)).min(1).max(GATEWAY_SENSITIVE_CONFIG_FIELDS2.length).refine((fields) => new Set(fields).size === fields.length, {
|
|
15576
|
+
message: "Token field names must be unique"
|
|
15577
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15578
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15579
|
+
}).strict();
|
|
15580
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15581
|
+
tokens: external_exports.partialRecord(
|
|
15582
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15583
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15584
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15585
|
+
}).strict();
|
|
15586
|
+
|
|
15538
15587
|
// src/mcp/server.ts
|
|
15539
15588
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15540
15589
|
function textResult(data) {
|
|
@@ -14832,11 +14832,15 @@ import {
|
|
|
14832
14832
|
ThreadSessionMapRepository
|
|
14833
14833
|
} from "@agor/core/db";
|
|
14834
14834
|
import {
|
|
14835
|
-
|
|
14835
|
+
buildSlackManifest,
|
|
14836
|
+
getConnector,
|
|
14837
|
+
requiredBotEvents,
|
|
14838
|
+
requiredBotScopes
|
|
14836
14839
|
} from "@agor/core/gateway";
|
|
14837
14840
|
import {
|
|
14838
14841
|
GATEWAY_REDACTED_SENTINEL,
|
|
14839
14842
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14843
|
+
getRequiredSecretFields,
|
|
14840
14844
|
hasMinimumRole as hasMinimumRole2,
|
|
14841
14845
|
ROLES as ROLES2
|
|
14842
14846
|
} from "@agor/core/types";
|
|
@@ -14896,44 +14900,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14896
14900
|
agenticConfig: agenticConfigSchema.optional()
|
|
14897
14901
|
}).superRefine((value, issue2) => {
|
|
14898
14902
|
const config2 = value.config ?? {};
|
|
14899
|
-
if (value.
|
|
14900
|
-
|
|
14901
|
-
|
|
14902
|
-
|
|
14903
|
-
|
|
14904
|
-
|
|
14905
|
-
|
|
14906
|
-
|
|
14907
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14908
|
-
issue2.addIssue({
|
|
14909
|
-
code: "custom",
|
|
14910
|
-
path: ["config", "app_token"],
|
|
14911
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14912
|
-
});
|
|
14913
|
-
}
|
|
14914
|
-
}
|
|
14915
|
-
if (value.channelType === "github") {
|
|
14916
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14903
|
+
if (value.enabled !== false) {
|
|
14904
|
+
const requiredSecretMessages = {
|
|
14905
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14906
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14907
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14908
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14909
|
+
};
|
|
14910
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14917
14911
|
if (!config2[field]) {
|
|
14918
14912
|
issue2.addIssue({
|
|
14919
14913
|
code: "custom",
|
|
14920
14914
|
path: ["config", field],
|
|
14921
|
-
message: `config.${field} is required for
|
|
14915
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14922
14916
|
});
|
|
14923
14917
|
}
|
|
14924
14918
|
}
|
|
14925
14919
|
}
|
|
14926
|
-
if (value.channelType === "
|
|
14927
|
-
for (const field of ["app_id", "
|
|
14920
|
+
if (value.channelType === "github") {
|
|
14921
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14928
14922
|
if (!config2[field]) {
|
|
14929
14923
|
issue2.addIssue({
|
|
14930
14924
|
code: "custom",
|
|
14931
14925
|
path: ["config", field],
|
|
14932
|
-
message: `config.${field} is required for
|
|
14926
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14933
14927
|
});
|
|
14934
14928
|
}
|
|
14935
14929
|
}
|
|
14936
14930
|
}
|
|
14931
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14932
|
+
issue2.addIssue({
|
|
14933
|
+
code: "custom",
|
|
14934
|
+
path: ["config", "app_id"],
|
|
14935
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14936
|
+
});
|
|
14937
|
+
}
|
|
14938
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14939
|
+
issue2.addIssue({
|
|
14940
|
+
code: "custom",
|
|
14941
|
+
path: ["agorUserId"],
|
|
14942
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14943
|
+
});
|
|
14944
|
+
}
|
|
14937
14945
|
});
|
|
14938
14946
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14939
14947
|
sessionId: mcpOptionalId(
|
|
@@ -14997,6 +15005,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14997
15005
|
),
|
|
14998
15006
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14999
15007
|
});
|
|
15008
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
15009
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
15010
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
15011
|
+
"botDisplayName",
|
|
15012
|
+
"Bot user display name. Defaults to appName."
|
|
15013
|
+
),
|
|
15014
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
15015
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
15016
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
15017
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
15018
|
+
"Resolve Slack user email \u2192 Agor user (adds the users:read.email scope). Defaults to true: each Slack user runs as their matched Agor account and unmatched users are rejected, so no fixed run-as user is needed. Set false to run every message as one fixed Agor user (then pass agorUserId to agor_gateway_channels_create)."
|
|
15019
|
+
),
|
|
15020
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
15021
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
15022
|
+
"Slack channel ID whitelist. Maps to config.allowed_channel_ids when you call agor_gateway_channels_create; it does NOT change the manifest scopes or events."
|
|
15023
|
+
)
|
|
15024
|
+
});
|
|
15000
15025
|
|
|
15001
15026
|
// src/mcp/tools/knowledge.ts
|
|
15002
15027
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15535,7 +15560,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15535
15560
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15536
15561
|
|
|
15537
15562
|
// src/mcp/tools/widgets.ts
|
|
15538
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15563
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15539
15564
|
|
|
15540
15565
|
// src/utils/append-system-message.ts
|
|
15541
15566
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15618,6 +15643,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15618
15643
|
}
|
|
15619
15644
|
});
|
|
15620
15645
|
|
|
15646
|
+
// src/widgets/gateway-token/index.ts
|
|
15647
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15648
|
+
import {
|
|
15649
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15650
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15651
|
+
ROLES as ROLES5
|
|
15652
|
+
} from "@agor/core/types";
|
|
15653
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15654
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15655
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15656
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15657
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15658
|
+
fields: external_exports.array(external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2)).min(1).max(GATEWAY_SENSITIVE_CONFIG_FIELDS2.length).refine((fields) => new Set(fields).size === fields.length, {
|
|
15659
|
+
message: "Token field names must be unique"
|
|
15660
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15661
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15662
|
+
}).strict();
|
|
15663
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15664
|
+
tokens: external_exports.partialRecord(
|
|
15665
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15666
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15667
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15668
|
+
}).strict();
|
|
15669
|
+
|
|
15621
15670
|
// src/mcp/server.ts
|
|
15622
15671
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15623
15672
|
function coerceJsonRecord(value) {
|
|
@@ -15276,11 +15276,15 @@ import {
|
|
|
15276
15276
|
ThreadSessionMapRepository
|
|
15277
15277
|
} from "@agor/core/db";
|
|
15278
15278
|
import {
|
|
15279
|
-
|
|
15279
|
+
buildSlackManifest,
|
|
15280
|
+
getConnector,
|
|
15281
|
+
requiredBotEvents,
|
|
15282
|
+
requiredBotScopes
|
|
15280
15283
|
} from "@agor/core/gateway";
|
|
15281
15284
|
import {
|
|
15282
15285
|
GATEWAY_REDACTED_SENTINEL,
|
|
15283
15286
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
15287
|
+
getRequiredSecretFields,
|
|
15284
15288
|
hasMinimumRole as hasMinimumRole2,
|
|
15285
15289
|
ROLES as ROLES2
|
|
15286
15290
|
} from "@agor/core/types";
|
|
@@ -15340,44 +15344,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
15340
15344
|
agenticConfig: agenticConfigSchema.optional()
|
|
15341
15345
|
}).superRefine((value, issue2) => {
|
|
15342
15346
|
const config2 = value.config ?? {};
|
|
15343
|
-
if (value.
|
|
15344
|
-
|
|
15345
|
-
|
|
15346
|
-
|
|
15347
|
-
|
|
15348
|
-
|
|
15349
|
-
|
|
15350
|
-
|
|
15351
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
15352
|
-
issue2.addIssue({
|
|
15353
|
-
code: "custom",
|
|
15354
|
-
path: ["config", "app_token"],
|
|
15355
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
15356
|
-
});
|
|
15357
|
-
}
|
|
15358
|
-
}
|
|
15359
|
-
if (value.channelType === "github") {
|
|
15360
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
15347
|
+
if (value.enabled !== false) {
|
|
15348
|
+
const requiredSecretMessages = {
|
|
15349
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
15350
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
15351
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
15352
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
15353
|
+
};
|
|
15354
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
15361
15355
|
if (!config2[field]) {
|
|
15362
15356
|
issue2.addIssue({
|
|
15363
15357
|
code: "custom",
|
|
15364
15358
|
path: ["config", field],
|
|
15365
|
-
message: `config.${field} is required for
|
|
15359
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
15366
15360
|
});
|
|
15367
15361
|
}
|
|
15368
15362
|
}
|
|
15369
15363
|
}
|
|
15370
|
-
if (value.channelType === "
|
|
15371
|
-
for (const field of ["app_id", "
|
|
15364
|
+
if (value.channelType === "github") {
|
|
15365
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
15372
15366
|
if (!config2[field]) {
|
|
15373
15367
|
issue2.addIssue({
|
|
15374
15368
|
code: "custom",
|
|
15375
15369
|
path: ["config", field],
|
|
15376
|
-
message: `config.${field} is required for
|
|
15370
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
15377
15371
|
});
|
|
15378
15372
|
}
|
|
15379
15373
|
}
|
|
15380
15374
|
}
|
|
15375
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
15376
|
+
issue2.addIssue({
|
|
15377
|
+
code: "custom",
|
|
15378
|
+
path: ["config", "app_id"],
|
|
15379
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
15380
|
+
});
|
|
15381
|
+
}
|
|
15382
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
15383
|
+
issue2.addIssue({
|
|
15384
|
+
code: "custom",
|
|
15385
|
+
path: ["agorUserId"],
|
|
15386
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
15387
|
+
});
|
|
15388
|
+
}
|
|
15381
15389
|
});
|
|
15382
15390
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
15383
15391
|
sessionId: mcpOptionalId(
|
|
@@ -15441,6 +15449,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
15441
15449
|
),
|
|
15442
15450
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
15443
15451
|
});
|
|
15452
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
15453
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
15454
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
15455
|
+
"botDisplayName",
|
|
15456
|
+
"Bot user display name. Defaults to appName."
|
|
15457
|
+
),
|
|
15458
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
15459
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
15460
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
15461
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
15462
|
+
"Resolve Slack user email \u2192 Agor user (adds the users:read.email scope). Defaults to true: each Slack user runs as their matched Agor account and unmatched users are rejected, so no fixed run-as user is needed. Set false to run every message as one fixed Agor user (then pass agorUserId to agor_gateway_channels_create)."
|
|
15463
|
+
),
|
|
15464
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
15465
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
15466
|
+
"Slack channel ID whitelist. Maps to config.allowed_channel_ids when you call agor_gateway_channels_create; it does NOT change the manifest scopes or events."
|
|
15467
|
+
)
|
|
15468
|
+
});
|
|
15444
15469
|
|
|
15445
15470
|
// src/mcp/tools/knowledge.ts
|
|
15446
15471
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15982,7 +16007,7 @@ var agenticToolConfigSchema = external_exports.object({
|
|
|
15982
16007
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15983
16008
|
|
|
15984
16009
|
// src/mcp/tools/widgets.ts
|
|
15985
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
16010
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15986
16011
|
|
|
15987
16012
|
// src/utils/append-system-message.ts
|
|
15988
16013
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -16065,6 +16090,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
16065
16090
|
}
|
|
16066
16091
|
});
|
|
16067
16092
|
|
|
16093
|
+
// src/widgets/gateway-token/index.ts
|
|
16094
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
16095
|
+
import {
|
|
16096
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
16097
|
+
hasMinimumRole as hasMinimumRole4,
|
|
16098
|
+
ROLES as ROLES5
|
|
16099
|
+
} from "@agor/core/types";
|
|
16100
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
16101
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
16102
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
16103
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
16104
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
16105
|
+
fields: external_exports.array(external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2)).min(1).max(GATEWAY_SENSITIVE_CONFIG_FIELDS2.length).refine((fields) => new Set(fields).size === fields.length, {
|
|
16106
|
+
message: "Token field names must be unique"
|
|
16107
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
16108
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
16109
|
+
}).strict();
|
|
16110
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
16111
|
+
tokens: external_exports.partialRecord(
|
|
16112
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
16113
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
16114
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
16115
|
+
}).strict();
|
|
16116
|
+
|
|
16068
16117
|
// src/mcp/server.ts
|
|
16069
16118
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
16070
16119
|
function textResult(data) {
|
|
@@ -14753,11 +14753,15 @@ import {
|
|
|
14753
14753
|
ThreadSessionMapRepository
|
|
14754
14754
|
} from "@agor/core/db";
|
|
14755
14755
|
import {
|
|
14756
|
-
|
|
14756
|
+
buildSlackManifest,
|
|
14757
|
+
getConnector,
|
|
14758
|
+
requiredBotEvents,
|
|
14759
|
+
requiredBotScopes
|
|
14757
14760
|
} from "@agor/core/gateway";
|
|
14758
14761
|
import {
|
|
14759
14762
|
GATEWAY_REDACTED_SENTINEL,
|
|
14760
14763
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14764
|
+
getRequiredSecretFields,
|
|
14761
14765
|
hasMinimumRole as hasMinimumRole2,
|
|
14762
14766
|
ROLES as ROLES2
|
|
14763
14767
|
} from "@agor/core/types";
|
|
@@ -14817,44 +14821,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14817
14821
|
agenticConfig: agenticConfigSchema.optional()
|
|
14818
14822
|
}).superRefine((value, issue2) => {
|
|
14819
14823
|
const config2 = value.config ?? {};
|
|
14820
|
-
if (value.
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
|
|
14825
|
-
|
|
14826
|
-
|
|
14827
|
-
|
|
14828
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14829
|
-
issue2.addIssue({
|
|
14830
|
-
code: "custom",
|
|
14831
|
-
path: ["config", "app_token"],
|
|
14832
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14833
|
-
});
|
|
14834
|
-
}
|
|
14835
|
-
}
|
|
14836
|
-
if (value.channelType === "github") {
|
|
14837
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14824
|
+
if (value.enabled !== false) {
|
|
14825
|
+
const requiredSecretMessages = {
|
|
14826
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14827
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14828
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14829
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14830
|
+
};
|
|
14831
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14838
14832
|
if (!config2[field]) {
|
|
14839
14833
|
issue2.addIssue({
|
|
14840
14834
|
code: "custom",
|
|
14841
14835
|
path: ["config", field],
|
|
14842
|
-
message: `config.${field} is required for
|
|
14836
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14843
14837
|
});
|
|
14844
14838
|
}
|
|
14845
14839
|
}
|
|
14846
14840
|
}
|
|
14847
|
-
if (value.channelType === "
|
|
14848
|
-
for (const field of ["app_id", "
|
|
14841
|
+
if (value.channelType === "github") {
|
|
14842
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14849
14843
|
if (!config2[field]) {
|
|
14850
14844
|
issue2.addIssue({
|
|
14851
14845
|
code: "custom",
|
|
14852
14846
|
path: ["config", field],
|
|
14853
|
-
message: `config.${field} is required for
|
|
14847
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14854
14848
|
});
|
|
14855
14849
|
}
|
|
14856
14850
|
}
|
|
14857
14851
|
}
|
|
14852
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14853
|
+
issue2.addIssue({
|
|
14854
|
+
code: "custom",
|
|
14855
|
+
path: ["config", "app_id"],
|
|
14856
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14857
|
+
});
|
|
14858
|
+
}
|
|
14859
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14860
|
+
issue2.addIssue({
|
|
14861
|
+
code: "custom",
|
|
14862
|
+
path: ["agorUserId"],
|
|
14863
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14864
|
+
});
|
|
14865
|
+
}
|
|
14858
14866
|
});
|
|
14859
14867
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14860
14868
|
sessionId: mcpOptionalId(
|
|
@@ -14918,6 +14926,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14918
14926
|
),
|
|
14919
14927
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14920
14928
|
});
|
|
14929
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14930
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14931
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14932
|
+
"botDisplayName",
|
|
14933
|
+
"Bot user display name. Defaults to appName."
|
|
14934
|
+
),
|
|
14935
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14936
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14937
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14938
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14939
|
+
"Resolve Slack user email \u2192 Agor user (adds the users:read.email scope). Defaults to true: each Slack user runs as their matched Agor account and unmatched users are rejected, so no fixed run-as user is needed. Set false to run every message as one fixed Agor user (then pass agorUserId to agor_gateway_channels_create)."
|
|
14940
|
+
),
|
|
14941
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14942
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14943
|
+
"Slack channel ID whitelist. Maps to config.allowed_channel_ids when you call agor_gateway_channels_create; it does NOT change the manifest scopes or events."
|
|
14944
|
+
)
|
|
14945
|
+
});
|
|
14921
14946
|
|
|
14922
14947
|
// src/mcp/tools/knowledge.ts
|
|
14923
14948
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15456,7 +15481,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15456
15481
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15457
15482
|
|
|
15458
15483
|
// src/mcp/tools/widgets.ts
|
|
15459
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15484
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15460
15485
|
|
|
15461
15486
|
// src/utils/append-system-message.ts
|
|
15462
15487
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15539,6 +15564,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15539
15564
|
}
|
|
15540
15565
|
});
|
|
15541
15566
|
|
|
15567
|
+
// src/widgets/gateway-token/index.ts
|
|
15568
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15569
|
+
import {
|
|
15570
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15571
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15572
|
+
ROLES as ROLES5
|
|
15573
|
+
} from "@agor/core/types";
|
|
15574
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15575
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15576
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15577
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15578
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15579
|
+
fields: external_exports.array(external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2)).min(1).max(GATEWAY_SENSITIVE_CONFIG_FIELDS2.length).refine((fields) => new Set(fields).size === fields.length, {
|
|
15580
|
+
message: "Token field names must be unique"
|
|
15581
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15582
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15583
|
+
}).strict();
|
|
15584
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15585
|
+
tokens: external_exports.partialRecord(
|
|
15586
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15587
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15588
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15589
|
+
}).strict();
|
|
15590
|
+
|
|
15542
15591
|
// src/mcp/server.ts
|
|
15543
15592
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15544
15593
|
function textResult(data) {
|