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
|
@@ -14739,11 +14739,15 @@ import {
|
|
|
14739
14739
|
ThreadSessionMapRepository
|
|
14740
14740
|
} from "@agor/core/db";
|
|
14741
14741
|
import {
|
|
14742
|
-
|
|
14742
|
+
buildSlackManifest,
|
|
14743
|
+
getConnector,
|
|
14744
|
+
requiredBotEvents,
|
|
14745
|
+
requiredBotScopes
|
|
14743
14746
|
} from "@agor/core/gateway";
|
|
14744
14747
|
import {
|
|
14745
14748
|
GATEWAY_REDACTED_SENTINEL,
|
|
14746
14749
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14750
|
+
getRequiredSecretFields,
|
|
14747
14751
|
hasMinimumRole as hasMinimumRole2,
|
|
14748
14752
|
ROLES as ROLES2
|
|
14749
14753
|
} from "@agor/core/types";
|
|
@@ -14803,44 +14807,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14803
14807
|
agenticConfig: agenticConfigSchema.optional()
|
|
14804
14808
|
}).superRefine((value, issue2) => {
|
|
14805
14809
|
const config2 = value.config ?? {};
|
|
14806
|
-
if (value.
|
|
14807
|
-
|
|
14808
|
-
|
|
14809
|
-
|
|
14810
|
-
|
|
14811
|
-
|
|
14812
|
-
|
|
14813
|
-
|
|
14814
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14815
|
-
issue2.addIssue({
|
|
14816
|
-
code: "custom",
|
|
14817
|
-
path: ["config", "app_token"],
|
|
14818
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14819
|
-
});
|
|
14820
|
-
}
|
|
14821
|
-
}
|
|
14822
|
-
if (value.channelType === "github") {
|
|
14823
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14810
|
+
if (value.enabled !== false) {
|
|
14811
|
+
const requiredSecretMessages = {
|
|
14812
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14813
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14814
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14815
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14816
|
+
};
|
|
14817
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14824
14818
|
if (!config2[field]) {
|
|
14825
14819
|
issue2.addIssue({
|
|
14826
14820
|
code: "custom",
|
|
14827
14821
|
path: ["config", field],
|
|
14828
|
-
message: `config.${field} is required for
|
|
14822
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14829
14823
|
});
|
|
14830
14824
|
}
|
|
14831
14825
|
}
|
|
14832
14826
|
}
|
|
14833
|
-
if (value.channelType === "
|
|
14834
|
-
for (const field of ["app_id", "
|
|
14827
|
+
if (value.channelType === "github") {
|
|
14828
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14835
14829
|
if (!config2[field]) {
|
|
14836
14830
|
issue2.addIssue({
|
|
14837
14831
|
code: "custom",
|
|
14838
14832
|
path: ["config", field],
|
|
14839
|
-
message: `config.${field} is required for
|
|
14833
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14840
14834
|
});
|
|
14841
14835
|
}
|
|
14842
14836
|
}
|
|
14843
14837
|
}
|
|
14838
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14839
|
+
issue2.addIssue({
|
|
14840
|
+
code: "custom",
|
|
14841
|
+
path: ["config", "app_id"],
|
|
14842
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14843
|
+
});
|
|
14844
|
+
}
|
|
14845
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14846
|
+
issue2.addIssue({
|
|
14847
|
+
code: "custom",
|
|
14848
|
+
path: ["agorUserId"],
|
|
14849
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14850
|
+
});
|
|
14851
|
+
}
|
|
14844
14852
|
});
|
|
14845
14853
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14846
14854
|
sessionId: mcpOptionalId(
|
|
@@ -14904,6 +14912,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14904
14912
|
),
|
|
14905
14913
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14906
14914
|
});
|
|
14915
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14916
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14917
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14918
|
+
"botDisplayName",
|
|
14919
|
+
"Bot user display name. Defaults to appName."
|
|
14920
|
+
),
|
|
14921
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14922
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14923
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14924
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14925
|
+
"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)."
|
|
14926
|
+
),
|
|
14927
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14928
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14929
|
+
"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."
|
|
14930
|
+
)
|
|
14931
|
+
});
|
|
14907
14932
|
|
|
14908
14933
|
// src/mcp/tools/knowledge.ts
|
|
14909
14934
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15442,7 +15467,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15442
15467
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15443
15468
|
|
|
15444
15469
|
// src/mcp/tools/widgets.ts
|
|
15445
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15470
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15446
15471
|
|
|
15447
15472
|
// src/utils/append-system-message.ts
|
|
15448
15473
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15525,6 +15550,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15525
15550
|
}
|
|
15526
15551
|
});
|
|
15527
15552
|
|
|
15553
|
+
// src/widgets/gateway-token/index.ts
|
|
15554
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15555
|
+
import {
|
|
15556
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15557
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15558
|
+
ROLES as ROLES5
|
|
15559
|
+
} from "@agor/core/types";
|
|
15560
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15561
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15562
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15563
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15564
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15565
|
+
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, {
|
|
15566
|
+
message: "Token field names must be unique"
|
|
15567
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15568
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15569
|
+
}).strict();
|
|
15570
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15571
|
+
tokens: external_exports.partialRecord(
|
|
15572
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15573
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15574
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15575
|
+
}).strict();
|
|
15576
|
+
|
|
15528
15577
|
// src/mcp/server.ts
|
|
15529
15578
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15530
15579
|
function coerceString(value) {
|
|
@@ -14752,11 +14752,15 @@ import {
|
|
|
14752
14752
|
ThreadSessionMapRepository
|
|
14753
14753
|
} from "@agor/core/db";
|
|
14754
14754
|
import {
|
|
14755
|
-
|
|
14755
|
+
buildSlackManifest,
|
|
14756
|
+
getConnector,
|
|
14757
|
+
requiredBotEvents,
|
|
14758
|
+
requiredBotScopes
|
|
14756
14759
|
} from "@agor/core/gateway";
|
|
14757
14760
|
import {
|
|
14758
14761
|
GATEWAY_REDACTED_SENTINEL,
|
|
14759
14762
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14763
|
+
getRequiredSecretFields,
|
|
14760
14764
|
hasMinimumRole as hasMinimumRole2,
|
|
14761
14765
|
ROLES as ROLES2
|
|
14762
14766
|
} from "@agor/core/types";
|
|
@@ -14816,44 +14820,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14816
14820
|
agenticConfig: agenticConfigSchema.optional()
|
|
14817
14821
|
}).superRefine((value, issue2) => {
|
|
14818
14822
|
const config2 = value.config ?? {};
|
|
14819
|
-
if (value.
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
|
|
14825
|
-
|
|
14826
|
-
|
|
14827
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14828
|
-
issue2.addIssue({
|
|
14829
|
-
code: "custom",
|
|
14830
|
-
path: ["config", "app_token"],
|
|
14831
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14832
|
-
});
|
|
14833
|
-
}
|
|
14834
|
-
}
|
|
14835
|
-
if (value.channelType === "github") {
|
|
14836
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14823
|
+
if (value.enabled !== false) {
|
|
14824
|
+
const requiredSecretMessages = {
|
|
14825
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14826
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14827
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14828
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14829
|
+
};
|
|
14830
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14837
14831
|
if (!config2[field]) {
|
|
14838
14832
|
issue2.addIssue({
|
|
14839
14833
|
code: "custom",
|
|
14840
14834
|
path: ["config", field],
|
|
14841
|
-
message: `config.${field} is required for
|
|
14835
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14842
14836
|
});
|
|
14843
14837
|
}
|
|
14844
14838
|
}
|
|
14845
14839
|
}
|
|
14846
|
-
if (value.channelType === "
|
|
14847
|
-
for (const field of ["app_id", "
|
|
14840
|
+
if (value.channelType === "github") {
|
|
14841
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14848
14842
|
if (!config2[field]) {
|
|
14849
14843
|
issue2.addIssue({
|
|
14850
14844
|
code: "custom",
|
|
14851
14845
|
path: ["config", field],
|
|
14852
|
-
message: `config.${field} is required for
|
|
14846
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14853
14847
|
});
|
|
14854
14848
|
}
|
|
14855
14849
|
}
|
|
14856
14850
|
}
|
|
14851
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14852
|
+
issue2.addIssue({
|
|
14853
|
+
code: "custom",
|
|
14854
|
+
path: ["config", "app_id"],
|
|
14855
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14856
|
+
});
|
|
14857
|
+
}
|
|
14858
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14859
|
+
issue2.addIssue({
|
|
14860
|
+
code: "custom",
|
|
14861
|
+
path: ["agorUserId"],
|
|
14862
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14863
|
+
});
|
|
14864
|
+
}
|
|
14857
14865
|
});
|
|
14858
14866
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14859
14867
|
sessionId: mcpOptionalId(
|
|
@@ -14917,6 +14925,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14917
14925
|
),
|
|
14918
14926
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14919
14927
|
});
|
|
14928
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14929
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14930
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14931
|
+
"botDisplayName",
|
|
14932
|
+
"Bot user display name. Defaults to appName."
|
|
14933
|
+
),
|
|
14934
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14935
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14936
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14937
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14938
|
+
"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)."
|
|
14939
|
+
),
|
|
14940
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14941
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14942
|
+
"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."
|
|
14943
|
+
)
|
|
14944
|
+
});
|
|
14920
14945
|
|
|
14921
14946
|
// src/mcp/tools/knowledge.ts
|
|
14922
14947
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15455,7 +15480,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15455
15480
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15456
15481
|
|
|
15457
15482
|
// src/mcp/tools/widgets.ts
|
|
15458
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15483
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15459
15484
|
|
|
15460
15485
|
// src/utils/append-system-message.ts
|
|
15461
15486
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15538,6 +15563,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15538
15563
|
}
|
|
15539
15564
|
});
|
|
15540
15565
|
|
|
15566
|
+
// src/widgets/gateway-token/index.ts
|
|
15567
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15568
|
+
import {
|
|
15569
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15570
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15571
|
+
ROLES as ROLES5
|
|
15572
|
+
} from "@agor/core/types";
|
|
15573
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15574
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15575
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15576
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15577
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15578
|
+
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, {
|
|
15579
|
+
message: "Token field names must be unique"
|
|
15580
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15581
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15582
|
+
}).strict();
|
|
15583
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15584
|
+
tokens: external_exports.partialRecord(
|
|
15585
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15586
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15587
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15588
|
+
}).strict();
|
|
15589
|
+
|
|
15541
15590
|
// src/mcp/server.ts
|
|
15542
15591
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15543
15592
|
function coerceString(value) {
|
|
@@ -15325,11 +15325,15 @@ import {
|
|
|
15325
15325
|
ThreadSessionMapRepository
|
|
15326
15326
|
} from "@agor/core/db";
|
|
15327
15327
|
import {
|
|
15328
|
-
|
|
15328
|
+
buildSlackManifest,
|
|
15329
|
+
getConnector,
|
|
15330
|
+
requiredBotEvents,
|
|
15331
|
+
requiredBotScopes
|
|
15329
15332
|
} from "@agor/core/gateway";
|
|
15330
15333
|
import {
|
|
15331
15334
|
GATEWAY_REDACTED_SENTINEL,
|
|
15332
15335
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
15336
|
+
getRequiredSecretFields,
|
|
15333
15337
|
hasMinimumRole as hasMinimumRole2,
|
|
15334
15338
|
ROLES as ROLES2
|
|
15335
15339
|
} from "@agor/core/types";
|
|
@@ -15389,44 +15393,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
15389
15393
|
agenticConfig: agenticConfigSchema.optional()
|
|
15390
15394
|
}).superRefine((value, issue2) => {
|
|
15391
15395
|
const config2 = value.config ?? {};
|
|
15392
|
-
if (value.
|
|
15393
|
-
|
|
15394
|
-
|
|
15395
|
-
|
|
15396
|
-
|
|
15397
|
-
|
|
15398
|
-
|
|
15399
|
-
|
|
15400
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
15401
|
-
issue2.addIssue({
|
|
15402
|
-
code: "custom",
|
|
15403
|
-
path: ["config", "app_token"],
|
|
15404
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
15405
|
-
});
|
|
15406
|
-
}
|
|
15407
|
-
}
|
|
15408
|
-
if (value.channelType === "github") {
|
|
15409
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
15396
|
+
if (value.enabled !== false) {
|
|
15397
|
+
const requiredSecretMessages = {
|
|
15398
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
15399
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
15400
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
15401
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
15402
|
+
};
|
|
15403
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
15410
15404
|
if (!config2[field]) {
|
|
15411
15405
|
issue2.addIssue({
|
|
15412
15406
|
code: "custom",
|
|
15413
15407
|
path: ["config", field],
|
|
15414
|
-
message: `config.${field} is required for
|
|
15408
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
15415
15409
|
});
|
|
15416
15410
|
}
|
|
15417
15411
|
}
|
|
15418
15412
|
}
|
|
15419
|
-
if (value.channelType === "
|
|
15420
|
-
for (const field of ["app_id", "
|
|
15413
|
+
if (value.channelType === "github") {
|
|
15414
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
15421
15415
|
if (!config2[field]) {
|
|
15422
15416
|
issue2.addIssue({
|
|
15423
15417
|
code: "custom",
|
|
15424
15418
|
path: ["config", field],
|
|
15425
|
-
message: `config.${field} is required for
|
|
15419
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
15426
15420
|
});
|
|
15427
15421
|
}
|
|
15428
15422
|
}
|
|
15429
15423
|
}
|
|
15424
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
15425
|
+
issue2.addIssue({
|
|
15426
|
+
code: "custom",
|
|
15427
|
+
path: ["config", "app_id"],
|
|
15428
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
15429
|
+
});
|
|
15430
|
+
}
|
|
15431
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
15432
|
+
issue2.addIssue({
|
|
15433
|
+
code: "custom",
|
|
15434
|
+
path: ["agorUserId"],
|
|
15435
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
15436
|
+
});
|
|
15437
|
+
}
|
|
15430
15438
|
});
|
|
15431
15439
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
15432
15440
|
sessionId: mcpOptionalId(
|
|
@@ -15490,6 +15498,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
15490
15498
|
),
|
|
15491
15499
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
15492
15500
|
});
|
|
15501
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
15502
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
15503
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
15504
|
+
"botDisplayName",
|
|
15505
|
+
"Bot user display name. Defaults to appName."
|
|
15506
|
+
),
|
|
15507
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
15508
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
15509
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
15510
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
15511
|
+
"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)."
|
|
15512
|
+
),
|
|
15513
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
15514
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
15515
|
+
"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."
|
|
15516
|
+
)
|
|
15517
|
+
});
|
|
15493
15518
|
|
|
15494
15519
|
// src/mcp/tools/knowledge.ts
|
|
15495
15520
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -16028,7 +16053,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
16028
16053
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
16029
16054
|
|
|
16030
16055
|
// src/mcp/tools/widgets.ts
|
|
16031
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
16056
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
16032
16057
|
|
|
16033
16058
|
// src/utils/append-system-message.ts
|
|
16034
16059
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -16111,6 +16136,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
16111
16136
|
}
|
|
16112
16137
|
});
|
|
16113
16138
|
|
|
16139
|
+
// src/widgets/gateway-token/index.ts
|
|
16140
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
16141
|
+
import {
|
|
16142
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
16143
|
+
hasMinimumRole as hasMinimumRole4,
|
|
16144
|
+
ROLES as ROLES5
|
|
16145
|
+
} from "@agor/core/types";
|
|
16146
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
16147
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
16148
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
16149
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
16150
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
16151
|
+
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, {
|
|
16152
|
+
message: "Token field names must be unique"
|
|
16153
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
16154
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
16155
|
+
}).strict();
|
|
16156
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
16157
|
+
tokens: external_exports.partialRecord(
|
|
16158
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
16159
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
16160
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
16161
|
+
}).strict();
|
|
16162
|
+
|
|
16114
16163
|
// src/mcp/server.ts
|
|
16115
16164
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
16116
16165
|
function coerceString(value) {
|
|
@@ -14747,11 +14747,15 @@ import {
|
|
|
14747
14747
|
ThreadSessionMapRepository
|
|
14748
14748
|
} from "@agor/core/db";
|
|
14749
14749
|
import {
|
|
14750
|
-
|
|
14750
|
+
buildSlackManifest,
|
|
14751
|
+
getConnector,
|
|
14752
|
+
requiredBotEvents,
|
|
14753
|
+
requiredBotScopes
|
|
14751
14754
|
} from "@agor/core/gateway";
|
|
14752
14755
|
import {
|
|
14753
14756
|
GATEWAY_REDACTED_SENTINEL,
|
|
14754
14757
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14758
|
+
getRequiredSecretFields,
|
|
14755
14759
|
hasMinimumRole as hasMinimumRole2,
|
|
14756
14760
|
ROLES as ROLES2
|
|
14757
14761
|
} from "@agor/core/types";
|
|
@@ -14811,44 +14815,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14811
14815
|
agenticConfig: agenticConfigSchema.optional()
|
|
14812
14816
|
}).superRefine((value, issue2) => {
|
|
14813
14817
|
const config2 = value.config ?? {};
|
|
14814
|
-
if (value.
|
|
14815
|
-
|
|
14816
|
-
|
|
14817
|
-
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14823
|
-
issue2.addIssue({
|
|
14824
|
-
code: "custom",
|
|
14825
|
-
path: ["config", "app_token"],
|
|
14826
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14827
|
-
});
|
|
14828
|
-
}
|
|
14829
|
-
}
|
|
14830
|
-
if (value.channelType === "github") {
|
|
14831
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14818
|
+
if (value.enabled !== false) {
|
|
14819
|
+
const requiredSecretMessages = {
|
|
14820
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14821
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14822
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14823
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14824
|
+
};
|
|
14825
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14832
14826
|
if (!config2[field]) {
|
|
14833
14827
|
issue2.addIssue({
|
|
14834
14828
|
code: "custom",
|
|
14835
14829
|
path: ["config", field],
|
|
14836
|
-
message: `config.${field} is required for
|
|
14830
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14837
14831
|
});
|
|
14838
14832
|
}
|
|
14839
14833
|
}
|
|
14840
14834
|
}
|
|
14841
|
-
if (value.channelType === "
|
|
14842
|
-
for (const field of ["app_id", "
|
|
14835
|
+
if (value.channelType === "github") {
|
|
14836
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14843
14837
|
if (!config2[field]) {
|
|
14844
14838
|
issue2.addIssue({
|
|
14845
14839
|
code: "custom",
|
|
14846
14840
|
path: ["config", field],
|
|
14847
|
-
message: `config.${field} is required for
|
|
14841
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14848
14842
|
});
|
|
14849
14843
|
}
|
|
14850
14844
|
}
|
|
14851
14845
|
}
|
|
14846
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14847
|
+
issue2.addIssue({
|
|
14848
|
+
code: "custom",
|
|
14849
|
+
path: ["config", "app_id"],
|
|
14850
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14851
|
+
});
|
|
14852
|
+
}
|
|
14853
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14854
|
+
issue2.addIssue({
|
|
14855
|
+
code: "custom",
|
|
14856
|
+
path: ["agorUserId"],
|
|
14857
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14858
|
+
});
|
|
14859
|
+
}
|
|
14852
14860
|
});
|
|
14853
14861
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14854
14862
|
sessionId: mcpOptionalId(
|
|
@@ -14912,6 +14920,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14912
14920
|
),
|
|
14913
14921
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14914
14922
|
});
|
|
14923
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14924
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14925
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14926
|
+
"botDisplayName",
|
|
14927
|
+
"Bot user display name. Defaults to appName."
|
|
14928
|
+
),
|
|
14929
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14930
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14931
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14932
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14933
|
+
"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)."
|
|
14934
|
+
),
|
|
14935
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14936
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14937
|
+
"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."
|
|
14938
|
+
)
|
|
14939
|
+
});
|
|
14915
14940
|
|
|
14916
14941
|
// src/mcp/tools/knowledge.ts
|
|
14917
14942
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15450,7 +15475,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15450
15475
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15451
15476
|
|
|
15452
15477
|
// src/mcp/tools/widgets.ts
|
|
15453
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15478
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15454
15479
|
|
|
15455
15480
|
// src/utils/append-system-message.ts
|
|
15456
15481
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15533,6 +15558,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15533
15558
|
}
|
|
15534
15559
|
});
|
|
15535
15560
|
|
|
15561
|
+
// src/widgets/gateway-token/index.ts
|
|
15562
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15563
|
+
import {
|
|
15564
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15565
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15566
|
+
ROLES as ROLES5
|
|
15567
|
+
} from "@agor/core/types";
|
|
15568
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15569
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15570
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15571
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15572
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15573
|
+
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, {
|
|
15574
|
+
message: "Token field names must be unique"
|
|
15575
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15576
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15577
|
+
}).strict();
|
|
15578
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15579
|
+
tokens: external_exports.partialRecord(
|
|
15580
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15581
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15582
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15583
|
+
}).strict();
|
|
15584
|
+
|
|
15536
15585
|
// src/mcp/server.ts
|
|
15537
15586
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15538
15587
|
function coerceString(value) {
|