@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
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { and, desc, eq, inArray } from "drizzle-orm";
|
|
2
|
+
import { executionWorkspaces } from "@paperclipai/db";
|
|
3
|
+
function toExecutionWorkspace(row) {
|
|
4
|
+
return {
|
|
5
|
+
id: row.id,
|
|
6
|
+
companyId: row.companyId,
|
|
7
|
+
projectId: row.projectId,
|
|
8
|
+
projectWorkspaceId: row.projectWorkspaceId ?? null,
|
|
9
|
+
sourceIssueId: row.sourceIssueId ?? null,
|
|
10
|
+
mode: row.mode,
|
|
11
|
+
strategyType: row.strategyType,
|
|
12
|
+
name: row.name,
|
|
13
|
+
status: row.status,
|
|
14
|
+
cwd: row.cwd ?? null,
|
|
15
|
+
repoUrl: row.repoUrl ?? null,
|
|
16
|
+
baseRef: row.baseRef ?? null,
|
|
17
|
+
branchName: row.branchName ?? null,
|
|
18
|
+
providerType: row.providerType,
|
|
19
|
+
providerRef: row.providerRef ?? null,
|
|
20
|
+
derivedFromExecutionWorkspaceId: row.derivedFromExecutionWorkspaceId ?? null,
|
|
21
|
+
lastUsedAt: row.lastUsedAt,
|
|
22
|
+
openedAt: row.openedAt,
|
|
23
|
+
closedAt: row.closedAt ?? null,
|
|
24
|
+
cleanupEligibleAt: row.cleanupEligibleAt ?? null,
|
|
25
|
+
cleanupReason: row.cleanupReason ?? null,
|
|
26
|
+
metadata: row.metadata ?? null,
|
|
27
|
+
createdAt: row.createdAt,
|
|
28
|
+
updatedAt: row.updatedAt,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function executionWorkspaceService(db) {
|
|
32
|
+
return {
|
|
33
|
+
list: async (companyId, filters) => {
|
|
34
|
+
const conditions = [eq(executionWorkspaces.companyId, companyId)];
|
|
35
|
+
if (filters?.projectId)
|
|
36
|
+
conditions.push(eq(executionWorkspaces.projectId, filters.projectId));
|
|
37
|
+
if (filters?.projectWorkspaceId) {
|
|
38
|
+
conditions.push(eq(executionWorkspaces.projectWorkspaceId, filters.projectWorkspaceId));
|
|
39
|
+
}
|
|
40
|
+
if (filters?.issueId)
|
|
41
|
+
conditions.push(eq(executionWorkspaces.sourceIssueId, filters.issueId));
|
|
42
|
+
if (filters?.status) {
|
|
43
|
+
const statuses = filters.status.split(",").map((value) => value.trim()).filter(Boolean);
|
|
44
|
+
if (statuses.length === 1)
|
|
45
|
+
conditions.push(eq(executionWorkspaces.status, statuses[0]));
|
|
46
|
+
else if (statuses.length > 1)
|
|
47
|
+
conditions.push(inArray(executionWorkspaces.status, statuses));
|
|
48
|
+
}
|
|
49
|
+
if (filters?.reuseEligible) {
|
|
50
|
+
conditions.push(inArray(executionWorkspaces.status, ["active", "idle", "in_review"]));
|
|
51
|
+
}
|
|
52
|
+
const rows = await db
|
|
53
|
+
.select()
|
|
54
|
+
.from(executionWorkspaces)
|
|
55
|
+
.where(and(...conditions))
|
|
56
|
+
.orderBy(desc(executionWorkspaces.lastUsedAt), desc(executionWorkspaces.createdAt));
|
|
57
|
+
return rows.map(toExecutionWorkspace);
|
|
58
|
+
},
|
|
59
|
+
getById: async (id) => {
|
|
60
|
+
const row = await db
|
|
61
|
+
.select()
|
|
62
|
+
.from(executionWorkspaces)
|
|
63
|
+
.where(eq(executionWorkspaces.id, id))
|
|
64
|
+
.then((rows) => rows[0] ?? null);
|
|
65
|
+
return row ? toExecutionWorkspace(row) : null;
|
|
66
|
+
},
|
|
67
|
+
create: async (data) => {
|
|
68
|
+
const row = await db
|
|
69
|
+
.insert(executionWorkspaces)
|
|
70
|
+
.values(data)
|
|
71
|
+
.returning()
|
|
72
|
+
.then((rows) => rows[0] ?? null);
|
|
73
|
+
return row ? toExecutionWorkspace(row) : null;
|
|
74
|
+
},
|
|
75
|
+
update: async (id, patch) => {
|
|
76
|
+
const row = await db
|
|
77
|
+
.update(executionWorkspaces)
|
|
78
|
+
.set({ ...patch, updatedAt: new Date() })
|
|
79
|
+
.where(eq(executionWorkspaces.id, id))
|
|
80
|
+
.returning()
|
|
81
|
+
.then((rows) => rows[0] ?? null);
|
|
82
|
+
return row ? toExecutionWorkspace(row) : null;
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export { toExecutionWorkspace };
|
|
87
|
+
//# sourceMappingURL=execution-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-workspaces.js","sourceRoot":"","sources":["../../src/services/execution-workspaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Db } from "@paperclipai/db";
|
|
2
|
+
import { financeEvents } from "@paperclipai/db";
|
|
3
|
+
export interface FinanceDateRange {
|
|
4
|
+
from?: Date;
|
|
5
|
+
to?: Date;
|
|
6
|
+
}
|
|
7
|
+
export declare function financeService(db: Db): {
|
|
8
|
+
createEvent: (companyId: string, data: Omit<typeof financeEvents.$inferInsert, "companyId">) => Promise<{
|
|
9
|
+
id: string;
|
|
10
|
+
description: string | null;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
companyId: string;
|
|
13
|
+
provider: string | null;
|
|
14
|
+
agentId: string | null;
|
|
15
|
+
goalId: string | null;
|
|
16
|
+
projectId: string | null;
|
|
17
|
+
billingCode: string | null;
|
|
18
|
+
heartbeatRunId: string | null;
|
|
19
|
+
issueId: string | null;
|
|
20
|
+
biller: string;
|
|
21
|
+
model: string | null;
|
|
22
|
+
occurredAt: Date;
|
|
23
|
+
costEventId: string | null;
|
|
24
|
+
eventKind: string;
|
|
25
|
+
direction: string;
|
|
26
|
+
executionAdapterType: string | null;
|
|
27
|
+
pricingTier: string | null;
|
|
28
|
+
region: string | null;
|
|
29
|
+
quantity: number | null;
|
|
30
|
+
unit: string | null;
|
|
31
|
+
amountCents: number;
|
|
32
|
+
currency: string;
|
|
33
|
+
estimated: boolean;
|
|
34
|
+
externalInvoiceId: string | null;
|
|
35
|
+
metadataJson: Record<string, unknown> | null;
|
|
36
|
+
}>;
|
|
37
|
+
summary: (companyId: string, range?: FinanceDateRange) => Promise<{
|
|
38
|
+
companyId: string;
|
|
39
|
+
debitCents: number;
|
|
40
|
+
creditCents: number;
|
|
41
|
+
netCents: number;
|
|
42
|
+
estimatedDebitCents: number;
|
|
43
|
+
eventCount: number;
|
|
44
|
+
}>;
|
|
45
|
+
byBiller: (companyId: string, range?: FinanceDateRange) => Promise<{
|
|
46
|
+
biller: string;
|
|
47
|
+
debitCents: number;
|
|
48
|
+
creditCents: number;
|
|
49
|
+
estimatedDebitCents: number;
|
|
50
|
+
eventCount: number;
|
|
51
|
+
kindCount: number;
|
|
52
|
+
netCents: number;
|
|
53
|
+
}[]>;
|
|
54
|
+
byKind: (companyId: string, range?: FinanceDateRange) => Promise<{
|
|
55
|
+
eventKind: string;
|
|
56
|
+
debitCents: number;
|
|
57
|
+
creditCents: number;
|
|
58
|
+
estimatedDebitCents: number;
|
|
59
|
+
eventCount: number;
|
|
60
|
+
billerCount: number;
|
|
61
|
+
netCents: number;
|
|
62
|
+
}[]>;
|
|
63
|
+
list: (companyId: string, range?: FinanceDateRange, limit?: number) => Promise<{
|
|
64
|
+
id: string;
|
|
65
|
+
description: string | null;
|
|
66
|
+
createdAt: Date;
|
|
67
|
+
companyId: string;
|
|
68
|
+
provider: string | null;
|
|
69
|
+
agentId: string | null;
|
|
70
|
+
goalId: string | null;
|
|
71
|
+
projectId: string | null;
|
|
72
|
+
billingCode: string | null;
|
|
73
|
+
heartbeatRunId: string | null;
|
|
74
|
+
issueId: string | null;
|
|
75
|
+
biller: string;
|
|
76
|
+
model: string | null;
|
|
77
|
+
occurredAt: Date;
|
|
78
|
+
costEventId: string | null;
|
|
79
|
+
eventKind: string;
|
|
80
|
+
direction: string;
|
|
81
|
+
executionAdapterType: string | null;
|
|
82
|
+
pricingTier: string | null;
|
|
83
|
+
region: string | null;
|
|
84
|
+
quantity: number | null;
|
|
85
|
+
unit: string | null;
|
|
86
|
+
amountCents: number;
|
|
87
|
+
currency: string;
|
|
88
|
+
estimated: boolean;
|
|
89
|
+
externalInvoiceId: string | null;
|
|
90
|
+
metadataJson: Record<string, unknown> | null;
|
|
91
|
+
}[]>;
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=finance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../../src/services/finance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAsB,aAAa,EAA0C,MAAM,iBAAiB,CAAC;AAG5G,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,EAAE,CAAC,EAAE,IAAI,CAAC;CACX;AA4BD,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE;6BAMF,MAAM,QAAQ,IAAI,CAAC,OAAO,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAuBtE,MAAM,UAAU,gBAAgB;;;;;;;;0BAsB/B,MAAM,UAAU,gBAAgB;;;;;;;;;wBAkBlC,MAAM,UAAU,gBAAgB;;;;;;;;;sBAkBlC,MAAM,UAAU,gBAAgB,UAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU1E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { and, desc, eq, gte, lte, sql } from "drizzle-orm";
|
|
2
|
+
import { agents, costEvents, financeEvents, goals, heartbeatRuns, issues, projects } from "@paperclipai/db";
|
|
3
|
+
import { notFound, unprocessable } from "../errors.js";
|
|
4
|
+
async function assertBelongsToCompany(db, table, id, companyId, label) {
|
|
5
|
+
const row = await db
|
|
6
|
+
.select()
|
|
7
|
+
.from(table)
|
|
8
|
+
.where(eq(table.id, id))
|
|
9
|
+
.then((rows) => rows[0] ?? null);
|
|
10
|
+
if (!row)
|
|
11
|
+
throw notFound(`${label} not found`);
|
|
12
|
+
if (row.companyId !== companyId) {
|
|
13
|
+
throw unprocessable(`${label} does not belong to company`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function rangeConditions(companyId, range) {
|
|
17
|
+
const conditions = [eq(financeEvents.companyId, companyId)];
|
|
18
|
+
if (range?.from)
|
|
19
|
+
conditions.push(gte(financeEvents.occurredAt, range.from));
|
|
20
|
+
if (range?.to)
|
|
21
|
+
conditions.push(lte(financeEvents.occurredAt, range.to));
|
|
22
|
+
return conditions;
|
|
23
|
+
}
|
|
24
|
+
export function financeService(db) {
|
|
25
|
+
const debitExpr = sql `coalesce(sum(case when ${financeEvents.direction} = 'debit' then ${financeEvents.amountCents} else 0 end), 0)::int`;
|
|
26
|
+
const creditExpr = sql `coalesce(sum(case when ${financeEvents.direction} = 'credit' then ${financeEvents.amountCents} else 0 end), 0)::int`;
|
|
27
|
+
const estimatedDebitExpr = sql `coalesce(sum(case when ${financeEvents.direction} = 'debit' and ${financeEvents.estimated} = true then ${financeEvents.amountCents} else 0 end), 0)::int`;
|
|
28
|
+
return {
|
|
29
|
+
createEvent: async (companyId, data) => {
|
|
30
|
+
if (data.agentId)
|
|
31
|
+
await assertBelongsToCompany(db, agents, data.agentId, companyId, "Agent");
|
|
32
|
+
if (data.issueId)
|
|
33
|
+
await assertBelongsToCompany(db, issues, data.issueId, companyId, "Issue");
|
|
34
|
+
if (data.projectId)
|
|
35
|
+
await assertBelongsToCompany(db, projects, data.projectId, companyId, "Project");
|
|
36
|
+
if (data.goalId)
|
|
37
|
+
await assertBelongsToCompany(db, goals, data.goalId, companyId, "Goal");
|
|
38
|
+
if (data.heartbeatRunId)
|
|
39
|
+
await assertBelongsToCompany(db, heartbeatRuns, data.heartbeatRunId, companyId, "Heartbeat run");
|
|
40
|
+
if (data.costEventId)
|
|
41
|
+
await assertBelongsToCompany(db, costEvents, data.costEventId, companyId, "Cost event");
|
|
42
|
+
const event = await db
|
|
43
|
+
.insert(financeEvents)
|
|
44
|
+
.values({
|
|
45
|
+
...data,
|
|
46
|
+
companyId,
|
|
47
|
+
currency: data.currency ?? "USD",
|
|
48
|
+
direction: data.direction ?? "debit",
|
|
49
|
+
estimated: data.estimated ?? false,
|
|
50
|
+
})
|
|
51
|
+
.returning()
|
|
52
|
+
.then((rows) => rows[0]);
|
|
53
|
+
return event;
|
|
54
|
+
},
|
|
55
|
+
summary: async (companyId, range) => {
|
|
56
|
+
const conditions = rangeConditions(companyId, range);
|
|
57
|
+
const [row] = await db
|
|
58
|
+
.select({
|
|
59
|
+
debitCents: debitExpr,
|
|
60
|
+
creditCents: creditExpr,
|
|
61
|
+
estimatedDebitCents: estimatedDebitExpr,
|
|
62
|
+
eventCount: sql `count(*)::int`,
|
|
63
|
+
})
|
|
64
|
+
.from(financeEvents)
|
|
65
|
+
.where(and(...conditions));
|
|
66
|
+
return {
|
|
67
|
+
companyId,
|
|
68
|
+
debitCents: Number(row?.debitCents ?? 0),
|
|
69
|
+
creditCents: Number(row?.creditCents ?? 0),
|
|
70
|
+
netCents: Number(row?.debitCents ?? 0) - Number(row?.creditCents ?? 0),
|
|
71
|
+
estimatedDebitCents: Number(row?.estimatedDebitCents ?? 0),
|
|
72
|
+
eventCount: Number(row?.eventCount ?? 0),
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
byBiller: async (companyId, range) => {
|
|
76
|
+
const conditions = rangeConditions(companyId, range);
|
|
77
|
+
return db
|
|
78
|
+
.select({
|
|
79
|
+
biller: financeEvents.biller,
|
|
80
|
+
debitCents: debitExpr,
|
|
81
|
+
creditCents: creditExpr,
|
|
82
|
+
estimatedDebitCents: estimatedDebitExpr,
|
|
83
|
+
eventCount: sql `count(*)::int`,
|
|
84
|
+
kindCount: sql `count(distinct ${financeEvents.eventKind})::int`,
|
|
85
|
+
netCents: sql `(${debitExpr} - ${creditExpr})::int`,
|
|
86
|
+
})
|
|
87
|
+
.from(financeEvents)
|
|
88
|
+
.where(and(...conditions))
|
|
89
|
+
.groupBy(financeEvents.biller)
|
|
90
|
+
.orderBy(desc(sql `(${debitExpr} - ${creditExpr})::int`), financeEvents.biller);
|
|
91
|
+
},
|
|
92
|
+
byKind: async (companyId, range) => {
|
|
93
|
+
const conditions = rangeConditions(companyId, range);
|
|
94
|
+
return db
|
|
95
|
+
.select({
|
|
96
|
+
eventKind: financeEvents.eventKind,
|
|
97
|
+
debitCents: debitExpr,
|
|
98
|
+
creditCents: creditExpr,
|
|
99
|
+
estimatedDebitCents: estimatedDebitExpr,
|
|
100
|
+
eventCount: sql `count(*)::int`,
|
|
101
|
+
billerCount: sql `count(distinct ${financeEvents.biller})::int`,
|
|
102
|
+
netCents: sql `(${debitExpr} - ${creditExpr})::int`,
|
|
103
|
+
})
|
|
104
|
+
.from(financeEvents)
|
|
105
|
+
.where(and(...conditions))
|
|
106
|
+
.groupBy(financeEvents.eventKind)
|
|
107
|
+
.orderBy(desc(sql `(${debitExpr} - ${creditExpr})::int`), financeEvents.eventKind);
|
|
108
|
+
},
|
|
109
|
+
list: async (companyId, range, limit = 100) => {
|
|
110
|
+
const conditions = rangeConditions(companyId, range);
|
|
111
|
+
return db
|
|
112
|
+
.select()
|
|
113
|
+
.from(financeEvents)
|
|
114
|
+
.where(and(...conditions))
|
|
115
|
+
.orderBy(desc(financeEvents.occurredAt), desc(financeEvents.createdAt))
|
|
116
|
+
.limit(limit);
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=finance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finance.js","sourceRoot":"","sources":["../../src/services/finance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { Db } from "@paperclipai/db";
|
|
2
|
+
import { agents } from "@paperclipai/db";
|
|
3
|
+
import { type BudgetEnforcementScope } from "./budgets.js";
|
|
4
|
+
import { type SessionCompactionPolicy } from "@paperclipai/adapter-utils";
|
|
2
5
|
interface WakeupOptions {
|
|
3
6
|
source?: "timer" | "assignment" | "on_demand" | "automation";
|
|
4
7
|
triggerDetail?: "manual" | "ping" | "callback" | "system";
|
|
@@ -24,6 +27,11 @@ export type ResolvedWorkspaceForRun = {
|
|
|
24
27
|
}>;
|
|
25
28
|
warnings: string[];
|
|
26
29
|
};
|
|
30
|
+
type ProjectWorkspaceCandidate = {
|
|
31
|
+
id: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function prioritizeProjectWorkspaceCandidatesForRun<T extends ProjectWorkspaceCandidate>(rows: T[], preferredWorkspaceId: string | null | undefined): T[];
|
|
34
|
+
export declare function parseSessionCompactionPolicy(agent: typeof agents.$inferSelect): SessionCompactionPolicy;
|
|
27
35
|
export declare function resolveRuntimeSessionParamsForWorkspace(input: {
|
|
28
36
|
agentId: string;
|
|
29
37
|
previousSessionParams: Record<string, unknown> | null;
|
|
@@ -357,8 +365,8 @@ export declare function heartbeatService(db: Db): {
|
|
|
357
365
|
id: number;
|
|
358
366
|
createdAt: Date;
|
|
359
367
|
companyId: string;
|
|
360
|
-
agentId: string;
|
|
361
368
|
payload: Record<string, unknown> | null;
|
|
369
|
+
agentId: string;
|
|
362
370
|
runId: string;
|
|
363
371
|
level: string | null;
|
|
364
372
|
color: string | null;
|
|
@@ -653,6 +661,7 @@ export declare function heartbeatService(db: Db): {
|
|
|
653
661
|
reaped: number;
|
|
654
662
|
runIds: string[];
|
|
655
663
|
}>;
|
|
664
|
+
resumeQueuedRuns: () => Promise<void>;
|
|
656
665
|
tickTimers: (now?: Date) => Promise<{
|
|
657
666
|
checked: number;
|
|
658
667
|
enqueued: number;
|
|
@@ -689,6 +698,7 @@ export declare function heartbeatService(db: Db): {
|
|
|
689
698
|
contextSnapshot: Record<string, unknown> | null;
|
|
690
699
|
}>;
|
|
691
700
|
cancelActiveForAgent: (agentId: string) => Promise<number>;
|
|
701
|
+
cancelBudgetScopeWork: (scope: BudgetEnforcementScope) => Promise<void>;
|
|
692
702
|
getActiveRunForAgent: (agentId: string) => Promise<{
|
|
693
703
|
id: string;
|
|
694
704
|
status: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"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"}
|