@paperclipai/server 2026.513.0-canary.2 → 2026.513.0

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.
Files changed (85) hide show
  1. package/dist/routes/issues.d.ts.map +1 -1
  2. package/dist/routes/issues.js +43 -0
  3. package/dist/routes/issues.js.map +1 -1
  4. package/dist/services/issues.d.ts +3 -0
  5. package/dist/services/issues.d.ts.map +1 -1
  6. package/dist/services/issues.js +820 -1
  7. package/dist/services/issues.js.map +1 -1
  8. package/dist/services/recovery/service.d.ts +6 -6
  9. package/package.json +14 -14
  10. package/ui-dist/assets/{_basePickBy-Cl97GiIS.js → _basePickBy-I3TN64W0.js} +1 -1
  11. package/ui-dist/assets/{_baseUniq-D6LYKITS.js → _baseUniq-BiKo_T7Z.js} +1 -1
  12. package/ui-dist/assets/{arc-CIoGe7WL.js → arc-CkjNBU9-.js} +1 -1
  13. package/ui-dist/assets/{architectureDiagram-VXUJARFQ-BtGX34WV.js → architectureDiagram-VXUJARFQ-CnRGt6cZ.js} +1 -1
  14. package/ui-dist/assets/{blockDiagram-VD42YOAC-Bx9BbKm1.js → blockDiagram-VD42YOAC-B_DcjZaJ.js} +1 -1
  15. package/ui-dist/assets/{c4Diagram-YG6GDRKO-xwuFSpQR.js → c4Diagram-YG6GDRKO-B3PD9c_R.js} +1 -1
  16. package/ui-dist/assets/channel-1Cd-h3PK.js +1 -0
  17. package/ui-dist/assets/{chunk-4BX2VUAB-DaWB39v7.js → chunk-4BX2VUAB-oSfengxa.js} +1 -1
  18. package/ui-dist/assets/{chunk-55IACEB6-D90CRNJi.js → chunk-55IACEB6-B5wKH1fv.js} +1 -1
  19. package/ui-dist/assets/{chunk-B4BG7PRW-B0BTxhNF.js → chunk-B4BG7PRW-r15-2JTB.js} +1 -1
  20. package/ui-dist/assets/{chunk-DI55MBZ5-D4h1PAJW.js → chunk-DI55MBZ5-BlZESk81.js} +1 -1
  21. package/ui-dist/assets/{chunk-FMBD7UC4-CzsxErQE.js → chunk-FMBD7UC4-B8qYwcCs.js} +1 -1
  22. package/ui-dist/assets/{chunk-QN33PNHL-bm-f5Ypf.js → chunk-QN33PNHL-mPDYhhjk.js} +1 -1
  23. package/ui-dist/assets/{chunk-QZHKN3VN-CoSq73nx.js → chunk-QZHKN3VN-DwtBAkWZ.js} +1 -1
  24. package/ui-dist/assets/{chunk-TZMSLE5B-BbhDlIqv.js → chunk-TZMSLE5B-BLPgrFmi.js} +1 -1
  25. package/ui-dist/assets/classDiagram-2ON5EDUG-C8TAPNPB.js +1 -0
  26. package/ui-dist/assets/classDiagram-v2-WZHVMYZB-C8TAPNPB.js +1 -0
  27. package/ui-dist/assets/clone-I11jq4-4.js +1 -0
  28. package/ui-dist/assets/{cose-bilkent-S5V4N54A-fmI2YMF8.js → cose-bilkent-S5V4N54A-DBD_6-uV.js} +1 -1
  29. package/ui-dist/assets/{dagre-6UL2VRFP-Cr3pog3j.js → dagre-6UL2VRFP-B0ZXplS0.js} +1 -1
  30. package/ui-dist/assets/{diagram-PSM6KHXK-C4ckklhG.js → diagram-PSM6KHXK-MU8wNkAz.js} +1 -1
  31. package/ui-dist/assets/{diagram-QEK2KX5R-BdYTsDWi.js → diagram-QEK2KX5R-CCfNbWCb.js} +1 -1
  32. package/ui-dist/assets/{diagram-S2PKOQOG-Cmu7ESUn.js → diagram-S2PKOQOG-DdMr7I_J.js} +1 -1
  33. package/ui-dist/assets/{erDiagram-Q2GNP2WA-BSZW_rSQ.js → erDiagram-Q2GNP2WA-DtFKSehU.js} +1 -1
  34. package/ui-dist/assets/{flowDiagram-NV44I4VS-Bc2VZpXV.js → flowDiagram-NV44I4VS-B_pFIF4i.js} +1 -1
  35. package/ui-dist/assets/{ganttDiagram-JELNMOA3-Ba0qqWlJ.js → ganttDiagram-JELNMOA3-a-qWQK-M.js} +1 -1
  36. package/ui-dist/assets/{gitGraphDiagram-V2S2FVAM-BNs0KTnG.js → gitGraphDiagram-V2S2FVAM-C4hbS94c.js} +1 -1
  37. package/ui-dist/assets/{graph-C0wAKjOq.js → graph-BtgDnY40.js} +1 -1
  38. package/ui-dist/assets/{index-CQvaOBII.js → index--WRNmWMh.js} +1 -1
  39. package/ui-dist/assets/{index-BZaueFmu.js → index-5S-Tp9Ds.js} +1 -1
  40. package/ui-dist/assets/{index-vAONJh9d.js → index-AgtIQi_5.js} +1 -1
  41. package/ui-dist/assets/{index-nGrBoNcW.js → index-BB_z2YqG.js} +1 -1
  42. package/ui-dist/assets/{index-DctgxKPE.js → index-BMlfLDqD.js} +153 -153
  43. package/ui-dist/assets/{index-Btz1sBoZ.js → index-BPlouvTT.js} +1 -1
  44. package/ui-dist/assets/{index-84J29Nok.js → index-BVgnExhc.js} +1 -1
  45. package/ui-dist/assets/{index-xnwc4hWt.js → index-BaAVco-d.js} +1 -1
  46. package/ui-dist/assets/{index-DOKMIztY.js → index-Bd-T6qiC.js} +1 -1
  47. package/ui-dist/assets/{index-Cv5mxAxh.js → index-BfP7DfVv.js} +1 -1
  48. package/ui-dist/assets/{index-DI9FwJzR.js → index-CCWg46e1.js} +1 -1
  49. package/ui-dist/assets/{index-CEnJQ2Hb.js → index-CG2nnKb-.js} +1 -1
  50. package/ui-dist/assets/{index-34MvAbhM.js → index-CJf2oog-.js} +1 -1
  51. package/ui-dist/assets/{index-BSLjDi9K.js → index-CVMCSDya.js} +1 -1
  52. package/ui-dist/assets/{index-BUufrxfc.js → index-ClSpZadR.js} +1 -1
  53. package/ui-dist/assets/{index-DpW6c6Uj.js → index-D4eBzxSF.js} +1 -1
  54. package/ui-dist/assets/{index-afxVdgKC.js → index-DQ9JLA32.js} +1 -1
  55. package/ui-dist/assets/{index-BwVAdHnB.js → index-DT6dSYEd.js} +1 -1
  56. package/ui-dist/assets/{index-D5610uok.js → index-DirEFlKZ.js} +1 -1
  57. package/ui-dist/assets/index-Dp1iykP7.css +1 -0
  58. package/ui-dist/assets/{index-Dcyd6vzt.js → index-DvdrMxk6.js} +1 -1
  59. package/ui-dist/assets/{index-DXsFwCNA.js → index-SSGb7GUr.js} +1 -1
  60. package/ui-dist/assets/{index-DknY3AxJ.js → index-cxW3Rqeg.js} +1 -1
  61. package/ui-dist/assets/{index-DoWqvQc6.js → index-erysj30P.js} +1 -1
  62. package/ui-dist/assets/{infoDiagram-HS3SLOUP-1SU0qfwO.js → infoDiagram-HS3SLOUP-Cnz1NexZ.js} +1 -1
  63. package/ui-dist/assets/{journeyDiagram-XKPGCS4Q-BrA_MLSh.js → journeyDiagram-XKPGCS4Q-CJqdxXQF.js} +1 -1
  64. package/ui-dist/assets/{kanban-definition-3W4ZIXB7-D80Emnew.js → kanban-definition-3W4ZIXB7-CpqjlBLK.js} +1 -1
  65. package/ui-dist/assets/{layout-CKqT70k7.js → layout-CpS7NXY2.js} +1 -1
  66. package/ui-dist/assets/{linear-2Gai1-Dd.js → linear-C3mo6FV-.js} +1 -1
  67. package/ui-dist/assets/{mermaid.core-B6r_vnla.js → mermaid.core-B_Pfodg0.js} +4 -4
  68. package/ui-dist/assets/{mindmap-definition-VGOIOE7T-DqXyfUHV.js → mindmap-definition-VGOIOE7T-CdiuDCHx.js} +1 -1
  69. package/ui-dist/assets/{pieDiagram-ADFJNKIX-DWVyJJ7p.js → pieDiagram-ADFJNKIX-s1iDT0Mr.js} +1 -1
  70. package/ui-dist/assets/{quadrantDiagram-AYHSOK5B-CiNe5n4G.js → quadrantDiagram-AYHSOK5B-BSbQHZ1e.js} +1 -1
  71. package/ui-dist/assets/{requirementDiagram-UZGBJVZJ-C97cm49e.js → requirementDiagram-UZGBJVZJ-C3UPCVA3.js} +1 -1
  72. package/ui-dist/assets/{sankeyDiagram-TZEHDZUN-BUWlyogX.js → sankeyDiagram-TZEHDZUN-COutQzze.js} +1 -1
  73. package/ui-dist/assets/{sequenceDiagram-WL72ISMW-CMIhywaR.js → sequenceDiagram-WL72ISMW-xPe1TWeT.js} +1 -1
  74. package/ui-dist/assets/{stateDiagram-FKZM4ZOC-Yy43hwu-.js → stateDiagram-FKZM4ZOC-DpMTUnBg.js} +1 -1
  75. package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-St9IsqPE.js +1 -0
  76. package/ui-dist/assets/{timeline-definition-IT6M3QCI-Bc0daZY2.js → timeline-definition-IT6M3QCI-_Jy-Lz9u.js} +1 -1
  77. package/ui-dist/assets/{treemap-GDKQZRPO-Bo0wz5fl.js → treemap-GDKQZRPO-DPQRQ6JK.js} +1 -1
  78. package/ui-dist/assets/{xychartDiagram-PRI3JC2R-YLP6MCXp.js → xychartDiagram-PRI3JC2R-7v21yPzV.js} +1 -1
  79. package/ui-dist/index.html +2 -2
  80. package/ui-dist/assets/channel-B17NOHvq.js +0 -1
  81. package/ui-dist/assets/classDiagram-2ON5EDUG-D0nhr1_D.js +0 -1
  82. package/ui-dist/assets/classDiagram-v2-WZHVMYZB-D0nhr1_D.js +0 -1
  83. package/ui-dist/assets/clone-5uZFA7cP.js +0 -1
  84. package/ui-dist/assets/index-BBM9QJm7.css +0 -1
  85. package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-DVIym9nZ.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAS1C,OAAO,EA8BL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAI3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,0CAA0C,CAAC;AASlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAShF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtF,CAAC;AA2qBF,wBAAgB,WAAW,CACzB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE;IACJ,qBAAqB,CAAC,EAAE;QACtB,0BAA0B,CAAC,KAAK,CAAC,EAAE;YACjC,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,IAAI,CAAC;SACZ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CACtC,8CA+8HP"}
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAS1C,OAAO,EA8BL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAI3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,0CAA0C,CAAC;AASlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAShF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtF,CAAC;AA2qBF,wBAAgB,WAAW,CACzB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE;IACJ,qBAAqB,CAAC,EAAE;QACtB,0BAA0B,CAAC,KAAK,CAAC,EAAE;YACjC,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,GAAG,CAAC,EAAE,IAAI,CAAC;SACZ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CACtC,8CAggIP"}
@@ -1061,6 +1061,7 @@ export function issueRoutes(db, storage, opts = {}) {
1061
1061
  const parsedOffset = rawOffset !== undefined && /^\d+$/.test(rawOffset)
1062
1062
  ? Number.parseInt(rawOffset, 10)
1063
1063
  : null;
1064
+ const attention = req.query.attention;
1064
1065
  if (assigneeUserFilterRaw === "me" && (!assigneeUserId || req.actor.type !== "board")) {
1065
1066
  res.status(403).json({ error: "assigneeUserId=me requires board authentication" });
1066
1067
  return;
@@ -1077,6 +1078,10 @@ export function issueRoutes(db, storage, opts = {}) {
1077
1078
  res.status(403).json({ error: "unreadForUserId=me requires board authentication" });
1078
1079
  return;
1079
1080
  }
1081
+ if (attention !== undefined && attention !== "blocked") {
1082
+ res.status(400).json({ error: "attention must be 'blocked' when provided" });
1083
+ return;
1084
+ }
1080
1085
  if (rawLimit !== undefined && (parsedLimit === null || !Number.isInteger(parsedLimit) || parsedLimit <= 0)) {
1081
1086
  res.status(400).json({ error: `limit must be a positive integer up to ${ISSUE_LIST_MAX_LIMIT}` });
1082
1087
  return;
@@ -1087,6 +1092,7 @@ export function issueRoutes(db, storage, opts = {}) {
1087
1092
  }
1088
1093
  const offset = parsedOffset ?? 0;
1089
1094
  const result = await svc.list(companyId, {
1095
+ attention: attention === "blocked" ? "blocked" : undefined,
1090
1096
  status: req.query.status,
1091
1097
  assigneeAgentId: req.query.assigneeAgentId,
1092
1098
  participantAgentId: req.query.participantAgentId,
@@ -1107,6 +1113,7 @@ export function issueRoutes(db, storage, opts = {}) {
1107
1113
  excludeRoutineExecutions: req.query.excludeRoutineExecutions === "true" || req.query.excludeRoutineExecutions === "1",
1108
1114
  includePluginOperations: req.query.includePluginOperations === "true" || req.query.includePluginOperations === "1",
1109
1115
  includeBlockedBy: req.query.includeBlockedBy === "true" || req.query.includeBlockedBy === "1",
1116
+ includeBlockedInboxAttention: req.query.includeBlockedInboxAttention === "true" || req.query.includeBlockedInboxAttention === "1",
1110
1117
  q: req.query.q,
1111
1118
  limit,
1112
1119
  offset,
@@ -1122,6 +1129,42 @@ export function issueRoutes(db, storage, opts = {}) {
1122
1129
  activeRecoveryAction: recoveryActionByIssue.get(issue.id) ?? null,
1123
1130
  })));
1124
1131
  });
1132
+ router.get("/companies/:companyId/issues/count", async (req, res) => {
1133
+ const companyId = req.params.companyId;
1134
+ assertCompanyAccess(req, companyId);
1135
+ const attention = req.query.attention;
1136
+ if (attention !== "blocked") {
1137
+ res.status(400).json({ error: "issues/count currently requires attention=blocked" });
1138
+ return;
1139
+ }
1140
+ if (req.query.limit !== undefined || req.query.offset !== undefined) {
1141
+ res.status(400).json({ error: "issues/count does not accept limit or offset" });
1142
+ return;
1143
+ }
1144
+ const count = await svc.count(companyId, {
1145
+ attention: "blocked",
1146
+ status: req.query.status,
1147
+ assigneeAgentId: req.query.assigneeAgentId,
1148
+ participantAgentId: req.query.participantAgentId,
1149
+ assigneeUserId: req.query.assigneeUserId,
1150
+ projectId: req.query.projectId,
1151
+ workspaceId: req.query.workspaceId,
1152
+ executionWorkspaceId: req.query.executionWorkspaceId,
1153
+ parentId: req.query.parentId,
1154
+ descendantOf: req.query.descendantOf,
1155
+ labelId: req.query.labelId,
1156
+ originKind: req.query.originKind,
1157
+ originKindPrefix: req.query.originKindPrefix,
1158
+ originId: req.query.originId,
1159
+ includeRoutineExecutions: req.query.includeRoutineExecutions === "true" || req.query.includeRoutineExecutions === "1",
1160
+ excludeRoutineExecutions: req.query.excludeRoutineExecutions === "true" || req.query.excludeRoutineExecutions === "1",
1161
+ includePluginOperations: req.query.includePluginOperations === "true" || req.query.includePluginOperations === "1",
1162
+ includeBlockedBy: true,
1163
+ includeBlockedInboxAttention: true,
1164
+ q: req.query.q,
1165
+ });
1166
+ res.json({ count });
1167
+ });
1125
1168
  router.get("/companies/:companyId/labels", async (req, res) => {
1126
1169
  const companyId = req.params.companyId;
1127
1170
  assertCompanyAccess(req, companyId);