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
|
@@ -421,6 +421,9 @@ function loadConfigSync() {
|
|
|
421
421
|
);
|
|
422
422
|
}
|
|
423
423
|
}
|
|
424
|
+
function isConfigCredentialKey(key) {
|
|
425
|
+
return CONFIG_CREDENTIAL_KEYS.has(key);
|
|
426
|
+
}
|
|
424
427
|
function getCredential(key) {
|
|
425
428
|
try {
|
|
426
429
|
const config = loadConfigSync();
|
|
@@ -516,7 +519,7 @@ async function getReposDirAsync() {
|
|
|
516
519
|
async function getWorktreesDirAsync() {
|
|
517
520
|
return import_node_path.default.join(await getDataHomeAsync(), "worktrees");
|
|
518
521
|
}
|
|
519
|
-
var import_node_fs2, import_promises, import_node_os, import_node_path, import_js_yaml2, PublicBaseUrlNotConfiguredError;
|
|
522
|
+
var import_node_fs2, import_promises, import_node_os, import_node_path, import_js_yaml2, PublicBaseUrlNotConfiguredError, CONFIG_CREDENTIAL_KEYS;
|
|
520
523
|
var init_config_manager = __esm({
|
|
521
524
|
"src/config/config-manager.ts"() {
|
|
522
525
|
"use strict";
|
|
@@ -534,6 +537,13 @@ var init_config_manager = __esm({
|
|
|
534
537
|
this.name = "PublicBaseUrlNotConfiguredError";
|
|
535
538
|
}
|
|
536
539
|
};
|
|
540
|
+
CONFIG_CREDENTIAL_KEYS = /* @__PURE__ */ new Set([
|
|
541
|
+
"ANTHROPIC_API_KEY",
|
|
542
|
+
"ANTHROPIC_AUTH_TOKEN",
|
|
543
|
+
"ANTHROPIC_BASE_URL",
|
|
544
|
+
"OPENAI_API_KEY",
|
|
545
|
+
"GEMINI_API_KEY"
|
|
546
|
+
]);
|
|
537
547
|
}
|
|
538
548
|
});
|
|
539
549
|
|
|
@@ -993,6 +1003,7 @@ var init_schema_postgres = __esm({
|
|
|
993
1003
|
completed_at: t.timestamp("completed_at"),
|
|
994
1004
|
status: (0, import_pg_core.text)("status", {
|
|
995
1005
|
enum: [
|
|
1006
|
+
"queued",
|
|
996
1007
|
"created",
|
|
997
1008
|
"running",
|
|
998
1009
|
"stopping",
|
|
@@ -1004,6 +1015,8 @@ var init_schema_postgres = __esm({
|
|
|
1004
1015
|
"stopped"
|
|
1005
1016
|
]
|
|
1006
1017
|
}).notNull(),
|
|
1018
|
+
// Queue position (lower drains first); only populated for status='queued'
|
|
1019
|
+
queue_position: (0, import_pg_core.integer)("queue_position"),
|
|
1007
1020
|
// User attribution
|
|
1008
1021
|
created_by: (0, import_pg_core.varchar)("created_by", { length: 36 }).notNull().default("anonymous"),
|
|
1009
1022
|
// MD5 of SDK session file at task completion (only populated when stateless_fs_mode is enabled)
|
|
@@ -1013,7 +1026,12 @@ var init_schema_postgres = __esm({
|
|
|
1013
1026
|
(table) => ({
|
|
1014
1027
|
sessionIdx: (0, import_pg_core.index)("tasks_session_idx").on(table.session_id),
|
|
1015
1028
|
statusIdx: (0, import_pg_core.index)("tasks_status_idx").on(table.status),
|
|
1016
|
-
createdIdx: (0, import_pg_core.index)("tasks_created_idx").on(table.created_at)
|
|
1029
|
+
createdIdx: (0, import_pg_core.index)("tasks_created_idx").on(table.created_at),
|
|
1030
|
+
queueIdx: (0, import_pg_core.index)("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
|
|
1031
|
+
// Partial unique index — defense-in-depth for `tasks.createPending` race
|
|
1032
|
+
// serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
|
|
1033
|
+
// rows have NULL queue_position and are unaffected.
|
|
1034
|
+
queuedPositionUnique: (0, import_pg_core.uniqueIndex)("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(import_drizzle_orm2.sql`${table.status} = 'queued'`)
|
|
1017
1035
|
})
|
|
1018
1036
|
);
|
|
1019
1037
|
serializedSessions = (0, import_pg_core.pgTable)(
|
|
@@ -1073,11 +1091,9 @@ var init_schema_postgres = __esm({
|
|
|
1073
1091
|
// First 200 chars for list views
|
|
1074
1092
|
// Parent tool use ID (for nested tool calls - e.g., Task tool spawning Read/Grep)
|
|
1075
1093
|
parent_tool_use_id: (0, import_pg_core.text)("parent_tool_use_id"),
|
|
1076
|
-
//
|
|
1077
|
-
|
|
1078
|
-
//
|
|
1079
|
-
queue_position: (0, import_pg_core.integer)("queue_position"),
|
|
1080
|
-
// Position in queue (1, 2, 3, ...)
|
|
1094
|
+
// NOTE: queueing moved off `messages` and onto `tasks.status='queued'` as
|
|
1095
|
+
// of migration sqlite/0040 (postgres/0030). The legacy `status` and
|
|
1096
|
+
// `queue_position` columns are gone — see `tasks.queue_position` instead.
|
|
1081
1097
|
// Full data (JSON blob)
|
|
1082
1098
|
data: t.json("data").$type().notNull()
|
|
1083
1099
|
},
|
|
@@ -1085,8 +1101,7 @@ var init_schema_postgres = __esm({
|
|
|
1085
1101
|
// Indexes for efficient lookups
|
|
1086
1102
|
sessionIdx: (0, import_pg_core.index)("messages_session_id_idx").on(table.session_id),
|
|
1087
1103
|
taskIdx: (0, import_pg_core.index)("messages_task_id_idx").on(table.task_id),
|
|
1088
|
-
sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index)
|
|
1089
|
-
queueIdx: (0, import_pg_core.index)("messages_queue_idx").on(table.session_id, table.status, table.queue_position)
|
|
1104
|
+
sessionIndexIdx: (0, import_pg_core.index)("messages_session_index_idx").on(table.session_id, table.index)
|
|
1090
1105
|
})
|
|
1091
1106
|
);
|
|
1092
1107
|
boards = (0, import_pg_core.pgTable)(
|
|
@@ -1723,6 +1738,7 @@ var init_schema_sqlite = __esm({
|
|
|
1723
1738
|
completed_at: t2.timestamp("completed_at"),
|
|
1724
1739
|
status: (0, import_sqlite_core.text)("status", {
|
|
1725
1740
|
enum: [
|
|
1741
|
+
"queued",
|
|
1726
1742
|
"created",
|
|
1727
1743
|
"running",
|
|
1728
1744
|
"stopping",
|
|
@@ -1734,6 +1750,8 @@ var init_schema_sqlite = __esm({
|
|
|
1734
1750
|
"stopped"
|
|
1735
1751
|
]
|
|
1736
1752
|
}).notNull(),
|
|
1753
|
+
// Queue position (lower drains first); only populated for status='queued'
|
|
1754
|
+
queue_position: (0, import_sqlite_core.integer)("queue_position"),
|
|
1737
1755
|
// User attribution
|
|
1738
1756
|
created_by: (0, import_sqlite_core.text)("created_by", { length: 36 }).notNull().default("anonymous"),
|
|
1739
1757
|
// MD5 of SDK session file at task completion (only populated when stateless_fs_mode is enabled)
|
|
@@ -1743,7 +1761,12 @@ var init_schema_sqlite = __esm({
|
|
|
1743
1761
|
(table) => ({
|
|
1744
1762
|
sessionIdx: (0, import_sqlite_core.index)("tasks_session_idx").on(table.session_id),
|
|
1745
1763
|
statusIdx: (0, import_sqlite_core.index)("tasks_status_idx").on(table.status),
|
|
1746
|
-
createdIdx: (0, import_sqlite_core.index)("tasks_created_idx").on(table.created_at)
|
|
1764
|
+
createdIdx: (0, import_sqlite_core.index)("tasks_created_idx").on(table.created_at),
|
|
1765
|
+
queueIdx: (0, import_sqlite_core.index)("tasks_queue_idx").on(table.session_id, table.status, table.queue_position),
|
|
1766
|
+
// Partial unique index — defense-in-depth for `tasks.createPending` race
|
|
1767
|
+
// serialization. Only QUEUED rows are constrained; CREATED/RUNNING/done
|
|
1768
|
+
// rows have NULL queue_position and are unaffected.
|
|
1769
|
+
queuedPositionUnique: (0, import_sqlite_core.uniqueIndex)("tasks_queued_position_unique").on(table.session_id, table.queue_position).where(import_drizzle_orm3.sql`${table.status} = 'queued'`)
|
|
1747
1770
|
})
|
|
1748
1771
|
);
|
|
1749
1772
|
serializedSessions2 = (0, import_sqlite_core.sqliteTable)(
|
|
@@ -1803,11 +1826,9 @@ var init_schema_sqlite = __esm({
|
|
|
1803
1826
|
// First 200 chars for list views
|
|
1804
1827
|
// Parent tool use ID (for nested tool calls - e.g., Task tool spawning Read/Grep)
|
|
1805
1828
|
parent_tool_use_id: (0, import_sqlite_core.text)("parent_tool_use_id"),
|
|
1806
|
-
//
|
|
1807
|
-
|
|
1808
|
-
//
|
|
1809
|
-
queue_position: (0, import_sqlite_core.integer)("queue_position"),
|
|
1810
|
-
// Position in queue (1, 2, 3, ...)
|
|
1829
|
+
// NOTE: queueing moved off `messages` and onto `tasks.status='queued'` as
|
|
1830
|
+
// of migration sqlite/0040 (postgres/0030). The legacy `status` and
|
|
1831
|
+
// `queue_position` columns are gone — see `tasks.queue_position` instead.
|
|
1811
1832
|
// Full data (JSON blob)
|
|
1812
1833
|
data: t2.json("data").$type().notNull()
|
|
1813
1834
|
},
|
|
@@ -1815,8 +1836,7 @@ var init_schema_sqlite = __esm({
|
|
|
1815
1836
|
// Indexes for efficient lookups
|
|
1816
1837
|
sessionIdx: (0, import_sqlite_core.index)("messages_session_id_idx").on(table.session_id),
|
|
1817
1838
|
taskIdx: (0, import_sqlite_core.index)("messages_task_id_idx").on(table.task_id),
|
|
1818
|
-
sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index)
|
|
1819
|
-
queueIdx: (0, import_sqlite_core.index)("messages_queue_idx").on(table.session_id, table.status, table.queue_position)
|
|
1839
|
+
sessionIndexIdx: (0, import_sqlite_core.index)("messages_session_index_idx").on(table.session_id, table.index)
|
|
1820
1840
|
})
|
|
1821
1841
|
);
|
|
1822
1842
|
boards2 = (0, import_sqlite_core.sqliteTable)(
|
|
@@ -2486,6 +2506,7 @@ __export(config_exports, {
|
|
|
2486
2506
|
getWorktreesDir: () => getWorktreesDir,
|
|
2487
2507
|
getWorktreesDirAsync: () => getWorktreesDirAsync,
|
|
2488
2508
|
initConfig: () => initConfig,
|
|
2509
|
+
isConfigCredentialKey: () => isConfigCredentialKey,
|
|
2489
2510
|
isEnvVarAllowed: () => isEnvVarAllowed,
|
|
2490
2511
|
isUnixImpersonationEnabled: () => isUnixImpersonationEnabled,
|
|
2491
2512
|
isValid: () => isValid,
|
|
@@ -3147,6 +3168,7 @@ var ALLOWED_ENV_VARS = /* @__PURE__ */ new Set([
|
|
|
3147
3168
|
"ANTHROPIC_BASE_URL",
|
|
3148
3169
|
"ANTHROPIC_AUTH_TOKEN",
|
|
3149
3170
|
"OPENAI_API_KEY",
|
|
3171
|
+
"OPENAI_BASE_URL",
|
|
3150
3172
|
"GEMINI_API_KEY",
|
|
3151
3173
|
"GOOGLE_API_KEY",
|
|
3152
3174
|
// Vertex AI (Claude Code on GCP)
|
|
@@ -3187,7 +3209,7 @@ var AGOR_INTERNAL_ENV_VARS = /* @__PURE__ */ new Set([
|
|
|
3187
3209
|
]);
|
|
3188
3210
|
async function resolveUserEnvironment(userId, db, options = {}) {
|
|
3189
3211
|
const env = {};
|
|
3190
|
-
const { sessionId } = options;
|
|
3212
|
+
const { sessionId, tool } = options;
|
|
3191
3213
|
try {
|
|
3192
3214
|
const row = await select(db).from(users3).where((0, import_drizzle_orm5.eq)(users3.user_id, userId)).one();
|
|
3193
3215
|
if (row) {
|
|
@@ -3221,16 +3243,22 @@ async function resolveUserEnvironment(userId, db, options = {}) {
|
|
|
3221
3243
|
console.error(`Failed to decrypt env var ${key} for user ${userId}:`, err);
|
|
3222
3244
|
}
|
|
3223
3245
|
}
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3246
|
+
if (tool) {
|
|
3247
|
+
const toolFields = data.agentic_tools?.[tool];
|
|
3248
|
+
if (toolFields) {
|
|
3249
|
+
for (const [key, encryptedValue] of Object.entries(toolFields)) {
|
|
3250
|
+
if (!encryptedValue) continue;
|
|
3251
|
+
try {
|
|
3252
|
+
const decryptedValue = decryptApiKey(encryptedValue);
|
|
3253
|
+
if (decryptedValue && decryptedValue.trim() !== "") {
|
|
3254
|
+
env[key] = decryptedValue;
|
|
3255
|
+
}
|
|
3256
|
+
} catch (err) {
|
|
3257
|
+
console.error(
|
|
3258
|
+
`Failed to decrypt agentic_tools.${tool}.${key} for user ${userId}:`,
|
|
3259
|
+
err
|
|
3260
|
+
);
|
|
3231
3261
|
}
|
|
3232
|
-
} catch (err) {
|
|
3233
|
-
console.error(`Failed to decrypt API key ${key} for user ${userId}:`, err);
|
|
3234
3262
|
}
|
|
3235
3263
|
}
|
|
3236
3264
|
}
|
|
@@ -3268,7 +3296,7 @@ function buildAllowlistedEnv() {
|
|
|
3268
3296
|
}
|
|
3269
3297
|
return env;
|
|
3270
3298
|
}
|
|
3271
|
-
async function createUserProcessEnvironment(userId, db, additionalEnv, forImpersonation = false, gatewayEnv, sessionId) {
|
|
3299
|
+
async function createUserProcessEnvironment(userId, db, additionalEnv, forImpersonation = false, gatewayEnv, sessionId, tool) {
|
|
3272
3300
|
const env = buildAllowlistedEnv();
|
|
3273
3301
|
const USER_IDENTITY_VARS = ["HOME", "USER", "LOGNAME", "SHELL"];
|
|
3274
3302
|
if (forImpersonation) {
|
|
@@ -3286,7 +3314,7 @@ async function createUserProcessEnvironment(userId, db, additionalEnv, forImpers
|
|
|
3286
3314
|
}
|
|
3287
3315
|
}
|
|
3288
3316
|
if (userId && db) {
|
|
3289
|
-
const userEnv = await resolveUserEnvironment(userId, db, { sessionId });
|
|
3317
|
+
const userEnv = await resolveUserEnvironment(userId, db, { sessionId, tool });
|
|
3290
3318
|
for (const [key, value] of Object.entries(userEnv)) {
|
|
3291
3319
|
if (value && value.trim() !== "") {
|
|
3292
3320
|
env[key] = value;
|
|
@@ -3607,6 +3635,7 @@ init_schema();
|
|
|
3607
3635
|
|
|
3608
3636
|
// src/db/repositories/users.ts
|
|
3609
3637
|
init_cjs_shims();
|
|
3638
|
+
init_types();
|
|
3610
3639
|
var import_drizzle_orm24 = require("drizzle-orm");
|
|
3611
3640
|
init_ids();
|
|
3612
3641
|
init_database_wrapper();
|
|
@@ -3652,7 +3681,18 @@ async function resolveApiKey(keyName, context = {}) {
|
|
|
3652
3681
|
const row = await select(context.db).from(users3).where((0, import_drizzle_orm27.eq)(users3.user_id, context.userId)).one();
|
|
3653
3682
|
if (row) {
|
|
3654
3683
|
const data = row.data;
|
|
3655
|
-
|
|
3684
|
+
let encryptedKey;
|
|
3685
|
+
const tools = data.agentic_tools ?? {};
|
|
3686
|
+
if (context.tool) {
|
|
3687
|
+
encryptedKey = tools[context.tool]?.[keyName];
|
|
3688
|
+
} else {
|
|
3689
|
+
for (const fields of Object.values(tools)) {
|
|
3690
|
+
if (fields?.[keyName]) {
|
|
3691
|
+
encryptedKey = fields[keyName];
|
|
3692
|
+
break;
|
|
3693
|
+
}
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3656
3696
|
if (encryptedKey) {
|
|
3657
3697
|
try {
|
|
3658
3698
|
const decryptedKey = decryptApiKey(encryptedKey);
|
|
@@ -3677,12 +3717,13 @@ async function resolveApiKey(keyName, context = {}) {
|
|
|
3677
3717
|
} else if (!context.db) {
|
|
3678
3718
|
console.log(` \u2192 Skipping user-level check (no database connection)`);
|
|
3679
3719
|
}
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3720
|
+
if (isConfigCredentialKey(keyName)) {
|
|
3721
|
+
console.log(` \u2192 Checking app-level configuration (config.yaml)...`);
|
|
3722
|
+
const globalKey = getCredential(keyName);
|
|
3723
|
+
if (globalKey && globalKey.length > 0) {
|
|
3724
|
+
console.log(` \u2713 Found app-level API key for ${keyName} (from config.yaml)`);
|
|
3725
|
+
return { apiKey: globalKey, source: "config", useNativeAuth: false };
|
|
3726
|
+
}
|
|
3686
3727
|
console.log(` \u2717 No app-level API key for ${keyName}`);
|
|
3687
3728
|
}
|
|
3688
3729
|
console.log(` \u2192 Checking OS-level environment variables...`);
|
|
@@ -3690,16 +3731,17 @@ async function resolveApiKey(keyName, context = {}) {
|
|
|
3690
3731
|
if (envKey && envKey.length > 0) {
|
|
3691
3732
|
console.log(` \u2713 Found OS-level environment variable ${keyName}`);
|
|
3692
3733
|
return { apiKey: envKey, source: "env", useNativeAuth: false };
|
|
3693
|
-
} else {
|
|
3694
|
-
console.log(` \u2717 No OS-level environment variable ${keyName}`);
|
|
3695
3734
|
}
|
|
3735
|
+
console.log(` \u2717 No OS-level environment variable ${keyName}`);
|
|
3696
3736
|
console.log(` \u2139\uFE0F No API key found for ${keyName} - SDK will use native authentication`);
|
|
3697
3737
|
return { apiKey: void 0, source: "none", useNativeAuth: true };
|
|
3698
3738
|
}
|
|
3699
3739
|
function resolveApiKeySync(keyName) {
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
|
|
3740
|
+
if (isConfigCredentialKey(keyName)) {
|
|
3741
|
+
const globalKey = getCredential(keyName);
|
|
3742
|
+
if (globalKey && globalKey.length > 0) {
|
|
3743
|
+
return { apiKey: globalKey, source: "config", useNativeAuth: false };
|
|
3744
|
+
}
|
|
3703
3745
|
}
|
|
3704
3746
|
const envKey = process.env[keyName];
|
|
3705
3747
|
if (envKey && envKey.length > 0) {
|
|
@@ -4299,6 +4341,7 @@ var CredentialKey = /* @__PURE__ */ ((CredentialKey2) => {
|
|
|
4299
4341
|
getWorktreesDir,
|
|
4300
4342
|
getWorktreesDirAsync,
|
|
4301
4343
|
initConfig,
|
|
4344
|
+
isConfigCredentialKey,
|
|
4302
4345
|
isEnvVarAllowed,
|
|
4303
4346
|
isUnixImpersonationEnabled,
|
|
4304
4347
|
isValid,
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { b as RepoEnvironment, d as RepoEnvironmentConfigV1 } from '../repo-Ckl-vaAk.cjs';
|
|
2
|
-
export { P as PublicBaseUrlNotConfiguredError, e as ensureCodexHome, a as expandHomePath, g as getAgorHome, b as getBaseUrl, c as getConfigPath, d as getConfigValue, f as getCredential, h as getDaemonUrl, i as getDaemonUser, j as getDataHome, k as getDataHomeAsync, l as getDefaultConfig, m as getReposDir, n as getReposDirAsync, o as getWorktreePath, p as getWorktreesDir, q as getWorktreesDirAsync, r as initConfig, s as
|
|
2
|
+
export { C as ConfigCredentialKey, P as PublicBaseUrlNotConfiguredError, e as ensureCodexHome, a as expandHomePath, g as getAgorHome, b as getBaseUrl, c as getConfigPath, d as getConfigValue, f as getCredential, h as getDaemonUrl, i as getDaemonUser, j as getDataHome, k as getDataHomeAsync, l as getDefaultConfig, m as getReposDir, n as getReposDirAsync, o as getWorktreePath, p as getWorktreesDir, q as getWorktreesDirAsync, r as initConfig, s as isConfigCredentialKey, t as isUnixImpersonationEnabled, u as isWorktreeRbacEnabled, v as loadConfig, w as loadConfigFromFile, x as loadConfigSync, y as requireDaemonUser, z as requirePublicBaseUrl, A as resolveCodexHome, B as saveConfig, D as setConfigValue, E as unsetConfigValue } from '../config-manager-B8TP9Kz0.cjs';
|
|
3
3
|
export { AgorYmlSchema, DAEMON, DATABASE, ENVIRONMENT, GIT, MCP_TOKEN, PAGINATION, REPO_SLUG_PATTERN, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, YamlVariant, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, normalizeRepoUrl, parseAgorYmlString, parseRepoReference, resolveRepoReference, resolveVariant, resolveVariantOrThrow, validateAgorYmlSchema, validateExtends, validateRepoEnvironment } from './browser.cjs';
|
|
4
|
-
import { j as Database } from '../client-
|
|
4
|
+
import { j as Database } from '../client-CemqXk0v.cjs';
|
|
5
5
|
import { f as UserID, S as SessionID } from '../id-CoIbY_uc.cjs';
|
|
6
|
-
import { c as
|
|
7
|
-
import {
|
|
6
|
+
import { c as AgenticToolName } from '../agentic-tool-BulhIUGb.cjs';
|
|
7
|
+
import { c as GatewayEnvVar } from '../gateway-BWq4j_Ll.cjs';
|
|
8
|
+
import { n as EnvVarScope } from '../user-CpfkcV2C.cjs';
|
|
8
9
|
import { z } from 'zod';
|
|
9
|
-
import { b as AgorCorsMode, e as AgorCspDirectives, a as AgorConfig } from '../types-
|
|
10
|
-
export { A as AgorCodexSettings, c as AgorCorsSettings, d as AgorCredentials, f as AgorCspSettings, g as AgorDaemonSettings, h as AgorDatabaseSettings, i as AgorDefaults, j as AgorDisplaySettings, k as AgorExecutionSettings, l as AgorOnboardingSettings, m as AgorOpenCodeSettings, n as AgorPathSettings, o as AgorSecuritySettings, p as AgorUISettings, q as AgorWorktreesSettings, C as ConfigKey, r as CredentialKey, M as ManagedEnvsMinimumRole, U as UnixUserMode, s as UnknownJson } from '../types-
|
|
10
|
+
import { b as AgorCorsMode, e as AgorCspDirectives, a as AgorConfig } from '../types-D4Rl6ZKN.cjs';
|
|
11
|
+
export { A as AgorCodexSettings, c as AgorCorsSettings, d as AgorCredentials, f as AgorCspSettings, g as AgorDaemonSettings, h as AgorDatabaseSettings, i as AgorDefaults, j as AgorDisplaySettings, k as AgorExecutionSettings, l as AgorOnboardingSettings, m as AgorOpenCodeSettings, n as AgorPathSettings, o as AgorSecuritySettings, p as AgorUISettings, q as AgorWorktreesSettings, C as ConfigKey, r as CredentialKey, M as ManagedEnvsMinimumRole, U as UnixUserMode, s as UnknownJson } from '../types-D4Rl6ZKN.cjs';
|
|
11
12
|
import 'drizzle-orm/libsql';
|
|
12
13
|
import 'drizzle-orm/postgres-js';
|
|
13
14
|
import 'drizzle-orm';
|
|
14
|
-
import '../message-
|
|
15
|
-
import '../agentic-tool-BulhIUGb.cjs';
|
|
15
|
+
import '../message-CSWOsdcZ.cjs';
|
|
16
16
|
import '../board-D7SnPqp-.cjs';
|
|
17
17
|
import '../session-MNU4BQv4.cjs';
|
|
18
18
|
import '../context-BpkCELpO.cjs';
|
|
19
|
-
import '../task-
|
|
19
|
+
import '../task-C2Hy7H6u.cjs';
|
|
20
20
|
import 'drizzle-orm/pg-core';
|
|
21
21
|
import 'drizzle-orm/sqlite-core';
|
|
22
|
-
import '../config-services-
|
|
22
|
+
import '../config-services-CXyQKEK5.cjs';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* `.agor.yml` file I/O.
|
|
@@ -178,16 +178,34 @@ interface ResolveUserEnvOptions {
|
|
|
178
178
|
* contexts without a session — e.g. worktree-level terminals).
|
|
179
179
|
*/
|
|
180
180
|
sessionId?: SessionID;
|
|
181
|
+
/**
|
|
182
|
+
* If set, the user's per-tool credentials for THIS tool are merged into the
|
|
183
|
+
* resolved env (e.g. claude-code → ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL).
|
|
184
|
+
* Other tools' credentials are NEVER merged regardless of value.
|
|
185
|
+
*
|
|
186
|
+
* If omitted, NO per-tool credentials are merged — safe default for
|
|
187
|
+
* worktree-level terminals and other contexts that don't run an SDK.
|
|
188
|
+
*/
|
|
189
|
+
tool?: AgenticToolName;
|
|
181
190
|
}
|
|
182
191
|
/**
|
|
183
|
-
* Resolve user environment variables (decrypted from database, no system env vars)
|
|
184
|
-
*
|
|
192
|
+
* Resolve user environment variables (decrypted from database, no system env vars).
|
|
193
|
+
*
|
|
194
|
+
* Includes:
|
|
195
|
+
* - User-defined env vars from `data.env_vars` (scope-filtered)
|
|
196
|
+
* - If `options.tool` is set, the matching tool's credentials from
|
|
197
|
+
* `data.agentic_tools[tool]` (e.g. claude-code → ANTHROPIC_API_KEY +
|
|
198
|
+
* ANTHROPIC_BASE_URL). Other tools' credentials are NEVER merged.
|
|
185
199
|
*
|
|
186
|
-
*
|
|
200
|
+
* Precedence (later wins): tool credentials > user env vars. This matches the
|
|
201
|
+
* UX intent: per-tool config screens are the explicit, "this is the credential
|
|
202
|
+
* I want for this SDK" surface; global env vars are the fallback. The caller
|
|
203
|
+
* (`createUserProcessEnvironment`) layers config.yaml/system env underneath.
|
|
204
|
+
*
|
|
205
|
+
* Scope filtering on env_vars (v0.5):
|
|
187
206
|
* - `scope: 'global'` → always included
|
|
188
207
|
* - `scope: 'session'` → only included if `options.sessionId` is provided
|
|
189
|
-
* AND the var name has an entry in `session_env_selections` for that
|
|
190
|
-
* session.
|
|
208
|
+
* AND the var name has an entry in `session_env_selections` for that session.
|
|
191
209
|
* - Any other scope value (reserved for v1+) is skipped.
|
|
192
210
|
*
|
|
193
211
|
* Legacy entries (plain-string values on disk) are treated as global-scope.
|
|
@@ -257,7 +275,14 @@ gatewayEnv?: GatewayEnvVar[],
|
|
|
257
275
|
* If provided, session-scope env vars selected for this session are
|
|
258
276
|
* included in the user env. Session-scope vars are otherwise excluded.
|
|
259
277
|
*/
|
|
260
|
-
sessionId?: SessionID
|
|
278
|
+
sessionId?: SessionID,
|
|
279
|
+
/**
|
|
280
|
+
* If provided, the user's per-tool credentials for THIS tool are merged
|
|
281
|
+
* into the environment (e.g. claude-code → ANTHROPIC_*). Other tools'
|
|
282
|
+
* credentials are NEVER merged. Omit for non-SDK contexts (worktree
|
|
283
|
+
* terminals, generic background jobs).
|
|
284
|
+
*/
|
|
285
|
+
tool?: AgenticToolName): Promise<Record<string, string>>;
|
|
261
286
|
|
|
262
287
|
/**
|
|
263
288
|
* Validation constraints for environment variables
|
|
@@ -348,12 +373,29 @@ declare function normalizeStoredEnvVar(raw: RawStoredEnvVar): StoredEnvVar;
|
|
|
348
373
|
*/
|
|
349
374
|
declare function normalizeStoredEnvMap(raw: Record<string, RawStoredEnvVar> | undefined): Record<string, StoredEnvVar>;
|
|
350
375
|
|
|
351
|
-
|
|
376
|
+
/**
|
|
377
|
+
* The set of credential env-var names the resolver knows how to look up at the
|
|
378
|
+
* per-user (`agentic_tools[tool][keyName]`), config.yaml, and OS-env layers.
|
|
379
|
+
*
|
|
380
|
+
* Kept as an explicit union (rather than `string`) so callers can't accidentally
|
|
381
|
+
* ask the resolver for an unrelated env var like `PATH` or `AGOR_MASTER_SECRET`.
|
|
382
|
+
* Add new entries here when a tool's per-tool field config grows.
|
|
383
|
+
*/
|
|
384
|
+
type ApiKeyName = 'ANTHROPIC_API_KEY' | 'ANTHROPIC_AUTH_TOKEN' | 'CLAUDE_CODE_OAUTH_TOKEN' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY' | 'COPILOT_GITHUB_TOKEN';
|
|
352
385
|
interface KeyResolutionContext {
|
|
353
386
|
/** User ID for per-user key lookup */
|
|
354
387
|
userId?: UserID;
|
|
355
388
|
/** Database instance for user lookup */
|
|
356
389
|
db?: Database;
|
|
390
|
+
/**
|
|
391
|
+
* Restrict the per-user lookup to a specific tool's credential bucket
|
|
392
|
+
* (`data.agentic_tools[tool][keyName]`). When omitted, the resolver sweeps
|
|
393
|
+
* every tool bucket — kept for back-compat with non-SDK callers (e.g. CLI).
|
|
394
|
+
*
|
|
395
|
+
* SDK executors should ALWAYS pass this so a Codex spawn never resolves a
|
|
396
|
+
* key stored under `agentic_tools['claude-code']`, and vice versa.
|
|
397
|
+
*/
|
|
398
|
+
tool?: AgenticToolName;
|
|
357
399
|
}
|
|
358
400
|
/**
|
|
359
401
|
* Result of API key resolution
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { b as RepoEnvironment, d as RepoEnvironmentConfigV1 } from '../repo-84E0A2gV.js';
|
|
2
|
-
export { P as PublicBaseUrlNotConfiguredError, e as ensureCodexHome, a as expandHomePath, g as getAgorHome, b as getBaseUrl, c as getConfigPath, d as getConfigValue, f as getCredential, h as getDaemonUrl, i as getDaemonUser, j as getDataHome, k as getDataHomeAsync, l as getDefaultConfig, m as getReposDir, n as getReposDirAsync, o as getWorktreePath, p as getWorktreesDir, q as getWorktreesDirAsync, r as initConfig, s as
|
|
2
|
+
export { C as ConfigCredentialKey, P as PublicBaseUrlNotConfiguredError, e as ensureCodexHome, a as expandHomePath, g as getAgorHome, b as getBaseUrl, c as getConfigPath, d as getConfigValue, f as getCredential, h as getDaemonUrl, i as getDaemonUser, j as getDataHome, k as getDataHomeAsync, l as getDefaultConfig, m as getReposDir, n as getReposDirAsync, o as getWorktreePath, p as getWorktreesDir, q as getWorktreesDirAsync, r as initConfig, s as isConfigCredentialKey, t as isUnixImpersonationEnabled, u as isWorktreeRbacEnabled, v as loadConfig, w as loadConfigFromFile, x as loadConfigSync, y as requireDaemonUser, z as requirePublicBaseUrl, A as resolveCodexHome, B as saveConfig, D as setConfigValue, E as unsetConfigValue } from '../config-manager-CDEB0FY4.js';
|
|
3
3
|
export { AgorYmlSchema, DAEMON, DATABASE, ENVIRONMENT, GIT, MCP_TOKEN, PAGINATION, REPO_SLUG_PATTERN, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, YamlVariant, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, normalizeRepoUrl, parseAgorYmlString, parseRepoReference, resolveRepoReference, resolveVariant, resolveVariantOrThrow, validateAgorYmlSchema, validateExtends, validateRepoEnvironment } from './browser.js';
|
|
4
|
-
import { j as Database } from '../client-
|
|
4
|
+
import { j as Database } from '../client-uYEOha6g.js';
|
|
5
5
|
import { f as UserID, S as SessionID } from '../id-CoIbY_uc.js';
|
|
6
|
-
import { c as
|
|
7
|
-
import {
|
|
6
|
+
import { c as AgenticToolName } from '../agentic-tool-cYqsU5i5.js';
|
|
7
|
+
import { c as GatewayEnvVar } from '../gateway-C3Jm_akw.js';
|
|
8
|
+
import { n as EnvVarScope } from '../user-DP-XZMIM.js';
|
|
8
9
|
import { z } from 'zod';
|
|
9
|
-
import { b as AgorCorsMode, e as AgorCspDirectives, a as AgorConfig } from '../types-
|
|
10
|
-
export { A as AgorCodexSettings, c as AgorCorsSettings, d as AgorCredentials, f as AgorCspSettings, g as AgorDaemonSettings, h as AgorDatabaseSettings, i as AgorDefaults, j as AgorDisplaySettings, k as AgorExecutionSettings, l as AgorOnboardingSettings, m as AgorOpenCodeSettings, n as AgorPathSettings, o as AgorSecuritySettings, p as AgorUISettings, q as AgorWorktreesSettings, C as ConfigKey, r as CredentialKey, M as ManagedEnvsMinimumRole, U as UnixUserMode, s as UnknownJson } from '../types-
|
|
10
|
+
import { b as AgorCorsMode, e as AgorCspDirectives, a as AgorConfig } from '../types-n61iaXub.js';
|
|
11
|
+
export { A as AgorCodexSettings, c as AgorCorsSettings, d as AgorCredentials, f as AgorCspSettings, g as AgorDaemonSettings, h as AgorDatabaseSettings, i as AgorDefaults, j as AgorDisplaySettings, k as AgorExecutionSettings, l as AgorOnboardingSettings, m as AgorOpenCodeSettings, n as AgorPathSettings, o as AgorSecuritySettings, p as AgorUISettings, q as AgorWorktreesSettings, C as ConfigKey, r as CredentialKey, M as ManagedEnvsMinimumRole, U as UnixUserMode, s as UnknownJson } from '../types-n61iaXub.js';
|
|
11
12
|
import 'drizzle-orm/libsql';
|
|
12
13
|
import 'drizzle-orm/postgres-js';
|
|
13
14
|
import 'drizzle-orm';
|
|
14
|
-
import '../message-
|
|
15
|
-
import '../agentic-tool-cYqsU5i5.js';
|
|
15
|
+
import '../message-DZa8g0s0.js';
|
|
16
16
|
import '../board-D3YJ0_ih.js';
|
|
17
17
|
import '../session-CAfhv1qL.js';
|
|
18
18
|
import '../context-BpkCELpO.js';
|
|
19
|
-
import '../task-
|
|
19
|
+
import '../task-BHV-YHg1.js';
|
|
20
20
|
import 'drizzle-orm/pg-core';
|
|
21
21
|
import 'drizzle-orm/sqlite-core';
|
|
22
|
-
import '../config-services-
|
|
22
|
+
import '../config-services-DhM7_yWn.js';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* `.agor.yml` file I/O.
|
|
@@ -178,16 +178,34 @@ interface ResolveUserEnvOptions {
|
|
|
178
178
|
* contexts without a session — e.g. worktree-level terminals).
|
|
179
179
|
*/
|
|
180
180
|
sessionId?: SessionID;
|
|
181
|
+
/**
|
|
182
|
+
* If set, the user's per-tool credentials for THIS tool are merged into the
|
|
183
|
+
* resolved env (e.g. claude-code → ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL).
|
|
184
|
+
* Other tools' credentials are NEVER merged regardless of value.
|
|
185
|
+
*
|
|
186
|
+
* If omitted, NO per-tool credentials are merged — safe default for
|
|
187
|
+
* worktree-level terminals and other contexts that don't run an SDK.
|
|
188
|
+
*/
|
|
189
|
+
tool?: AgenticToolName;
|
|
181
190
|
}
|
|
182
191
|
/**
|
|
183
|
-
* Resolve user environment variables (decrypted from database, no system env vars)
|
|
184
|
-
*
|
|
192
|
+
* Resolve user environment variables (decrypted from database, no system env vars).
|
|
193
|
+
*
|
|
194
|
+
* Includes:
|
|
195
|
+
* - User-defined env vars from `data.env_vars` (scope-filtered)
|
|
196
|
+
* - If `options.tool` is set, the matching tool's credentials from
|
|
197
|
+
* `data.agentic_tools[tool]` (e.g. claude-code → ANTHROPIC_API_KEY +
|
|
198
|
+
* ANTHROPIC_BASE_URL). Other tools' credentials are NEVER merged.
|
|
185
199
|
*
|
|
186
|
-
*
|
|
200
|
+
* Precedence (later wins): tool credentials > user env vars. This matches the
|
|
201
|
+
* UX intent: per-tool config screens are the explicit, "this is the credential
|
|
202
|
+
* I want for this SDK" surface; global env vars are the fallback. The caller
|
|
203
|
+
* (`createUserProcessEnvironment`) layers config.yaml/system env underneath.
|
|
204
|
+
*
|
|
205
|
+
* Scope filtering on env_vars (v0.5):
|
|
187
206
|
* - `scope: 'global'` → always included
|
|
188
207
|
* - `scope: 'session'` → only included if `options.sessionId` is provided
|
|
189
|
-
* AND the var name has an entry in `session_env_selections` for that
|
|
190
|
-
* session.
|
|
208
|
+
* AND the var name has an entry in `session_env_selections` for that session.
|
|
191
209
|
* - Any other scope value (reserved for v1+) is skipped.
|
|
192
210
|
*
|
|
193
211
|
* Legacy entries (plain-string values on disk) are treated as global-scope.
|
|
@@ -257,7 +275,14 @@ gatewayEnv?: GatewayEnvVar[],
|
|
|
257
275
|
* If provided, session-scope env vars selected for this session are
|
|
258
276
|
* included in the user env. Session-scope vars are otherwise excluded.
|
|
259
277
|
*/
|
|
260
|
-
sessionId?: SessionID
|
|
278
|
+
sessionId?: SessionID,
|
|
279
|
+
/**
|
|
280
|
+
* If provided, the user's per-tool credentials for THIS tool are merged
|
|
281
|
+
* into the environment (e.g. claude-code → ANTHROPIC_*). Other tools'
|
|
282
|
+
* credentials are NEVER merged. Omit for non-SDK contexts (worktree
|
|
283
|
+
* terminals, generic background jobs).
|
|
284
|
+
*/
|
|
285
|
+
tool?: AgenticToolName): Promise<Record<string, string>>;
|
|
261
286
|
|
|
262
287
|
/**
|
|
263
288
|
* Validation constraints for environment variables
|
|
@@ -348,12 +373,29 @@ declare function normalizeStoredEnvVar(raw: RawStoredEnvVar): StoredEnvVar;
|
|
|
348
373
|
*/
|
|
349
374
|
declare function normalizeStoredEnvMap(raw: Record<string, RawStoredEnvVar> | undefined): Record<string, StoredEnvVar>;
|
|
350
375
|
|
|
351
|
-
|
|
376
|
+
/**
|
|
377
|
+
* The set of credential env-var names the resolver knows how to look up at the
|
|
378
|
+
* per-user (`agentic_tools[tool][keyName]`), config.yaml, and OS-env layers.
|
|
379
|
+
*
|
|
380
|
+
* Kept as an explicit union (rather than `string`) so callers can't accidentally
|
|
381
|
+
* ask the resolver for an unrelated env var like `PATH` or `AGOR_MASTER_SECRET`.
|
|
382
|
+
* Add new entries here when a tool's per-tool field config grows.
|
|
383
|
+
*/
|
|
384
|
+
type ApiKeyName = 'ANTHROPIC_API_KEY' | 'ANTHROPIC_AUTH_TOKEN' | 'CLAUDE_CODE_OAUTH_TOKEN' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY' | 'COPILOT_GITHUB_TOKEN';
|
|
352
385
|
interface KeyResolutionContext {
|
|
353
386
|
/** User ID for per-user key lookup */
|
|
354
387
|
userId?: UserID;
|
|
355
388
|
/** Database instance for user lookup */
|
|
356
389
|
db?: Database;
|
|
390
|
+
/**
|
|
391
|
+
* Restrict the per-user lookup to a specific tool's credential bucket
|
|
392
|
+
* (`data.agentic_tools[tool][keyName]`). When omitted, the resolver sweeps
|
|
393
|
+
* every tool bucket — kept for back-compat with non-SDK callers (e.g. CLI).
|
|
394
|
+
*
|
|
395
|
+
* SDK executors should ALWAYS pass this so a Codex spawn never resolves a
|
|
396
|
+
* key stored under `agentic_tools['claude-code']`, and vice versa.
|
|
397
|
+
*/
|
|
398
|
+
tool?: AgenticToolName;
|
|
357
399
|
}
|
|
358
400
|
/**
|
|
359
401
|
* Result of API key resolution
|