@paperclipai/server 0.3.1 → 2026.3.17-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +23 -2
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/types.d.ts +1 -1
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +115 -3
- package/dist/app.js.map +1 -1
- package/dist/attachment-types.d.ts.map +1 -1
- package/dist/attachment-types.js +6 -0
- package/dist/attachment-types.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/home-paths.d.ts +5 -0
- package/dist/home-paths.d.ts.map +1 -1
- package/dist/home-paths.js +18 -0
- package/dist/home-paths.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -42
- package/dist/index.js.map +1 -1
- package/dist/routes/access.d.ts.map +1 -1
- package/dist/routes/access.js +90 -1
- package/dist/routes/access.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +64 -1
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/assets.d.ts.map +1 -1
- package/dist/routes/assets.js +191 -13
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/companies.d.ts.map +1 -1
- package/dist/routes/companies.js +10 -1
- package/dist/routes/companies.js.map +1 -1
- package/dist/routes/costs.d.ts.map +1 -1
- package/dist/routes/costs.js +160 -5
- package/dist/routes/costs.js.map +1 -1
- package/dist/routes/execution-workspaces.d.ts +3 -0
- package/dist/routes/execution-workspaces.d.ts.map +1 -0
- package/dist/routes/execution-workspaces.js +165 -0
- package/dist/routes/execution-workspaces.js.map +1 -0
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +3 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/instance-settings.d.ts +3 -0
- package/dist/routes/instance-settings.d.ts.map +1 -0
- package/dist/routes/instance-settings.js +46 -0
- package/dist/routes/instance-settings.js.map +1 -0
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +339 -4
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/plugin-ui-static.d.ts +69 -0
- package/dist/routes/plugin-ui-static.d.ts.map +1 -0
- package/dist/routes/plugin-ui-static.js +411 -0
- package/dist/routes/plugin-ui-static.js.map +1 -0
- package/dist/routes/plugins.d.ts +120 -0
- package/dist/routes/plugins.d.ts.map +1 -0
- package/dist/routes/plugins.js +1784 -0
- package/dist/routes/plugins.js.map +1 -0
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +5 -1
- package/dist/routes/projects.js.map +1 -1
- package/dist/services/access.d.ts +2 -2
- package/dist/services/activity-log.d.ts +3 -0
- package/dist/services/activity-log.d.ts.map +1 -1
- package/dist/services/activity-log.js +34 -0
- package/dist/services/activity-log.js.map +1 -1
- package/dist/services/agents.d.ts +39 -15
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +60 -8
- package/dist/services/agents.js.map +1 -1
- package/dist/services/approvals.d.ts +5 -5
- package/dist/services/approvals.d.ts.map +1 -1
- package/dist/services/approvals.js +11 -0
- package/dist/services/approvals.js.map +1 -1
- package/dist/services/assets.d.ts +4 -4
- package/dist/services/budgets.d.ts +38 -0
- package/dist/services/budgets.d.ts.map +1 -0
- package/dist/services/budgets.js +784 -0
- package/dist/services/budgets.js.map +1 -0
- package/dist/services/companies.d.ts +39 -418
- package/dist/services/companies.d.ts.map +1 -1
- package/dist/services/companies.js +157 -21
- package/dist/services/companies.js.map +1 -1
- package/dist/services/costs.d.ts +67 -3
- package/dist/services/costs.d.ts.map +1 -1
- package/dist/services/costs.js +185 -57
- package/dist/services/costs.js.map +1 -1
- package/dist/services/cron.d.ts +80 -0
- package/dist/services/cron.d.ts.map +1 -0
- package/dist/services/cron.js +300 -0
- package/dist/services/cron.js.map +1 -0
- package/dist/services/dashboard.d.ts +6 -0
- package/dist/services/dashboard.d.ts.map +1 -1
- package/dist/services/dashboard.js +9 -0
- package/dist/services/dashboard.js.map +1 -1
- package/dist/services/documents.d.ts +164 -0
- package/dist/services/documents.d.ts.map +1 -0
- package/dist/services/documents.js +382 -0
- package/dist/services/documents.js.map +1 -0
- package/dist/services/execution-workspace-policy.d.ts +2 -1
- package/dist/services/execution-workspace-policy.d.ts.map +1 -1
- package/dist/services/execution-workspace-policy.js +63 -15
- package/dist/services/execution-workspace-policy.js.map +1 -1
- package/dist/services/execution-workspaces.d.ts +19 -0
- package/dist/services/execution-workspaces.d.ts.map +1 -0
- package/dist/services/execution-workspaces.js +87 -0
- package/dist/services/execution-workspaces.js.map +1 -0
- package/dist/services/finance.d.ts +93 -0
- package/dist/services/finance.d.ts.map +1 -0
- package/dist/services/finance.js +120 -0
- package/dist/services/finance.js.map +1 -0
- package/dist/services/heartbeat.d.ts +11 -1
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +1292 -559
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts +9 -0
- package/dist/services/instance-settings.d.ts.map +1 -0
- package/dist/services/instance-settings.js +80 -0
- package/dist/services/instance-settings.js.map +1 -0
- package/dist/services/issue-approvals.d.ts +1 -1
- package/dist/services/issues.d.ts +14 -2
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +161 -9
- package/dist/services/issues.js.map +1 -1
- package/dist/services/live-events.d.ts +5 -0
- package/dist/services/live-events.d.ts.map +1 -1
- package/dist/services/live-events.js +9 -0
- package/dist/services/live-events.js.map +1 -1
- package/dist/services/plugin-capability-validator.d.ts +108 -0
- package/dist/services/plugin-capability-validator.d.ts.map +1 -0
- package/dist/services/plugin-capability-validator.js +268 -0
- package/dist/services/plugin-capability-validator.js.map +1 -0
- package/dist/services/plugin-config-validator.d.ts +26 -0
- package/dist/services/plugin-config-validator.d.ts.map +1 -0
- package/dist/services/plugin-config-validator.js +41 -0
- package/dist/services/plugin-config-validator.js.map +1 -0
- package/dist/services/plugin-dev-watcher.d.ts +30 -0
- package/dist/services/plugin-dev-watcher.d.ts.map +1 -0
- package/dist/services/plugin-dev-watcher.js +241 -0
- package/dist/services/plugin-dev-watcher.js.map +1 -0
- package/dist/services/plugin-event-bus.d.ts +149 -0
- package/dist/services/plugin-event-bus.d.ts.map +1 -0
- package/dist/services/plugin-event-bus.js +258 -0
- package/dist/services/plugin-event-bus.js.map +1 -0
- package/dist/services/plugin-host-service-cleanup.d.ts +14 -0
- package/dist/services/plugin-host-service-cleanup.d.ts.map +1 -0
- package/dist/services/plugin-host-service-cleanup.js +37 -0
- package/dist/services/plugin-host-service-cleanup.js.map +1 -0
- package/dist/services/plugin-host-services.d.ts +13 -0
- package/dist/services/plugin-host-services.d.ts.map +1 -0
- package/dist/services/plugin-host-services.js +969 -0
- package/dist/services/plugin-host-services.js.map +1 -0
- package/dist/services/plugin-job-coordinator.d.ts +81 -0
- package/dist/services/plugin-job-coordinator.d.ts.map +1 -0
- package/dist/services/plugin-job-coordinator.js +172 -0
- package/dist/services/plugin-job-coordinator.js.map +1 -0
- package/dist/services/plugin-job-scheduler.d.ts +163 -0
- package/dist/services/plugin-job-scheduler.d.ts.map +1 -0
- package/dist/services/plugin-job-scheduler.js +454 -0
- package/dist/services/plugin-job-scheduler.js.map +1 -0
- package/dist/services/plugin-job-store.d.ts +208 -0
- package/dist/services/plugin-job-store.d.ts.map +1 -0
- package/dist/services/plugin-job-store.js +350 -0
- package/dist/services/plugin-job-store.js.map +1 -0
- package/dist/services/plugin-lifecycle.d.ts +203 -0
- package/dist/services/plugin-lifecycle.d.ts.map +1 -0
- package/dist/services/plugin-lifecycle.js +476 -0
- package/dist/services/plugin-lifecycle.js.map +1 -0
- package/dist/services/plugin-loader.d.ts +441 -0
- package/dist/services/plugin-loader.d.ts.map +1 -0
- package/dist/services/plugin-loader.js +1192 -0
- package/dist/services/plugin-loader.js.map +1 -0
- package/dist/services/plugin-log-retention.d.ts +20 -0
- package/dist/services/plugin-log-retention.d.ts.map +1 -0
- package/dist/services/plugin-log-retention.js +63 -0
- package/dist/services/plugin-log-retention.js.map +1 -0
- package/dist/services/plugin-manifest-validator.d.ts +79 -0
- package/dist/services/plugin-manifest-validator.d.ts.map +1 -0
- package/dist/services/plugin-manifest-validator.js +84 -0
- package/dist/services/plugin-manifest-validator.js.map +1 -0
- package/dist/services/plugin-registry.d.ts +2542 -0
- package/dist/services/plugin-registry.d.ts.map +1 -0
- package/dist/services/plugin-registry.js +539 -0
- package/dist/services/plugin-registry.js.map +1 -0
- package/dist/services/plugin-runtime-sandbox.d.ts +40 -0
- package/dist/services/plugin-runtime-sandbox.d.ts.map +1 -0
- package/dist/services/plugin-runtime-sandbox.js +154 -0
- package/dist/services/plugin-runtime-sandbox.js.map +1 -0
- package/dist/services/plugin-secrets-handler.d.ts +81 -0
- package/dist/services/plugin-secrets-handler.d.ts.map +1 -0
- package/dist/services/plugin-secrets-handler.js +275 -0
- package/dist/services/plugin-secrets-handler.js.map +1 -0
- package/dist/services/plugin-state-store.d.ts +92 -0
- package/dist/services/plugin-state-store.d.ts.map +1 -0
- package/dist/services/plugin-state-store.js +190 -0
- package/dist/services/plugin-state-store.js.map +1 -0
- package/dist/services/plugin-stream-bus.d.ts +29 -0
- package/dist/services/plugin-stream-bus.d.ts.map +1 -0
- package/dist/services/plugin-stream-bus.js +48 -0
- package/dist/services/plugin-stream-bus.js.map +1 -0
- package/dist/services/plugin-tool-dispatcher.d.ts +180 -0
- package/dist/services/plugin-tool-dispatcher.d.ts.map +1 -0
- package/dist/services/plugin-tool-dispatcher.js +224 -0
- package/dist/services/plugin-tool-dispatcher.js.map +1 -0
- package/dist/services/plugin-tool-registry.d.ts +192 -0
- package/dist/services/plugin-tool-registry.d.ts.map +1 -0
- package/dist/services/plugin-tool-registry.js +224 -0
- package/dist/services/plugin-tool-registry.js.map +1 -0
- package/dist/services/plugin-worker-manager.d.ts +260 -0
- package/dist/services/plugin-worker-manager.d.ts.map +1 -0
- package/dist/services/plugin-worker-manager.js +835 -0
- package/dist/services/plugin-worker-manager.js.map +1 -0
- package/dist/services/projects.d.ts +12 -1
- package/dist/services/projects.d.ts.map +1 -1
- package/dist/services/projects.js +100 -4
- package/dist/services/projects.js.map +1 -1
- package/dist/services/quota-windows.d.ts +9 -0
- package/dist/services/quota-windows.d.ts.map +1 -0
- package/dist/services/quota-windows.js +56 -0
- package/dist/services/quota-windows.js.map +1 -0
- package/dist/services/secrets.d.ts +5 -5
- package/dist/services/work-products.d.ts +14 -0
- package/dist/services/work-products.d.ts.map +1 -0
- package/dist/services/work-products.js +100 -0
- package/dist/services/work-products.js.map +1 -0
- package/dist/services/workspace-operation-log-store.d.ts +33 -0
- package/dist/services/workspace-operation-log-store.d.ts.map +1 -0
- package/dist/services/workspace-operation-log-store.js +110 -0
- package/dist/services/workspace-operation-log-store.js.map +1 -0
- package/dist/services/workspace-operations.d.ts +44 -0
- package/dist/services/workspace-operations.d.ts.map +1 -0
- package/dist/services/workspace-operations.js +204 -0
- package/dist/services/workspace-operations.js.map +1 -0
- package/dist/services/workspace-runtime.d.ts +43 -5
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +413 -30
- package/dist/services/workspace-runtime.js.map +1 -1
- package/dist/ui-branding.d.ts +10 -1
- package/dist/ui-branding.d.ts.map +1 -1
- package/dist/ui-branding.js +164 -14
- package/dist/ui-branding.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +32 -14
- package/skills/paperclip/SKILL.md +34 -20
- package/skills/paperclip-create-plugin/SKILL.md +101 -0
- package/ui-dist/assets/{_basePickBy-B0xbZITw.js → _basePickBy-Chytvk8p.js} +1 -1
- package/ui-dist/assets/{_baseUniq-Cfd5u3qc.js → _baseUniq-BVL8b2zA.js} +1 -1
- package/ui-dist/assets/{arc-7Xbu8tBF.js → arc-D5hJS7gD.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-VXUJARFQ-C8F7ZRYc.js → architectureDiagram-VXUJARFQ-BFq3iN58.js} +1 -1
- package/ui-dist/assets/{blockDiagram-VD42YOAC-Dp08a65A.js → blockDiagram-VD42YOAC-B69ok7vL.js} +1 -1
- package/ui-dist/assets/{c4Diagram-YG6GDRKO-BJfslTgZ.js → c4Diagram-YG6GDRKO-FE0D9aiA.js} +1 -1
- package/ui-dist/assets/channel-CiKAknwU.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-BhaYWH7e.js → chunk-4BX2VUAB-SAhF6g-l.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-BOzJUsYW.js → chunk-55IACEB6-yxKD70bX.js} +1 -1
- package/ui-dist/assets/{chunk-B4BG7PRW-CbVcziyE.js → chunk-B4BG7PRW-qB4VaAIx.js} +1 -1
- package/ui-dist/assets/{chunk-DI55MBZ5-DghPtP3y.js → chunk-DI55MBZ5-B4NIq1Ee.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-CB095Kfn.js → chunk-FMBD7UC4-B5kLoRe2.js} +1 -1
- package/ui-dist/assets/{chunk-QN33PNHL-DfpzfDqJ.js → chunk-QN33PNHL-BVVG2n_X.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-Df3d5z1y.js → chunk-QZHKN3VN-ncMubclp.js} +1 -1
- package/ui-dist/assets/{chunk-TZMSLE5B-B6tX6bZI.js → chunk-TZMSLE5B-DSyjQk8C.js} +1 -1
- package/ui-dist/assets/classDiagram-2ON5EDUG-B93oQX02.js +1 -0
- package/ui-dist/assets/classDiagram-v2-WZHVMYZB-B93oQX02.js +1 -0
- package/ui-dist/assets/clone-Dld-3yq0.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-38wg_s9V.js → cose-bilkent-S5V4N54A-BAikNewC.js} +1 -1
- package/ui-dist/assets/{dagre-6UL2VRFP-DPVj3XLS.js → dagre-6UL2VRFP-j223UI8_.js} +1 -1
- package/ui-dist/assets/{diagram-PSM6KHXK-BJh89zUA.js → diagram-PSM6KHXK-Bhg27ZsN.js} +1 -1
- package/ui-dist/assets/{diagram-QEK2KX5R-Bw0m_j10.js → diagram-QEK2KX5R-BmtcrTHq.js} +1 -1
- package/ui-dist/assets/{diagram-S2PKOQOG-D7_M2F3u.js → diagram-S2PKOQOG-x8XuP7dH.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q2GNP2WA-CLsjqTWP.js → erDiagram-Q2GNP2WA-Dc8mHvB-.js} +1 -1
- package/ui-dist/assets/{flowDiagram-NV44I4VS-BZZ7ezVB.js → flowDiagram-NV44I4VS-Br08v6xs.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-JELNMOA3-KzsFuwBt.js → ganttDiagram-JELNMOA3-CksKhiV8.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-V2S2FVAM-DSHtY7Vu.js → gitGraphDiagram-V2S2FVAM-DmitztAD.js} +1 -1
- package/ui-dist/assets/{graph-luIG1UAS.js → graph-Xzh7bNfz.js} +1 -1
- package/ui-dist/assets/{index-nFjLambq.js → index-B-MPJNeS.js} +1 -1
- package/ui-dist/assets/{index-RUBFVv6t.js → index-BAOC35TS.js} +1 -1
- package/ui-dist/assets/{index-CaR9XM4h.js → index-BCtrpKdJ.js} +1 -1
- package/ui-dist/assets/{index-itc7BfMy.js → index-B_mlwDCG.js} +1 -1
- package/ui-dist/assets/{index-1gX09-Fl.js → index-Bp8oJMwx.js} +1 -1
- package/ui-dist/assets/{index-B_3g3Rie.js → index-BqOfMG1d.js} +1 -1
- package/ui-dist/assets/{index-uR3zjYaD.js → index-C0hw7cTu.js} +1 -1
- package/ui-dist/assets/{index-Ds7vLTSK.js → index-C1ENEd6Y.js} +1 -1
- package/ui-dist/assets/{index-CeDCs_2i.js → index-CGB1OHQi.js} +1 -1
- package/ui-dist/assets/{index-DBy0vJy3.js → index-CZlfAt7E.js} +1 -1
- package/ui-dist/assets/{index-00kuG4sI.js → index-CeL-QouZ.js} +1 -1
- package/ui-dist/assets/{index-Bv4xCjxl.js → index-Cz0TxJbw.js} +1 -1
- package/ui-dist/assets/{index-DJf8diAA.js → index-DBxUCwDG.js} +1 -1
- package/ui-dist/assets/{index-DnIPDZLp.js → index-DGzQUMWC.js} +1 -1
- package/ui-dist/assets/{index-CbGtsjW7.js → index-DI9dat7c.js} +1 -1
- package/ui-dist/assets/{index-BfB4lKJN.js → index-DMpo-QSZ.js} +1 -1
- package/ui-dist/assets/{index-DcfLFstG.js → index-DQ6xyFaN.js} +1 -1
- package/ui-dist/assets/{index-B1ZMzzs0.js → index-DWMQ1Fyj.js} +1 -1
- package/ui-dist/assets/index-DbrFgvLd.css +1 -0
- package/ui-dist/assets/{index-C8XyGAr9.js → index-Er4i9aLN.js} +1 -1
- package/ui-dist/assets/{index-C2SZYIDA.js → index-I5K-yQx5.js} +1 -1
- package/ui-dist/assets/index-MuodIbDJ.js +1120 -0
- package/ui-dist/assets/{index-BeeKMqNU.js → index-auLN8BHe.js} +1 -1
- package/ui-dist/assets/{index-DoTq-BeR.js → index-xw01-Pl4.js} +1 -1
- package/ui-dist/assets/{infoDiagram-HS3SLOUP-CDEfWpme.js → infoDiagram-HS3SLOUP-DHb4TS1W.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-XKPGCS4Q-i7nsbg_Y.js → journeyDiagram-XKPGCS4Q-CLRBeXVU.js} +1 -1
- package/ui-dist/assets/{kanban-definition-3W4ZIXB7-DDlx1qVE.js → kanban-definition-3W4ZIXB7-CsQp6woE.js} +1 -1
- package/ui-dist/assets/{layout-C7AtmJzX.js → layout-DwD9tZ5r.js} +1 -1
- package/ui-dist/assets/{linear-C5jHT-WP.js → linear-DF9n_1d3.js} +1 -1
- package/ui-dist/assets/{mermaid.core-C8YQ4fcY.js → mermaid.core-CDm4Crkq.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-VGOIOE7T-B9m9PuUg.js → mindmap-definition-VGOIOE7T-CVzU1x4i.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ADFJNKIX-SvKywCSE.js → pieDiagram-ADFJNKIX-CWgl0Up8.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-AYHSOK5B-QfBPm7Y1.js → quadrantDiagram-AYHSOK5B-CcedyN6Q.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-UZGBJVZJ-DnfQQuwi.js → requirementDiagram-UZGBJVZJ-DZ4BVz3s.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-TZEHDZUN-DvLkjzIW.js → sankeyDiagram-TZEHDZUN-CLHEx34B.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-WL72ISMW-5Lq2rWBc.js → sequenceDiagram-WL72ISMW-nmTJbPyy.js} +1 -1
- package/ui-dist/assets/{stateDiagram-FKZM4ZOC-DcYPHDyi.js → stateDiagram-FKZM4ZOC-_UGwFEqN.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-CvFVoOUd.js +1 -0
- package/ui-dist/assets/{timeline-definition-IT6M3QCI-lrN4JmWa.js → timeline-definition-IT6M3QCI-Bibk8Daj.js} +1 -1
- package/ui-dist/assets/{treemap-GDKQZRPO-DFJKIBTQ.js → treemap-GDKQZRPO-Ch3rlaqT.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-PRI3JC2R-CT47vtdm.js → xychartDiagram-PRI3JC2R-DBUudr-E.js} +1 -1
- package/ui-dist/index.html +4 -2
- package/skills/create-agent-adapter/SKILL.md +0 -718
- package/ui-dist/assets/channel-BViQDbSq.js +0 -1
- package/ui-dist/assets/classDiagram-2ON5EDUG-CjMCmxMT.js +0 -1
- package/ui-dist/assets/classDiagram-v2-WZHVMYZB-CjMCmxMT.js +0 -1
- package/ui-dist/assets/clone-Dbn9wtE1.js +0 -1
- package/ui-dist/assets/index-BHP9dico.js +0 -1006
- package/ui-dist/assets/index-BfNaDZnn.css +0 -1
- package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-nv50YYrl.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companies.js","sourceRoot":"","sources":["../../src/routes/companies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"companies.js","sourceRoot":"","sources":["../../src/routes/companies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"costs.d.ts","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"costs.d.ts","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAsB1C,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,8CAsThC"}
|
package/dist/routes/costs.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
|
-
import { createCostEventSchema, updateBudgetSchema } from "@paperclipai/shared";
|
|
2
|
+
import { createCostEventSchema, createFinanceEventSchema, resolveBudgetIncidentSchema, updateBudgetSchema, upsertBudgetPolicySchema, } from "@paperclipai/shared";
|
|
3
3
|
import { validate } from "../middleware/validate.js";
|
|
4
|
-
import { costService, companyService, agentService, logActivity } from "../services/index.js";
|
|
4
|
+
import { budgetService, costService, financeService, companyService, agentService, heartbeatService, logActivity, } from "../services/index.js";
|
|
5
5
|
import { assertBoard, assertCompanyAccess, getActorInfo } from "./authz.js";
|
|
6
|
+
import { fetchAllQuotaWindows } from "../services/quota-windows.js";
|
|
7
|
+
import { badRequest } from "../errors.js";
|
|
6
8
|
export function costRoutes(db) {
|
|
7
9
|
const router = Router();
|
|
8
|
-
const
|
|
10
|
+
const heartbeat = heartbeatService(db);
|
|
11
|
+
const budgetHooks = {
|
|
12
|
+
cancelWorkForScope: heartbeat.cancelBudgetScopeWork,
|
|
13
|
+
};
|
|
14
|
+
const costs = costService(db, budgetHooks);
|
|
15
|
+
const finance = financeService(db);
|
|
16
|
+
const budgets = budgetService(db, budgetHooks);
|
|
9
17
|
const companies = companyService(db);
|
|
10
18
|
const agents = agentService(db);
|
|
11
19
|
router.post("/companies/:companyId/cost-events", validate(createCostEventSchema), async (req, res) => {
|
|
@@ -32,11 +40,53 @@ export function costRoutes(db) {
|
|
|
32
40
|
});
|
|
33
41
|
res.status(201).json(event);
|
|
34
42
|
});
|
|
43
|
+
router.post("/companies/:companyId/finance-events", validate(createFinanceEventSchema), async (req, res) => {
|
|
44
|
+
const companyId = req.params.companyId;
|
|
45
|
+
assertCompanyAccess(req, companyId);
|
|
46
|
+
assertBoard(req);
|
|
47
|
+
const event = await finance.createEvent(companyId, {
|
|
48
|
+
...req.body,
|
|
49
|
+
occurredAt: new Date(req.body.occurredAt),
|
|
50
|
+
});
|
|
51
|
+
const actor = getActorInfo(req);
|
|
52
|
+
await logActivity(db, {
|
|
53
|
+
companyId,
|
|
54
|
+
actorType: actor.actorType,
|
|
55
|
+
actorId: actor.actorId,
|
|
56
|
+
agentId: actor.agentId,
|
|
57
|
+
action: "finance_event.reported",
|
|
58
|
+
entityType: "finance_event",
|
|
59
|
+
entityId: event.id,
|
|
60
|
+
details: {
|
|
61
|
+
amountCents: event.amountCents,
|
|
62
|
+
biller: event.biller,
|
|
63
|
+
eventKind: event.eventKind,
|
|
64
|
+
direction: event.direction,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
res.status(201).json(event);
|
|
68
|
+
});
|
|
35
69
|
function parseDateRange(query) {
|
|
36
|
-
const
|
|
37
|
-
const
|
|
70
|
+
const fromRaw = query.from;
|
|
71
|
+
const toRaw = query.to;
|
|
72
|
+
const from = fromRaw ? new Date(fromRaw) : undefined;
|
|
73
|
+
const to = toRaw ? new Date(toRaw) : undefined;
|
|
74
|
+
if (from && isNaN(from.getTime()))
|
|
75
|
+
throw badRequest("invalid 'from' date");
|
|
76
|
+
if (to && isNaN(to.getTime()))
|
|
77
|
+
throw badRequest("invalid 'to' date");
|
|
38
78
|
return (from || to) ? { from, to } : undefined;
|
|
39
79
|
}
|
|
80
|
+
function parseLimit(query) {
|
|
81
|
+
const raw = query.limit;
|
|
82
|
+
if (!raw)
|
|
83
|
+
return 100;
|
|
84
|
+
const limit = Number.parseInt(raw, 10);
|
|
85
|
+
if (!Number.isFinite(limit) || limit <= 0 || limit > 500) {
|
|
86
|
+
throw badRequest("invalid 'limit' value");
|
|
87
|
+
}
|
|
88
|
+
return limit;
|
|
89
|
+
}
|
|
40
90
|
router.get("/companies/:companyId/costs/summary", async (req, res) => {
|
|
41
91
|
const companyId = req.params.companyId;
|
|
42
92
|
assertCompanyAccess(req, companyId);
|
|
@@ -51,6 +101,97 @@ export function costRoutes(db) {
|
|
|
51
101
|
const rows = await costs.byAgent(companyId, range);
|
|
52
102
|
res.json(rows);
|
|
53
103
|
});
|
|
104
|
+
router.get("/companies/:companyId/costs/by-agent-model", async (req, res) => {
|
|
105
|
+
const companyId = req.params.companyId;
|
|
106
|
+
assertCompanyAccess(req, companyId);
|
|
107
|
+
const range = parseDateRange(req.query);
|
|
108
|
+
const rows = await costs.byAgentModel(companyId, range);
|
|
109
|
+
res.json(rows);
|
|
110
|
+
});
|
|
111
|
+
router.get("/companies/:companyId/costs/by-provider", async (req, res) => {
|
|
112
|
+
const companyId = req.params.companyId;
|
|
113
|
+
assertCompanyAccess(req, companyId);
|
|
114
|
+
const range = parseDateRange(req.query);
|
|
115
|
+
const rows = await costs.byProvider(companyId, range);
|
|
116
|
+
res.json(rows);
|
|
117
|
+
});
|
|
118
|
+
router.get("/companies/:companyId/costs/by-biller", async (req, res) => {
|
|
119
|
+
const companyId = req.params.companyId;
|
|
120
|
+
assertCompanyAccess(req, companyId);
|
|
121
|
+
const range = parseDateRange(req.query);
|
|
122
|
+
const rows = await costs.byBiller(companyId, range);
|
|
123
|
+
res.json(rows);
|
|
124
|
+
});
|
|
125
|
+
router.get("/companies/:companyId/costs/finance-summary", async (req, res) => {
|
|
126
|
+
const companyId = req.params.companyId;
|
|
127
|
+
assertCompanyAccess(req, companyId);
|
|
128
|
+
const range = parseDateRange(req.query);
|
|
129
|
+
const summary = await finance.summary(companyId, range);
|
|
130
|
+
res.json(summary);
|
|
131
|
+
});
|
|
132
|
+
router.get("/companies/:companyId/costs/finance-by-biller", async (req, res) => {
|
|
133
|
+
const companyId = req.params.companyId;
|
|
134
|
+
assertCompanyAccess(req, companyId);
|
|
135
|
+
const range = parseDateRange(req.query);
|
|
136
|
+
const rows = await finance.byBiller(companyId, range);
|
|
137
|
+
res.json(rows);
|
|
138
|
+
});
|
|
139
|
+
router.get("/companies/:companyId/costs/finance-by-kind", async (req, res) => {
|
|
140
|
+
const companyId = req.params.companyId;
|
|
141
|
+
assertCompanyAccess(req, companyId);
|
|
142
|
+
const range = parseDateRange(req.query);
|
|
143
|
+
const rows = await finance.byKind(companyId, range);
|
|
144
|
+
res.json(rows);
|
|
145
|
+
});
|
|
146
|
+
router.get("/companies/:companyId/costs/finance-events", async (req, res) => {
|
|
147
|
+
const companyId = req.params.companyId;
|
|
148
|
+
assertCompanyAccess(req, companyId);
|
|
149
|
+
const range = parseDateRange(req.query);
|
|
150
|
+
const limit = parseLimit(req.query);
|
|
151
|
+
const rows = await finance.list(companyId, range, limit);
|
|
152
|
+
res.json(rows);
|
|
153
|
+
});
|
|
154
|
+
router.get("/companies/:companyId/costs/window-spend", async (req, res) => {
|
|
155
|
+
const companyId = req.params.companyId;
|
|
156
|
+
assertCompanyAccess(req, companyId);
|
|
157
|
+
const rows = await costs.windowSpend(companyId);
|
|
158
|
+
res.json(rows);
|
|
159
|
+
});
|
|
160
|
+
router.get("/companies/:companyId/costs/quota-windows", async (req, res) => {
|
|
161
|
+
const companyId = req.params.companyId;
|
|
162
|
+
assertCompanyAccess(req, companyId);
|
|
163
|
+
assertBoard(req);
|
|
164
|
+
// validate companyId resolves to a real company so the "__none__" sentinel
|
|
165
|
+
// and any forged ids are rejected before we touch provider credentials
|
|
166
|
+
const company = await companies.getById(companyId);
|
|
167
|
+
if (!company) {
|
|
168
|
+
res.status(404).json({ error: "Company not found" });
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const results = await fetchAllQuotaWindows();
|
|
172
|
+
res.json(results);
|
|
173
|
+
});
|
|
174
|
+
router.get("/companies/:companyId/budgets/overview", async (req, res) => {
|
|
175
|
+
const companyId = req.params.companyId;
|
|
176
|
+
assertCompanyAccess(req, companyId);
|
|
177
|
+
const overview = await budgets.overview(companyId);
|
|
178
|
+
res.json(overview);
|
|
179
|
+
});
|
|
180
|
+
router.post("/companies/:companyId/budgets/policies", validate(upsertBudgetPolicySchema), async (req, res) => {
|
|
181
|
+
assertBoard(req);
|
|
182
|
+
const companyId = req.params.companyId;
|
|
183
|
+
assertCompanyAccess(req, companyId);
|
|
184
|
+
const summary = await budgets.upsertPolicy(companyId, req.body, req.actor.userId ?? "board");
|
|
185
|
+
res.json(summary);
|
|
186
|
+
});
|
|
187
|
+
router.post("/companies/:companyId/budget-incidents/:incidentId/resolve", validate(resolveBudgetIncidentSchema), async (req, res) => {
|
|
188
|
+
assertBoard(req);
|
|
189
|
+
const companyId = req.params.companyId;
|
|
190
|
+
const incidentId = req.params.incidentId;
|
|
191
|
+
assertCompanyAccess(req, companyId);
|
|
192
|
+
const incident = await budgets.resolveIncident(companyId, incidentId, req.body, req.actor.userId ?? "board");
|
|
193
|
+
res.json(incident);
|
|
194
|
+
});
|
|
54
195
|
router.get("/companies/:companyId/costs/by-project", async (req, res) => {
|
|
55
196
|
const companyId = req.params.companyId;
|
|
56
197
|
assertCompanyAccess(req, companyId);
|
|
@@ -61,6 +202,7 @@ export function costRoutes(db) {
|
|
|
61
202
|
router.patch("/companies/:companyId/budgets", validate(updateBudgetSchema), async (req, res) => {
|
|
62
203
|
assertBoard(req);
|
|
63
204
|
const companyId = req.params.companyId;
|
|
205
|
+
assertCompanyAccess(req, companyId);
|
|
64
206
|
const company = await companies.update(companyId, { budgetMonthlyCents: req.body.budgetMonthlyCents });
|
|
65
207
|
if (!company) {
|
|
66
208
|
res.status(404).json({ error: "Company not found" });
|
|
@@ -75,6 +217,12 @@ export function costRoutes(db) {
|
|
|
75
217
|
entityId: companyId,
|
|
76
218
|
details: { budgetMonthlyCents: req.body.budgetMonthlyCents },
|
|
77
219
|
});
|
|
220
|
+
await budgets.upsertPolicy(companyId, {
|
|
221
|
+
scopeType: "company",
|
|
222
|
+
scopeId: companyId,
|
|
223
|
+
amount: req.body.budgetMonthlyCents,
|
|
224
|
+
windowKind: "calendar_month_utc",
|
|
225
|
+
}, req.actor.userId ?? "board");
|
|
78
226
|
res.json(company);
|
|
79
227
|
});
|
|
80
228
|
router.patch("/agents/:agentId/budgets", validate(updateBudgetSchema), async (req, res) => {
|
|
@@ -84,6 +232,7 @@ export function costRoutes(db) {
|
|
|
84
232
|
res.status(404).json({ error: "Agent not found" });
|
|
85
233
|
return;
|
|
86
234
|
}
|
|
235
|
+
assertCompanyAccess(req, agent.companyId);
|
|
87
236
|
if (req.actor.type === "agent") {
|
|
88
237
|
if (req.actor.agentId !== agentId) {
|
|
89
238
|
res.status(403).json({ error: "Agent can only change its own budget" });
|
|
@@ -106,6 +255,12 @@ export function costRoutes(db) {
|
|
|
106
255
|
entityId: updated.id,
|
|
107
256
|
details: { budgetMonthlyCents: updated.budgetMonthlyCents },
|
|
108
257
|
});
|
|
258
|
+
await budgets.upsertPolicy(updated.companyId, {
|
|
259
|
+
scopeType: "agent",
|
|
260
|
+
scopeId: updated.id,
|
|
261
|
+
amount: updated.budgetMonthlyCents,
|
|
262
|
+
windowKind: "calendar_month_utc",
|
|
263
|
+
}, req.actor.type === "board" ? req.actor.userId ?? "board" : null);
|
|
109
264
|
res.json(updated);
|
|
110
265
|
});
|
|
111
266
|
return router;
|
package/dist/routes/costs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/execution-workspaces.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAc1C,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,EAAE,8CAoK9C"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { and, eq } from "drizzle-orm";
|
|
2
|
+
import { Router } from "express";
|
|
3
|
+
import { issues, projects, projectWorkspaces } from "@paperclipai/db";
|
|
4
|
+
import { updateExecutionWorkspaceSchema } from "@paperclipai/shared";
|
|
5
|
+
import { validate } from "../middleware/validate.js";
|
|
6
|
+
import { executionWorkspaceService, logActivity, workspaceOperationService } from "../services/index.js";
|
|
7
|
+
import { parseProjectExecutionWorkspacePolicy } from "../services/execution-workspace-policy.js";
|
|
8
|
+
import { cleanupExecutionWorkspaceArtifacts, stopRuntimeServicesForExecutionWorkspace, } from "../services/workspace-runtime.js";
|
|
9
|
+
import { assertCompanyAccess, getActorInfo } from "./authz.js";
|
|
10
|
+
const TERMINAL_ISSUE_STATUSES = new Set(["done", "cancelled"]);
|
|
11
|
+
export function executionWorkspaceRoutes(db) {
|
|
12
|
+
const router = Router();
|
|
13
|
+
const svc = executionWorkspaceService(db);
|
|
14
|
+
const workspaceOperationsSvc = workspaceOperationService(db);
|
|
15
|
+
router.get("/companies/:companyId/execution-workspaces", async (req, res) => {
|
|
16
|
+
const companyId = req.params.companyId;
|
|
17
|
+
assertCompanyAccess(req, companyId);
|
|
18
|
+
const workspaces = await svc.list(companyId, {
|
|
19
|
+
projectId: req.query.projectId,
|
|
20
|
+
projectWorkspaceId: req.query.projectWorkspaceId,
|
|
21
|
+
issueId: req.query.issueId,
|
|
22
|
+
status: req.query.status,
|
|
23
|
+
reuseEligible: req.query.reuseEligible === "true",
|
|
24
|
+
});
|
|
25
|
+
res.json(workspaces);
|
|
26
|
+
});
|
|
27
|
+
router.get("/execution-workspaces/:id", async (req, res) => {
|
|
28
|
+
const id = req.params.id;
|
|
29
|
+
const workspace = await svc.getById(id);
|
|
30
|
+
if (!workspace) {
|
|
31
|
+
res.status(404).json({ error: "Execution workspace not found" });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
assertCompanyAccess(req, workspace.companyId);
|
|
35
|
+
res.json(workspace);
|
|
36
|
+
});
|
|
37
|
+
router.patch("/execution-workspaces/:id", validate(updateExecutionWorkspaceSchema), async (req, res) => {
|
|
38
|
+
const id = req.params.id;
|
|
39
|
+
const existing = await svc.getById(id);
|
|
40
|
+
if (!existing) {
|
|
41
|
+
res.status(404).json({ error: "Execution workspace not found" });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
assertCompanyAccess(req, existing.companyId);
|
|
45
|
+
const patch = {
|
|
46
|
+
...req.body,
|
|
47
|
+
...(req.body.cleanupEligibleAt ? { cleanupEligibleAt: new Date(req.body.cleanupEligibleAt) } : {}),
|
|
48
|
+
};
|
|
49
|
+
let workspace = existing;
|
|
50
|
+
let cleanupWarnings = [];
|
|
51
|
+
if (req.body.status === "archived" && existing.status !== "archived") {
|
|
52
|
+
const linkedIssues = await db
|
|
53
|
+
.select({
|
|
54
|
+
id: issues.id,
|
|
55
|
+
status: issues.status,
|
|
56
|
+
})
|
|
57
|
+
.from(issues)
|
|
58
|
+
.where(and(eq(issues.companyId, existing.companyId), eq(issues.executionWorkspaceId, existing.id)));
|
|
59
|
+
const activeLinkedIssues = linkedIssues.filter((issue) => !TERMINAL_ISSUE_STATUSES.has(issue.status));
|
|
60
|
+
if (activeLinkedIssues.length > 0) {
|
|
61
|
+
res.status(409).json({
|
|
62
|
+
error: `Cannot archive execution workspace while ${activeLinkedIssues.length} linked issue(s) are still open`,
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const closedAt = new Date();
|
|
67
|
+
const archivedWorkspace = await svc.update(id, {
|
|
68
|
+
...patch,
|
|
69
|
+
status: "archived",
|
|
70
|
+
closedAt,
|
|
71
|
+
cleanupReason: null,
|
|
72
|
+
});
|
|
73
|
+
if (!archivedWorkspace) {
|
|
74
|
+
res.status(404).json({ error: "Execution workspace not found" });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
workspace = archivedWorkspace;
|
|
78
|
+
try {
|
|
79
|
+
await stopRuntimeServicesForExecutionWorkspace({
|
|
80
|
+
db,
|
|
81
|
+
executionWorkspaceId: existing.id,
|
|
82
|
+
workspaceCwd: existing.cwd,
|
|
83
|
+
});
|
|
84
|
+
const projectWorkspace = existing.projectWorkspaceId
|
|
85
|
+
? await db
|
|
86
|
+
.select({
|
|
87
|
+
cwd: projectWorkspaces.cwd,
|
|
88
|
+
cleanupCommand: projectWorkspaces.cleanupCommand,
|
|
89
|
+
})
|
|
90
|
+
.from(projectWorkspaces)
|
|
91
|
+
.where(and(eq(projectWorkspaces.id, existing.projectWorkspaceId), eq(projectWorkspaces.companyId, existing.companyId)))
|
|
92
|
+
.then((rows) => rows[0] ?? null)
|
|
93
|
+
: null;
|
|
94
|
+
const projectPolicy = existing.projectId
|
|
95
|
+
? await db
|
|
96
|
+
.select({
|
|
97
|
+
executionWorkspacePolicy: projects.executionWorkspacePolicy,
|
|
98
|
+
})
|
|
99
|
+
.from(projects)
|
|
100
|
+
.where(and(eq(projects.id, existing.projectId), eq(projects.companyId, existing.companyId)))
|
|
101
|
+
.then((rows) => parseProjectExecutionWorkspacePolicy(rows[0]?.executionWorkspacePolicy))
|
|
102
|
+
: null;
|
|
103
|
+
const cleanupResult = await cleanupExecutionWorkspaceArtifacts({
|
|
104
|
+
workspace: existing,
|
|
105
|
+
projectWorkspace,
|
|
106
|
+
teardownCommand: projectPolicy?.workspaceStrategy?.teardownCommand ?? null,
|
|
107
|
+
recorder: workspaceOperationsSvc.createRecorder({
|
|
108
|
+
companyId: existing.companyId,
|
|
109
|
+
executionWorkspaceId: existing.id,
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
cleanupWarnings = cleanupResult.warnings;
|
|
113
|
+
const cleanupPatch = {
|
|
114
|
+
closedAt,
|
|
115
|
+
cleanupReason: cleanupWarnings.length > 0 ? cleanupWarnings.join(" | ") : null,
|
|
116
|
+
};
|
|
117
|
+
if (!cleanupResult.cleaned) {
|
|
118
|
+
cleanupPatch.status = "cleanup_failed";
|
|
119
|
+
}
|
|
120
|
+
if (cleanupResult.warnings.length > 0 || !cleanupResult.cleaned) {
|
|
121
|
+
workspace = (await svc.update(id, cleanupPatch)) ?? workspace;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const failureReason = error instanceof Error ? error.message : String(error);
|
|
126
|
+
workspace =
|
|
127
|
+
(await svc.update(id, {
|
|
128
|
+
status: "cleanup_failed",
|
|
129
|
+
closedAt,
|
|
130
|
+
cleanupReason: failureReason,
|
|
131
|
+
})) ?? workspace;
|
|
132
|
+
res.status(500).json({
|
|
133
|
+
error: `Failed to archive execution workspace: ${failureReason}`,
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const updatedWorkspace = await svc.update(id, patch);
|
|
140
|
+
if (!updatedWorkspace) {
|
|
141
|
+
res.status(404).json({ error: "Execution workspace not found" });
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
workspace = updatedWorkspace;
|
|
145
|
+
}
|
|
146
|
+
const actor = getActorInfo(req);
|
|
147
|
+
await logActivity(db, {
|
|
148
|
+
companyId: existing.companyId,
|
|
149
|
+
actorType: actor.actorType,
|
|
150
|
+
actorId: actor.actorId,
|
|
151
|
+
agentId: actor.agentId,
|
|
152
|
+
runId: actor.runId,
|
|
153
|
+
action: "execution_workspace.updated",
|
|
154
|
+
entityType: "execution_workspace",
|
|
155
|
+
entityId: workspace.id,
|
|
156
|
+
details: {
|
|
157
|
+
changedKeys: Object.keys(req.body).sort(),
|
|
158
|
+
...(cleanupWarnings.length > 0 ? { cleanupWarnings } : {}),
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
res.json(workspace);
|
|
162
|
+
});
|
|
163
|
+
return router;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=execution-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-workspaces.js","sourceRoot":"","sources":["../../src/routes/execution-workspaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG9E,wBAAgB,YAAY,CAC1B,EAAE,CAAC,EAAE,EAAE,EACP,IAAI,GAAE;IACJ,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;CAMjC,8CAqDF"}
|
package/dist/routes/health.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
2
|
import { and, count, eq, gt, isNull, sql } from "drizzle-orm";
|
|
3
3
|
import { instanceUserRoles, invites } from "@paperclipai/db";
|
|
4
|
+
import { serverVersion } from "../version.js";
|
|
4
5
|
export function healthRoutes(db, opts = {
|
|
5
6
|
deploymentMode: "local_trusted",
|
|
6
7
|
deploymentExposure: "private",
|
|
@@ -10,7 +11,7 @@ export function healthRoutes(db, opts = {
|
|
|
10
11
|
const router = Router();
|
|
11
12
|
router.get("/", async (_req, res) => {
|
|
12
13
|
if (!db) {
|
|
13
|
-
res.json({ status: "ok" });
|
|
14
|
+
res.json({ status: "ok", version: serverVersion });
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
let bootstrapStatus = "ready";
|
|
@@ -34,6 +35,7 @@ export function healthRoutes(db, opts = {
|
|
|
34
35
|
}
|
|
35
36
|
res.json({
|
|
36
37
|
status: "ok",
|
|
38
|
+
version: serverVersion,
|
|
37
39
|
deploymentMode: opts.deploymentMode,
|
|
38
40
|
deploymentExposure: opts.deploymentExposure,
|
|
39
41
|
authReady: opts.authReady,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,YAAY,CAC1B,EAAO,EACP,OAKI;IACF,cAAc,EAAE,eAAe;IAC/B,kBAAkB,EAAE,SAAS;IAC7B,SAAS,EAAE,IAAI;IACf,sBAAsB,EAAE,IAAI;CAC7B;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,eAAe,GAAkC,OAAO,CAAC;QAC7D,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,cAAc,KAAK,eAAe,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,EAAE;iBACvB,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;iBAC1B,IAAI,CAAC,iBAAiB,CAAC;iBACvB,KAAK,CAAC,GAAG,CAAA,GAAG,iBAAiB,CAAC,IAAI,qBAAqB,CAAC;iBACxD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/C,eAAe,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAEhE,IAAI,eAAe,KAAK,mBAAmB,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,MAAM,EAAE;qBACzB,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;qBAC1B,IAAI,CAAC,OAAO,CAAC;qBACb,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,EACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAC1B,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAC3B,CACF;qBACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/C,qBAAqB,GAAG,WAAW,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,aAAa;YACtB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe;YACf,qBAAqB;YACrB,QAAQ,EAAE;gBACR,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;aACpD;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/routes/index.d.ts
CHANGED
|
@@ -12,4 +12,5 @@ export { dashboardRoutes } from "./dashboard.js";
|
|
|
12
12
|
export { sidebarBadgeRoutes } from "./sidebar-badges.js";
|
|
13
13
|
export { llmRoutes } from "./llms.js";
|
|
14
14
|
export { accessRoutes } from "./access.js";
|
|
15
|
+
export { instanceSettingsRoutes } from "./instance-settings.js";
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/routes/index.js
CHANGED
|
@@ -12,4 +12,5 @@ export { dashboardRoutes } from "./dashboard.js";
|
|
|
12
12
|
export { sidebarBadgeRoutes } from "./sidebar-badges.js";
|
|
13
13
|
export { llmRoutes } from "./llms.js";
|
|
14
14
|
export { accessRoutes } from "./access.js";
|
|
15
|
+
export { instanceSettingsRoutes } from "./instance-settings.js";
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
package/dist/routes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-settings.d.ts","sourceRoot":"","sources":["../../src/routes/instance-settings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAiB1C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,EAAE,8CAwC5C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Router } from "express";
|
|
2
|
+
import { patchInstanceExperimentalSettingsSchema } from "@paperclipai/shared";
|
|
3
|
+
import { forbidden } from "../errors.js";
|
|
4
|
+
import { validate } from "../middleware/validate.js";
|
|
5
|
+
import { instanceSettingsService, logActivity } from "../services/index.js";
|
|
6
|
+
import { getActorInfo } from "./authz.js";
|
|
7
|
+
function assertCanManageInstanceSettings(req) {
|
|
8
|
+
if (req.actor.type !== "board") {
|
|
9
|
+
throw forbidden("Board access required");
|
|
10
|
+
}
|
|
11
|
+
if (req.actor.source === "local_implicit" || req.actor.isInstanceAdmin) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
throw forbidden("Instance admin access required");
|
|
15
|
+
}
|
|
16
|
+
export function instanceSettingsRoutes(db) {
|
|
17
|
+
const router = Router();
|
|
18
|
+
const svc = instanceSettingsService(db);
|
|
19
|
+
router.get("/instance/settings/experimental", async (req, res) => {
|
|
20
|
+
assertCanManageInstanceSettings(req);
|
|
21
|
+
res.json(await svc.getExperimental());
|
|
22
|
+
});
|
|
23
|
+
router.patch("/instance/settings/experimental", validate(patchInstanceExperimentalSettingsSchema), async (req, res) => {
|
|
24
|
+
assertCanManageInstanceSettings(req);
|
|
25
|
+
const updated = await svc.updateExperimental(req.body);
|
|
26
|
+
const actor = getActorInfo(req);
|
|
27
|
+
const companyIds = await svc.listCompanyIds();
|
|
28
|
+
await Promise.all(companyIds.map((companyId) => logActivity(db, {
|
|
29
|
+
companyId,
|
|
30
|
+
actorType: actor.actorType,
|
|
31
|
+
actorId: actor.actorId,
|
|
32
|
+
agentId: actor.agentId,
|
|
33
|
+
runId: actor.runId,
|
|
34
|
+
action: "instance.settings.experimental_updated",
|
|
35
|
+
entityType: "instance_settings",
|
|
36
|
+
entityId: updated.id,
|
|
37
|
+
details: {
|
|
38
|
+
experimental: updated.experimental,
|
|
39
|
+
changedKeys: Object.keys(req.body).sort(),
|
|
40
|
+
},
|
|
41
|
+
})));
|
|
42
|
+
res.json(updated.experimental);
|
|
43
|
+
});
|
|
44
|
+
return router;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=instance-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-settings.js","sourceRoot":"","sources":["../../src/routes/instance-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,uCAAuC,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,SAAS,+BAA+B,CAAC,GAAY;IACnD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,gBAAgB,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACvE,OAAO;IACT,CAAC;IACD,MAAM,SAAS,CAAC,gCAAgC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAM;IAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAExC,MAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/D,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CACV,iCAAiC,EACjC,QAAQ,CAAC,uCAAuC,CAAC,EACjD,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3B,WAAW,CAAC,EAAE,EAAE;YACd,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,wCAAwC;YAChD,UAAU,EAAE,mBAAmB;YAC/B,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,OAAO,EAAE;gBACP,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aAC1C;SACF,CAAC,CACH,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAc1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAuB1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,8CAg/C1D"}
|