agor-live 0.17.2 → 0.17.3
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/cli/lib/banner.d.ts +1 -1
- package/dist/cli/lib/banner.js +1 -1
- package/dist/cli/lib/check-migrations.test.js +9627 -9112
- package/dist/cli/lib/daemon-manager.test.js +9632 -9117
- package/dist/cli/lib/help.js +1 -1
- package/dist/core/api/index.d.cts +3 -3
- package/dist/core/api/index.d.ts +3 -3
- package/dist/core/{board-comment-DIdOJrSF.d.cts → board-comment-CCFVVN7K.d.cts} +0 -2
- package/dist/core/{board-comment-3N-jSgsk.d.ts → board-comment-iT3DgZb4.d.ts} +0 -2
- package/dist/core/claude/index.cjs +29 -19
- package/dist/core/claude/index.d.cts +2 -2
- package/dist/core/claude/index.d.ts +2 -2
- package/dist/core/claude/index.js +32 -33
- package/dist/core/client/index.cjs +49 -0
- package/dist/core/client/index.d.cts +7 -7
- package/dist/core/client/index.d.ts +7 -7
- package/dist/core/client/index.js +46 -0
- package/dist/core/{client-B5PyIvNc.d.cts → client-CemqXk0v.d.cts} +116 -100
- package/dist/core/{client-C1CsRi19.d.ts → client-uYEOha6g.d.ts} +116 -100
- package/dist/core/config/browser.d.cts +3 -3
- package/dist/core/config/browser.d.ts +3 -3
- package/dist/core/config/index.cjs +84 -41
- package/dist/core/config/index.d.cts +59 -17
- package/dist/core/config/index.d.ts +59 -17
- package/dist/core/config/index.js +86 -55
- package/dist/core/{config-manager-TxxjFMRd.d.cts → config-manager-B8TP9Kz0.d.cts} +12 -3
- package/dist/core/{config-manager-DTrsj6G3.d.ts → config-manager-CDEB0FY4.d.ts} +12 -3
- package/dist/core/{config-services-YEZ4DwCD.d.cts → config-services-CXyQKEK5.d.cts} +1 -1
- package/dist/core/{config-services-DcO2GRgh.d.ts → config-services-DhM7_yWn.d.ts} +1 -1
- package/dist/core/db/index.cjs +235 -175
- package/dist/core/db/index.d.cts +190 -147
- package/dist/core/db/index.d.ts +190 -147
- package/dist/core/db/index.js +239 -190
- package/dist/core/db/session-guard.d.cts +4 -4
- package/dist/core/db/session-guard.d.ts +4 -4
- package/dist/core/drizzle/postgres/0028_queued_tasks.sql +8 -0
- package/dist/core/drizzle/postgres/0030_migrate_queued_messages.sql +24 -0
- package/dist/core/drizzle/postgres/0031_restructure_agentic_tool_config.sql +201 -0
- package/dist/core/drizzle/postgres/meta/_journal.json +21 -0
- package/dist/core/drizzle/sqlite/0039_queued_tasks.sql +13 -0
- package/dist/core/drizzle/sqlite/0040_migrate_queued_messages.sql +61 -0
- package/dist/core/drizzle/sqlite/0041_restructure_agentic_tool_config.sql +204 -0
- package/dist/core/drizzle/sqlite/meta/_journal.json +21 -0
- package/dist/core/gateway/index.d.cts +2 -2
- package/dist/core/gateway/index.d.ts +2 -2
- package/dist/core/{gateway-BnOlAelY.d.cts → gateway-BWq4j_Ll.d.cts} +1 -1
- package/dist/core/{gateway-B_4X-v07.d.ts → gateway-C3Jm_akw.d.ts} +1 -1
- package/dist/core/git/index.d.cts +4 -4
- package/dist/core/git/index.d.ts +4 -4
- package/dist/core/index.cjs +474 -201
- package/dist/core/index.d.cts +12 -10
- package/dist/core/index.d.ts +12 -10
- package/dist/core/index.js +473 -216
- package/dist/core/lib/feathers-validation.cjs +2 -1
- package/dist/core/lib/feathers-validation.d.cts +1 -1
- package/dist/core/lib/feathers-validation.d.ts +1 -1
- package/dist/core/lib/feathers-validation.js +2 -1
- package/dist/core/mcp/index.cjs +26 -16
- package/dist/core/mcp/index.js +26 -16
- package/dist/core/{message-DinITA7a.d.cts → message-CSWOsdcZ.d.cts} +1 -9
- package/dist/core/{message-CHUUP6OS.d.ts → message-DZa8g0s0.d.ts} +1 -9
- package/dist/core/models/index.d.cts +3 -73
- package/dist/core/models/index.d.ts +3 -73
- package/dist/core/package.json +5 -0
- package/dist/core/permissions/index.d.cts +1 -1
- package/dist/core/permissions/index.d.ts +1 -1
- package/dist/core/resolve-config-BcL-Hv8k.d.ts +74 -0
- package/dist/core/resolve-config-DTCxuSBx.d.cts +74 -0
- package/dist/core/seed/index.cjs +145 -98
- package/dist/core/seed/index.js +148 -112
- package/dist/core/{session-guard-C0LkDEN7.d.ts → session-guard-BFqVtBoS.d.ts} +1 -1
- package/dist/core/{session-guard-kvAx_8Fb.d.cts → session-guard-KHh0cnET.d.cts} +1 -1
- package/dist/core/sessions/index.cjs +184 -0
- package/dist/core/sessions/index.d.cts +79 -0
- package/dist/core/sessions/index.d.ts +79 -0
- package/dist/core/sessions/index.js +157 -0
- package/dist/core/{task-BLPFCORT.d.ts → task-BHV-YHg1.d.ts} +41 -3
- package/dist/core/{task-wht1RJEL.d.cts → task-C2Hy7H6u.d.cts} +41 -3
- package/dist/core/templates/session-context.d.cts +1 -1
- package/dist/core/templates/session-context.d.ts +1 -1
- package/dist/core/tools/mcp/oauth-mcp-transport.cjs +168 -66
- package/dist/core/tools/mcp/oauth-mcp-transport.d.cts +92 -16
- package/dist/core/tools/mcp/oauth-mcp-transport.d.ts +92 -16
- package/dist/core/tools/mcp/oauth-mcp-transport.js +165 -66
- package/dist/core/tools/mcp/oauth-refresh.cjs +43 -53
- package/dist/core/tools/mcp/oauth-refresh.d.cts +3 -3
- package/dist/core/tools/mcp/oauth-refresh.d.ts +3 -3
- package/dist/core/tools/mcp/oauth-refresh.js +58 -78
- package/dist/core/types/index.cjs +49 -0
- package/dist/core/types/index.d.cts +7 -7
- package/dist/core/types/index.d.ts +7 -7
- package/dist/core/types/index.js +46 -0
- package/dist/core/{types-DNqfdt1z.d.cts → types-D4Rl6ZKN.d.cts} +18 -2
- package/dist/core/{types-DqPMmTad.d.ts → types-n61iaXub.d.ts} +18 -2
- package/dist/core/unix/index.cjs +164 -110
- package/dist/core/unix/index.d.cts +7 -8
- package/dist/core/unix/index.d.ts +7 -8
- package/dist/core/unix/index.js +167 -124
- package/dist/core/{user-DkNdeFoz.d.cts → user-CpfkcV2C.d.cts} +139 -13
- package/dist/core/{user-BfVWBmXA.d.ts → user-DP-XZMIM.d.ts} +139 -13
- package/dist/core/utils/permission-mode-mapper.d.cts +0 -2
- package/dist/core/utils/permission-mode-mapper.d.ts +0 -2
- package/dist/daemon/index.js +2976 -2791
- package/dist/daemon/main.js +2976 -2791
- package/dist/daemon/mcp/server.js +177 -134
- package/dist/daemon/mcp/tools/analytics.js +19 -5
- package/dist/daemon/mcp/tools/artifacts.js +19 -5
- package/dist/daemon/mcp/tools/boards.js +19 -5
- package/dist/daemon/mcp/tools/card-types.js +19 -5
- package/dist/daemon/mcp/tools/cards.js +19 -5
- package/dist/daemon/mcp/tools/environment.js +19 -5
- package/dist/daemon/mcp/tools/mcp-servers.d.ts +29 -2
- package/dist/daemon/mcp/tools/mcp-servers.js +64 -54
- package/dist/daemon/mcp/tools/messages.js +19 -5
- package/dist/daemon/mcp/tools/repos.js +19 -5
- package/dist/daemon/mcp/tools/search.js +19 -5
- package/dist/daemon/mcp/tools/sessions.js +175 -53
- package/dist/daemon/mcp/tools/tasks.js +19 -5
- package/dist/daemon/mcp/tools/users.js +19 -5
- package/dist/daemon/mcp/tools/worktrees.js +37 -38
- package/dist/daemon/register-hooks.js +52 -1
- package/dist/daemon/register-routes.js +436 -424
- package/dist/daemon/register-services.js +255 -140
- package/dist/daemon/services/config.d.ts +7 -1
- package/dist/daemon/services/config.js +3 -2
- package/dist/daemon/services/gateway.js +28 -15
- package/dist/daemon/services/mcp-servers.d.ts +7 -2
- package/dist/daemon/services/repos.js +2 -0
- package/dist/daemon/services/sessions.d.ts +1 -1
- package/dist/daemon/services/sessions.js +8 -16
- package/dist/daemon/services/tasks.js +16 -10
- package/dist/daemon/services/terminals.js +2 -0
- package/dist/daemon/services/users.d.ts +27 -11
- package/dist/daemon/services/users.js +89 -43
- package/dist/daemon/services/worktree-owners.js +2 -0
- package/dist/daemon/services/worktrees.js +2 -0
- package/dist/daemon/setup/index.js +5 -2
- package/dist/daemon/setup/socketio.d.ts +10 -1
- package/dist/daemon/setup/socketio.js +7 -3
- package/dist/daemon/startup.js +13 -1
- package/dist/daemon/utils/apply-session-config-defaults.d.ts +54 -0
- package/dist/daemon/utils/apply-session-config-defaults.js +46 -0
- package/dist/daemon/utils/spawn-executor.js +2 -0
- package/dist/daemon/utils/worktree-authorization.d.ts +2 -4
- package/dist/executor/commands/zellij.d.ts.map +1 -1
- package/dist/executor/commands/zellij.js +2 -2
- package/dist/executor/handlers/sdk/base-executor.d.ts +4 -3
- package/dist/executor/handlers/sdk/base-executor.d.ts.map +1 -1
- package/dist/executor/handlers/sdk/base-executor.js +11 -5
- package/dist/executor/payload-types.d.ts +14 -14
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/claude-tool.js +9 -4
- package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/import/task-extractor.js +0 -5
- package/dist/executor/sdk-handlers/claude/message-builder.d.ts +23 -2
- package/dist/executor/sdk-handlers/claude/message-builder.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/message-builder.js +33 -2
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts +9 -1
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.js +12 -0
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/query-builder.js +11 -6
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +0 -5
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/codex-tool.js +9 -24
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +15 -2
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +39 -10
- package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts +0 -5
- package/dist/executor/sdk-handlers/copilot/copilot-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/copilot-tool.js +5 -22
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +0 -5
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/gemini-tool.js +9 -24
- package/dist/ui/assets/{CodeEditor.inner-CO-5PAnZ.js → CodeEditor.inner-CVLqZBtM.js} +1 -1
- package/dist/ui/assets/{CodeEditor.inner-CO-5PAnZ.js.gz → CodeEditor.inner-CVLqZBtM.js.gz} +0 -0
- package/dist/ui/assets/{_basePickBy-DfxojsEt.js → _basePickBy-CFq5ES2J.js} +1 -1
- package/dist/ui/assets/_basePickBy-CFq5ES2J.js.gz +0 -0
- package/dist/ui/assets/{_baseUniq-DWFPJOTC.js → _baseUniq-C4uKBvNt.js} +1 -1
- package/dist/ui/assets/_baseUniq-C4uKBvNt.js.gz +0 -0
- package/dist/ui/assets/{arc-vMZ_XGSI.js → arc-BnrcXDJJ.js} +1 -1
- package/dist/ui/assets/arc-BnrcXDJJ.js.gz +0 -0
- package/dist/ui/assets/{architectureDiagram-VXUJARFQ-DGpk_uOD.js → architectureDiagram-VXUJARFQ-DD9HD-WR.js} +1 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DD9HD-WR.js.gz +0 -0
- package/dist/ui/assets/{base-80a1f760-BsVlOKqO.js → base-80a1f760-BK1VmxWU.js} +1 -1
- package/dist/ui/assets/{blockDiagram-VD42YOAC-BkRnxc94.js → blockDiagram-VD42YOAC-LBAckZZe.js} +1 -1
- package/dist/ui/assets/blockDiagram-VD42YOAC-LBAckZZe.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dcf-anJy.js → c4Diagram-YG6GDRKO-yEdylcYP.js} +1 -1
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-Dcf-anJy.js.gz → c4Diagram-YG6GDRKO-yEdylcYP.js.gz} +0 -0
- package/dist/ui/assets/channel-CMN-iY3Q.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-C4oVWDo8.js → chunk-4BX2VUAB-IHtzKbmQ.js} +1 -1
- package/dist/ui/assets/{chunk-55IACEB6-CsBbTu57.js → chunk-55IACEB6-C4o5tv_F.js} +1 -1
- package/dist/ui/assets/{chunk-B4BG7PRW-DtkeCZab.js → chunk-B4BG7PRW-EPkzLvlB.js} +1 -1
- package/dist/ui/assets/chunk-B4BG7PRW-EPkzLvlB.js.gz +0 -0
- package/dist/ui/assets/{chunk-DI55MBZ5-BQ_asW-1.js → chunk-DI55MBZ5-CW-Bzkzj.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-CW-Bzkzj.js.gz +0 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-DAdcLNG-.js → chunk-FMBD7UC4-DvGU02Io.js} +1 -1
- package/dist/ui/assets/{chunk-QN33PNHL-Do2zad3m.js → chunk-QN33PNHL-C-PIlz9n.js} +1 -1
- package/dist/ui/assets/{chunk-QZHKN3VN-CyhMmSdC.js → chunk-QZHKN3VN-BhpJFm6h.js} +1 -1
- package/dist/ui/assets/{chunk-TZMSLE5B-DlPypnIq.js → chunk-TZMSLE5B-Biake8IU.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-Biake8IU.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-Bz1et8oA.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-Bz1et8oA.js +1 -0
- package/dist/ui/assets/clone-Dxo5sEAf.js +1 -0
- package/dist/ui/assets/{consoleHook-59e792cb-DHYIclEd.js → consoleHook-59e792cb-BzEkHWE8.js} +1 -1
- package/dist/ui/assets/consoleHook-59e792cb-BzEkHWE8.js.gz +0 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-DotJH9qH.js → cose-bilkent-S5V4N54A-vAiVi74s.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-vAiVi74s.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-Btssr8QF.js → dagre-6UL2VRFP-C8w7TshD.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-C8w7TshD.js.gz +0 -0
- package/dist/ui/assets/{diagram-PSM6KHXK-D5_Jkog3.js → diagram-PSM6KHXK-CvnjEmtQ.js} +1 -1
- package/dist/ui/assets/diagram-PSM6KHXK-CvnjEmtQ.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-DlPEVSL5.js → diagram-QEK2KX5R-D245unng.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-D245unng.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-CjO1k8aG.js → diagram-S2PKOQOG-DgGUHL8Z.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-DgGUHL8Z.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-3cO02-K3.js → erDiagram-Q2GNP2WA-Cf5paK9b.js} +1 -1
- package/dist/ui/assets/erDiagram-Q2GNP2WA-Cf5paK9b.js.gz +0 -0
- package/dist/ui/assets/{flowDiagram-NV44I4VS-CajTpSxI.js → flowDiagram-NV44I4VS-BJpHmEXV.js} +1 -1
- package/dist/ui/assets/flowDiagram-NV44I4VS-BJpHmEXV.js.gz +0 -0
- package/dist/ui/assets/{ganttDiagram-LVOFAZNH-CnY_bV3o.js → ganttDiagram-LVOFAZNH-zOyTZcXC.js} +1 -1
- package/dist/ui/assets/{ganttDiagram-LVOFAZNH-CnY_bV3o.js.gz → ganttDiagram-LVOFAZNH-zOyTZcXC.js.gz} +0 -0
- package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-CH16bg-j.js → gitGraphDiagram-NY62KEGX-B0uxwqMv.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-B0uxwqMv.js.gz +0 -0
- package/dist/ui/assets/{graph-IQoZvE3o.js → graph-NWXc73TO.js} +1 -1
- package/dist/ui/assets/graph-NWXc73TO.js.gz +0 -0
- package/dist/ui/assets/{index-599aeaf7-RUCkgwsg.js → index-599aeaf7-BKmNqoNF.js} +1 -1
- package/dist/ui/assets/index-599aeaf7-BKmNqoNF.js.gz +0 -0
- package/dist/ui/assets/{index-B3AvIgqP.js → index-BRYNiHLB.js} +345 -349
- package/dist/ui/assets/index-BRYNiHLB.js.gz +0 -0
- package/dist/ui/assets/{index-QV5-5yA2.js → index-BX6Xmhes.js} +1 -1
- package/dist/ui/assets/index-BX6Xmhes.js.gz +0 -0
- package/dist/ui/assets/{index-ChmRuj_T.js → index-W1hIq1uU.js} +1 -1
- package/dist/ui/assets/index-W1hIq1uU.js.gz +0 -0
- package/dist/ui/assets/{index-C-quzPWC.js → index-ctuok0zf.js} +1 -1
- package/dist/ui/assets/index-ctuok0zf.js.gz +0 -0
- package/dist/ui/assets/{infoDiagram-ER5ION4S-2e4gZVGT.js → infoDiagram-ER5ION4S-CquCuoTH.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-B5bgV3GH.js → journeyDiagram-XKPGCS4Q-B_XkufZ8.js} +1 -1
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-B_XkufZ8.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-Bp-aWRSc.js → kanban-definition-3W4ZIXB7-C2Bo9HkB.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-C2Bo9HkB.js.gz +0 -0
- package/dist/ui/assets/katex-C6wkUDai.css +1 -0
- package/dist/ui/assets/{katex-DGRguze2.css.gz → katex-C6wkUDai.css.gz} +0 -0
- package/dist/ui/assets/{layout-BH-2XJZq.js → layout-D9A7Uaku.js} +1 -1
- package/dist/ui/assets/layout-D9A7Uaku.js.gz +0 -0
- package/dist/ui/assets/{linear-DCYXhl_f.js → linear-BJUwJsxE.js} +1 -1
- package/dist/ui/assets/linear-BJUwJsxE.js.gz +0 -0
- package/dist/ui/assets/{mermaid.core-BAuL6kgQ.js → mermaid.core-DcOEcjcA.js} +5 -5
- package/dist/ui/assets/mermaid.core-DcOEcjcA.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-DpH5N-N0.js → mindmap-definition-VGOIOE7T-BFT1m7BG.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-BFT1m7BG.js.gz +0 -0
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-BB8fBxj1.js → pieDiagram-ADFJNKIX-BFaX1oBV.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BFaX1oBV.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-D6oZLdUD.js → quadrantDiagram-AYHSOK5B-DQps5392.js} +1 -1
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DQps5392.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-B4uGPp8w.js → requirementDiagram-UZGBJVZJ-3EZ5KWEi.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-3EZ5KWEi.js.gz +0 -0
- package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-MXhIjhme.js → sankeyDiagram-TZEHDZUN-D0qcydqq.js} +1 -1
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-D0qcydqq.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-Cm53TYug.js → sequenceDiagram-WL72ISMW-BCR5gaaN.js} +1 -1
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-BCR5gaaN.js.gz +0 -0
- package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BVuxUkj5.js → stateDiagram-FKZM4ZOC-BvX4FLQ9.js} +1 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BvX4FLQ9.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CxLDvgTF.js +1 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-CMypNiEP.js → timeline-definition-IT6M3QCI-_AWp5LJn.js} +1 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-_AWp5LJn.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-BEtnV3BT.js → treemap-KMMF4GRG-BZ9FBl5-.js} +1 -1
- package/dist/ui/assets/treemap-KMMF4GRG-BZ9FBl5-.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BnioEYUM.js → xychartDiagram-PRI3JC2R-_wB7yuVd.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-_wB7yuVd.js.gz +0 -0
- package/dist/ui/index.html +1 -1
- package/package.json +8 -8
- package/dist/ui/assets/_basePickBy-DfxojsEt.js.gz +0 -0
- package/dist/ui/assets/_baseUniq-DWFPJOTC.js.gz +0 -0
- package/dist/ui/assets/arc-vMZ_XGSI.js.gz +0 -0
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-DGpk_uOD.js.gz +0 -0
- package/dist/ui/assets/blockDiagram-VD42YOAC-BkRnxc94.js.gz +0 -0
- package/dist/ui/assets/channel-B9aI4bYN.js +0 -1
- package/dist/ui/assets/chunk-B4BG7PRW-DtkeCZab.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-BQ_asW-1.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-DlPypnIq.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-p-68WO4Z.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-p-68WO4Z.js +0 -1
- package/dist/ui/assets/clone-DzK5ogfn.js +0 -1
- package/dist/ui/assets/consoleHook-59e792cb-DHYIclEd.js.gz +0 -0
- package/dist/ui/assets/cose-bilkent-S5V4N54A-DotJH9qH.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-Btssr8QF.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-D5_Jkog3.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-DlPEVSL5.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-CjO1k8aG.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-3cO02-K3.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-CajTpSxI.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CH16bg-j.js.gz +0 -0
- package/dist/ui/assets/graph-IQoZvE3o.js.gz +0 -0
- package/dist/ui/assets/index-599aeaf7-RUCkgwsg.js.gz +0 -0
- package/dist/ui/assets/index-B3AvIgqP.js.gz +0 -0
- package/dist/ui/assets/index-C-quzPWC.js.gz +0 -0
- package/dist/ui/assets/index-ChmRuj_T.js.gz +0 -0
- package/dist/ui/assets/index-QV5-5yA2.js.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-B5bgV3GH.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-Bp-aWRSc.js.gz +0 -0
- package/dist/ui/assets/katex-DGRguze2.css +0 -1
- package/dist/ui/assets/layout-BH-2XJZq.js.gz +0 -0
- package/dist/ui/assets/linear-DCYXhl_f.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-BAuL6kgQ.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-DpH5N-N0.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BB8fBxj1.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-D6oZLdUD.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-B4uGPp8w.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-MXhIjhme.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-Cm53TYug.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BVuxUkj5.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-8Jeww6Dc.js +0 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-CMypNiEP.js.gz +0 -0
- package/dist/ui/assets/treemap-KMMF4GRG-BEtnV3BT.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-BnioEYUM.js.gz +0 -0
|
@@ -6,7 +6,15 @@ var __export = (target, all) => {
|
|
|
6
6
|
|
|
7
7
|
// src/mcp/tools/sessions.ts
|
|
8
8
|
import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
AVAILABLE_CLAUDE_MODEL_ALIASES,
|
|
11
|
+
CODEX_MODEL_METADATA,
|
|
12
|
+
DEFAULT_CLAUDE_MODEL,
|
|
13
|
+
DEFAULT_CODEX_MODEL,
|
|
14
|
+
DEFAULT_GEMINI_MODEL,
|
|
15
|
+
GEMINI_MODELS
|
|
16
|
+
} from "@agor/core/models";
|
|
17
|
+
import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
|
|
10
18
|
import {
|
|
11
19
|
AGENTIC_TOOL_CAPABILITIES,
|
|
12
20
|
getSessionType
|
|
@@ -13875,6 +13883,64 @@ import { NotFoundError } from "@agor/core/utils/errors";
|
|
|
13875
13883
|
// src/mcp/tools/cards.ts
|
|
13876
13884
|
import { BoardObjectRepository } from "@agor/core/db";
|
|
13877
13885
|
|
|
13886
|
+
// src/mcp/tools/mcp-servers.ts
|
|
13887
|
+
async function getOAuthStatus(ctx, mcpServer) {
|
|
13888
|
+
const authType = mcpServer.auth?.type || "none";
|
|
13889
|
+
const oauthMode = mcpServer.auth?.oauth_mode || "per_user";
|
|
13890
|
+
if (authType !== "oauth") {
|
|
13891
|
+
return { authenticated: true };
|
|
13892
|
+
}
|
|
13893
|
+
const { UserMCPOAuthTokenRepository } = await import("@agor/core/db");
|
|
13894
|
+
const userTokenRepo = new UserMCPOAuthTokenRepository(ctx.db);
|
|
13895
|
+
const lookupUserId = oauthMode === "shared" ? null : ctx.userId;
|
|
13896
|
+
const tokenData = await userTokenRepo.getToken(lookupUserId, mcpServer.mcp_server_id);
|
|
13897
|
+
if (tokenData) {
|
|
13898
|
+
if (!tokenData.oauth_token_expires_at || tokenData.oauth_token_expires_at > /* @__PURE__ */ new Date()) {
|
|
13899
|
+
return {
|
|
13900
|
+
authenticated: true,
|
|
13901
|
+
tokenExpiresAt: tokenData.oauth_token_expires_at?.getTime()
|
|
13902
|
+
};
|
|
13903
|
+
}
|
|
13904
|
+
}
|
|
13905
|
+
return { authenticated: false };
|
|
13906
|
+
}
|
|
13907
|
+
async function summarizeMcpServer(ctx, mcpServer) {
|
|
13908
|
+
const authType = mcpServer.auth?.type || "none";
|
|
13909
|
+
const oauthMode = mcpServer.auth?.oauth_mode || "per_user";
|
|
13910
|
+
const { authenticated } = await getOAuthStatus(ctx, mcpServer);
|
|
13911
|
+
return {
|
|
13912
|
+
mcp_server_id: mcpServer.mcp_server_id,
|
|
13913
|
+
name: mcpServer.name,
|
|
13914
|
+
display_name: mcpServer.display_name,
|
|
13915
|
+
transport: mcpServer.transport,
|
|
13916
|
+
auth_type: authType,
|
|
13917
|
+
oauth_mode: oauthMode,
|
|
13918
|
+
oauth_authenticated: authenticated,
|
|
13919
|
+
enabled: mcpServer.enabled
|
|
13920
|
+
};
|
|
13921
|
+
}
|
|
13922
|
+
async function listAttachedMcpServers(ctx, sessionId, opts = {}) {
|
|
13923
|
+
const sessionMCPServers = await ctx.app.service("session-mcp-servers").find({
|
|
13924
|
+
...ctx.baseServiceParams,
|
|
13925
|
+
query: {
|
|
13926
|
+
session_id: sessionId,
|
|
13927
|
+
...opts.includeDisabled ? {} : { enabled: true },
|
|
13928
|
+
$limit: 100
|
|
13929
|
+
}
|
|
13930
|
+
});
|
|
13931
|
+
const data = Array.isArray(sessionMCPServers) ? sessionMCPServers : sessionMCPServers.data;
|
|
13932
|
+
const summaries = [];
|
|
13933
|
+
for (const sms of data) {
|
|
13934
|
+
try {
|
|
13935
|
+
const mcpServer = await ctx.app.service("mcp-servers").get(sms.mcp_server_id, ctx.baseServiceParams);
|
|
13936
|
+
summaries.push(await summarizeMcpServer(ctx, mcpServer));
|
|
13937
|
+
} catch (error48) {
|
|
13938
|
+
console.warn(`Failed to fetch MCP server ${sms.mcp_server_id}:`, error48);
|
|
13939
|
+
}
|
|
13940
|
+
}
|
|
13941
|
+
return summaries;
|
|
13942
|
+
}
|
|
13943
|
+
|
|
13878
13944
|
// src/mcp/tools/messages.ts
|
|
13879
13945
|
import { isWorktreeRbacEnabled } from "@agor/core/config";
|
|
13880
13946
|
import {
|
|
@@ -13899,7 +13965,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
|
|
|
13899
13965
|
// src/mcp/tools/worktrees.ts
|
|
13900
13966
|
import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
|
|
13901
13967
|
import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
|
|
13902
|
-
import {
|
|
13968
|
+
import { resolveSessionDefaults } from "@agor/core/sessions";
|
|
13903
13969
|
import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
|
|
13904
13970
|
import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
|
|
13905
13971
|
import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
|
|
@@ -13912,16 +13978,27 @@ function textResult(data) {
|
|
|
13912
13978
|
}
|
|
13913
13979
|
|
|
13914
13980
|
// src/mcp/tools/sessions.ts
|
|
13915
|
-
var
|
|
13981
|
+
var modelConfigObjectSchema = external_exports.object({
|
|
13916
13982
|
mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
|
|
13917
13983
|
// .min(1): reject empty-string model explicitly so callers don't silently
|
|
13918
13984
|
// fall through to user defaults when they meant to pin a specific model.
|
|
13919
13985
|
model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
|
|
13920
13986
|
effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
|
|
13921
13987
|
provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
|
|
13922
|
-
})
|
|
13923
|
-
|
|
13988
|
+
});
|
|
13989
|
+
var modelConfigInputSchema = external_exports.union([
|
|
13990
|
+
external_exports.string().min(1).describe(
|
|
13991
|
+
"Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
|
|
13992
|
+
),
|
|
13993
|
+
modelConfigObjectSchema
|
|
13994
|
+
]).optional().describe(
|
|
13995
|
+
"Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
|
|
13924
13996
|
);
|
|
13997
|
+
function coerceModelConfig(input) {
|
|
13998
|
+
if (input === void 0) return void 0;
|
|
13999
|
+
if (typeof input === "string") return { model: input };
|
|
14000
|
+
return input;
|
|
14001
|
+
}
|
|
13925
14002
|
function registerSessionTools(server, ctx) {
|
|
13926
14003
|
server.registerTool(
|
|
13927
14004
|
"agor_sessions_list",
|
|
@@ -13974,7 +14051,7 @@ function registerSessionTools(server, ctx) {
|
|
|
13974
14051
|
server.registerTool(
|
|
13975
14052
|
"agor_sessions_get",
|
|
13976
14053
|
{
|
|
13977
|
-
description: "Get detailed information about a specific session, including genealogy and
|
|
14054
|
+
description: "Get detailed information about a specific session, including genealogy, current state, and the MCP servers currently attached to it (with OAuth status \u2014 check `attached_mcp_servers[].oauth_authenticated` to spot servers needing auth). The response includes a `url` field with a clickable link to view the session in the UI.",
|
|
13978
14055
|
annotations: { readOnlyHint: true },
|
|
13979
14056
|
inputSchema: external_exports.object({
|
|
13980
14057
|
sessionId: external_exports.string().describe("Session ID (UUIDv7 or short ID like 01a1b2c3)")
|
|
@@ -13987,13 +14064,14 @@ function registerSessionTools(server, ctx) {
|
|
|
13987
14064
|
_last_message_truncation_length: 500
|
|
13988
14065
|
};
|
|
13989
14066
|
const session = await ctx.app.service("sessions").get(args.sessionId, sessionParams);
|
|
13990
|
-
|
|
14067
|
+
const attached_mcp_servers = await listAttachedMcpServers(ctx, session.session_id);
|
|
14068
|
+
return textResult({ ...session, attached_mcp_servers });
|
|
13991
14069
|
}
|
|
13992
14070
|
);
|
|
13993
14071
|
server.registerTool(
|
|
13994
14072
|
"agor_sessions_get_current",
|
|
13995
14073
|
{
|
|
13996
|
-
description: "Get information about the current session (the one making this MCP call). Returns session details
|
|
14074
|
+
description: "Get information about the current session (the one making this MCP call). Returns session details, denormalized worktree/repo/board context, and the MCP servers attached to this session (each with `oauth_authenticated` so callers can spot servers needing auth). To browse the broader catalog of servers eligible to attach, use `agor_mcp_servers_list`.",
|
|
13997
14075
|
annotations: { readOnlyHint: true },
|
|
13998
14076
|
inputSchema: external_exports.object({})
|
|
13999
14077
|
},
|
|
@@ -14043,11 +14121,13 @@ function registerSessionTools(server, ctx) {
|
|
|
14043
14121
|
} catch {
|
|
14044
14122
|
}
|
|
14045
14123
|
}
|
|
14124
|
+
const attached_mcp_servers = await listAttachedMcpServers(ctx, ctx.sessionId);
|
|
14046
14125
|
return textResult({
|
|
14047
14126
|
session,
|
|
14048
14127
|
worktree,
|
|
14049
14128
|
repo,
|
|
14050
|
-
board
|
|
14129
|
+
board,
|
|
14130
|
+
attached_mcp_servers
|
|
14051
14131
|
});
|
|
14052
14132
|
}
|
|
14053
14133
|
);
|
|
@@ -14204,10 +14284,10 @@ function registerSessionTools(server, ctx) {
|
|
|
14204
14284
|
extraInstructions: args.extraInstructions,
|
|
14205
14285
|
task_id: args.taskId,
|
|
14206
14286
|
mcpServerIds: args.mcpServerIds,
|
|
14207
|
-
modelConfig: args.modelConfig
|
|
14287
|
+
modelConfig: coerceModelConfig(args.modelConfig)
|
|
14208
14288
|
};
|
|
14209
14289
|
const childSession = await ctx.app.service("sessions").spawn(ctx.sessionId, spawnData, ctx.baseServiceParams);
|
|
14210
|
-
const
|
|
14290
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14211
14291
|
{
|
|
14212
14292
|
prompt: args.prompt,
|
|
14213
14293
|
permissionMode: childSession.permission_config?.mode || "acceptEdits",
|
|
@@ -14220,8 +14300,8 @@ function registerSessionTools(server, ctx) {
|
|
|
14220
14300
|
);
|
|
14221
14301
|
return textResult({
|
|
14222
14302
|
session: childSession,
|
|
14223
|
-
taskId:
|
|
14224
|
-
status:
|
|
14303
|
+
taskId: task.task_id,
|
|
14304
|
+
status: task.status,
|
|
14225
14305
|
note: "Subsession created and prompt execution started in background."
|
|
14226
14306
|
});
|
|
14227
14307
|
}
|
|
@@ -14251,22 +14331,23 @@ function registerSessionTools(server, ctx) {
|
|
|
14251
14331
|
const mode = args.mode;
|
|
14252
14332
|
const sessionId = await resolveSessionId(ctx, args.sessionId);
|
|
14253
14333
|
if (mode === "continue") {
|
|
14254
|
-
const
|
|
14334
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14255
14335
|
{ prompt: args.prompt, stream: true },
|
|
14256
14336
|
{ ...ctx.baseServiceParams, route: { id: sessionId } }
|
|
14257
14337
|
);
|
|
14258
|
-
if (
|
|
14338
|
+
if (task.status === "queued") {
|
|
14259
14339
|
return textResult({
|
|
14260
14340
|
success: true,
|
|
14261
14341
|
queued: true,
|
|
14262
|
-
|
|
14342
|
+
taskId: task.task_id,
|
|
14343
|
+
queue_position: task.queue_position,
|
|
14263
14344
|
note: "Session is busy. Prompt has been queued and will execute automatically when the session becomes idle."
|
|
14264
14345
|
});
|
|
14265
14346
|
}
|
|
14266
14347
|
return textResult({
|
|
14267
14348
|
success: true,
|
|
14268
|
-
taskId:
|
|
14269
|
-
status:
|
|
14349
|
+
taskId: task.task_id,
|
|
14350
|
+
status: task.status,
|
|
14270
14351
|
note: "Prompt added to existing session and execution started."
|
|
14271
14352
|
});
|
|
14272
14353
|
} else if (mode === "fork" || mode === "btw") {
|
|
@@ -14295,7 +14376,7 @@ function registerSessionTools(server, ctx) {
|
|
|
14295
14376
|
await ctx.app.service("sessions").patch(forkedSession.session_id, forkPatch, ctx.baseServiceParams);
|
|
14296
14377
|
}
|
|
14297
14378
|
const updatedSession = await ctx.app.service("sessions").get(forkedSession.session_id, ctx.baseServiceParams);
|
|
14298
|
-
const
|
|
14379
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14299
14380
|
{
|
|
14300
14381
|
prompt: args.prompt,
|
|
14301
14382
|
permissionMode: updatedSession.permission_config?.mode,
|
|
@@ -14306,21 +14387,21 @@ function registerSessionTools(server, ctx) {
|
|
|
14306
14387
|
const note = mode === "btw" ? 'Ephemeral "btw" fork created. Result will be sent back via callback when done, then the fork will auto-archive.' : "Forked session created and prompt execution started.";
|
|
14307
14388
|
return textResult({
|
|
14308
14389
|
session: updatedSession,
|
|
14309
|
-
taskId:
|
|
14310
|
-
status:
|
|
14390
|
+
taskId: task.task_id,
|
|
14391
|
+
status: task.status,
|
|
14311
14392
|
note
|
|
14312
14393
|
});
|
|
14313
14394
|
} else if (mode === "subsession") {
|
|
14314
14395
|
const spawnData = {
|
|
14315
14396
|
prompt: args.prompt,
|
|
14316
14397
|
mcpServerIds: args.mcpServerIds,
|
|
14317
|
-
modelConfig: args.modelConfig
|
|
14398
|
+
modelConfig: coerceModelConfig(args.modelConfig)
|
|
14318
14399
|
};
|
|
14319
14400
|
if (args.title) spawnData.title = args.title;
|
|
14320
14401
|
if (args.agenticTool) spawnData.agent = args.agenticTool;
|
|
14321
14402
|
if (args.taskId) spawnData.task_id = args.taskId;
|
|
14322
14403
|
const childSession = await ctx.app.service("sessions").spawn(sessionId, spawnData, ctx.baseServiceParams);
|
|
14323
|
-
const
|
|
14404
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14324
14405
|
{
|
|
14325
14406
|
prompt: args.prompt,
|
|
14326
14407
|
permissionMode: childSession.permission_config?.mode,
|
|
@@ -14330,8 +14411,8 @@ function registerSessionTools(server, ctx) {
|
|
|
14330
14411
|
);
|
|
14331
14412
|
return textResult({
|
|
14332
14413
|
session: childSession,
|
|
14333
|
-
taskId:
|
|
14334
|
-
status:
|
|
14414
|
+
taskId: task.task_id,
|
|
14415
|
+
status: task.status,
|
|
14335
14416
|
note: "Subsession created and prompt execution started."
|
|
14336
14417
|
});
|
|
14337
14418
|
}
|
|
@@ -14341,7 +14422,7 @@ function registerSessionTools(server, ctx) {
|
|
|
14341
14422
|
server.registerTool(
|
|
14342
14423
|
"agor_sessions_create",
|
|
14343
14424
|
{
|
|
14344
|
-
description:
|
|
14425
|
+
description: 'Create a new session in an existing worktree. Use for starting fresh work on a new task in the same codebase (e.g., new feature branch, separate investigation). Unlike spawn, this creates an independent session with no parent-child relationship. MCP servers are inherited from the worktree (if configured) or user defaults, or can be overridden via `mcpServerIds`. Model selection falls back to user defaults and can be overridden via `modelConfig` (accepts either a model ID string like "claude-opus-4-6" or a full {mode, model, effort, provider} object \u2014 call `agor_models_list` to discover valid model IDs per agenticTool). Supports optional callbacks to notify the creating session when the new session completes.',
|
|
14345
14426
|
inputSchema: external_exports.object({
|
|
14346
14427
|
worktreeId: external_exports.string().describe("Worktree ID where the session will run (required)"),
|
|
14347
14428
|
agenticTool: external_exports.enum(["claude-code", "codex", "gemini"]).describe("Which agent to use for this session (required)"),
|
|
@@ -14375,27 +14456,20 @@ function registerSessionTools(server, ctx) {
|
|
|
14375
14456
|
const { getGitState, getCurrentBranch } = await import("@agor/core/git");
|
|
14376
14457
|
const currentSha = await getGitState(worktree.path);
|
|
14377
14458
|
const currentRef = await getCurrentBranch(worktree.path);
|
|
14378
|
-
const
|
|
14379
|
-
const
|
|
14380
|
-
|
|
14381
|
-
|
|
14382
|
-
|
|
14383
|
-
|
|
14384
|
-
|
|
14385
|
-
|
|
14386
|
-
|
|
14387
|
-
|
|
14388
|
-
|
|
14389
|
-
|
|
14390
|
-
|
|
14391
|
-
|
|
14392
|
-
};
|
|
14393
|
-
}
|
|
14394
|
-
const modelConfig = resolveModelConfigPrecedence([
|
|
14395
|
-
args.modelConfig,
|
|
14396
|
-
userToolDefaults?.modelConfig
|
|
14397
|
-
]);
|
|
14398
|
-
const mcpServerIds = args.mcpServerIds !== void 0 ? await Promise.all(args.mcpServerIds.map((id) => resolveMcpServerId(ctx, id))) : worktree.mcp_server_ids && worktree.mcp_server_ids.length > 0 ? worktree.mcp_server_ids : userToolDefaults?.mcpServerIds || [];
|
|
14459
|
+
const explicitMcpServerIds = args.mcpServerIds !== void 0 ? await Promise.all(args.mcpServerIds.map((id) => resolveMcpServerId(ctx, id))) : void 0;
|
|
14460
|
+
const resolvedDefaults = resolveSessionDefaults2({
|
|
14461
|
+
agenticTool,
|
|
14462
|
+
user,
|
|
14463
|
+
worktree,
|
|
14464
|
+
overrides: {
|
|
14465
|
+
modelConfig: coerceModelConfig(args.modelConfig),
|
|
14466
|
+
mcpServerIds: explicitMcpServerIds
|
|
14467
|
+
}
|
|
14468
|
+
});
|
|
14469
|
+
const permissionConfig = resolvedDefaults.permission_config;
|
|
14470
|
+
const modelConfig = resolvedDefaults.model_config;
|
|
14471
|
+
const mcpServerIds = resolvedDefaults.mcp_server_ids;
|
|
14472
|
+
const permissionMode = permissionConfig.mode;
|
|
14399
14473
|
const mcpServerIdsFromArgs = args.mcpServerIds !== void 0;
|
|
14400
14474
|
const callbackConfig = {};
|
|
14401
14475
|
const effectiveCallbackSessionId = args.callbackSessionId || ctx.sessionId;
|
|
@@ -14451,9 +14525,9 @@ function registerSessionTools(server, ctx) {
|
|
|
14451
14525
|
if (mcpServerIds && mcpServerIds.length > 0) {
|
|
14452
14526
|
for (const mcpServerId of mcpServerIds) {
|
|
14453
14527
|
try {
|
|
14454
|
-
await ctx.app.service("
|
|
14455
|
-
{
|
|
14456
|
-
ctx.baseServiceParams
|
|
14528
|
+
await ctx.app.service("/sessions/:id/mcp-servers").create(
|
|
14529
|
+
{ mcpServerId },
|
|
14530
|
+
{ ...ctx.baseServiceParams, route: { id: session.session_id } }
|
|
14457
14531
|
);
|
|
14458
14532
|
} catch (error48) {
|
|
14459
14533
|
const reason = error48 instanceof Error ? error48.message : String(error48);
|
|
@@ -14467,9 +14541,9 @@ function registerSessionTools(server, ctx) {
|
|
|
14467
14541
|
}
|
|
14468
14542
|
}
|
|
14469
14543
|
}
|
|
14470
|
-
let
|
|
14544
|
+
let initialTask = null;
|
|
14471
14545
|
if (args.initialPrompt) {
|
|
14472
|
-
|
|
14546
|
+
initialTask = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14473
14547
|
{ prompt: args.initialPrompt, permissionMode, stream: true },
|
|
14474
14548
|
{ ...ctx.baseServiceParams, route: { id: session.session_id } }
|
|
14475
14549
|
);
|
|
@@ -14478,7 +14552,7 @@ function registerSessionTools(server, ctx) {
|
|
|
14478
14552
|
const mcpFailureNote = mcpAttachFailures.length > 0 ? ` Warning: ${mcpAttachFailures.length} requested MCP server(s) failed to attach \u2014 see mcpAttachFailures.` : "";
|
|
14479
14553
|
return textResult({
|
|
14480
14554
|
session,
|
|
14481
|
-
taskId:
|
|
14555
|
+
taskId: initialTask?.task_id,
|
|
14482
14556
|
note: args.initialPrompt ? `Session created and initial prompt execution started.${callbackNote}${mcpFailureNote}` : `Session created successfully.${callbackNote}${mcpFailureNote}`,
|
|
14483
14557
|
...mcpAttachFailures.length > 0 && { mcpAttachFailures }
|
|
14484
14558
|
});
|
|
@@ -14739,6 +14813,54 @@ function registerSessionTools(server, ctx) {
|
|
|
14739
14813
|
});
|
|
14740
14814
|
}
|
|
14741
14815
|
);
|
|
14816
|
+
server.registerTool(
|
|
14817
|
+
"agor_models_list",
|
|
14818
|
+
{
|
|
14819
|
+
description: "List valid model IDs grouped by agenticTool. Use this to discover what to pass for `modelConfig` (or its string shorthand) in agor_sessions_create / spawn / prompt. Sourced live from the daemon model registry \u2014 when new models ship and the registry is updated, this tool returns them on the next call.",
|
|
14820
|
+
annotations: { readOnlyHint: true },
|
|
14821
|
+
inputSchema: external_exports.object({
|
|
14822
|
+
agenticTool: external_exports.enum(["claude-code", "codex", "gemini"]).optional().describe("Filter to a single agentic tool. Omit to return all tools.")
|
|
14823
|
+
})
|
|
14824
|
+
},
|
|
14825
|
+
async (args) => {
|
|
14826
|
+
const claudeModels = AVAILABLE_CLAUDE_MODEL_ALIASES.map((m) => ({
|
|
14827
|
+
id: m.id,
|
|
14828
|
+
displayName: m.displayName,
|
|
14829
|
+
description: m.description,
|
|
14830
|
+
family: m.family
|
|
14831
|
+
}));
|
|
14832
|
+
const codexModels = Object.entries(CODEX_MODEL_METADATA).map(([id, meta3]) => ({
|
|
14833
|
+
id,
|
|
14834
|
+
displayName: meta3.name,
|
|
14835
|
+
description: meta3.description
|
|
14836
|
+
}));
|
|
14837
|
+
const geminiModels = Object.entries(GEMINI_MODELS).map(([id, meta3]) => ({
|
|
14838
|
+
id,
|
|
14839
|
+
displayName: meta3.name,
|
|
14840
|
+
description: meta3.description,
|
|
14841
|
+
useCase: meta3.useCase
|
|
14842
|
+
}));
|
|
14843
|
+
const all = {
|
|
14844
|
+
"claude-code": {
|
|
14845
|
+
default: DEFAULT_CLAUDE_MODEL,
|
|
14846
|
+
models: claudeModels
|
|
14847
|
+
},
|
|
14848
|
+
codex: {
|
|
14849
|
+
default: DEFAULT_CODEX_MODEL,
|
|
14850
|
+
models: codexModels
|
|
14851
|
+
},
|
|
14852
|
+
gemini: {
|
|
14853
|
+
default: DEFAULT_GEMINI_MODEL,
|
|
14854
|
+
models: geminiModels,
|
|
14855
|
+
note: "Gemini models are normally fetched live from the Google API per-user. This is the static fallback list \u2014 newer models may exist."
|
|
14856
|
+
}
|
|
14857
|
+
};
|
|
14858
|
+
if (args.agenticTool) {
|
|
14859
|
+
return textResult({ [args.agenticTool]: all[args.agenticTool] });
|
|
14860
|
+
}
|
|
14861
|
+
return textResult(all);
|
|
14862
|
+
}
|
|
14863
|
+
);
|
|
14742
14864
|
}
|
|
14743
14865
|
export {
|
|
14744
14866
|
registerSessionTools
|
|
@@ -13829,20 +13829,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
|
|
|
13829
13829
|
|
|
13830
13830
|
// src/mcp/tools/sessions.ts
|
|
13831
13831
|
import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
|
|
13832
|
-
import {
|
|
13832
|
+
import {
|
|
13833
|
+
AVAILABLE_CLAUDE_MODEL_ALIASES,
|
|
13834
|
+
CODEX_MODEL_METADATA,
|
|
13835
|
+
DEFAULT_CLAUDE_MODEL,
|
|
13836
|
+
DEFAULT_CODEX_MODEL,
|
|
13837
|
+
DEFAULT_GEMINI_MODEL,
|
|
13838
|
+
GEMINI_MODELS
|
|
13839
|
+
} from "@agor/core/models";
|
|
13840
|
+
import { resolveSessionDefaults } from "@agor/core/sessions";
|
|
13833
13841
|
import {
|
|
13834
13842
|
AGENTIC_TOOL_CAPABILITIES,
|
|
13835
13843
|
getSessionType
|
|
13836
13844
|
} from "@agor/core/types";
|
|
13837
|
-
var
|
|
13845
|
+
var modelConfigObjectSchema = external_exports.object({
|
|
13838
13846
|
mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
|
|
13839
13847
|
// .min(1): reject empty-string model explicitly so callers don't silently
|
|
13840
13848
|
// fall through to user defaults when they meant to pin a specific model.
|
|
13841
13849
|
model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
|
|
13842
13850
|
effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
|
|
13843
13851
|
provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
|
|
13844
|
-
})
|
|
13845
|
-
|
|
13852
|
+
});
|
|
13853
|
+
var modelConfigInputSchema = external_exports.union([
|
|
13854
|
+
external_exports.string().min(1).describe(
|
|
13855
|
+
"Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
|
|
13856
|
+
),
|
|
13857
|
+
modelConfigObjectSchema
|
|
13858
|
+
]).optional().describe(
|
|
13859
|
+
"Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
|
|
13846
13860
|
);
|
|
13847
13861
|
|
|
13848
13862
|
// src/mcp/tools/users.ts
|
|
@@ -13851,7 +13865,7 @@ import { ROLES as ROLES2 } from "@agor/core/types";
|
|
|
13851
13865
|
// src/mcp/tools/worktrees.ts
|
|
13852
13866
|
import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
|
|
13853
13867
|
import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
|
|
13854
|
-
import {
|
|
13868
|
+
import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
|
|
13855
13869
|
import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
|
|
13856
13870
|
import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
|
|
13857
13871
|
import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
|
|
@@ -13826,26 +13826,40 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
|
|
|
13826
13826
|
|
|
13827
13827
|
// src/mcp/tools/sessions.ts
|
|
13828
13828
|
import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
|
|
13829
|
-
import {
|
|
13829
|
+
import {
|
|
13830
|
+
AVAILABLE_CLAUDE_MODEL_ALIASES,
|
|
13831
|
+
CODEX_MODEL_METADATA,
|
|
13832
|
+
DEFAULT_CLAUDE_MODEL,
|
|
13833
|
+
DEFAULT_CODEX_MODEL,
|
|
13834
|
+
DEFAULT_GEMINI_MODEL,
|
|
13835
|
+
GEMINI_MODELS
|
|
13836
|
+
} from "@agor/core/models";
|
|
13837
|
+
import { resolveSessionDefaults } from "@agor/core/sessions";
|
|
13830
13838
|
import {
|
|
13831
13839
|
AGENTIC_TOOL_CAPABILITIES,
|
|
13832
13840
|
getSessionType
|
|
13833
13841
|
} from "@agor/core/types";
|
|
13834
|
-
var
|
|
13842
|
+
var modelConfigObjectSchema = external_exports.object({
|
|
13835
13843
|
mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
|
|
13836
13844
|
// .min(1): reject empty-string model explicitly so callers don't silently
|
|
13837
13845
|
// fall through to user defaults when they meant to pin a specific model.
|
|
13838
13846
|
model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
|
|
13839
13847
|
effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
|
|
13840
13848
|
provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
|
|
13841
|
-
})
|
|
13842
|
-
|
|
13849
|
+
});
|
|
13850
|
+
var modelConfigInputSchema = external_exports.union([
|
|
13851
|
+
external_exports.string().min(1).describe(
|
|
13852
|
+
"Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
|
|
13853
|
+
),
|
|
13854
|
+
modelConfigObjectSchema
|
|
13855
|
+
]).optional().describe(
|
|
13856
|
+
"Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
|
|
13843
13857
|
);
|
|
13844
13858
|
|
|
13845
13859
|
// src/mcp/tools/worktrees.ts
|
|
13846
13860
|
import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
|
|
13847
13861
|
import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
|
|
13848
|
-
import {
|
|
13862
|
+
import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
|
|
13849
13863
|
import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
|
|
13850
13864
|
import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
|
|
13851
13865
|
import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
|
|
@@ -7,7 +7,7 @@ var __export = (target, all) => {
|
|
|
7
7
|
// src/mcp/tools/worktrees.ts
|
|
8
8
|
import { isWorktreeRbacEnabled as isWorktreeRbacEnabled2 } from "@agor/core/config";
|
|
9
9
|
import { WorktreeRepository as WorktreeRepository3 } from "@agor/core/db";
|
|
10
|
-
import {
|
|
10
|
+
import { resolveSessionDefaults as resolveSessionDefaults2 } from "@agor/core/sessions";
|
|
11
11
|
import { getAssistantConfig, isAssistant, WORKTREE_PERMISSION_LEVELS as WORKTREE_PERMISSION_LEVELS2 } from "@agor/core/types";
|
|
12
12
|
import { computeZoneRelativePosition } from "@agor/core/utils/board-placement";
|
|
13
13
|
import { normalizeOptionalHttpUrl } from "@agor/core/utils/url";
|
|
@@ -13853,20 +13853,34 @@ import { extractSlugFromUrl, isValidGitUrl, isValidSlug } from "@agor/core/confi
|
|
|
13853
13853
|
|
|
13854
13854
|
// src/mcp/tools/sessions.ts
|
|
13855
13855
|
import { WorktreeRepository as WorktreeRepository2 } from "@agor/core/db";
|
|
13856
|
-
import {
|
|
13856
|
+
import {
|
|
13857
|
+
AVAILABLE_CLAUDE_MODEL_ALIASES,
|
|
13858
|
+
CODEX_MODEL_METADATA,
|
|
13859
|
+
DEFAULT_CLAUDE_MODEL,
|
|
13860
|
+
DEFAULT_CODEX_MODEL,
|
|
13861
|
+
DEFAULT_GEMINI_MODEL,
|
|
13862
|
+
GEMINI_MODELS
|
|
13863
|
+
} from "@agor/core/models";
|
|
13864
|
+
import { resolveSessionDefaults } from "@agor/core/sessions";
|
|
13857
13865
|
import {
|
|
13858
13866
|
AGENTIC_TOOL_CAPABILITIES,
|
|
13859
13867
|
getSessionType
|
|
13860
13868
|
} from "@agor/core/types";
|
|
13861
|
-
var
|
|
13869
|
+
var modelConfigObjectSchema = external_exports.object({
|
|
13862
13870
|
mode: external_exports.enum(["alias", "exact"]).optional().describe("Model selection mode (default: 'alias')"),
|
|
13863
13871
|
// .min(1): reject empty-string model explicitly so callers don't silently
|
|
13864
13872
|
// fall through to user defaults when they meant to pin a specific model.
|
|
13865
13873
|
model: external_exports.string().min(1).describe("Model identifier (e.g. 'claude-opus-4-6', 'claude-sonnet-4-6')"),
|
|
13866
13874
|
effort: external_exports.enum(["low", "medium", "high", "max"]).optional().describe("Reasoning effort level (default: high)"),
|
|
13867
13875
|
provider: external_exports.string().optional().describe("Provider ID (OpenCode only, e.g. 'anthropic')")
|
|
13868
|
-
})
|
|
13869
|
-
|
|
13876
|
+
});
|
|
13877
|
+
var modelConfigInputSchema = external_exports.union([
|
|
13878
|
+
external_exports.string().min(1).describe(
|
|
13879
|
+
"Shorthand: just the model ID string (e.g. 'claude-opus-4-6'). Equivalent to { model: <id> }."
|
|
13880
|
+
),
|
|
13881
|
+
modelConfigObjectSchema
|
|
13882
|
+
]).optional().describe(
|
|
13883
|
+
"Model override for this session. Pass either a model ID string (e.g. 'claude-opus-4-6') or a full { mode, model, effort, provider } object. Overrides the user default model_config and is threaded through to the spawned agent process. Call agor_models_list to discover valid model IDs per agenticTool."
|
|
13870
13884
|
);
|
|
13871
13885
|
|
|
13872
13886
|
// src/mcp/tools/users.ts
|
|
@@ -14319,27 +14333,28 @@ function registerWorktreeTools(server, ctx) {
|
|
|
14319
14333
|
};
|
|
14320
14334
|
const renderedPrompt = renderTemplate(zone.trigger.template, templateContext);
|
|
14321
14335
|
if (renderedPrompt) {
|
|
14322
|
-
const
|
|
14336
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14323
14337
|
{ prompt: renderedPrompt, stream: true },
|
|
14324
14338
|
{ ...ctx.baseServiceParams, route: { id: targetSessionId } }
|
|
14325
14339
|
);
|
|
14326
|
-
if (
|
|
14340
|
+
if (task.status === "queued") {
|
|
14327
14341
|
promptResult = {
|
|
14328
14342
|
queued: true,
|
|
14329
|
-
|
|
14343
|
+
taskId: task.task_id,
|
|
14344
|
+
queue_position: task.queue_position,
|
|
14330
14345
|
sessionId: targetSessionId,
|
|
14331
14346
|
note: "Session is busy. Zone trigger prompt has been queued."
|
|
14332
14347
|
};
|
|
14333
14348
|
console.log(
|
|
14334
|
-
`\u{1F4EC} Zone trigger queued for session ${targetSessionId.substring(0, 8)} at position ${
|
|
14349
|
+
`\u{1F4EC} Zone trigger queued for session ${targetSessionId.substring(0, 8)} at position ${task.queue_position}`
|
|
14335
14350
|
);
|
|
14336
14351
|
} else {
|
|
14337
14352
|
promptResult = {
|
|
14338
|
-
taskId:
|
|
14353
|
+
taskId: task.task_id,
|
|
14339
14354
|
sessionId: targetSessionId,
|
|
14340
14355
|
note: "Zone trigger prompt sent to target session"
|
|
14341
14356
|
};
|
|
14342
|
-
console.log(`\u2705 Zone trigger executed: task ${
|
|
14357
|
+
console.log(`\u2705 Zone trigger executed: task ${task.task_id.substring(0, 8)}`);
|
|
14343
14358
|
}
|
|
14344
14359
|
} else {
|
|
14345
14360
|
promptResult = {
|
|
@@ -14379,24 +14394,11 @@ function registerWorktreeTools(server, ctx) {
|
|
|
14379
14394
|
const { getGitState, getCurrentBranch } = await import("@agor/core/git");
|
|
14380
14395
|
const currentSha = await getGitState(worktree.path);
|
|
14381
14396
|
const currentRef = await getCurrentBranch(worktree.path);
|
|
14382
|
-
const {
|
|
14383
|
-
|
|
14384
|
-
|
|
14385
|
-
|
|
14386
|
-
|
|
14387
|
-
const permissionConfig = {
|
|
14388
|
-
mode: permissionMode,
|
|
14389
|
-
allowedTools: []
|
|
14390
|
-
};
|
|
14391
|
-
if (agenticTool === "codex" && userToolDefaults?.codexSandboxMode && userToolDefaults?.codexApprovalPolicy) {
|
|
14392
|
-
permissionConfig.codex = {
|
|
14393
|
-
sandboxMode: userToolDefaults.codexSandboxMode,
|
|
14394
|
-
approvalPolicy: userToolDefaults.codexApprovalPolicy,
|
|
14395
|
-
networkAccess: userToolDefaults.codexNetworkAccess
|
|
14396
|
-
};
|
|
14397
|
-
}
|
|
14398
|
-
const modelConfig = resolveModelConfig(userToolDefaults?.modelConfig);
|
|
14399
|
-
const mcpServerIds = worktree.mcp_server_ids && worktree.mcp_server_ids.length > 0 ? worktree.mcp_server_ids : userToolDefaults?.mcpServerIds || [];
|
|
14397
|
+
const {
|
|
14398
|
+
permission_config: permissionConfig,
|
|
14399
|
+
model_config: modelConfig,
|
|
14400
|
+
mcp_server_ids: mcpServerIds
|
|
14401
|
+
} = resolveSessionDefaults2({ agenticTool, user, worktree });
|
|
14400
14402
|
const sessionData = {
|
|
14401
14403
|
worktree_id: worktreeId,
|
|
14402
14404
|
agentic_tool: agenticTool,
|
|
@@ -14421,12 +14423,9 @@ function registerWorktreeTools(server, ctx) {
|
|
|
14421
14423
|
if (mcpServerIds.length > 0) {
|
|
14422
14424
|
for (const mcpServerId of mcpServerIds) {
|
|
14423
14425
|
try {
|
|
14424
|
-
await ctx.app.service("
|
|
14425
|
-
{
|
|
14426
|
-
|
|
14427
|
-
mcp_server_id: mcpServerId
|
|
14428
|
-
},
|
|
14429
|
-
ctx.baseServiceParams
|
|
14426
|
+
await ctx.app.service("/sessions/:id/mcp-servers").create(
|
|
14427
|
+
{ mcpServerId },
|
|
14428
|
+
{ ...ctx.baseServiceParams, route: { id: newSession.session_id } }
|
|
14430
14429
|
);
|
|
14431
14430
|
} catch (error48) {
|
|
14432
14431
|
console.warn(
|
|
@@ -14436,16 +14435,16 @@ function registerWorktreeTools(server, ctx) {
|
|
|
14436
14435
|
}
|
|
14437
14436
|
console.log(`\u2705 Attached ${mcpServerIds.length} MCP servers`);
|
|
14438
14437
|
}
|
|
14439
|
-
const
|
|
14438
|
+
const task = await ctx.app.service("/sessions/:id/prompt").create(
|
|
14440
14439
|
{ prompt: renderedPrompt, stream: true },
|
|
14441
14440
|
{ ...ctx.baseServiceParams, route: { id: newSession.session_id } }
|
|
14442
14441
|
);
|
|
14443
14442
|
promptResult = {
|
|
14444
|
-
taskId:
|
|
14443
|
+
taskId: task.task_id,
|
|
14445
14444
|
sessionId: newSession.session_id,
|
|
14446
14445
|
note: `always_new trigger: created session ${newSession.session_id.substring(0, 8)} (${agenticTool}) and sent prompt`
|
|
14447
14446
|
};
|
|
14448
|
-
console.log(`\u2705 Zone trigger executed: task ${
|
|
14447
|
+
console.log(`\u2705 Zone trigger executed: task ${task.task_id.substring(0, 8)}`);
|
|
14449
14448
|
} else {
|
|
14450
14449
|
promptResult = {
|
|
14451
14450
|
note: "Zone trigger template rendered to empty string (check template syntax)"
|