agor-live 0.12.2 → 0.12.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/core/api/index.d.cts +4 -4
- package/dist/core/api/index.d.ts +4 -4
- package/dist/core/{board-DCNkcsyf.d.cts → board-ByCag4EG.d.cts} +8 -1
- package/dist/core/{board-C-PU8jok.d.ts → board-CZuyMRpr.d.ts} +8 -1
- package/dist/core/claude/index.cjs +46 -5
- package/dist/core/claude/index.js +51 -21
- package/dist/core/{client-CGO13BG6.d.ts → client-BoLj-jqT.d.ts} +30 -5
- package/dist/core/{client-DKbFqX_X.d.cts → client-gnSCmSyL.d.cts} +30 -5
- package/dist/core/config/browser.d.cts +1 -1
- package/dist/core/config/browser.d.ts +1 -1
- package/dist/core/config/index.cjs +60 -4
- package/dist/core/config/index.d.cts +6 -5
- package/dist/core/config/index.d.ts +6 -5
- package/dist/core/config/index.js +64 -20
- package/dist/core/{config-manager-DGBdhxtZ.d.ts → config-manager-BLDGbZHT.d.ts} +16 -2
- package/dist/core/{config-manager-sCgziLkz.d.cts → config-manager-CsBk-Rh2.d.cts} +16 -2
- package/dist/core/db/index.cjs +332 -60
- package/dist/core/db/index.d.cts +33 -7
- package/dist/core/db/index.d.ts +33 -7
- package/dist/core/db/index.js +338 -77
- package/dist/core/drizzle/postgres/meta/_journal.json +1 -1
- package/dist/core/drizzle/sqlite/meta/_journal.json +1 -1
- package/dist/core/{feathers-B0zjReEk.d.ts → feathers-CYMJeMWB.d.ts} +1 -1
- package/dist/core/{feathers-C1uChqXy.d.cts → feathers-Cyk1lpAM.d.cts} +1 -1
- package/dist/core/gateway/index.cjs +137 -12
- package/dist/core/gateway/index.d.cts +22 -6
- package/dist/core/gateway/index.d.ts +22 -6
- package/dist/core/gateway/index.js +137 -12
- package/dist/core/{gateway-Dy9fVyiS.d.ts → gateway-B4CaePYV.d.ts} +2 -2
- package/dist/core/{gateway-DGNtjRnd.d.cts → gateway-C2NOdrxu.d.cts} +2 -2
- package/dist/core/git/index.d.cts +2 -2
- package/dist/core/git/index.d.ts +2 -2
- package/dist/core/index.cjs +226 -48
- package/dist/core/index.d.cts +8 -8
- package/dist/core/index.d.ts +8 -8
- package/dist/core/index.js +230 -64
- package/dist/core/mcp/index.cjs +24 -2
- package/dist/core/mcp/index.js +26 -4
- package/dist/core/seed/index.cjs +83 -13
- package/dist/core/seed/index.js +88 -29
- package/dist/core/{session-Bt9i9089.d.cts → session-BJbTzw3y.d.cts} +17 -1
- package/dist/core/{session-Da9rf6n5.d.ts → session-DLVkt-jY.d.ts} +17 -1
- package/dist/core/templates/session-context.d.cts +1 -1
- package/dist/core/templates/session-context.d.ts +1 -1
- package/dist/core/types/index.d.cts +6 -6
- package/dist/core/types/index.d.ts +6 -6
- package/dist/core/{types-D_wAaaE3.d.cts → types-Ddri21rw.d.cts} +18 -0
- package/dist/core/{types-D_wAaaE3.d.ts → types-Ddri21rw.d.ts} +18 -0
- package/dist/core/unix/index.cjs +63 -6
- package/dist/core/unix/index.d.cts +4 -3
- package/dist/core/unix/index.d.ts +4 -3
- package/dist/core/unix/index.js +68 -22
- package/dist/core/{user-DT1Qzfep.d.ts → user-B77oCF14.d.ts} +1 -1
- package/dist/core/{user-C5id0Zhj.d.cts → user-LBRon9n1.d.cts} +1 -1
- package/dist/core/utils/permission-mode-mapper.d.cts +1 -1
- package/dist/core/utils/permission-mode-mapper.d.ts +1 -1
- package/dist/core/utils/url.cjs +22 -0
- package/dist/core/utils/url.d.cts +45 -1
- package/dist/core/utils/url.d.ts +45 -1
- package/dist/core/utils/url.js +18 -0
- package/dist/daemon/index.js +168 -38
- package/dist/daemon/mcp/routes.js +5 -5
- package/dist/daemon/services/gateway.d.ts +9 -0
- package/dist/daemon/services/gateway.js +73 -6
- package/dist/daemon/services/repos.js +1 -0
- package/dist/daemon/services/thread-session-map.d.ts +6 -0
- package/dist/daemon/services/thread-session-map.js +9 -0
- package/dist/executor/cli.d.ts +0 -0
- package/dist/executor/cli.d.ts.map +0 -0
- package/dist/executor/cli.js +0 -0
- package/dist/executor/commands/git.d.ts +0 -0
- package/dist/executor/commands/git.d.ts.map +1 -1
- package/dist/executor/commands/git.js +3 -2
- package/dist/executor/commands/index.d.ts +0 -0
- package/dist/executor/commands/index.d.ts.map +0 -0
- package/dist/executor/commands/index.js +0 -0
- package/dist/executor/commands/unix.d.ts +0 -0
- package/dist/executor/commands/unix.d.ts.map +0 -0
- package/dist/executor/commands/unix.js +0 -0
- package/dist/executor/commands/zellij.d.ts +0 -0
- package/dist/executor/commands/zellij.d.ts.map +0 -0
- package/dist/executor/commands/zellij.js +0 -0
- package/dist/executor/config.d.ts +0 -0
- package/dist/executor/config.d.ts.map +0 -0
- package/dist/executor/config.js +0 -0
- package/dist/executor/db/feathers-repositories.d.ts +0 -0
- package/dist/executor/db/feathers-repositories.d.ts.map +0 -0
- package/dist/executor/db/feathers-repositories.js +0 -0
- package/dist/executor/handlers/sdk/base-executor.d.ts +0 -0
- package/dist/executor/handlers/sdk/base-executor.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/base-executor.js +0 -0
- package/dist/executor/handlers/sdk/claude.d.ts +0 -0
- package/dist/executor/handlers/sdk/claude.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/claude.js +0 -0
- package/dist/executor/handlers/sdk/codex.d.ts +0 -0
- package/dist/executor/handlers/sdk/codex.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/codex.js +0 -0
- package/dist/executor/handlers/sdk/gemini.d.ts +0 -0
- package/dist/executor/handlers/sdk/gemini.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/gemini.js +0 -0
- package/dist/executor/handlers/sdk/opencode.d.ts +0 -0
- package/dist/executor/handlers/sdk/opencode.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/opencode.js +0 -0
- package/dist/executor/handlers/sdk/tool-registry.d.ts +0 -0
- package/dist/executor/handlers/sdk/tool-registry.d.ts.map +0 -0
- package/dist/executor/handlers/sdk/tool-registry.js +0 -0
- package/dist/executor/index.d.ts +0 -0
- package/dist/executor/index.d.ts.map +0 -0
- package/dist/executor/index.js +0 -0
- package/dist/executor/payload-types.d.ts +8 -0
- package/dist/executor/payload-types.d.ts.map +1 -1
- package/dist/executor/payload-types.js +2 -0
- package/dist/executor/permissions/permission-manager.d.ts +0 -0
- package/dist/executor/permissions/permission-manager.d.ts.map +0 -0
- package/dist/executor/permissions/permission-manager.js +0 -0
- package/dist/executor/permissions/permission-service.d.ts +0 -0
- package/dist/executor/permissions/permission-service.d.ts.map +0 -0
- package/dist/executor/permissions/permission-service.js +0 -0
- package/dist/executor/sdk-handlers/base/index.d.ts +0 -0
- package/dist/executor/sdk-handlers/base/index.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/base/index.js +0 -0
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts +0 -0
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/base/mcp-scoping.js +0 -0
- package/dist/executor/sdk-handlers/base/normalizer.interface.d.ts +0 -0
- package/dist/executor/sdk-handlers/base/normalizer.interface.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/base/normalizer.interface.js +0 -0
- package/dist/executor/sdk-handlers/base/tool.interface.d.ts +0 -0
- package/dist/executor/sdk-handlers/base/tool.interface.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/base/tool.interface.js +0 -0
- package/dist/executor/sdk-handlers/base/types.d.ts +0 -0
- package/dist/executor/sdk-handlers/base/types.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/base/types.js +0 -0
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/claude-tool.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/claude-tool.js +0 -0
- package/dist/executor/sdk-handlers/claude/import/load-session.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/import/load-session.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/import/load-session.js +0 -0
- package/dist/executor/sdk-handlers/claude/import/message-converter.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/import/message-converter.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/import/message-converter.js +0 -0
- package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/import/task-extractor.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/import/task-extractor.js +0 -0
- package/dist/executor/sdk-handlers/claude/import/transcript-parser.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/import/transcript-parser.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/import/transcript-parser.js +0 -0
- package/dist/executor/sdk-handlers/claude/index.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/index.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/index.js +0 -0
- package/dist/executor/sdk-handlers/claude/message-builder.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/message-builder.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/message-builder.js +0 -0
- package/dist/executor/sdk-handlers/claude/message-processor.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/message-processor.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/message-processor.js +0 -0
- package/dist/executor/sdk-handlers/claude/models.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/models.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/models.js +0 -0
- package/dist/executor/sdk-handlers/claude/normalizer.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/normalizer.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/normalizer.js +0 -0
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/permissions/permission-hooks.js +0 -0
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/prompt-service.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/prompt-service.js +0 -0
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/query-builder.js +0 -0
- package/dist/executor/sdk-handlers/claude/safe-message-service.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/safe-message-service.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/safe-message-service.js +0 -0
- package/dist/executor/sdk-handlers/claude/session-context.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/session-context.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/session-context.js +0 -0
- package/dist/executor/sdk-handlers/claude/thinking-detector.d.ts +0 -0
- package/dist/executor/sdk-handlers/claude/thinking-detector.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/claude/thinking-detector.js +0 -0
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/codex-tool.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/codex-tool.js +0 -0
- package/dist/executor/sdk-handlers/codex/index.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/index.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/index.js +0 -0
- package/dist/executor/sdk-handlers/codex/models.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/models.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/models.js +0 -0
- package/dist/executor/sdk-handlers/codex/normalizer.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/normalizer.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/normalizer.js +0 -0
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/prompt-service.js +0 -0
- package/dist/executor/sdk-handlers/codex/usage.d.ts +0 -0
- package/dist/executor/sdk-handlers/codex/usage.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/codex/usage.js +0 -0
- package/dist/executor/sdk-handlers/gemini/conversation-converter.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/conversation-converter.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/conversation-converter.js +0 -0
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/gemini-tool.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/gemini-tool.js +0 -0
- package/dist/executor/sdk-handlers/gemini/index.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/index.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/index.js +0 -0
- package/dist/executor/sdk-handlers/gemini/models.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/models.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/models.js +0 -0
- package/dist/executor/sdk-handlers/gemini/normalizer.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/normalizer.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/normalizer.js +0 -0
- package/dist/executor/sdk-handlers/gemini/permission-mapper.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/permission-mapper.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/permission-mapper.js +0 -0
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/prompt-service.js +0 -0
- package/dist/executor/sdk-handlers/gemini/usage.d.ts +0 -0
- package/dist/executor/sdk-handlers/gemini/usage.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/gemini/usage.js +0 -0
- package/dist/executor/sdk-handlers/models.d.ts +0 -0
- package/dist/executor/sdk-handlers/models.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/models.js +0 -0
- package/dist/executor/sdk-handlers/normalizer-factory.d.ts +0 -0
- package/dist/executor/sdk-handlers/normalizer-factory.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/normalizer-factory.js +0 -0
- package/dist/executor/sdk-handlers/opencode/index.d.ts +0 -0
- package/dist/executor/sdk-handlers/opencode/index.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/opencode/index.js +0 -0
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts +0 -0
- package/dist/executor/sdk-handlers/opencode/opencode-tool.d.ts.map +0 -0
- package/dist/executor/sdk-handlers/opencode/opencode-tool.js +0 -0
- package/dist/executor/services/feathers-client.d.ts +0 -0
- package/dist/executor/services/feathers-client.d.ts.map +0 -0
- package/dist/executor/services/feathers-client.js +0 -0
- package/dist/executor/types/sdk-response.d.ts +0 -0
- package/dist/executor/types/sdk-response.d.ts.map +0 -0
- package/dist/executor/types/sdk-response.js +0 -0
- package/dist/executor/types/token-usage.d.ts +0 -0
- package/dist/executor/types/token-usage.d.ts.map +0 -0
- package/dist/executor/types/token-usage.js +0 -0
- package/dist/executor/types.d.ts +0 -0
- package/dist/executor/types.d.ts.map +0 -0
- package/dist/executor/types.js +0 -0
- package/dist/ui/assets/{_basePickBy-a0JoJgXO.js → _basePickBy-DM-YlwQP.js} +1 -1
- package/dist/ui/assets/_basePickBy-DM-YlwQP.js.gz +0 -0
- package/dist/ui/assets/{_baseUniq-IFulW561.js → _baseUniq-w9wJK0j5.js} +1 -1
- package/dist/ui/assets/_baseUniq-w9wJK0j5.js.gz +0 -0
- package/dist/ui/assets/{arc-Dj6SyPh6.js → arc-CVXkw1SJ.js} +1 -1
- package/dist/ui/assets/arc-CVXkw1SJ.js.gz +0 -0
- package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CjXOzrje.js → architectureDiagram-VXUJARFQ-CevjfWlW.js} +1 -1
- package/dist/ui/assets/{architectureDiagram-VXUJARFQ-CjXOzrje.js.gz → architectureDiagram-VXUJARFQ-CevjfWlW.js.gz} +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-IFpdwkfg.js → blockDiagram-VD42YOAC-b9JU-Vzx.js} +1 -1
- package/dist/ui/assets/{blockDiagram-VD42YOAC-IFpdwkfg.js.gz → blockDiagram-VD42YOAC-b9JU-Vzx.js.gz} +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-qL4Ujfnz.js → c4Diagram-YG6GDRKO-j7VSccDF.js} +1 -1
- package/dist/ui/assets/c4Diagram-YG6GDRKO-j7VSccDF.js.gz +0 -0
- package/dist/ui/assets/channel-BNIBtjaQ.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-CH6tu0mB.js → chunk-4BX2VUAB-D_codqcR.js} +1 -1
- package/dist/ui/assets/{chunk-55IACEB6-DDAZjWTD.js → chunk-55IACEB6-nQq1kviw.js} +1 -1
- package/dist/ui/assets/{chunk-B4BG7PRW-BDSu72O0.js → chunk-B4BG7PRW-DlVxaJL9.js} +1 -1
- package/dist/ui/assets/chunk-B4BG7PRW-DlVxaJL9.js.gz +0 -0
- package/dist/ui/assets/{chunk-DI55MBZ5-C7merGRo.js → chunk-DI55MBZ5-Dw95m49m.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-Dw95m49m.js.gz +0 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-DX20G6ZX.js → chunk-FMBD7UC4-Bnk79OV8.js} +1 -1
- package/dist/ui/assets/{chunk-QN33PNHL-BvT3a5aI.js → chunk-QN33PNHL-sqjI-sXo.js} +1 -1
- package/dist/ui/assets/{chunk-QZHKN3VN-oo-Lxdo7.js → chunk-QZHKN3VN-T7CEGHh9.js} +1 -1
- package/dist/ui/assets/{chunk-TZMSLE5B-BV4XHxKb.js → chunk-TZMSLE5B-ok9YQuUI.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-ok9YQuUI.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-DeHTLUto.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-DeHTLUto.js +1 -0
- package/dist/ui/assets/clone-BObtDhw7.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-BA6VY55u.js → cose-bilkent-S5V4N54A-BtanJFqC.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-BtanJFqC.js.gz +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-DiuqdLez.js → dagre-6UL2VRFP-CIJlfoaz.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-CIJlfoaz.js.gz +0 -0
- package/dist/ui/assets/{diagram-PSM6KHXK-DU4u6xZN.js → diagram-PSM6KHXK-DhKlHuZN.js} +1 -1
- package/dist/ui/assets/diagram-PSM6KHXK-DhKlHuZN.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-CltgMeel.js → diagram-QEK2KX5R-BbwaTbd7.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-BbwaTbd7.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-SkvAVcTN.js → diagram-S2PKOQOG-Dx1rRlHZ.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-Dx1rRlHZ.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-DJTHxEdE.js → erDiagram-Q2GNP2WA-w60Up3Mg.js} +1 -1
- package/dist/ui/assets/erDiagram-Q2GNP2WA-w60Up3Mg.js.gz +0 -0
- package/dist/ui/assets/{flowDiagram-NV44I4VS-BwrFtsSc.js → flowDiagram-NV44I4VS-yvyTqNEi.js} +1 -1
- package/dist/ui/assets/flowDiagram-NV44I4VS-yvyTqNEi.js.gz +0 -0
- package/dist/ui/assets/{ganttDiagram-LVOFAZNH-BnGmdiBB.js → ganttDiagram-LVOFAZNH-NBBWMpCB.js} +1 -1
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-NBBWMpCB.js.gz +0 -0
- package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-V6mHZ2jy.js → gitGraphDiagram-NY62KEGX-Dc0qrZJi.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Dc0qrZJi.js.gz +0 -0
- package/dist/ui/assets/{graph-3Ks94Pqc.js → graph-RIZM2qth.js} +1 -1
- package/dist/ui/assets/graph-RIZM2qth.js.gz +0 -0
- package/dist/ui/assets/{index-Dl_jng3-.js → index-BcHc8U_m.js} +240 -240
- package/dist/ui/assets/index-BcHc8U_m.js.gz +0 -0
- package/dist/ui/assets/index-BjxbtAmt.css +1 -0
- package/dist/ui/assets/index-BjxbtAmt.css.gz +0 -0
- package/dist/ui/assets/{infoDiagram-ER5ION4S-DUuNVOek.js → infoDiagram-ER5ION4S-Co1qQ3-G.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-D-N__rLx.js → journeyDiagram-XKPGCS4Q-QaBi_wAx.js} +1 -1
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-QaBi_wAx.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-DsPDRbRp.js → kanban-definition-3W4ZIXB7-B3k5rpP3.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-B3k5rpP3.js.gz +0 -0
- package/dist/ui/assets/{layout-TuyQIiWI.js → layout-YqNNovOM.js} +1 -1
- package/dist/ui/assets/layout-YqNNovOM.js.gz +0 -0
- package/dist/ui/assets/{linear-CQUCx9aD.js → linear-DpjTIW7z.js} +1 -1
- package/dist/ui/assets/linear-DpjTIW7z.js.gz +0 -0
- package/dist/ui/assets/{mermaid.core-HQwFIIbn.js → mermaid.core-D-fYaKXC.js} +5 -5
- package/dist/ui/assets/mermaid.core-D-fYaKXC.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-DlR4HpYx.js → mindmap-definition-VGOIOE7T-CddQalgD.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-CddQalgD.js.gz +0 -0
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-OfCYTJ7S.js → pieDiagram-ADFJNKIX-BCPzhaBq.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BCPzhaBq.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B--irB7LvR.js → quadrantDiagram-AYHSOK5B-DrdJW-2E.js} +1 -1
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-DrdJW-2E.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-iPensRLV.js → requirementDiagram-UZGBJVZJ-dV0cdx6D.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-dV0cdx6D.js.gz +0 -0
- package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-BSidESLx.js → sankeyDiagram-TZEHDZUN-SLmqiy7a.js} +1 -1
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-SLmqiy7a.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-BUE46svP.js → sequenceDiagram-WL72ISMW-CyH5EbRm.js} +1 -1
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-CyH5EbRm.js.gz +0 -0
- package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BJ2azfLs.js → stateDiagram-FKZM4ZOC-DbtBIYM6.js} +1 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-DbtBIYM6.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-DOAHUeXQ.js +1 -0
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-YfwKc8ip.js → timeline-definition-IT6M3QCI-CzdpjKni.js} +1 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-CzdpjKni.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-DMpxEEn1.js → treemap-KMMF4GRG-D_MXp3HZ.js} +1 -1
- package/dist/ui/assets/treemap-KMMF4GRG-D_MXp3HZ.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-Bn_I2TeN.js → xychartDiagram-PRI3JC2R-BMwyKz4M.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-BMwyKz4M.js.gz +0 -0
- package/dist/ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/ui/assets/_basePickBy-a0JoJgXO.js.gz +0 -0
- package/dist/ui/assets/_baseUniq-IFulW561.js.gz +0 -0
- package/dist/ui/assets/arc-Dj6SyPh6.js.gz +0 -0
- package/dist/ui/assets/c4Diagram-YG6GDRKO-qL4Ujfnz.js.gz +0 -0
- package/dist/ui/assets/channel-4SJF66Rh.js +0 -1
- package/dist/ui/assets/chunk-B4BG7PRW-BDSu72O0.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-C7merGRo.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-BV4XHxKb.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-BLjqJ_M9.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BLjqJ_M9.js +0 -1
- package/dist/ui/assets/clone-DjR0SEZ0.js +0 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-BA6VY55u.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-DiuqdLez.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-DU4u6xZN.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-CltgMeel.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-SkvAVcTN.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-DJTHxEdE.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-BwrFtsSc.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-BnGmdiBB.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-V6mHZ2jy.js.gz +0 -0
- package/dist/ui/assets/graph-3Ks94Pqc.js.gz +0 -0
- package/dist/ui/assets/index-CoHRmHKF.css +0 -1
- package/dist/ui/assets/index-CoHRmHKF.css.gz +0 -0
- package/dist/ui/assets/index-Dl_jng3-.js.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-D-N__rLx.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-DsPDRbRp.js.gz +0 -0
- package/dist/ui/assets/layout-TuyQIiWI.js.gz +0 -0
- package/dist/ui/assets/linear-CQUCx9aD.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-HQwFIIbn.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-DlR4HpYx.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-OfCYTJ7S.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B--irB7LvR.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-iPensRLV.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-BSidESLx.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-BUE46svP.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BJ2azfLs.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-B9Lx1w-S.js +0 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-YfwKc8ip.js.gz +0 -0
- package/dist/ui/assets/treemap-KMMF4GRG-DMpxEEn1.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-Bn_I2TeN.js.gz +0 -0
package/dist/core/index.d.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
export { AgorClient, AgorService, BoardsService, MessagesService, ReposLocalService, ReposService, ServiceTypes, SessionsService, TasksService, WorktreesService, createClient, createRestClient, isDaemonRunning } from './api/index.js';
|
|
2
2
|
export { AGOR_INTERNAL_ENV_VARS, AGOR_USER_ENV_KEYS_VAR, AgorYmlSchema, ApiKeyName, BLOCKED_ENV_VARS, ENV_VAR_CONSTRAINTS, KeyResolutionContext, KeyResolutionResult, ValidationError, createUserProcessEnvironment, formatValidationError, formatValidationErrors, getEnvVarBlockReason, isEnvVarAllowed, isValid, parseAgorYml, resolveApiKey, resolveApiKeySync, resolveSystemEnvironment, resolveUserEnvironment, validateEnvVar, withUserEnvironment, withUserEnvironmentSync, writeAgorYml } from './config/index.js';
|
|
3
|
-
export { c as ensureCodexHome, e as expandHomePath, g as getAgorHome, a as getConfigPath, d as getConfigValue,
|
|
3
|
+
export { c as ensureCodexHome, e as expandHomePath, g as getAgorHome, j as getBaseUrl, a as getConfigPath, d as getConfigValue, m as getCredential, h as getDaemonUrl, n as getDaemonUser, t as getDataHome, y as getDataHomeAsync, b as getDefaultConfig, v as getReposDir, z as getReposDirAsync, x as getWorktreePath, w as getWorktreesDir, A as getWorktreesDirAsync, i as initConfig, q as isUnixImpersonationEnabled, p as isWorktreeRbacEnabled, l as loadConfig, k as loadConfigSync, o as requireDaemonUser, r as resolveCodexHome, s as saveConfig, f as setConfigValue, u as unsetConfigValue } from './config-manager-BLDGbZHT.js';
|
|
4
4
|
export { DAEMON, DATABASE, ENVIRONMENT, GIT, PAGINATION, RepoReference, RepoReferenceOption, SESSION, WEBSOCKET, extractSlugFromUrl, formatRepoReference, getDefaultRepoReference, getGroupedRepoReferenceOptions, getRepoReferenceOptions, isValidGitUrl, isValidSlug, parseRepoReference, resolveRepoReference } from './config/browser.js';
|
|
5
|
-
export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from './types-
|
|
5
|
+
export { f as AgorCodexSettings, j as AgorConfig, i as AgorCredentials, b as AgorDaemonSettings, e as AgorDatabaseSettings, A as AgorDefaults, a as AgorDisplaySettings, g as AgorExecutionSettings, d as AgorOpenCodeSettings, h as AgorPathSettings, c as AgorUISettings, k as ConfigKey, C as CredentialKey, U as UnknownJson } from './types-Ddri21rw.js';
|
|
6
6
|
export { AmbiguousIdError, BaseRepository, BoardCommentsRepository, BoardObjectRepository, BoardRepository, CreateUserData, DEFAULT_ADMIN_USER, EntityNotFoundError, GatewayChannelRepository, IdResolutionError, InsertValues, MCPServerRepository, MessagesRepository, MigrationError, MutationResult, RawQueryResult, RepoRepository, RepositoryError, SessionMCPServerRepository, SessionRepository, SessionWithLastMessage, TaskRepository, ThreadSessionMapRepository, UnifiedQuery, UnifiedReturning, UsersRepository, WorktreeRepository, WorktreeSessionActivity, WorktreeWithZone, WorktreeWithZoneAndSessions, boardComments, boardObjects, boards, checkMigrationStatus, compare, createDefaultAdminUser, createUser, decryptApiKey, deleteFrom, encryptApiKey, executeAll, executeGet, executeRaw, executeRun, formatShortId, gatewayChannels, generateId, generateSlug, generateUniqueSlug, getOne, getUserByEmail, hash, identifyUrlParam, initializeDatabase, insert, insertOne, isEncrypted, isForeignKeyConstraintError, isPostgresDatabase, isSQLiteDatabase, isShortId, jsonExtract, mcpServers, messages, repos, resolveShortId, runMigrations, seedInitialData, select, sessionMcpServers, sessions, tasks, threadSessionMap, update, userExists, users, withSessionGuard, worktreeOwners, worktrees } from './db/index.js';
|
|
7
7
|
export { CloneOptions, CloneProgress, CloneResult, WorktreeInfo, cleanWorktree, cloneRepo, createWorktree, deleteRepoDirectory, deleteWorktreeDirectory, extractRepoName, getCurrentBranch, getCurrentSha, getDefaultBranch, getGitState, getRemoteBranches, getRemoteUrl, hasRemoteBranch, isClean, isGitRepo, isValidGitRepo, listWorktrees, pruneWorktrees, removeWorktree } from './git/index.js';
|
|
8
8
|
export { MCPTemplateContext, MCPTemplateResolutionResult, buildMCPTemplateContextFromEnv, resolveMcpServerEnv, resolveMcpServerTemplates, resolveMcpServersTemplates } from './mcp/index.js';
|
|
9
9
|
export { PermissionDecision, PermissionRequest } from './permissions/index.js';
|
|
10
|
-
export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode, P as PermissionMode, h as ScheduledRunMetadata, f as Session, S as SessionStatus, i as SpawnConfig, g as getDefaultPermissionMode } from './session-
|
|
11
|
-
export { e as Board, a as BoardEntityObject, f as BoardExportBlob, d as BoardObject, B as BoardObjectType, M as MarkdownBoardObject, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-
|
|
10
|
+
export { b as AgenticTool, A as AgenticToolName, C as ClaudeCodePermissionMode, d as CodexApprovalPolicy, e as CodexNetworkAccess, a as CodexPermissionMode, c as CodexSandboxMode, G as GeminiPermissionMode, O as OpenCodePermissionMode, P as PermissionMode, h as ScheduledRunMetadata, f as Session, S as SessionStatus, i as SpawnConfig, g as getDefaultPermissionMode } from './session-DLVkt-jY.js';
|
|
11
|
+
export { e as Board, a as BoardEntityObject, f as BoardExportBlob, d as BoardObject, B as BoardObjectType, M as MarkdownBoardObject, T as TextBoardObject, c as ZoneBoardObject, b as ZoneTrigger, Z as ZoneTriggerBehavior } from './board-CZuyMRpr.js';
|
|
12
12
|
export { B as BoardComment, b as BoardCommentCreate, c as BoardCommentPatch, a as CommentAttachmentType, C as CommentReaction, R as ReactionSummary, g as getCommentAttachmentType, f as groupReactions, d as isReply, e as isResolvable, i as isThreadRoot } from './board-comment-rH4c6eVl.js';
|
|
13
13
|
export { b as ContextFileDetail, a as ContextFileListItem, C as ContextFilePath } from './context-ByxGjp5l.js';
|
|
14
|
-
export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, R as RBACParams, S as ServiceWithEvents } from './feathers-
|
|
14
|
+
export { a as AuthenticatedParams, A as AuthenticatedUser, b as AuthenticationResult, B as BaseService, C as CreateHookContext, H as HookContext, Q as QueryParams, R as RBACParams, S as ServiceWithEvents } from './feathers-CYMJeMWB.js';
|
|
15
15
|
export { ActiveUser, CreateInput, CursorLeaveEvent, CursorMoveEvent, CursorMovedEvent, DeepReadonly, FileDetail, FileListItem, FileListResponse, FilePath, FlattenObject, PaginatedResult, PartialKeys, RemoteCursor, RequireKeys, SessionViewMode, UpdateInput, isDefined, isNonEmptyString } from './types/index.js';
|
|
16
|
-
export { C as ChannelType, b as GatewayAgenticConfig, c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, T as ThreadSessionMapID, a as ThreadStatus } from './gateway-
|
|
16
|
+
export { C as ChannelType, b as GatewayAgenticConfig, c as GatewayChannel, G as GatewayChannelID, d as ThreadSessionMap, T as ThreadSessionMapID, a as ThreadStatus } from './gateway-B4CaePYV.js';
|
|
17
17
|
export { A as AgenticToolID, B as BoardID, C as CommentID, I as IDPrefix, M as MessageID, R as RepoID, a as SessionID, S as ShortID, T as TaskID, U as UUID, b as UserID, W as WorktreeID } from './id-BwPJtWxW.js';
|
|
18
18
|
export { C as CreateMCPServerInput, J as JSONSchema, d as MCPAuth, h as MCPCapabilities, l as MCPConfigFile, g as MCPPrompt, f as MCPResource, b as MCPScope, i as MCPServer, j as MCPServerFilters, M as MCPServerID, m as MCPServersConfig, c as MCPSource, k as MCPTestResult, e as MCPTool, a as MCPTransport, P as PromptArgument, S as SessionMCPServer, T as ToolPermission, U as UpdateMCPServerInput } from './mcp-Bm9HwvDf.js';
|
|
19
19
|
export { C as ContentBlock, e as Message, f as MessageCreate, M as MessageRole, a as MessageStatus, b as MessageType, d as PermissionRequestContent, P as PermissionScope, c as PermissionStatus, S as StreamingEventType, T as ToolUse } from './message-CrqsdxNE.js';
|
|
20
20
|
export { b as Repo, h as RepoEnvironmentConfig, R as RepoSlug, a as RepoType, d as Worktree, c as WorktreeConfig, g as WorktreeEnvironmentInstance, W as WorktreeName, e as WorktreePermissionLevel, f as WorktreeScheduleConfig } from './worktree-BR7Inm0-.js';
|
|
21
21
|
export { b as Report, R as ReportPath, a as ReportTemplate, c as Task, T as TaskStatus } from './task-D0i_mU9u.js';
|
|
22
|
-
export { A as AudioPreferences, B as BaseUserFields, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, E as EventStreamPreferences, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-
|
|
22
|
+
export { A as AudioPreferences, B as BaseUserFields, C as ChimeSound, e as CreateUserInput, b as DefaultAgenticConfig, a as DefaultAgenticToolConfig, D as DefaultModelConfig, E as EventStreamPreferences, f as UpdateUserInput, d as User, c as UserPreferences, U as UserRole } from './user-B77oCF14.js';
|
|
23
23
|
export { AGOR_DEFAULT_SHELL, AGOR_HOME_BASE, AGOR_USERS_GROUP, AGOR_WORKTREES_DIR, AGOR_ZELLIJ_CONFIG, BuildSpawnArgsOptions, CommandError, CommandExecutor, CommandResult, CreateExecutorOptions, DirectExecutor, DryRunExecutor, EnvironmentCommandType, ExecWithInputOptions, ImpersonationResult, LoggingExecutor, NoOpExecutor, REPO_GIT_PERMISSION_MODE, ResolveImpersonationOptions, RunAsUserOptions, SpawnEnvironmentCommandOptions, SudoCliExecutor, SudoCliExecutorConfig, SudoDirectExecutor, SymlinkCommands, ThrowingExecutor, UnixGroupCommands, UnixIntegrationConfig, UnixIntegrationService, UnixOperationResult, UnixUserCommands, UnixUserMode, UnixUserNotFoundError, WorktreePermissionModes, WorktreeSymlinkInfo, buildSpawnArgs, buildSymlinkInfo, checkAsUser, createAdminExecutor, createExecutor, escapeShellArg, generateRepoGroupName, generateUnixUsername, generateWorktreeGroupName, getGidFromGroupName, getUidFromUsername, getUserHomeDir, getUserWorktreesDir, getWorktreePermissionMode, getWorktreeSymlinkPath, isAutoGeneratedUsername, isValidRepoGroupName, isValidUnixUsername, isValidWorktreeGroupName, parseRepoGroupName, parseUnixUsername, parseWorktreeGroupName, resolveUnixUserForImpersonation, runAsUser, spawnEnvironmentCommand, unixUserExists, validateResolvedUnixUser } from './unix/index.js';
|
|
24
24
|
export { patchConsole, unpatchConsole } from './utils/logger.js';
|
|
25
25
|
export { default as authenticationClient } from '@feathersjs/authentication-client';
|
|
26
26
|
export { SQL, and, asc, desc, eq, inArray, like, or, sql } from 'drizzle-orm';
|
|
27
|
-
export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, w as GatewayChannelInsert, G as GatewayChannelRow, p as MCPServerInsert, o as MCPServerRow, j as MessageInsert, M as MessageRow, l as RepoInsert, R as RepoRow, h as SessionInsert, r as SessionMCPServerInsert, q as SessionMCPServerRow, S as SessionRow, i as TaskInsert, T as TaskRow, y as ThreadSessionMapInsert, x as ThreadSessionMapRow, n as UserInsert, U as UserRow, m as WorktreeInsert, W as WorktreeRow, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, g as getDatabaseUrl } from './client-
|
|
27
|
+
export { v as BoardCommentInsert, u as BoardCommentRow, k as BoardInsert, t as BoardObjectInsert, s as BoardObjectRow, B as BoardRow, e as DEFAULT_DB_PATH, d as Database, a as DatabaseConnectionError, D as DbConfig, w as GatewayChannelInsert, G as GatewayChannelRow, p as MCPServerInsert, o as MCPServerRow, j as MessageInsert, M as MessageRow, l as RepoInsert, R as RepoRow, h as SessionInsert, r as SessionMCPServerInsert, q as SessionMCPServerRow, S as SessionRow, i as TaskInsert, T as TaskRow, y as ThreadSessionMapInsert, x as ThreadSessionMapRow, n as UserInsert, U as UserRow, m as WorktreeInsert, W as WorktreeRow, c as createDatabase, b as createDatabaseAsync, f as createLocalDatabase, g as getDatabaseUrl, z as sessionsRelations, A as worktreesRelations } from './client-BoLj-jqT.js';
|
|
28
28
|
export { simpleGit } from 'simple-git';
|
|
29
29
|
export { Id, NullableId, Paginated, Params, Service, ServiceMethods } from '@feathersjs/feathers';
|
|
30
30
|
import 'socket.io-client';
|
package/dist/core/index.js
CHANGED
|
@@ -143,6 +143,7 @@ __export(config_manager_exports, {
|
|
|
143
143
|
ensureCodexHome: () => ensureCodexHome,
|
|
144
144
|
expandHomePath: () => expandHomePath,
|
|
145
145
|
getAgorHome: () => getAgorHome,
|
|
146
|
+
getBaseUrl: () => getBaseUrl,
|
|
146
147
|
getConfigPath: () => getConfigPath,
|
|
147
148
|
getConfigValue: () => getConfigValue,
|
|
148
149
|
getCredential: () => getCredential,
|
|
@@ -365,6 +366,32 @@ async function getDaemonUrl() {
|
|
|
365
366
|
const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
|
|
366
367
|
return `http://${host}:${port}`;
|
|
367
368
|
}
|
|
369
|
+
function validateBaseUrl(url) {
|
|
370
|
+
const trimmed = url.trim().replace(/\/$/, "");
|
|
371
|
+
if (!trimmed.startsWith("http://") && !trimmed.startsWith("https://")) {
|
|
372
|
+
throw new Error(`Invalid base URL: "${url}". Must start with http:// or https://`);
|
|
373
|
+
}
|
|
374
|
+
try {
|
|
375
|
+
new URL(trimmed);
|
|
376
|
+
} catch {
|
|
377
|
+
throw new Error(`Invalid base URL format: "${url}". Must be a valid HTTP(S) URL.`);
|
|
378
|
+
}
|
|
379
|
+
return trimmed;
|
|
380
|
+
}
|
|
381
|
+
async function getBaseUrl() {
|
|
382
|
+
if (process.env.AGOR_BASE_URL) {
|
|
383
|
+
return validateBaseUrl(process.env.AGOR_BASE_URL);
|
|
384
|
+
}
|
|
385
|
+
const config = await loadConfig();
|
|
386
|
+
if (config.daemon?.base_url) {
|
|
387
|
+
return validateBaseUrl(config.daemon.base_url);
|
|
388
|
+
}
|
|
389
|
+
const defaults = getDefaultConfig();
|
|
390
|
+
const envPort = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : void 0;
|
|
391
|
+
const port = envPort || config.daemon?.port || defaults.daemon?.port || DAEMON.DEFAULT_PORT;
|
|
392
|
+
const host = config.daemon?.host || defaults.daemon?.host || DAEMON.DEFAULT_HOST;
|
|
393
|
+
return `http://${host}:${port}`;
|
|
394
|
+
}
|
|
368
395
|
function loadConfigSync() {
|
|
369
396
|
const configPath = getConfigPath();
|
|
370
397
|
try {
|
|
@@ -686,13 +713,15 @@ __export(schema_postgres_exports, {
|
|
|
686
713
|
repos: () => repos,
|
|
687
714
|
sessionMcpServers: () => sessionMcpServers,
|
|
688
715
|
sessions: () => sessions,
|
|
716
|
+
sessionsRelations: () => sessionsRelations,
|
|
689
717
|
tasks: () => tasks,
|
|
690
718
|
threadSessionMap: () => threadSessionMap,
|
|
691
719
|
users: () => users,
|
|
692
720
|
worktreeOwners: () => worktreeOwners,
|
|
693
|
-
worktrees: () => worktrees
|
|
721
|
+
worktrees: () => worktrees,
|
|
722
|
+
worktreesRelations: () => worktreesRelations
|
|
694
723
|
});
|
|
695
|
-
import { sql as sql2 } from "drizzle-orm";
|
|
724
|
+
import { relations, sql as sql2 } from "drizzle-orm";
|
|
696
725
|
import {
|
|
697
726
|
bigint,
|
|
698
727
|
boolean,
|
|
@@ -706,7 +735,7 @@ import {
|
|
|
706
735
|
uniqueIndex,
|
|
707
736
|
varchar
|
|
708
737
|
} from "drizzle-orm/pg-core";
|
|
709
|
-
var t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap;
|
|
738
|
+
var t, sessions, tasks, messages, boards, repos, worktrees, worktreeOwners, users, mcpServers, boardObjects, sessionMcpServers, boardComments, gatewayChannels, threadSessionMap, sessionsRelations, worktreesRelations;
|
|
710
739
|
var init_schema_postgres = __esm({
|
|
711
740
|
"src/db/schema.postgres.ts"() {
|
|
712
741
|
"use strict";
|
|
@@ -1193,6 +1222,15 @@ var init_schema_postgres = __esm({
|
|
|
1193
1222
|
channelStatusIdx: index("idx_thread_map_channel_status").on(table.channel_id, table.status)
|
|
1194
1223
|
})
|
|
1195
1224
|
);
|
|
1225
|
+
sessionsRelations = relations(sessions, ({ one }) => ({
|
|
1226
|
+
worktree: one(worktrees, {
|
|
1227
|
+
fields: [sessions.worktree_id],
|
|
1228
|
+
references: [worktrees.worktree_id]
|
|
1229
|
+
})
|
|
1230
|
+
}));
|
|
1231
|
+
worktreesRelations = relations(worktrees, ({ many }) => ({
|
|
1232
|
+
sessions: many(sessions)
|
|
1233
|
+
}));
|
|
1196
1234
|
}
|
|
1197
1235
|
});
|
|
1198
1236
|
|
|
@@ -1208,13 +1246,15 @@ __export(schema_sqlite_exports, {
|
|
|
1208
1246
|
repos: () => repos2,
|
|
1209
1247
|
sessionMcpServers: () => sessionMcpServers2,
|
|
1210
1248
|
sessions: () => sessions2,
|
|
1249
|
+
sessionsRelations: () => sessionsRelations2,
|
|
1211
1250
|
tasks: () => tasks2,
|
|
1212
1251
|
threadSessionMap: () => threadSessionMap2,
|
|
1213
1252
|
users: () => users2,
|
|
1214
1253
|
worktreeOwners: () => worktreeOwners2,
|
|
1215
|
-
worktrees: () => worktrees2
|
|
1254
|
+
worktrees: () => worktrees2,
|
|
1255
|
+
worktreesRelations: () => worktreesRelations2
|
|
1216
1256
|
});
|
|
1217
|
-
import { sql as sql3 } from "drizzle-orm";
|
|
1257
|
+
import { relations as relations2, sql as sql3 } from "drizzle-orm";
|
|
1218
1258
|
import {
|
|
1219
1259
|
index as index2,
|
|
1220
1260
|
integer as integer2,
|
|
@@ -1223,7 +1263,7 @@ import {
|
|
|
1223
1263
|
text as text2,
|
|
1224
1264
|
uniqueIndex as uniqueIndex2
|
|
1225
1265
|
} from "drizzle-orm/sqlite-core";
|
|
1226
|
-
var t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2;
|
|
1266
|
+
var t2, sessions2, tasks2, messages2, boards2, repos2, worktrees2, worktreeOwners2, users2, mcpServers2, boardObjects2, sessionMcpServers2, boardComments2, gatewayChannels2, threadSessionMap2, sessionsRelations2, worktreesRelations2;
|
|
1227
1267
|
var init_schema_sqlite = __esm({
|
|
1228
1268
|
"src/db/schema.sqlite.ts"() {
|
|
1229
1269
|
"use strict";
|
|
@@ -1711,6 +1751,15 @@ var init_schema_sqlite = __esm({
|
|
|
1711
1751
|
channelStatusIdx: index2("idx_thread_map_channel_status").on(table.channel_id, table.status)
|
|
1712
1752
|
})
|
|
1713
1753
|
);
|
|
1754
|
+
sessionsRelations2 = relations2(sessions2, ({ one }) => ({
|
|
1755
|
+
worktree: one(worktrees2, {
|
|
1756
|
+
fields: [sessions2.worktree_id],
|
|
1757
|
+
references: [worktrees2.worktree_id]
|
|
1758
|
+
})
|
|
1759
|
+
}));
|
|
1760
|
+
worktreesRelations2 = relations2(worktrees2, ({ many }) => ({
|
|
1761
|
+
sessions: many(sessions2)
|
|
1762
|
+
}));
|
|
1714
1763
|
}
|
|
1715
1764
|
});
|
|
1716
1765
|
|
|
@@ -2778,18 +2827,8 @@ async function checkMigrationStatus(db) {
|
|
|
2778
2827
|
);
|
|
2779
2828
|
appliedHashes = result.map((row) => String(row.hash));
|
|
2780
2829
|
}
|
|
2781
|
-
const
|
|
2782
|
-
const
|
|
2783
|
-
const numApplied = normalizedAppliedHashes.length;
|
|
2784
|
-
if (numApplied >= numExpected) {
|
|
2785
|
-
return {
|
|
2786
|
-
hasPending: false,
|
|
2787
|
-
pending: [],
|
|
2788
|
-
applied: expectedMigrations.map((m) => m.tag)
|
|
2789
|
-
};
|
|
2790
|
-
}
|
|
2791
|
-
const pending = expectedMigrations.filter((m) => !normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
|
|
2792
|
-
const appliedTags = expectedMigrations.filter((m) => normalizedAppliedHashes.includes(m.hash)).map((m) => m.tag);
|
|
2830
|
+
const pending = expectedMigrations.filter((m) => !appliedHashes.includes(m.hash)).map((m) => m.tag);
|
|
2831
|
+
const appliedTags = expectedMigrations.filter((m) => appliedHashes.includes(m.hash)).map((m) => m.tag);
|
|
2793
2832
|
return {
|
|
2794
2833
|
hasPending: pending.length > 0,
|
|
2795
2834
|
pending,
|
|
@@ -3493,9 +3532,25 @@ var BoardObjectRepository = class {
|
|
|
3493
3532
|
|
|
3494
3533
|
// src/db/repositories/boards.ts
|
|
3495
3534
|
init_esm_shims();
|
|
3535
|
+
init_config_manager();
|
|
3496
3536
|
init_ids();
|
|
3497
3537
|
import { and as and2, eq as eq5, like as like2, ne } from "drizzle-orm";
|
|
3498
3538
|
import * as yaml3 from "js-yaml";
|
|
3539
|
+
|
|
3540
|
+
// src/utils/url.ts
|
|
3541
|
+
init_esm_shims();
|
|
3542
|
+
init_ids();
|
|
3543
|
+
function getSessionUrl(sessionId, boardId, boardSlug, baseUrl) {
|
|
3544
|
+
if (!boardId) return null;
|
|
3545
|
+
const boardParam = boardSlug || shortId(boardId);
|
|
3546
|
+
return `${baseUrl}/b/${boardParam}/${shortId(sessionId)}`;
|
|
3547
|
+
}
|
|
3548
|
+
function getBoardUrl(boardId, boardSlug, baseUrl) {
|
|
3549
|
+
const boardParam = boardSlug || shortId(boardId);
|
|
3550
|
+
return `${baseUrl}/b/${boardParam}`;
|
|
3551
|
+
}
|
|
3552
|
+
|
|
3553
|
+
// src/db/repositories/boards.ts
|
|
3499
3554
|
init_database_wrapper();
|
|
3500
3555
|
init_schema();
|
|
3501
3556
|
var BoardRepository = class {
|
|
@@ -3504,16 +3559,23 @@ var BoardRepository = class {
|
|
|
3504
3559
|
}
|
|
3505
3560
|
/**
|
|
3506
3561
|
* Convert database row to Board type
|
|
3562
|
+
*
|
|
3563
|
+
* @param row - Database row
|
|
3564
|
+
* @param baseUrl - Base URL for generating board URLs
|
|
3507
3565
|
*/
|
|
3508
|
-
rowToBoard(row) {
|
|
3566
|
+
rowToBoard(row, baseUrl) {
|
|
3509
3567
|
const data = row.data;
|
|
3568
|
+
const boardId = row.board_id;
|
|
3569
|
+
const slug = row.slug !== null ? row.slug : void 0;
|
|
3570
|
+
const url = baseUrl ? getBoardUrl(boardId, slug, baseUrl) : "";
|
|
3510
3571
|
return {
|
|
3511
|
-
board_id:
|
|
3572
|
+
board_id: boardId,
|
|
3512
3573
|
name: row.name,
|
|
3513
|
-
slug
|
|
3574
|
+
slug,
|
|
3514
3575
|
created_at: new Date(row.created_at).toISOString(),
|
|
3515
3576
|
last_updated: row.updated_at ? new Date(row.updated_at).toISOString() : new Date(row.created_at).toISOString(),
|
|
3516
3577
|
created_by: row.created_by,
|
|
3578
|
+
url,
|
|
3517
3579
|
...data
|
|
3518
3580
|
};
|
|
3519
3581
|
}
|
|
@@ -3593,6 +3655,7 @@ var BoardRepository = class {
|
|
|
3593
3655
|
async create(data) {
|
|
3594
3656
|
try {
|
|
3595
3657
|
const boardId = data.board_id ?? generateId();
|
|
3658
|
+
const baseUrl = await getBaseUrl();
|
|
3596
3659
|
let finalSlug;
|
|
3597
3660
|
if (data.slug === null) {
|
|
3598
3661
|
finalSlug = void 0;
|
|
@@ -3615,7 +3678,7 @@ var BoardRepository = class {
|
|
|
3615
3678
|
if (!row) {
|
|
3616
3679
|
throw new RepositoryError("Failed to retrieve created board");
|
|
3617
3680
|
}
|
|
3618
|
-
return this.rowToBoard(row);
|
|
3681
|
+
return this.rowToBoard(row, baseUrl);
|
|
3619
3682
|
} catch (error) {
|
|
3620
3683
|
if (error instanceof RepositoryError) throw error;
|
|
3621
3684
|
throw new RepositoryError(
|
|
@@ -3630,8 +3693,9 @@ var BoardRepository = class {
|
|
|
3630
3693
|
async findById(id) {
|
|
3631
3694
|
try {
|
|
3632
3695
|
const fullId = await this.resolveId(id);
|
|
3696
|
+
const baseUrl = await getBaseUrl();
|
|
3633
3697
|
const row = await select(this.db).from(boards3).where(eq5(boards3.board_id, fullId)).one();
|
|
3634
|
-
return row ? this.rowToBoard(row) : null;
|
|
3698
|
+
return row ? this.rowToBoard(row, baseUrl) : null;
|
|
3635
3699
|
} catch (error) {
|
|
3636
3700
|
if (error instanceof EntityNotFoundError) return null;
|
|
3637
3701
|
if (error instanceof AmbiguousIdError) throw error;
|
|
@@ -3646,8 +3710,9 @@ var BoardRepository = class {
|
|
|
3646
3710
|
*/
|
|
3647
3711
|
async findBySlug(slug) {
|
|
3648
3712
|
try {
|
|
3713
|
+
const baseUrl = await getBaseUrl();
|
|
3649
3714
|
const row = await select(this.db).from(boards3).where(eq5(boards3.slug, slug)).one();
|
|
3650
|
-
return row ? this.rowToBoard(row) : null;
|
|
3715
|
+
return row ? this.rowToBoard(row, baseUrl) : null;
|
|
3651
3716
|
} catch (error) {
|
|
3652
3717
|
throw new RepositoryError(
|
|
3653
3718
|
`Failed to find board by slug: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -3672,8 +3737,9 @@ var BoardRepository = class {
|
|
|
3672
3737
|
*/
|
|
3673
3738
|
async findAll() {
|
|
3674
3739
|
try {
|
|
3740
|
+
const baseUrl = await getBaseUrl();
|
|
3675
3741
|
const rows = await select(this.db).from(boards3).all();
|
|
3676
|
-
return rows.map((row) => this.rowToBoard(row));
|
|
3742
|
+
return rows.map((row) => this.rowToBoard(row, baseUrl));
|
|
3677
3743
|
} catch (error) {
|
|
3678
3744
|
throw new RepositoryError(
|
|
3679
3745
|
`Failed to find all boards: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -4023,7 +4089,14 @@ function decryptConfig(config) {
|
|
|
4023
4089
|
if (typeof decrypted[field] === "string" && decrypted[field]) {
|
|
4024
4090
|
try {
|
|
4025
4091
|
decrypted[field] = decryptApiKey(decrypted[field]);
|
|
4026
|
-
} catch {
|
|
4092
|
+
} catch (error) {
|
|
4093
|
+
console.error(
|
|
4094
|
+
`[gateway-channels] Failed to decrypt ${field}:`,
|
|
4095
|
+
error instanceof Error ? error.message : String(error)
|
|
4096
|
+
);
|
|
4097
|
+
console.error(
|
|
4098
|
+
"[gateway-channels] Channel credentials may be corrupted or master secret changed"
|
|
4099
|
+
);
|
|
4027
4100
|
}
|
|
4028
4101
|
}
|
|
4029
4102
|
}
|
|
@@ -4164,6 +4237,15 @@ var GatewayChannelRepository = class {
|
|
|
4164
4237
|
throw new EntityNotFoundError("GatewayChannel", id);
|
|
4165
4238
|
}
|
|
4166
4239
|
const merged = { ...current, ...updates };
|
|
4240
|
+
if (updates.config) {
|
|
4241
|
+
const mergedConfig = { ...current.config, ...updates.config };
|
|
4242
|
+
for (const field of SENSITIVE_CONFIG_FIELDS) {
|
|
4243
|
+
if (!updates.config[field] && current.config[field]) {
|
|
4244
|
+
mergedConfig[field] = current.config[field];
|
|
4245
|
+
}
|
|
4246
|
+
}
|
|
4247
|
+
merged.config = mergedConfig;
|
|
4248
|
+
}
|
|
4167
4249
|
const insertData = this.channelToInsert(merged);
|
|
4168
4250
|
await update(this.db, gatewayChannels3).set({
|
|
4169
4251
|
name: insertData.name,
|
|
@@ -5159,32 +5241,30 @@ function isNonEmptyString(value) {
|
|
|
5159
5241
|
init_esm_shims();
|
|
5160
5242
|
|
|
5161
5243
|
// src/db/repositories/sessions.ts
|
|
5244
|
+
init_config_manager();
|
|
5162
5245
|
init_ids();
|
|
5246
|
+
import { and as and4, desc, eq as eq10, inArray, isNotNull, isNull as isNull2, like as like6, or, sql as sql6 } from "drizzle-orm";
|
|
5163
5247
|
init_database_wrapper();
|
|
5164
5248
|
init_schema();
|
|
5165
|
-
import {
|
|
5166
|
-
and as and4,
|
|
5167
|
-
desc,
|
|
5168
|
-
eq as eq10,
|
|
5169
|
-
getTableColumns,
|
|
5170
|
-
inArray,
|
|
5171
|
-
isNotNull,
|
|
5172
|
-
isNull as isNull2,
|
|
5173
|
-
like as like6,
|
|
5174
|
-
or,
|
|
5175
|
-
sql as sql6
|
|
5176
|
-
} from "drizzle-orm";
|
|
5177
5249
|
var SessionRepository = class {
|
|
5178
5250
|
constructor(db) {
|
|
5179
5251
|
this.db = db;
|
|
5180
5252
|
}
|
|
5181
5253
|
/**
|
|
5182
5254
|
* Convert database row to Session type
|
|
5255
|
+
*
|
|
5256
|
+
* @param row - Database row
|
|
5257
|
+
* @param worktreeBoardId - Board ID from worktree (if JOINed)
|
|
5258
|
+
* @param boardSlug - Board slug from boards table (if JOINed)
|
|
5259
|
+
* @param baseUrl - Base URL for generating session URLs
|
|
5183
5260
|
*/
|
|
5184
|
-
rowToSession(row) {
|
|
5261
|
+
rowToSession(row, worktreeBoardId, boardSlug, baseUrl) {
|
|
5185
5262
|
const genealogyData = row.data.genealogy || { children: [] };
|
|
5263
|
+
const sessionId = row.session_id;
|
|
5264
|
+
const boardId = worktreeBoardId ?? null;
|
|
5265
|
+
const url = baseUrl ? getSessionUrl(sessionId, boardId, boardSlug, baseUrl) : null;
|
|
5186
5266
|
return {
|
|
5187
|
-
session_id:
|
|
5267
|
+
session_id: sessionId,
|
|
5188
5268
|
status: row.status,
|
|
5189
5269
|
agentic_tool: row.agentic_tool,
|
|
5190
5270
|
created_at: new Date(row.created_at).toISOString(),
|
|
@@ -5192,6 +5272,8 @@ var SessionRepository = class {
|
|
|
5192
5272
|
created_by: row.created_by,
|
|
5193
5273
|
unix_username: row.unix_username || null,
|
|
5194
5274
|
worktree_id: row.worktree_id,
|
|
5275
|
+
worktree_board_id: boardId,
|
|
5276
|
+
url,
|
|
5195
5277
|
...row.data,
|
|
5196
5278
|
tasks: row.data.tasks.map((id) => id),
|
|
5197
5279
|
genealogy: {
|
|
@@ -5304,11 +5386,15 @@ var SessionRepository = class {
|
|
|
5304
5386
|
try {
|
|
5305
5387
|
const insertData = this.sessionToInsert(data);
|
|
5306
5388
|
await insert(this.db, sessions3).values(insertData).run();
|
|
5307
|
-
const
|
|
5308
|
-
|
|
5389
|
+
const baseUrl = await getBaseUrl();
|
|
5390
|
+
const result = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, insertData.session_id)).one();
|
|
5391
|
+
if (!result) {
|
|
5309
5392
|
throw new RepositoryError("Failed to retrieve created session");
|
|
5310
5393
|
}
|
|
5311
|
-
|
|
5394
|
+
const sessionRow = result.sessions;
|
|
5395
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5396
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5397
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5312
5398
|
} catch (error) {
|
|
5313
5399
|
if (error instanceof RepositoryError) throw error;
|
|
5314
5400
|
throw new RepositoryError(
|
|
@@ -5319,12 +5405,22 @@ var SessionRepository = class {
|
|
|
5319
5405
|
}
|
|
5320
5406
|
/**
|
|
5321
5407
|
* Find session by ID (supports short ID)
|
|
5408
|
+
*
|
|
5409
|
+
* Automatically LEFT JOINs with worktrees table to populate worktree_board_id and url.
|
|
5410
|
+
* This avoids N+1 queries when URL generation is needed.
|
|
5322
5411
|
*/
|
|
5323
5412
|
async findById(id) {
|
|
5324
5413
|
try {
|
|
5325
5414
|
const fullId = await this.resolveId(id);
|
|
5326
|
-
const
|
|
5327
|
-
|
|
5415
|
+
const baseUrl = await getBaseUrl();
|
|
5416
|
+
const result = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, fullId)).one();
|
|
5417
|
+
if (!result) {
|
|
5418
|
+
return null;
|
|
5419
|
+
}
|
|
5420
|
+
const sessionRow = result.sessions;
|
|
5421
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5422
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5423
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5328
5424
|
} catch (error) {
|
|
5329
5425
|
if (error instanceof EntityNotFoundError) return null;
|
|
5330
5426
|
if (error instanceof AmbiguousIdError) throw error;
|
|
@@ -5336,11 +5432,21 @@ var SessionRepository = class {
|
|
|
5336
5432
|
}
|
|
5337
5433
|
/**
|
|
5338
5434
|
* Find all sessions
|
|
5435
|
+
*
|
|
5436
|
+
* LEFT JOINs with worktrees to populate board_id and url in a single query.
|
|
5339
5437
|
*/
|
|
5340
5438
|
async findAll() {
|
|
5341
5439
|
try {
|
|
5342
|
-
const
|
|
5343
|
-
|
|
5440
|
+
const baseUrl = await getBaseUrl();
|
|
5441
|
+
const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).all();
|
|
5442
|
+
return results.map(
|
|
5443
|
+
(result) => {
|
|
5444
|
+
const sessionRow = result.sessions;
|
|
5445
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5446
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5447
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5448
|
+
}
|
|
5449
|
+
);
|
|
5344
5450
|
} catch (error) {
|
|
5345
5451
|
throw new RepositoryError(
|
|
5346
5452
|
`Failed to find all sessions: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -5350,11 +5456,21 @@ var SessionRepository = class {
|
|
|
5350
5456
|
}
|
|
5351
5457
|
/**
|
|
5352
5458
|
* Find sessions by status
|
|
5459
|
+
*
|
|
5460
|
+
* LEFT JOINs with worktrees to populate board_id and url.
|
|
5353
5461
|
*/
|
|
5354
5462
|
async findByStatus(status) {
|
|
5355
5463
|
try {
|
|
5356
|
-
const
|
|
5357
|
-
|
|
5464
|
+
const baseUrl = await getBaseUrl();
|
|
5465
|
+
const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.status, status)).all();
|
|
5466
|
+
return results.map(
|
|
5467
|
+
(result) => {
|
|
5468
|
+
const sessionRow = result.sessions;
|
|
5469
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5470
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5471
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5472
|
+
}
|
|
5473
|
+
);
|
|
5358
5474
|
} catch (error) {
|
|
5359
5475
|
throw new RepositoryError(
|
|
5360
5476
|
`Failed to find sessions by status: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -5364,11 +5480,22 @@ var SessionRepository = class {
|
|
|
5364
5480
|
}
|
|
5365
5481
|
/**
|
|
5366
5482
|
* Find sessions by board ID
|
|
5483
|
+
*
|
|
5484
|
+
* Uses materialized board_id column for O(1) indexed lookup.
|
|
5485
|
+
* LEFT JOINs with worktrees to populate url (board_id already known from filter).
|
|
5367
5486
|
*/
|
|
5368
5487
|
async findByBoard(boardId) {
|
|
5369
5488
|
try {
|
|
5370
|
-
const
|
|
5371
|
-
|
|
5489
|
+
const baseUrl = await getBaseUrl();
|
|
5490
|
+
const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.board_id, boardId)).all();
|
|
5491
|
+
return results.map(
|
|
5492
|
+
(result) => {
|
|
5493
|
+
const sessionRow = result.sessions;
|
|
5494
|
+
const board_id = result.worktrees?.board_id ?? null;
|
|
5495
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5496
|
+
return this.rowToSession(sessionRow, board_id, boardSlug, baseUrl);
|
|
5497
|
+
}
|
|
5498
|
+
);
|
|
5372
5499
|
} catch (error) {
|
|
5373
5500
|
throw new RepositoryError(
|
|
5374
5501
|
`Failed to find sessions by board: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -5378,18 +5505,28 @@ var SessionRepository = class {
|
|
|
5378
5505
|
}
|
|
5379
5506
|
/**
|
|
5380
5507
|
* Find child sessions (forked or spawned from this session)
|
|
5508
|
+
*
|
|
5509
|
+
* LEFT JOINs with worktrees to populate board_id and url.
|
|
5381
5510
|
*/
|
|
5382
5511
|
async findChildren(sessionId) {
|
|
5383
5512
|
try {
|
|
5384
5513
|
const fullId = await this.resolveId(sessionId);
|
|
5514
|
+
const baseUrl = await getBaseUrl();
|
|
5385
5515
|
const { jsonExtract: jsonExtract2 } = await Promise.resolve().then(() => (init_database_wrapper(), database_wrapper_exports));
|
|
5386
|
-
const
|
|
5516
|
+
const results = await select(this.db).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(
|
|
5387
5517
|
or(
|
|
5388
5518
|
sql6`${jsonExtract2(this.db, sessions3.data, "genealogy.parent_session_id")} = ${fullId}`,
|
|
5389
5519
|
sql6`${jsonExtract2(this.db, sessions3.data, "genealogy.forked_from_session_id")} = ${fullId}`
|
|
5390
5520
|
)
|
|
5391
5521
|
).all();
|
|
5392
|
-
return
|
|
5522
|
+
return results.map(
|
|
5523
|
+
(result) => {
|
|
5524
|
+
const sessionRow = result.sessions;
|
|
5525
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5526
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5527
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5528
|
+
}
|
|
5529
|
+
);
|
|
5393
5530
|
} catch (error) {
|
|
5394
5531
|
throw new RepositoryError(
|
|
5395
5532
|
`Failed to find child sessions: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -5442,14 +5579,18 @@ var SessionRepository = class {
|
|
|
5442
5579
|
async update(id, updates) {
|
|
5443
5580
|
try {
|
|
5444
5581
|
const fullId = await this.resolveId(id);
|
|
5582
|
+
const baseUrl = await getBaseUrl();
|
|
5445
5583
|
const statusInfo = updates.status ? ` (status: ${updates.status}, ready_for_prompt: ${updates.ready_for_prompt})` : "";
|
|
5446
5584
|
console.debug(`\u{1F504} [SessionRepo] Updating session ${fullId.substring(0, 8)}${statusInfo}`);
|
|
5447
5585
|
const result = await this.db.transaction(async (tx) => {
|
|
5448
|
-
const
|
|
5449
|
-
if (!
|
|
5586
|
+
const currentResult = await select(tx).from(sessions3).leftJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).where(eq10(sessions3.session_id, fullId)).one();
|
|
5587
|
+
if (!currentResult) {
|
|
5450
5588
|
throw new EntityNotFoundError("Session", id);
|
|
5451
5589
|
}
|
|
5452
|
-
const
|
|
5590
|
+
const currentRow = currentResult.sessions;
|
|
5591
|
+
const boardId = currentResult.worktrees?.board_id ?? null;
|
|
5592
|
+
const boardSlug = currentResult.boards?.slug ?? null;
|
|
5593
|
+
const current = this.rowToSession(currentRow, boardId, boardSlug, baseUrl);
|
|
5453
5594
|
const merged = deepMerge(current, updates);
|
|
5454
5595
|
const insertData = this.sessionToInsert(merged);
|
|
5455
5596
|
await update(tx, sessions3).set({
|
|
@@ -5516,15 +5657,18 @@ var SessionRepository = class {
|
|
|
5516
5657
|
* instead of N+1. Returns sessions where user is a worktree owner OR worktree.others_can
|
|
5517
5658
|
* allows at least 'view' access.
|
|
5518
5659
|
*
|
|
5660
|
+
* Also populates board_id and url via the worktrees JOIN.
|
|
5661
|
+
*
|
|
5519
5662
|
* NOTE: This method should only be called when RBAC is enabled. When RBAC is disabled,
|
|
5520
5663
|
* the scopeSessionQuery hook is not registered, so default Feathers query is used
|
|
5521
5664
|
* (which returns all sessions without filtering).
|
|
5522
5665
|
*
|
|
5523
5666
|
* @param userId - User ID to check access for
|
|
5524
|
-
* @returns Array of accessible sessions
|
|
5667
|
+
* @returns Array of accessible sessions with urls populated
|
|
5525
5668
|
*/
|
|
5526
5669
|
async findAccessibleSessions(userId) {
|
|
5527
|
-
const
|
|
5670
|
+
const baseUrl = await getBaseUrl();
|
|
5671
|
+
const results = await select(this.db).from(sessions3).innerJoin(worktrees3, eq10(sessions3.worktree_id, worktrees3.worktree_id)).leftJoin(boards3, eq10(worktrees3.board_id, boards3.board_id)).leftJoin(
|
|
5528
5672
|
worktreeOwners3,
|
|
5529
5673
|
and4(
|
|
5530
5674
|
eq10(worktreeOwners3.worktree_id, worktrees3.worktree_id),
|
|
@@ -5536,7 +5680,14 @@ var SessionRepository = class {
|
|
|
5536
5680
|
inArray(worktrees3.others_can, ["view", "prompt", "all"])
|
|
5537
5681
|
)
|
|
5538
5682
|
).all();
|
|
5539
|
-
return
|
|
5683
|
+
return results.map(
|
|
5684
|
+
(result) => {
|
|
5685
|
+
const sessionRow = result.sessions;
|
|
5686
|
+
const boardId = result.worktrees?.board_id ?? null;
|
|
5687
|
+
const boardSlug = result.boards?.slug ?? null;
|
|
5688
|
+
return this.rowToSession(sessionRow, boardId, boardSlug, baseUrl);
|
|
5689
|
+
}
|
|
5690
|
+
);
|
|
5540
5691
|
}
|
|
5541
5692
|
/**
|
|
5542
5693
|
* Enrich a single session with last assistant message
|
|
@@ -5585,7 +5736,7 @@ var SessionRepository = class {
|
|
|
5585
5736
|
fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
|
|
5586
5737
|
}
|
|
5587
5738
|
if (fullText.length > truncationLength) {
|
|
5588
|
-
fullText = fullText.substring(0, truncationLength)
|
|
5739
|
+
fullText = `${fullText.substring(0, truncationLength)}...`;
|
|
5589
5740
|
}
|
|
5590
5741
|
lastMessageBySession.set(sessionId, fullText);
|
|
5591
5742
|
}
|
|
@@ -6372,6 +6523,20 @@ var ThreadSessionMapRepository = class {
|
|
|
6372
6523
|
);
|
|
6373
6524
|
}
|
|
6374
6525
|
}
|
|
6526
|
+
/**
|
|
6527
|
+
* Find all mappings for a worktree (for UI filtering gateway sessions)
|
|
6528
|
+
*/
|
|
6529
|
+
async findByWorktree(worktreeId) {
|
|
6530
|
+
try {
|
|
6531
|
+
const rows = await select(this.db).from(threadSessionMap3).where(eq13(threadSessionMap3.worktree_id, worktreeId)).all();
|
|
6532
|
+
return rows.map((row) => this.rowToMapping(row));
|
|
6533
|
+
} catch (error) {
|
|
6534
|
+
throw new RepositoryError(
|
|
6535
|
+
`Failed to find mappings by worktree: ${error instanceof Error ? error.message : String(error)}`,
|
|
6536
|
+
error
|
|
6537
|
+
);
|
|
6538
|
+
}
|
|
6539
|
+
}
|
|
6375
6540
|
};
|
|
6376
6541
|
|
|
6377
6542
|
// src/db/repositories/users.ts
|
|
@@ -6691,7 +6856,7 @@ import {
|
|
|
6691
6856
|
and as and7,
|
|
6692
6857
|
desc as desc2,
|
|
6693
6858
|
eq as eq15,
|
|
6694
|
-
getTableColumns
|
|
6859
|
+
getTableColumns,
|
|
6695
6860
|
inArray as inArray2,
|
|
6696
6861
|
isNotNull as isNotNull2,
|
|
6697
6862
|
isNull as isNull3,
|
|
@@ -7010,7 +7175,7 @@ var WorktreeRepository = class {
|
|
|
7010
7175
|
* @returns Array of accessible worktrees
|
|
7011
7176
|
*/
|
|
7012
7177
|
async findAccessibleWorktrees(userId) {
|
|
7013
|
-
const rows = await select(this.db,
|
|
7178
|
+
const rows = await select(this.db, getTableColumns(worktrees3)).from(worktrees3).leftJoin(
|
|
7014
7179
|
worktreeOwners3,
|
|
7015
7180
|
and7(
|
|
7016
7181
|
eq15(worktreeOwners3.worktree_id, worktrees3.worktree_id),
|
|
@@ -7159,7 +7324,7 @@ var WorktreeRepository = class {
|
|
|
7159
7324
|
fullText = messageData.content.filter((block) => block.type === "text" && block.text).map((block) => block.text).join("\n");
|
|
7160
7325
|
}
|
|
7161
7326
|
if (fullText.length > truncationLength) {
|
|
7162
|
-
fullText = fullText.substring(0, truncationLength)
|
|
7327
|
+
fullText = `${fullText.substring(0, truncationLength)}...`;
|
|
7163
7328
|
}
|
|
7164
7329
|
lastMessageBySession.set(sessionId, fullText);
|
|
7165
7330
|
}
|
|
@@ -7170,7 +7335,7 @@ var WorktreeRepository = class {
|
|
|
7170
7335
|
const sessionId = row.session_id;
|
|
7171
7336
|
let lastMessage = lastMessageBySession.get(sessionId) || "";
|
|
7172
7337
|
if (lastMessage.length > truncationLength) {
|
|
7173
|
-
lastMessage = lastMessage.substring(0, truncationLength)
|
|
7338
|
+
lastMessage = `${lastMessage.substring(0, truncationLength)}...truncated`;
|
|
7174
7339
|
}
|
|
7175
7340
|
const sessionData = row.data;
|
|
7176
7341
|
const messageCount = sessionData?.message_count ?? 0;
|
|
@@ -10346,6 +10511,7 @@ export {
|
|
|
10346
10511
|
generateUnixUsername,
|
|
10347
10512
|
generateWorktreeGroupName,
|
|
10348
10513
|
getAgorHome,
|
|
10514
|
+
getBaseUrl,
|
|
10349
10515
|
getCommentAttachmentType,
|
|
10350
10516
|
getConfigPath,
|
|
10351
10517
|
getConfigValue,
|