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
|
@@ -107,6 +107,11 @@ export declare class BoardsService extends DrizzleService<Board, Partial<Board>,
|
|
|
107
107
|
* Custom method: Batch upsert board objects
|
|
108
108
|
*/
|
|
109
109
|
batchUpsertBoardObjects(boardId: string, objects: Record<string, BoardObject>, _params?: BoardParams): Promise<Board>;
|
|
110
|
+
/**
|
|
111
|
+
* Custom method: Atomically shallow-merge field patches into existing board
|
|
112
|
+
* objects (used by z-order reorder to persist only the changed zIndex).
|
|
113
|
+
*/
|
|
114
|
+
mergeBoardObjectFields(boardId: string, patches: Record<string, Partial<BoardObject>>, _params?: BoardParams): Promise<Board>;
|
|
110
115
|
/**
|
|
111
116
|
* Custom method: Delete a zone and handle associated sessions
|
|
112
117
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../../src/services/boards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../../src/services/boards.ts"],"names":[],"mappings":"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"}
|
|
@@ -473,6 +473,13 @@ var BoardsService = class extends DrizzleService {
|
|
|
473
473
|
async batchUpsertBoardObjects(boardId, objects, _params) {
|
|
474
474
|
return this.boardRepo.batchUpsertBoardObjects(boardId, objects);
|
|
475
475
|
}
|
|
476
|
+
/**
|
|
477
|
+
* Custom method: Atomically shallow-merge field patches into existing board
|
|
478
|
+
* objects (used by z-order reorder to persist only the changed zIndex).
|
|
479
|
+
*/
|
|
480
|
+
async mergeBoardObjectFields(boardId, patches, _params) {
|
|
481
|
+
return this.boardRepo.mergeBoardObjectFields(boardId, patches);
|
|
482
|
+
}
|
|
476
483
|
/**
|
|
477
484
|
* Custom method: Delete a zone and handle associated sessions
|
|
478
485
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../src/services/branches.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,EAGL,KAAK,yBAAyB,EAE9B,KAAK,wBAAwB,EAE9B,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,qBAAqB,CAAC;AAEhG,OAAO,KAAK,EACV,mBAAmB,EAEnB,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,QAAQ,EACR,kBAAkB,EAClB,WAAW,EAGX,IAAI,EACL,MAAM,kBAAkB,CAAC;AAa1B,OAAO,EAAE,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../src/services/branches.ts"],"names":[],"mappings":"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"}
|
|
@@ -557,6 +557,27 @@ function shouldUseCloneReferencePath() {
|
|
|
557
557
|
return (config.execution?.unix_user_mode ?? "simple") !== "strict";
|
|
558
558
|
}
|
|
559
559
|
|
|
560
|
+
// src/utils/emit-service-event.ts
|
|
561
|
+
var DEFAULT_EVENT_METHOD = {
|
|
562
|
+
created: "create",
|
|
563
|
+
updated: "update",
|
|
564
|
+
patched: "patch",
|
|
565
|
+
removed: "remove"
|
|
566
|
+
};
|
|
567
|
+
function emitServiceEvent(app, event) {
|
|
568
|
+
const service = app.service(event.path);
|
|
569
|
+
service.emit?.(event.event, event.data, {
|
|
570
|
+
app,
|
|
571
|
+
service,
|
|
572
|
+
path: event.path,
|
|
573
|
+
method: event.method ?? DEFAULT_EVENT_METHOD[event.event] ?? "patch",
|
|
574
|
+
event: event.event,
|
|
575
|
+
id: event.id,
|
|
576
|
+
result: event.data,
|
|
577
|
+
params: event.params ?? {}
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
|
|
560
581
|
// src/utils/git-impersonation.ts
|
|
561
582
|
async function resolveDaemonUserForGroupRefresh() {
|
|
562
583
|
const { getDaemonUser: getDaemonUser2, isUnixGroupRefreshNeeded } = await import("@agor/core/config");
|
|
@@ -2553,7 +2574,13 @@ var BranchesService = class extends DrizzleService {
|
|
|
2553
2574
|
},
|
|
2554
2575
|
resolvedParams
|
|
2555
2576
|
);
|
|
2556
|
-
this.app
|
|
2577
|
+
emitServiceEvent(this.app, {
|
|
2578
|
+
path: "branches",
|
|
2579
|
+
event: "patched",
|
|
2580
|
+
data: branch,
|
|
2581
|
+
params: resolvedParams,
|
|
2582
|
+
id
|
|
2583
|
+
});
|
|
2557
2584
|
return branch;
|
|
2558
2585
|
}
|
|
2559
2586
|
/**
|
|
@@ -2988,7 +3015,9 @@ var BranchesService = class extends DrizzleService {
|
|
|
2988
3015
|
path: branch.path,
|
|
2989
3016
|
custom_context: branch.custom_context,
|
|
2990
3017
|
unix_gid: unixGid,
|
|
2991
|
-
host_ip_address: hostIpAddress
|
|
3018
|
+
host_ip_address: hostIpAddress,
|
|
3019
|
+
base_ref: branch.base_ref,
|
|
3020
|
+
ref_type: branch.ref_type
|
|
2992
3021
|
},
|
|
2993
3022
|
requestedVariant
|
|
2994
3023
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-models.d.ts","sourceRoot":"","sources":["../../src/services/claude-models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAW,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAeD,UAAU,mBAAoB,SAAQ,MAAM;IAC1C,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"claude-models.d.ts","sourceRoot":"","sources":["../../src/services/claude-models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAW,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAeD,UAAU,mBAAoB,SAAQ,MAAM;IAC1C,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAqED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,wBAAwB;IAE1C,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoDtE;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,wBAAwB,GAAG,mBAAmB,CAE3F"}
|
|
@@ -11987,6 +11987,9 @@ function isAlias(id) {
|
|
|
11987
11987
|
}
|
|
11988
11988
|
var CONTEXT_1M_BETA = "context-1m-2025-08-07";
|
|
11989
11989
|
var ONE_MILLION_TOKENS = 9e5;
|
|
11990
|
+
function hasNativeMillionContext(id) {
|
|
11991
|
+
return id.startsWith("claude-fable");
|
|
11992
|
+
}
|
|
11990
11993
|
function toModelOptions(models) {
|
|
11991
11994
|
const aliases = models.filter((m) => isAlias(m.id));
|
|
11992
11995
|
const options = [];
|
|
@@ -11997,7 +12000,7 @@ function toModelOptions(models) {
|
|
|
11997
12000
|
description: void 0,
|
|
11998
12001
|
source: "dynamic"
|
|
11999
12002
|
});
|
|
12000
|
-
if (m.max_input_tokens && m.max_input_tokens >= ONE_MILLION_TOKENS) {
|
|
12003
|
+
if (m.max_input_tokens && m.max_input_tokens >= ONE_MILLION_TOKENS && !hasNativeMillionContext(m.id)) {
|
|
12001
12004
|
options.push({
|
|
12002
12005
|
id: `${m.id}[1m]`,
|
|
12003
12006
|
displayName: `${m.display_name} (1M context)`,
|
|
@@ -47,6 +47,12 @@ interface EmitGatewayMessageData {
|
|
|
47
47
|
target?: string;
|
|
48
48
|
purpose?: string;
|
|
49
49
|
emittedByUserId: UserID;
|
|
50
|
+
/**
|
|
51
|
+
* Trust contract: must be sourced from verified auth context (MCP
|
|
52
|
+
* ctx.sessionId), never from tool/user input. When set, the outbound emit is
|
|
53
|
+
* hard-bound to the session's branch — it is denied unless the session's
|
|
54
|
+
* branch matches the channel's target branch, regardless of user role.
|
|
55
|
+
*/
|
|
50
56
|
emittedBySessionId?: SessionID;
|
|
51
57
|
emittedByTaskId?: string;
|
|
52
58
|
emittedByScheduleId?: string;
|
|
@@ -82,6 +88,7 @@ export declare class GatewayService {
|
|
|
82
88
|
private threadMapRepo;
|
|
83
89
|
private outboundRepo;
|
|
84
90
|
private branchRepo;
|
|
91
|
+
private sessionRepo;
|
|
85
92
|
private usersRepo;
|
|
86
93
|
private mcpServerRepo;
|
|
87
94
|
private userTokenRepo;
|
|
@@ -167,6 +174,14 @@ export declare class GatewayService {
|
|
|
167
174
|
private stopSlackTaskStream;
|
|
168
175
|
private updateProgressNow;
|
|
169
176
|
handleMessageStreamingEvent(event: 'streaming:start' | 'streaming:chunk' | 'streaming:end' | 'streaming:error', data: Record<string, unknown>): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Session-context emits are hard-bound to the session's branch, with no
|
|
179
|
+
* admin-role bypass — agent sessions run as admin users, so a role bypass
|
|
180
|
+
* would let any session impersonate another assistant's channel. The error
|
|
181
|
+
* deliberately never echoes the channel's target branch, so a denied emit
|
|
182
|
+
* cannot be used to enumerate which branch a foreign channel serves.
|
|
183
|
+
*/
|
|
184
|
+
private ensureSessionBranchBoundToChannel;
|
|
170
185
|
private ensureCanEmitFromChannel;
|
|
171
186
|
emitMessage(data: EmitGatewayMessageData): Promise<EmitGatewayMessageResult>;
|
|
172
187
|
private fetchExistingSessionUrlForGatewayUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/services/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/services/gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
MCPServerRepository,
|
|
10
10
|
runWithoutTenantDatabaseScope as runWithoutTenantDatabaseScope2,
|
|
11
11
|
runWithTenantDatabaseScope as runWithTenantDatabaseScope2,
|
|
12
|
+
SessionRepository,
|
|
12
13
|
shortId as shortId2,
|
|
13
14
|
ThreadSessionMapRepository,
|
|
14
15
|
UserMCPOAuthTokenRepository,
|
|
@@ -182,6 +183,13 @@ function oneLineForPrompt(text, maxChars = 900) {
|
|
|
182
183
|
if (normalized.length <= maxChars) return normalized;
|
|
183
184
|
return `${normalized.slice(0, Math.max(0, maxChars - 1))}\u2026`;
|
|
184
185
|
}
|
|
186
|
+
var SLACK_GATEWAY_REPLY_NOTE = "Note: Any assistant message you send in this current Agor session is streamed back directly to the Slack conversation. Only use outbound gateway tools when you intentionally need to start a separate thread, DM, or message.";
|
|
187
|
+
function prependSlackGatewayReplyNote(prompt) {
|
|
188
|
+
if (prompt.includes(SLACK_GATEWAY_REPLY_NOTE)) return prompt;
|
|
189
|
+
return `${SLACK_GATEWAY_REPLY_NOTE}
|
|
190
|
+
|
|
191
|
+
${prompt}`;
|
|
192
|
+
}
|
|
185
193
|
function formatSlackCatchUpPrompt(args) {
|
|
186
194
|
const slackChannelName = typeof args.metadata?.slack_channel_name === "string" ? args.metadata.slack_channel_name : null;
|
|
187
195
|
const slackChannelId = typeof args.metadata?.channel === "string" ? args.metadata.channel : args.threadId.split("-")[0];
|
|
@@ -368,6 +376,7 @@ var GatewayService = class _GatewayService {
|
|
|
368
376
|
threadMapRepo;
|
|
369
377
|
outboundRepo;
|
|
370
378
|
branchRepo;
|
|
379
|
+
sessionRepo;
|
|
371
380
|
usersRepo;
|
|
372
381
|
mcpServerRepo;
|
|
373
382
|
userTokenRepo;
|
|
@@ -410,6 +419,7 @@ var GatewayService = class _GatewayService {
|
|
|
410
419
|
this.threadMapRepo = new ThreadSessionMapRepository(db);
|
|
411
420
|
this.outboundRepo = new GatewayOutboundMessageRepository(db);
|
|
412
421
|
this.branchRepo = new BranchRepository(db);
|
|
422
|
+
this.sessionRepo = new SessionRepository(db);
|
|
413
423
|
this.usersRepo = new UsersRepository(db);
|
|
414
424
|
this.mcpServerRepo = new MCPServerRepository(db);
|
|
415
425
|
this.userTokenRepo = new UserMCPOAuthTokenRepository(db);
|
|
@@ -905,6 +915,24 @@ ${chunk}` : chunk;
|
|
|
905
915
|
console.warn("[gateway] Failed to mirror message stream to Slack:", error);
|
|
906
916
|
}
|
|
907
917
|
}
|
|
918
|
+
/**
|
|
919
|
+
* Session-context emits are hard-bound to the session's branch, with no
|
|
920
|
+
* admin-role bypass — agent sessions run as admin users, so a role bypass
|
|
921
|
+
* would let any session impersonate another assistant's channel. The error
|
|
922
|
+
* deliberately never echoes the channel's target branch, so a denied emit
|
|
923
|
+
* cannot be used to enumerate which branch a foreign channel serves.
|
|
924
|
+
*/
|
|
925
|
+
async ensureSessionBranchBoundToChannel(channel, sessionId) {
|
|
926
|
+
const session = await this.sessionRepo.findById(sessionId);
|
|
927
|
+
if (!session) {
|
|
928
|
+
throw new Error("Gateway outbound denied: emitting session not found");
|
|
929
|
+
}
|
|
930
|
+
if (session.branch_id !== channel.target_branch_id) {
|
|
931
|
+
throw new Error(
|
|
932
|
+
`Gateway outbound denied: session ${shortId2(sessionId)} runs on branch ${shortId2(session.branch_id)}, but this channel targets a different branch. Sessions can emit only through gateway channels whose target branch matches their own. Call agor_gateway_outbound_targets_list to see usable channels.`
|
|
933
|
+
);
|
|
934
|
+
}
|
|
935
|
+
}
|
|
908
936
|
async ensureCanEmitFromChannel(channel, userId, userRole) {
|
|
909
937
|
if (hasMinimumRole2(userRole, ROLES2.ADMIN)) return;
|
|
910
938
|
const branch = await this.branchRepo.findById(channel.target_branch_id);
|
|
@@ -938,6 +966,9 @@ ${chunk}` : chunk;
|
|
|
938
966
|
if (config.outbound_enabled !== true) {
|
|
939
967
|
throw new Error("Gateway outbound is disabled for this channel");
|
|
940
968
|
}
|
|
969
|
+
if (data.emittedBySessionId) {
|
|
970
|
+
await this.ensureSessionBranchBoundToChannel(channel, data.emittedBySessionId);
|
|
971
|
+
}
|
|
941
972
|
await this.ensureCanEmitFromChannel(channel, data.emittedByUserId, data.userRole);
|
|
942
973
|
const target = data.target ?? (typeof config.default_outbound_target === "string" ? config.default_outbound_target : void 0);
|
|
943
974
|
if (!target) throw new Error("No usable default outbound target configured");
|
|
@@ -1512,6 +1543,9 @@ ${chunk}` : chunk;
|
|
|
1512
1543
|
promptText = contextPrefix + promptText;
|
|
1513
1544
|
}
|
|
1514
1545
|
}
|
|
1546
|
+
if (channel.channel_type === "slack") {
|
|
1547
|
+
promptText = prependSlackGatewayReplyNote(promptText);
|
|
1548
|
+
}
|
|
1515
1549
|
if (created && mcpAuthWarning) {
|
|
1516
1550
|
promptText = `${mcpAuthWarning}
|
|
1517
1551
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../src/services/health-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../src/services/health-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAU,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAalF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,wFAAwF;IACxF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,wDAAwD;IACxD,EAAE,CAAC,EAAE,wBAAwB,CAAC;IAC9B,8HAA8H;IAC9H,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,+FAA+F;IAC/F,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6FAA6F;IAC7F,6BAA6B,CAAC,EAAE,MAAM,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC;CACpF;AAQD,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAsB;IAC5C,OAAO,CAAC,EAAE,CAAC,CAA2B;IACtC,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,CAAoB;IACrC,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,6BAA6B,CAAC,CAAqD;gBAE/E,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IAchE,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,OAAO,CAAC,eAAe;IA+BvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,WAAW;IAmDzB;;;;OAIG;IACG,UAAU;YAaF,+BAA+B;YAqC/B,kCAAkC;YA8ClC,yBAAyB;IAkCvC;;;;OAIG;IACH,OAAO;IAcP;;OAEG;IACH,SAAS;;;;;CAOV;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CAIxB"}
|
|
@@ -3,6 +3,7 @@ import { ENVIRONMENT } from "@agor/core/config";
|
|
|
3
3
|
import {
|
|
4
4
|
BranchRepository,
|
|
5
5
|
getHiddenTenantId,
|
|
6
|
+
runWithoutTenantDatabaseScope,
|
|
6
7
|
runWithSystemDatabaseScope,
|
|
7
8
|
runWithTenantDatabaseScope,
|
|
8
9
|
shortId
|
|
@@ -92,15 +93,17 @@ var HealthMonitor = class {
|
|
|
92
93
|
startMonitoring(branchId, params = this.branchParams.get(branchId)) {
|
|
93
94
|
this.stopMonitoring(branchId);
|
|
94
95
|
if (params) this.branchParams.set(branchId, params);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
this.checkHealth(branchId);
|
|
98
|
-
const interval = setInterval(() => {
|
|
96
|
+
runWithoutTenantDatabaseScope(() => {
|
|
97
|
+
setTimeout(() => {
|
|
99
98
|
if (this.isShuttingDown) return;
|
|
100
99
|
this.checkHealth(branchId);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
const interval = setInterval(() => {
|
|
101
|
+
if (this.isShuttingDown) return;
|
|
102
|
+
this.checkHealth(branchId);
|
|
103
|
+
}, ENVIRONMENT.HEALTH_CHECK_INTERVAL_MS);
|
|
104
|
+
this.intervals.set(branchId, interval);
|
|
105
|
+
}, ENVIRONMENT.STARTUP_GRACE_PERIOD_MS);
|
|
106
|
+
});
|
|
104
107
|
}
|
|
105
108
|
/**
|
|
106
109
|
* Stop monitoring a branch's health
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Application } from '@agor/core/feathers';
|
|
2
|
+
import type { Params } from '@agor/core/types';
|
|
3
|
+
/**
|
|
4
|
+
* `session-streams` — a realtime control-plane service that lets a browser
|
|
5
|
+
* declare interest in a session's streaming events. Subscribing joins the
|
|
6
|
+
* calling CONNECTION to the per-session stream channel so the daemon can route
|
|
7
|
+
* high-frequency streaming chunks to only the tabs viewing that session,
|
|
8
|
+
* instead of broadcasting them to the whole tenant.
|
|
9
|
+
*
|
|
10
|
+
* Access is gated by a tenant-scoped `sessions.get`, which runs the same auth /
|
|
11
|
+
* tenant / branch-view checks a normal session read does — no weaker path to a
|
|
12
|
+
* session's live text than to its stored messages. Feathers drops connections
|
|
13
|
+
* from channels automatically on disconnect, so unsubscribe on refresh /
|
|
14
|
+
* navigation is best-effort; the socket teardown is the real cleanup.
|
|
15
|
+
*/
|
|
16
|
+
export interface SessionStreamSubscription {
|
|
17
|
+
session_id: string;
|
|
18
|
+
subscribed: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface SubscribeData {
|
|
21
|
+
session_id?: string;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function createSessionStreamsService(app: Application): {
|
|
25
|
+
create(data: SubscribeData, params: Params): Promise<SessionStreamSubscription>;
|
|
26
|
+
remove(id: string, params: Params): Promise<SessionStreamSubscription>;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=session-streams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-streams.d.ts","sourceRoot":"","sources":["../../src/services/session-streams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW;iBAqBrC,aAAa,UAAU,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;eAgBpE,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;EAwB/E"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// src/services/session-streams.ts
|
|
2
|
+
import { BadRequest } from "@agor/core/feathers";
|
|
3
|
+
|
|
4
|
+
// src/utils/realtime-publish.ts
|
|
5
|
+
import {
|
|
6
|
+
resolveTenantContext,
|
|
7
|
+
TenantResolutionError
|
|
8
|
+
} from "@agor/core/config";
|
|
9
|
+
import { getCurrentTenantId, shortId as shortId2 } from "@agor/core/db";
|
|
10
|
+
import { hasMinimumRole as hasMinimumRole2, ROLES as ROLES2 } from "@agor/core/types";
|
|
11
|
+
|
|
12
|
+
// src/utils/branch-authorization.ts
|
|
13
|
+
import { shortId } from "@agor/core/db";
|
|
14
|
+
import { Forbidden, NotAuthenticated, NotFound } from "@agor/core/feathers";
|
|
15
|
+
import { BRANCH_PERMISSION_LEVELS, hasMinimumRole, ROLES } from "@agor/core/types";
|
|
16
|
+
var PERMISSION_RANK = Object.fromEntries(
|
|
17
|
+
BRANCH_PERMISSION_LEVELS.map((level, i) => [level, i - 1])
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
// src/utils/realtime-access-cache.ts
|
|
21
|
+
var DEFAULT_BRANCH_VISIBILITY_TTL_MS = 5 * 6e4;
|
|
22
|
+
var DEFAULT_SESSION_BRANCH_TTL_MS = 60 * 6e4;
|
|
23
|
+
|
|
24
|
+
// src/utils/realtime-publish.ts
|
|
25
|
+
var SESSION_STREAM_CHANNEL_PREFIX = "session-stream:";
|
|
26
|
+
function sessionStreamChannelName(sessionId) {
|
|
27
|
+
return `${SESSION_STREAM_CHANNEL_PREFIX}${sessionId}`;
|
|
28
|
+
}
|
|
29
|
+
function existingChannel(app, name) {
|
|
30
|
+
return (app.channels ?? []).includes(name) ? app.channel(name) : null;
|
|
31
|
+
}
|
|
32
|
+
function joinSessionStreamChannel(app, sessionId, connection) {
|
|
33
|
+
app.channel(sessionStreamChannelName(sessionId)).join(connection);
|
|
34
|
+
}
|
|
35
|
+
function leaveSessionStreamChannel(app, sessionId, connection) {
|
|
36
|
+
existingChannel(app, sessionStreamChannelName(sessionId))?.leave(connection);
|
|
37
|
+
}
|
|
38
|
+
var DEBUG_REALTIME_PUBLISH = process.env.AGOR_DEBUG_REALTIME_PUBLISH === "1" || process.env.DEBUG?.includes("realtime-publish");
|
|
39
|
+
|
|
40
|
+
// src/services/session-streams.ts
|
|
41
|
+
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
42
|
+
function isCanonicalSessionId(id) {
|
|
43
|
+
return UUID_RE.test(id);
|
|
44
|
+
}
|
|
45
|
+
function createSessionStreamsService(app) {
|
|
46
|
+
const resolveAccessibleSessionId = async (sessionId, params) => {
|
|
47
|
+
const session = await app.service("sessions").get(sessionId, { ...params ?? {}, query: {} });
|
|
48
|
+
return session?.session_id ?? null;
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
async create(data, params) {
|
|
52
|
+
const connection = params?.connection;
|
|
53
|
+
if (!connection) {
|
|
54
|
+
throw new BadRequest("session stream subscription requires a realtime connection");
|
|
55
|
+
}
|
|
56
|
+
const sessionId = data?.session_id ?? data?.sessionId;
|
|
57
|
+
if (!sessionId || typeof sessionId !== "string") {
|
|
58
|
+
throw new BadRequest("session_id is required");
|
|
59
|
+
}
|
|
60
|
+
const canonicalId = await resolveAccessibleSessionId(sessionId, params) ?? sessionId;
|
|
61
|
+
joinSessionStreamChannel(app, canonicalId, connection);
|
|
62
|
+
return { session_id: canonicalId, subscribed: true };
|
|
63
|
+
},
|
|
64
|
+
async remove(id, params) {
|
|
65
|
+
const connection = params?.connection;
|
|
66
|
+
const sessionId = typeof id === "string" ? id : "";
|
|
67
|
+
if (!connection || !sessionId) {
|
|
68
|
+
return { session_id: sessionId, subscribed: false };
|
|
69
|
+
}
|
|
70
|
+
let canonicalId = sessionId;
|
|
71
|
+
if (!isCanonicalSessionId(sessionId)) {
|
|
72
|
+
try {
|
|
73
|
+
canonicalId = await resolveAccessibleSessionId(sessionId, params) ?? sessionId;
|
|
74
|
+
} catch {
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
leaveSessionStreamChannel(app, canonicalId, connection);
|
|
78
|
+
return { session_id: canonicalId, subscribed: false };
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export {
|
|
83
|
+
createSessionStreamsService
|
|
84
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-token-service.d.ts","sourceRoot":"","sources":["../../src/services/session-token-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"session-token-service.d.ts","sourceRoot":"","sources":["../../src/services/session-token-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6BH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,MAAM;IAJhB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,SAAS,CAAuB;gBAG9B,MAAM,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAMH;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC;;;OAGG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,GACnE,OAAO,CAAC,MAAM,CAAC;IAmDlB;;;;;;OAMG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACpE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAqD9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAe5C;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
// src/services/session-token-service.ts
|
|
2
2
|
import { getCurrentTenantId } from "@agor/core/db";
|
|
3
3
|
import jwt from "jsonwebtoken";
|
|
4
|
+
|
|
5
|
+
// src/auth/executor-session-token.ts
|
|
6
|
+
var EXECUTOR_SESSION_TOKEN_TYPE = "executor-session";
|
|
7
|
+
var EXECUTOR_SESSION_TOKEN_PURPOSE = "executor-task";
|
|
8
|
+
|
|
9
|
+
// src/services/session-token-service.ts
|
|
4
10
|
var DEBUG_SESSION_TOKENS = process.env.AGOR_DEBUG_SESSION_TOKENS === "1" || process.env.DEBUG?.includes("session-token");
|
|
5
11
|
function sessionTokenDebug(...args) {
|
|
6
12
|
if (DEBUG_SESSION_TOKENS) {
|
|
@@ -35,10 +41,8 @@ var SessionTokenService = class {
|
|
|
35
41
|
const payload = {
|
|
36
42
|
sub: userId,
|
|
37
43
|
// Standard JWT subject claim (used by Feathers for user lookup)
|
|
38
|
-
type:
|
|
39
|
-
purpose:
|
|
40
|
-
sessionId,
|
|
41
|
-
// Custom claim for session tracking
|
|
44
|
+
type: EXECUTOR_SESSION_TOKEN_TYPE,
|
|
45
|
+
purpose: EXECUTOR_SESSION_TOKEN_PURPOSE,
|
|
42
46
|
session_id: sessionId,
|
|
43
47
|
task_id: scope.taskId,
|
|
44
48
|
branch_id: scope.branchId,
|
|
@@ -477,8 +477,8 @@ async function initializeDatabase(dbPath, options = {}) {
|
|
|
477
477
|
}
|
|
478
478
|
|
|
479
479
|
// src/setup/socketio.ts
|
|
480
|
-
import { resolveTenantContext } from "@agor/core/config";
|
|
481
|
-
import { shortId } from "@agor/core/db";
|
|
480
|
+
import { resolveTenantContext as resolveTenantContext2 } from "@agor/core/config";
|
|
481
|
+
import { shortId as shortId3 } from "@agor/core/db";
|
|
482
482
|
import jwt2 from "jsonwebtoken";
|
|
483
483
|
|
|
484
484
|
// src/auth/runtime-tokens.ts
|
|
@@ -486,6 +486,37 @@ import jwt from "jsonwebtoken";
|
|
|
486
486
|
var RUNTIME_JWT_ISSUER = "agor";
|
|
487
487
|
var RUNTIME_JWT_AUDIENCE = "https://agor.dev";
|
|
488
488
|
|
|
489
|
+
// src/utils/realtime-publish.ts
|
|
490
|
+
import {
|
|
491
|
+
resolveTenantContext,
|
|
492
|
+
TenantResolutionError
|
|
493
|
+
} from "@agor/core/config";
|
|
494
|
+
import { getCurrentTenantId, shortId as shortId2 } from "@agor/core/db";
|
|
495
|
+
import { hasMinimumRole as hasMinimumRole2, ROLES as ROLES2 } from "@agor/core/types";
|
|
496
|
+
|
|
497
|
+
// src/utils/branch-authorization.ts
|
|
498
|
+
import { shortId } from "@agor/core/db";
|
|
499
|
+
import { Forbidden, NotAuthenticated, NotFound } from "@agor/core/feathers";
|
|
500
|
+
import { BRANCH_PERMISSION_LEVELS, hasMinimumRole, ROLES } from "@agor/core/types";
|
|
501
|
+
var PERMISSION_RANK = Object.fromEntries(
|
|
502
|
+
BRANCH_PERMISSION_LEVELS.map((level, i) => [level, i - 1])
|
|
503
|
+
);
|
|
504
|
+
|
|
505
|
+
// src/utils/realtime-access-cache.ts
|
|
506
|
+
var DEFAULT_BRANCH_VISIBILITY_TTL_MS = 5 * 6e4;
|
|
507
|
+
var DEFAULT_SESSION_BRANCH_TTL_MS = 60 * 6e4;
|
|
508
|
+
|
|
509
|
+
// src/utils/realtime-publish.ts
|
|
510
|
+
var SESSION_STREAM_CHANNEL_PREFIX = "session-stream:";
|
|
511
|
+
function leaveAllSessionStreamChannels(app, connection) {
|
|
512
|
+
for (const name of app.channels ?? []) {
|
|
513
|
+
if (name.startsWith(SESSION_STREAM_CHANNEL_PREFIX)) {
|
|
514
|
+
app.channel(name).leave(connection);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
var DEBUG_REALTIME_PUBLISH = process.env.AGOR_DEBUG_REALTIME_PUBLISH === "1" || process.env.DEBUG?.includes("realtime-publish");
|
|
519
|
+
|
|
489
520
|
// src/setup/socketio.ts
|
|
490
521
|
function socketAuthState(userId, isService, tenant) {
|
|
491
522
|
return tenant ? { userId, isService, tenant } : { userId, isService };
|
|
@@ -585,7 +616,7 @@ function createSocketIOConfig(app, options) {
|
|
|
585
616
|
if (tokenType !== void 0 && tokenType !== "access" && tokenType !== "service") {
|
|
586
617
|
return next(new Error("Invalid token type"));
|
|
587
618
|
}
|
|
588
|
-
const tenant = multiTenancy ?
|
|
619
|
+
const tenant = multiTenancy ? resolveTenantContext2(multiTenancy, {
|
|
589
620
|
authPayload: decoded,
|
|
590
621
|
headers: socket.handshake.headers
|
|
591
622
|
}) : void 0;
|
|
@@ -622,7 +653,7 @@ function createSocketIOConfig(app, options) {
|
|
|
622
653
|
fs.tenant = tenant;
|
|
623
654
|
if (fs.data) fs.data.tenant = tenant;
|
|
624
655
|
}
|
|
625
|
-
console.log(`\u{1F510} WebSocket authenticated: ${socket.id} (user: ${
|
|
656
|
+
console.log(`\u{1F510} WebSocket authenticated: ${socket.id} (user: ${shortId3(user.user_id)})`);
|
|
626
657
|
next();
|
|
627
658
|
} catch (error) {
|
|
628
659
|
console.error(`\u274C WebSocket authentication failed for ${socket.id}:`, error);
|
|
@@ -633,7 +664,7 @@ function createSocketIOConfig(app, options) {
|
|
|
633
664
|
activeConnections++;
|
|
634
665
|
const user = socket.feathers?.user;
|
|
635
666
|
console.log(
|
|
636
|
-
`\u{1F50C} Socket.io connection established: ${socket.id} (user: ${user ?
|
|
667
|
+
`\u{1F50C} Socket.io connection established: ${socket.id} (user: ${user ? shortId3(user.user_id) : "unknown"}, total: ${activeConnections})`
|
|
637
668
|
);
|
|
638
669
|
if (buildInfo) {
|
|
639
670
|
socket.emit("server-info", {
|
|
@@ -644,7 +675,7 @@ function createSocketIOConfig(app, options) {
|
|
|
644
675
|
if (user?.user_id) {
|
|
645
676
|
socket.join(userRoomName(user.user_id));
|
|
646
677
|
console.log(
|
|
647
|
-
`\u{1F3E0} Socket ${socket.id} joined user room at connection: user:${
|
|
678
|
+
`\u{1F3E0} Socket ${socket.id} joined user room at connection: user:${shortId3(user.user_id)}`
|
|
648
679
|
);
|
|
649
680
|
}
|
|
650
681
|
setTimeout(() => {
|
|
@@ -729,7 +760,7 @@ function createSocketIOConfig(app, options) {
|
|
|
729
760
|
if (typeof payloadUserId !== "string" || payloadUserId !== auth.userId) {
|
|
730
761
|
rejectTerminal(
|
|
731
762
|
event,
|
|
732
|
-
`payload userId (${
|
|
763
|
+
`payload userId (${shortId3(String(payloadUserId))}\u2026) does not match authed userId (${shortId3(auth.userId)}\u2026)`
|
|
733
764
|
);
|
|
734
765
|
return null;
|
|
735
766
|
}
|
|
@@ -753,7 +784,7 @@ function createSocketIOConfig(app, options) {
|
|
|
753
784
|
if (!auth.isService && auth.userId !== target) {
|
|
754
785
|
rejectTerminal(
|
|
755
786
|
"join",
|
|
756
|
-
`user ${auth.userId ?
|
|
787
|
+
`user ${auth.userId ? shortId3(auth.userId) : "unknown"}\u2026 tried to join ${shortId3(target)}\u2026's channel`
|
|
757
788
|
);
|
|
758
789
|
return;
|
|
759
790
|
}
|
|
@@ -771,7 +802,7 @@ function createSocketIOConfig(app, options) {
|
|
|
771
802
|
if (!auth.isService && auth.userId !== target) {
|
|
772
803
|
rejectTerminal(
|
|
773
804
|
"leave",
|
|
774
|
-
`user ${auth.userId ?
|
|
805
|
+
`user ${auth.userId ? shortId3(auth.userId) : "unknown"}\u2026 tried to leave ${shortId3(target)}\u2026's channel`
|
|
775
806
|
);
|
|
776
807
|
return;
|
|
777
808
|
}
|
|
@@ -872,7 +903,7 @@ function createSocketIOConfig(app, options) {
|
|
|
872
903
|
if (socket.feathers === context.connection) {
|
|
873
904
|
socket.join(userRoomName(userId));
|
|
874
905
|
console.debug(
|
|
875
|
-
`\u{1F3E0} Socket ${socket.id} joined user room after login: user:${
|
|
906
|
+
`\u{1F3E0} Socket ${socket.id} joined user room after login: user:${shortId3(userId)}`
|
|
876
907
|
);
|
|
877
908
|
break;
|
|
878
909
|
}
|
|
@@ -900,7 +931,7 @@ function configureChannels(app, options = {}) {
|
|
|
900
931
|
const result = authResult;
|
|
901
932
|
console.debug("\u2705 Login event fired:", result.user?.user_id, result.user?.email);
|
|
902
933
|
const connection = context.connection;
|
|
903
|
-
const tenant = options.multiTenancy ?
|
|
934
|
+
const tenant = options.multiTenancy ? resolveTenantContext2(options.multiTenancy, {
|
|
904
935
|
params: {
|
|
905
936
|
user: result.user,
|
|
906
937
|
authentication: { payload: result.authentication?.payload }
|
|
@@ -932,6 +963,7 @@ function configureChannels(app, options = {}) {
|
|
|
932
963
|
app.channel(tenantUserChannelName(tenant.tenant_id, userId)).leave(context.connection);
|
|
933
964
|
}
|
|
934
965
|
}
|
|
966
|
+
leaveAllSessionStreamChannels(app, context.connection);
|
|
935
967
|
}
|
|
936
968
|
});
|
|
937
969
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketio.d.ts","sourceRoot":"","sources":["../../src/setup/socketio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,mBAAmB,CAAC;AAE1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAMV,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"socketio.d.ts","sourceRoot":"","sources":["../../src/setup/socketio.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,0BAA0B,EAAwB,MAAM,mBAAmB,CAAC;AAE1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAMV,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAsC5C,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gFAAgF;IAChF,YAAY,CAAC,EAAE,0BAA0B,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAUD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAalE;AAUD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE,MAAM,MAAiB,GAC3B,MAAM,OAAO,CAcf;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AASD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,eAAe,GACvB;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACtC,CA4hBA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,0BAA0B,CAAA;CAAO,GAC1D,IAAI,CAuEN"}
|