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
|
@@ -14763,11 +14763,15 @@ import {
|
|
|
14763
14763
|
ThreadSessionMapRepository
|
|
14764
14764
|
} from "@agor/core/db";
|
|
14765
14765
|
import {
|
|
14766
|
-
|
|
14766
|
+
buildSlackManifest,
|
|
14767
|
+
getConnector,
|
|
14768
|
+
requiredBotEvents,
|
|
14769
|
+
requiredBotScopes
|
|
14767
14770
|
} from "@agor/core/gateway";
|
|
14768
14771
|
import {
|
|
14769
14772
|
GATEWAY_REDACTED_SENTINEL,
|
|
14770
14773
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14774
|
+
getRequiredSecretFields,
|
|
14771
14775
|
hasMinimumRole as hasMinimumRole2,
|
|
14772
14776
|
ROLES as ROLES2
|
|
14773
14777
|
} from "@agor/core/types";
|
|
@@ -14827,44 +14831,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14827
14831
|
agenticConfig: agenticConfigSchema.optional()
|
|
14828
14832
|
}).superRefine((value, issue2) => {
|
|
14829
14833
|
const config2 = value.config ?? {};
|
|
14830
|
-
if (value.
|
|
14831
|
-
|
|
14832
|
-
|
|
14833
|
-
|
|
14834
|
-
|
|
14835
|
-
|
|
14836
|
-
|
|
14837
|
-
|
|
14838
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14839
|
-
issue2.addIssue({
|
|
14840
|
-
code: "custom",
|
|
14841
|
-
path: ["config", "app_token"],
|
|
14842
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14843
|
-
});
|
|
14844
|
-
}
|
|
14845
|
-
}
|
|
14846
|
-
if (value.channelType === "github") {
|
|
14847
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14834
|
+
if (value.enabled !== false) {
|
|
14835
|
+
const requiredSecretMessages = {
|
|
14836
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14837
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14838
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14839
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14840
|
+
};
|
|
14841
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
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: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14853
14847
|
});
|
|
14854
14848
|
}
|
|
14855
14849
|
}
|
|
14856
14850
|
}
|
|
14857
|
-
if (value.channelType === "
|
|
14858
|
-
for (const field of ["app_id", "
|
|
14851
|
+
if (value.channelType === "github") {
|
|
14852
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14859
14853
|
if (!config2[field]) {
|
|
14860
14854
|
issue2.addIssue({
|
|
14861
14855
|
code: "custom",
|
|
14862
14856
|
path: ["config", field],
|
|
14863
|
-
message: `config.${field} is required for
|
|
14857
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14864
14858
|
});
|
|
14865
14859
|
}
|
|
14866
14860
|
}
|
|
14867
14861
|
}
|
|
14862
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14863
|
+
issue2.addIssue({
|
|
14864
|
+
code: "custom",
|
|
14865
|
+
path: ["config", "app_id"],
|
|
14866
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14867
|
+
});
|
|
14868
|
+
}
|
|
14869
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14870
|
+
issue2.addIssue({
|
|
14871
|
+
code: "custom",
|
|
14872
|
+
path: ["agorUserId"],
|
|
14873
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14874
|
+
});
|
|
14875
|
+
}
|
|
14868
14876
|
});
|
|
14869
14877
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14870
14878
|
sessionId: mcpOptionalId(
|
|
@@ -14928,6 +14936,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14928
14936
|
),
|
|
14929
14937
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14930
14938
|
});
|
|
14939
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14940
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14941
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14942
|
+
"botDisplayName",
|
|
14943
|
+
"Bot user display name. Defaults to appName."
|
|
14944
|
+
),
|
|
14945
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14946
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14947
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14948
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14949
|
+
"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)."
|
|
14950
|
+
),
|
|
14951
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14952
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14953
|
+
"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."
|
|
14954
|
+
)
|
|
14955
|
+
});
|
|
14931
14956
|
|
|
14932
14957
|
// src/mcp/tools/knowledge.ts
|
|
14933
14958
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15211,7 +15236,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15211
15236
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15212
15237
|
|
|
15213
15238
|
// src/mcp/tools/widgets.ts
|
|
15214
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15239
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15215
15240
|
|
|
15216
15241
|
// src/utils/append-system-message.ts
|
|
15217
15242
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15294,6 +15319,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15294
15319
|
}
|
|
15295
15320
|
});
|
|
15296
15321
|
|
|
15322
|
+
// src/widgets/gateway-token/index.ts
|
|
15323
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15324
|
+
import {
|
|
15325
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15326
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15327
|
+
ROLES as ROLES5
|
|
15328
|
+
} from "@agor/core/types";
|
|
15329
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15330
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15331
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15332
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15333
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15334
|
+
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, {
|
|
15335
|
+
message: "Token field names must be unique"
|
|
15336
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15337
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15338
|
+
}).strict();
|
|
15339
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15340
|
+
tokens: external_exports.partialRecord(
|
|
15341
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15342
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15343
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15344
|
+
}).strict();
|
|
15345
|
+
|
|
15297
15346
|
// src/mcp/server.ts
|
|
15298
15347
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15299
15348
|
function textResult(data) {
|
|
@@ -14786,11 +14786,15 @@ import {
|
|
|
14786
14786
|
ThreadSessionMapRepository
|
|
14787
14787
|
} from "@agor/core/db";
|
|
14788
14788
|
import {
|
|
14789
|
-
|
|
14789
|
+
buildSlackManifest,
|
|
14790
|
+
getConnector,
|
|
14791
|
+
requiredBotEvents,
|
|
14792
|
+
requiredBotScopes
|
|
14790
14793
|
} from "@agor/core/gateway";
|
|
14791
14794
|
import {
|
|
14792
14795
|
GATEWAY_REDACTED_SENTINEL,
|
|
14793
14796
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14797
|
+
getRequiredSecretFields,
|
|
14794
14798
|
hasMinimumRole as hasMinimumRole2,
|
|
14795
14799
|
ROLES as ROLES2
|
|
14796
14800
|
} from "@agor/core/types";
|
|
@@ -14850,44 +14854,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14850
14854
|
agenticConfig: agenticConfigSchema.optional()
|
|
14851
14855
|
}).superRefine((value, issue2) => {
|
|
14852
14856
|
const config2 = value.config ?? {};
|
|
14853
|
-
if (value.
|
|
14854
|
-
|
|
14855
|
-
|
|
14856
|
-
|
|
14857
|
-
|
|
14858
|
-
|
|
14859
|
-
|
|
14860
|
-
|
|
14861
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14862
|
-
issue2.addIssue({
|
|
14863
|
-
code: "custom",
|
|
14864
|
-
path: ["config", "app_token"],
|
|
14865
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14866
|
-
});
|
|
14867
|
-
}
|
|
14868
|
-
}
|
|
14869
|
-
if (value.channelType === "github") {
|
|
14870
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14857
|
+
if (value.enabled !== false) {
|
|
14858
|
+
const requiredSecretMessages = {
|
|
14859
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14860
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14861
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14862
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14863
|
+
};
|
|
14864
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
14871
14865
|
if (!config2[field]) {
|
|
14872
14866
|
issue2.addIssue({
|
|
14873
14867
|
code: "custom",
|
|
14874
14868
|
path: ["config", field],
|
|
14875
|
-
message: `config.${field} is required for
|
|
14869
|
+
message: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14876
14870
|
});
|
|
14877
14871
|
}
|
|
14878
14872
|
}
|
|
14879
14873
|
}
|
|
14880
|
-
if (value.channelType === "
|
|
14881
|
-
for (const field of ["app_id", "
|
|
14874
|
+
if (value.channelType === "github") {
|
|
14875
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14882
14876
|
if (!config2[field]) {
|
|
14883
14877
|
issue2.addIssue({
|
|
14884
14878
|
code: "custom",
|
|
14885
14879
|
path: ["config", field],
|
|
14886
|
-
message: `config.${field} is required for
|
|
14880
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14887
14881
|
});
|
|
14888
14882
|
}
|
|
14889
14883
|
}
|
|
14890
14884
|
}
|
|
14885
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14886
|
+
issue2.addIssue({
|
|
14887
|
+
code: "custom",
|
|
14888
|
+
path: ["config", "app_id"],
|
|
14889
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14890
|
+
});
|
|
14891
|
+
}
|
|
14892
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14893
|
+
issue2.addIssue({
|
|
14894
|
+
code: "custom",
|
|
14895
|
+
path: ["agorUserId"],
|
|
14896
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14897
|
+
});
|
|
14898
|
+
}
|
|
14891
14899
|
});
|
|
14892
14900
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14893
14901
|
sessionId: mcpOptionalId(
|
|
@@ -14951,6 +14959,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14951
14959
|
),
|
|
14952
14960
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14953
14961
|
});
|
|
14962
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14963
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14964
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14965
|
+
"botDisplayName",
|
|
14966
|
+
"Bot user display name. Defaults to appName."
|
|
14967
|
+
),
|
|
14968
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14969
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14970
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14971
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14972
|
+
"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)."
|
|
14973
|
+
),
|
|
14974
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14975
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14976
|
+
"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."
|
|
14977
|
+
)
|
|
14978
|
+
});
|
|
14954
14979
|
|
|
14955
14980
|
// src/mcp/tools/knowledge.ts
|
|
14956
14981
|
import { createHash, randomUUID } from "crypto";
|
|
@@ -15472,7 +15497,7 @@ var modelConfigInputSchema = external_exports.union([
|
|
|
15472
15497
|
import { ROLES as ROLES4 } from "@agor/core/types";
|
|
15473
15498
|
|
|
15474
15499
|
// src/mcp/tools/widgets.ts
|
|
15475
|
-
import { MessageRole as MessageRole2 } from "@agor/core/types";
|
|
15500
|
+
import { getRequiredSecretFields as getRequiredSecretFields2, hasMinimumRole as hasMinimumRole5, MessageRole as MessageRole2, ROLES as ROLES6 } from "@agor/core/types";
|
|
15476
15501
|
|
|
15477
15502
|
// src/utils/append-system-message.ts
|
|
15478
15503
|
import { generateId as generateId2, SessionRepository as SessionRepository3 } from "@agor/core/db";
|
|
@@ -15555,6 +15580,30 @@ var envVarsSubmitSchema = external_exports.object({
|
|
|
15555
15580
|
}
|
|
15556
15581
|
});
|
|
15557
15582
|
|
|
15583
|
+
// src/widgets/gateway-token/index.ts
|
|
15584
|
+
import { Forbidden as Forbidden2 } from "@agor/core/feathers";
|
|
15585
|
+
import {
|
|
15586
|
+
GATEWAY_SENSITIVE_CONFIG_FIELDS as GATEWAY_SENSITIVE_CONFIG_FIELDS2,
|
|
15587
|
+
hasMinimumRole as hasMinimumRole4,
|
|
15588
|
+
ROLES as ROLES5
|
|
15589
|
+
} from "@agor/core/types";
|
|
15590
|
+
var MAX_TOKEN_LENGTH = 8192;
|
|
15591
|
+
var gatewayTokenParamsSchema = external_exports.object({
|
|
15592
|
+
gatewayChannelId: external_exports.string().min(1).describe("Gateway channel whose credentials are being set."),
|
|
15593
|
+
channelType: external_exports.enum(["slack", "discord", "whatsapp", "telegram", "github", "teams"]).describe("Platform type of the channel; drives per-field placeholders."),
|
|
15594
|
+
channelName: external_exports.string().min(1).max(200).describe("Human-readable channel name for the form heading and prompts."),
|
|
15595
|
+
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, {
|
|
15596
|
+
message: "Token field names must be unique"
|
|
15597
|
+
}).describe("Secret config field names to collect (subset of the sensitive fields)."),
|
|
15598
|
+
reason: external_exports.string().min(1).max(200).describe("One sentence explaining why the tokens are needed. Renders as a muted line.")
|
|
15599
|
+
}).strict();
|
|
15600
|
+
var gatewayTokenSubmitSchema = external_exports.object({
|
|
15601
|
+
tokens: external_exports.partialRecord(
|
|
15602
|
+
external_exports.enum(GATEWAY_SENSITIVE_CONFIG_FIELDS2),
|
|
15603
|
+
external_exports.string().min(1).max(MAX_TOKEN_LENGTH)
|
|
15604
|
+
).describe("Map of sensitive field name \u2192 credential value.")
|
|
15605
|
+
}).strict();
|
|
15606
|
+
|
|
15558
15607
|
// src/mcp/server.ts
|
|
15559
15608
|
var DEBUG_MCP_REQUESTS = process.env.AGOR_DEBUG_MCP_REQUESTS === "1" || process.env.DEBUG?.includes("mcp-requests");
|
|
15560
15609
|
function coerceString(value) {
|
|
@@ -14750,11 +14750,15 @@ import {
|
|
|
14750
14750
|
ThreadSessionMapRepository
|
|
14751
14751
|
} from "@agor/core/db";
|
|
14752
14752
|
import {
|
|
14753
|
-
|
|
14753
|
+
buildSlackManifest,
|
|
14754
|
+
getConnector,
|
|
14755
|
+
requiredBotEvents,
|
|
14756
|
+
requiredBotScopes
|
|
14754
14757
|
} from "@agor/core/gateway";
|
|
14755
14758
|
import {
|
|
14756
14759
|
GATEWAY_REDACTED_SENTINEL,
|
|
14757
14760
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14761
|
+
getRequiredSecretFields,
|
|
14758
14762
|
hasMinimumRole as hasMinimumRole2,
|
|
14759
14763
|
ROLES as ROLES2
|
|
14760
14764
|
} from "@agor/core/types";
|
|
@@ -14814,44 +14818,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14814
14818
|
agenticConfig: agenticConfigSchema.optional()
|
|
14815
14819
|
}).superRefine((value, issue2) => {
|
|
14816
14820
|
const config2 = value.config ?? {};
|
|
14817
|
-
if (value.
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
|
|
14825
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14826
|
-
issue2.addIssue({
|
|
14827
|
-
code: "custom",
|
|
14828
|
-
path: ["config", "app_token"],
|
|
14829
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14830
|
-
});
|
|
14831
|
-
}
|
|
14832
|
-
}
|
|
14833
|
-
if (value.channelType === "github") {
|
|
14834
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14821
|
+
if (value.enabled !== false) {
|
|
14822
|
+
const requiredSecretMessages = {
|
|
14823
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14824
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14825
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14826
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14827
|
+
};
|
|
14828
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
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: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14840
14834
|
});
|
|
14841
14835
|
}
|
|
14842
14836
|
}
|
|
14843
14837
|
}
|
|
14844
|
-
if (value.channelType === "
|
|
14845
|
-
for (const field of ["app_id", "
|
|
14838
|
+
if (value.channelType === "github") {
|
|
14839
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14846
14840
|
if (!config2[field]) {
|
|
14847
14841
|
issue2.addIssue({
|
|
14848
14842
|
code: "custom",
|
|
14849
14843
|
path: ["config", field],
|
|
14850
|
-
message: `config.${field} is required for
|
|
14844
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14851
14845
|
});
|
|
14852
14846
|
}
|
|
14853
14847
|
}
|
|
14854
14848
|
}
|
|
14849
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14850
|
+
issue2.addIssue({
|
|
14851
|
+
code: "custom",
|
|
14852
|
+
path: ["config", "app_id"],
|
|
14853
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14854
|
+
});
|
|
14855
|
+
}
|
|
14856
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14857
|
+
issue2.addIssue({
|
|
14858
|
+
code: "custom",
|
|
14859
|
+
path: ["agorUserId"],
|
|
14860
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14861
|
+
});
|
|
14862
|
+
}
|
|
14855
14863
|
});
|
|
14856
14864
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14857
14865
|
sessionId: mcpOptionalId(
|
|
@@ -14915,6 +14923,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14915
14923
|
),
|
|
14916
14924
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14917
14925
|
});
|
|
14926
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14927
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14928
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14929
|
+
"botDisplayName",
|
|
14930
|
+
"Bot user display name. Defaults to appName."
|
|
14931
|
+
),
|
|
14932
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14933
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14934
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14935
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14936
|
+
"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)."
|
|
14937
|
+
),
|
|
14938
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14939
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14940
|
+
"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."
|
|
14941
|
+
)
|
|
14942
|
+
});
|
|
14918
14943
|
|
|
14919
14944
|
// src/mcp/tools/knowledge.ts
|
|
14920
14945
|
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) {
|
|
@@ -14750,11 +14750,15 @@ import {
|
|
|
14750
14750
|
ThreadSessionMapRepository
|
|
14751
14751
|
} from "@agor/core/db";
|
|
14752
14752
|
import {
|
|
14753
|
-
|
|
14753
|
+
buildSlackManifest,
|
|
14754
|
+
getConnector,
|
|
14755
|
+
requiredBotEvents,
|
|
14756
|
+
requiredBotScopes
|
|
14754
14757
|
} from "@agor/core/gateway";
|
|
14755
14758
|
import {
|
|
14756
14759
|
GATEWAY_REDACTED_SENTINEL,
|
|
14757
14760
|
GATEWAY_SENSITIVE_CONFIG_FIELDS,
|
|
14761
|
+
getRequiredSecretFields,
|
|
14758
14762
|
hasMinimumRole as hasMinimumRole2,
|
|
14759
14763
|
ROLES as ROLES2
|
|
14760
14764
|
} from "@agor/core/types";
|
|
@@ -14814,44 +14818,48 @@ var gatewayChannelCreateSchema = external_exports.strictObject({
|
|
|
14814
14818
|
agenticConfig: agenticConfigSchema.optional()
|
|
14815
14819
|
}).superRefine((value, issue2) => {
|
|
14816
14820
|
const config2 = value.config ?? {};
|
|
14817
|
-
if (value.
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
|
|
14825
|
-
if (config2.connection_mode === "socket" && !config2.app_token) {
|
|
14826
|
-
issue2.addIssue({
|
|
14827
|
-
code: "custom",
|
|
14828
|
-
path: ["config", "app_token"],
|
|
14829
|
-
message: "config.app_token is required for Slack Socket Mode."
|
|
14830
|
-
});
|
|
14831
|
-
}
|
|
14832
|
-
}
|
|
14833
|
-
if (value.channelType === "github") {
|
|
14834
|
-
for (const field of ["app_id", "private_key", "installation_id", "watch_repos"]) {
|
|
14821
|
+
if (value.enabled !== false) {
|
|
14822
|
+
const requiredSecretMessages = {
|
|
14823
|
+
bot_token: "config.bot_token is required for Slack. Prefer a bot token stored outside the transcript when possible.",
|
|
14824
|
+
app_token: "config.app_token is required for Slack Socket Mode.",
|
|
14825
|
+
private_key: "config.private_key is required for GitHub gateway channels.",
|
|
14826
|
+
app_password: "config.app_password is required for Teams gateway channels."
|
|
14827
|
+
};
|
|
14828
|
+
for (const field of getRequiredSecretFields(value.channelType, config2)) {
|
|
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: requiredSecretMessages[field] ?? `config.${field} is required for ${value.channelType} gateway channels.`
|
|
14840
14834
|
});
|
|
14841
14835
|
}
|
|
14842
14836
|
}
|
|
14843
14837
|
}
|
|
14844
|
-
if (value.channelType === "
|
|
14845
|
-
for (const field of ["app_id", "
|
|
14838
|
+
if (value.channelType === "github") {
|
|
14839
|
+
for (const field of ["app_id", "installation_id", "watch_repos"]) {
|
|
14846
14840
|
if (!config2[field]) {
|
|
14847
14841
|
issue2.addIssue({
|
|
14848
14842
|
code: "custom",
|
|
14849
14843
|
path: ["config", field],
|
|
14850
|
-
message: `config.${field} is required for
|
|
14844
|
+
message: `config.${field} is required for GitHub gateway channels.`
|
|
14851
14845
|
});
|
|
14852
14846
|
}
|
|
14853
14847
|
}
|
|
14854
14848
|
}
|
|
14849
|
+
if (value.channelType === "teams" && !config2.app_id) {
|
|
14850
|
+
issue2.addIssue({
|
|
14851
|
+
code: "custom",
|
|
14852
|
+
path: ["config", "app_id"],
|
|
14853
|
+
message: "config.app_id is required for Teams gateway channels."
|
|
14854
|
+
});
|
|
14855
|
+
}
|
|
14856
|
+
if (value.channelType === "slack" && config2.align_slack_users !== true && !value.agorUserId) {
|
|
14857
|
+
issue2.addIssue({
|
|
14858
|
+
code: "custom",
|
|
14859
|
+
path: ["agorUserId"],
|
|
14860
|
+
message: "Run-as-selected-user needs agorUserId \u2014 set config.align_slack_users:true to align by email, or pass agorUserId."
|
|
14861
|
+
});
|
|
14862
|
+
}
|
|
14855
14863
|
});
|
|
14856
14864
|
var slackThreadHistorySchema = external_exports.strictObject({
|
|
14857
14865
|
sessionId: mcpOptionalId(
|
|
@@ -14915,6 +14923,23 @@ var gatewayChannelUpdateSchema = external_exports.strictObject({
|
|
|
14915
14923
|
),
|
|
14916
14924
|
agenticConfig: agenticConfigSchema.nullable().optional().describe("Replace agent/session defaults. null clears the gateway agentic config.")
|
|
14917
14925
|
});
|
|
14926
|
+
var slackManifestGenerateSchema = external_exports.strictObject({
|
|
14927
|
+
appName: mcpRequiredString("appName", 'Slack app display name, e.g. "Agor".'),
|
|
14928
|
+
botDisplayName: mcpOptionalNonEmptyString(
|
|
14929
|
+
"botDisplayName",
|
|
14930
|
+
"Bot user display name. Defaults to appName."
|
|
14931
|
+
),
|
|
14932
|
+
publicChannels: external_exports.boolean().default(false).describe("Listen in public channels (#channel) via @mention."),
|
|
14933
|
+
privateChannels: external_exports.boolean().default(false).describe("Listen in private channels (groups) via @mention."),
|
|
14934
|
+
groupDms: external_exports.boolean().default(false).describe("Listen in group DMs (multi-person IMs) via @mention."),
|
|
14935
|
+
alignUsers: external_exports.boolean().default(true).describe(
|
|
14936
|
+
"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)."
|
|
14937
|
+
),
|
|
14938
|
+
outbound: external_exports.boolean().default(false).describe("Proactive outbound: post to channels by name and DM users by email."),
|
|
14939
|
+
restrictToChannelIds: external_exports.array(external_exports.string().min(1)).optional().describe(
|
|
14940
|
+
"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."
|
|
14941
|
+
)
|
|
14942
|
+
});
|
|
14918
14943
|
|
|
14919
14944
|
// src/mcp/tools/knowledge.ts
|
|
14920
14945
|
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) {
|