@penclipai/server 2026.704.0 → 2026.714.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 (485) hide show
  1. package/dist/adapters/index.d.ts +1 -1
  2. package/dist/adapters/index.d.ts.map +1 -1
  3. package/dist/adapters/index.js.map +1 -1
  4. package/dist/adapters/process/execute.d.ts.map +1 -1
  5. package/dist/adapters/process/execute.js +1 -0
  6. package/dist/adapters/process/execute.js.map +1 -1
  7. package/dist/adapters/registry.d.ts.map +1 -1
  8. package/dist/adapters/registry.js +79 -51
  9. package/dist/adapters/registry.js.map +1 -1
  10. package/dist/adapters/utils.d.ts +5 -0
  11. package/dist/adapters/utils.d.ts.map +1 -1
  12. package/dist/adapters/utils.js.map +1 -1
  13. package/dist/agent-auth-jwt.d.ts +5 -1
  14. package/dist/agent-auth-jwt.d.ts.map +1 -1
  15. package/dist/agent-auth-jwt.js +72 -20
  16. package/dist/agent-auth-jwt.js.map +1 -1
  17. package/dist/app.d.ts +2 -0
  18. package/dist/app.d.ts.map +1 -1
  19. package/dist/app.js +10 -0
  20. package/dist/app.js.map +1 -1
  21. package/dist/built-ins/agents/reflection-coach/AGENTS.md +47 -0
  22. package/dist/built-ins/agents/reflection-coach/routines/recent-agent-reflection.md +77 -0
  23. package/dist/errors.d.ts +1 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +2 -2
  26. package/dist/errors.js.map +1 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +208 -116
  29. package/dist/index.js.map +1 -1
  30. package/dist/middleware/api-compression.d.ts +8 -0
  31. package/dist/middleware/api-compression.d.ts.map +1 -0
  32. package/dist/middleware/api-compression.js +207 -0
  33. package/dist/middleware/api-compression.js.map +1 -0
  34. package/dist/middleware/auth.d.ts.map +1 -1
  35. package/dist/middleware/auth.js +130 -3
  36. package/dist/middleware/auth.js.map +1 -1
  37. package/dist/middleware/error-handler.d.ts.map +1 -1
  38. package/dist/middleware/error-handler.js +27 -0
  39. package/dist/middleware/error-handler.js.map +1 -1
  40. package/dist/onboarding-assets/default/AGENTS.md +1 -0
  41. package/dist/redaction.d.ts.map +1 -1
  42. package/dist/redaction.js +11 -0
  43. package/dist/redaction.js.map +1 -1
  44. package/dist/routes/access.d.ts.map +1 -1
  45. package/dist/routes/access.js +4 -3
  46. package/dist/routes/access.js.map +1 -1
  47. package/dist/routes/adapters.d.ts.map +1 -1
  48. package/dist/routes/adapters.js +2 -0
  49. package/dist/routes/adapters.js.map +1 -1
  50. package/dist/routes/agents.d.ts.map +1 -1
  51. package/dist/routes/agents.js +222 -87
  52. package/dist/routes/agents.js.map +1 -1
  53. package/dist/routes/attention.d.ts +3 -0
  54. package/dist/routes/attention.d.ts.map +1 -0
  55. package/dist/routes/attention.js +24 -0
  56. package/dist/routes/attention.js.map +1 -0
  57. package/dist/routes/authz.d.ts.map +1 -1
  58. package/dist/routes/authz.js +29 -1
  59. package/dist/routes/authz.js.map +1 -1
  60. package/dist/routes/board-chat.d.ts.map +1 -1
  61. package/dist/routes/board-chat.js +4 -1
  62. package/dist/routes/board-chat.js.map +1 -1
  63. package/dist/routes/built-in-agents.d.ts +3 -0
  64. package/dist/routes/built-in-agents.d.ts.map +1 -0
  65. package/dist/routes/built-in-agents.js +267 -0
  66. package/dist/routes/built-in-agents.js.map +1 -0
  67. package/dist/routes/cases.d.ts +46 -0
  68. package/dist/routes/cases.d.ts.map +1 -0
  69. package/dist/routes/cases.js +1395 -0
  70. package/dist/routes/cases.js.map +1 -0
  71. package/dist/routes/companies.d.ts.map +1 -1
  72. package/dist/routes/companies.js +4 -1
  73. package/dist/routes/companies.js.map +1 -1
  74. package/dist/routes/company-skills.d.ts.map +1 -1
  75. package/dist/routes/company-skills.js +453 -33
  76. package/dist/routes/company-skills.js.map +1 -1
  77. package/dist/routes/environments.d.ts.map +1 -1
  78. package/dist/routes/environments.js +71 -8
  79. package/dist/routes/environments.js.map +1 -1
  80. package/dist/routes/execution-workspaces.d.ts.map +1 -1
  81. package/dist/routes/execution-workspaces.js +89 -3
  82. package/dist/routes/execution-workspaces.js.map +1 -1
  83. package/dist/routes/health.d.ts +2 -0
  84. package/dist/routes/health.d.ts.map +1 -1
  85. package/dist/routes/health.js +30 -0
  86. package/dist/routes/health.js.map +1 -1
  87. package/dist/routes/inbox-dismissals.d.ts.map +1 -1
  88. package/dist/routes/inbox-dismissals.js +80 -19
  89. package/dist/routes/inbox-dismissals.js.map +1 -1
  90. package/dist/routes/index.d.ts +2 -0
  91. package/dist/routes/index.d.ts.map +1 -1
  92. package/dist/routes/index.js +2 -0
  93. package/dist/routes/index.js.map +1 -1
  94. package/dist/routes/issues.d.ts +25 -0
  95. package/dist/routes/issues.d.ts.map +1 -1
  96. package/dist/routes/issues.js +1455 -46
  97. package/dist/routes/issues.js.map +1 -1
  98. package/dist/routes/openapi.d.ts.map +1 -1
  99. package/dist/routes/openapi.js +448 -11
  100. package/dist/routes/openapi.js.map +1 -1
  101. package/dist/routes/pipelines.js +2 -2
  102. package/dist/routes/pipelines.js.map +1 -1
  103. package/dist/routes/resource-memberships.d.ts.map +1 -1
  104. package/dist/routes/resource-memberships.js +13 -5
  105. package/dist/routes/resource-memberships.js.map +1 -1
  106. package/dist/routes/secrets.d.ts.map +1 -1
  107. package/dist/routes/secrets.js +261 -1
  108. package/dist/routes/secrets.js.map +1 -1
  109. package/dist/routes/sidebar-badges.d.ts.map +1 -1
  110. package/dist/routes/sidebar-badges.js +18 -2
  111. package/dist/routes/sidebar-badges.js.map +1 -1
  112. package/dist/routes/user-profiles.d.ts.map +1 -1
  113. package/dist/routes/user-profiles.js +5 -4
  114. package/dist/routes/user-profiles.js.map +1 -1
  115. package/dist/server-info.d.ts +2 -0
  116. package/dist/server-info.d.ts.map +1 -1
  117. package/dist/server-info.js +20 -5
  118. package/dist/server-info.js.map +1 -1
  119. package/dist/services/access.d.ts +4 -4
  120. package/dist/services/access.d.ts.map +1 -1
  121. package/dist/services/activity.d.ts +3 -3
  122. package/dist/services/activity.d.ts.map +1 -1
  123. package/dist/services/activity.js +5 -4
  124. package/dist/services/activity.js.map +1 -1
  125. package/dist/services/adapter-registry-bootstrap.reconcile.test.js +1 -0
  126. package/dist/services/adapter-registry-bootstrap.reconcile.test.js.map +1 -1
  127. package/dist/services/agent-secret-bindings.d.ts +15 -0
  128. package/dist/services/agent-secret-bindings.d.ts.map +1 -1
  129. package/dist/services/agent-secret-bindings.js +43 -0
  130. package/dist/services/agent-secret-bindings.js.map +1 -1
  131. package/dist/services/agents.d.ts +194 -133
  132. package/dist/services/agents.d.ts.map +1 -1
  133. package/dist/services/agents.js +107 -4
  134. package/dist/services/agents.js.map +1 -1
  135. package/dist/services/approvals.d.ts +10 -10
  136. package/dist/services/approvals.d.ts.map +1 -1
  137. package/dist/services/approvals.js +9 -1
  138. package/dist/services/approvals.js.map +1 -1
  139. package/dist/services/assets.d.ts +5 -5
  140. package/dist/services/attention.d.ts +11 -0
  141. package/dist/services/attention.d.ts.map +1 -0
  142. package/dist/services/attention.js +1024 -0
  143. package/dist/services/attention.js.map +1 -0
  144. package/dist/services/authorization.d.ts +15 -2
  145. package/dist/services/authorization.d.ts.map +1 -1
  146. package/dist/services/authorization.js +324 -8
  147. package/dist/services/authorization.js.map +1 -1
  148. package/dist/services/board-auth.d.ts +2 -2
  149. package/dist/services/budgets.d.ts.map +1 -1
  150. package/dist/services/budgets.js +8 -7
  151. package/dist/services/budgets.js.map +1 -1
  152. package/dist/services/built-in-agent-metadata.d.ts +9 -0
  153. package/dist/services/built-in-agent-metadata.d.ts.map +1 -0
  154. package/dist/services/built-in-agent-metadata.js +39 -0
  155. package/dist/services/built-in-agent-metadata.js.map +1 -0
  156. package/dist/services/built-in-agents.d.ts +394 -0
  157. package/dist/services/built-in-agents.d.ts.map +1 -0
  158. package/dist/services/built-in-agents.js +1426 -0
  159. package/dist/services/built-in-agents.js.map +1 -0
  160. package/dist/services/change-consent-gate.d.ts +18 -0
  161. package/dist/services/change-consent-gate.d.ts.map +1 -0
  162. package/dist/services/change-consent-gate.js +170 -0
  163. package/dist/services/change-consent-gate.js.map +1 -0
  164. package/dist/services/companies.d.ts +14 -8
  165. package/dist/services/companies.d.ts.map +1 -1
  166. package/dist/services/companies.js +6 -1
  167. package/dist/services/companies.js.map +1 -1
  168. package/dist/services/company-artifacts.d.ts +4 -1
  169. package/dist/services/company-artifacts.d.ts.map +1 -1
  170. package/dist/services/company-artifacts.js +9 -1
  171. package/dist/services/company-artifacts.js.map +1 -1
  172. package/dist/services/company-member-roles.d.ts.map +1 -1
  173. package/dist/services/company-member-roles.js +2 -0
  174. package/dist/services/company-member-roles.js.map +1 -1
  175. package/dist/services/company-portability.d.ts +1 -1
  176. package/dist/services/company-portability.d.ts.map +1 -1
  177. package/dist/services/company-portability.js +113 -8
  178. package/dist/services/company-portability.js.map +1 -1
  179. package/dist/services/company-search.d.ts.map +1 -1
  180. package/dist/services/company-search.js +843 -294
  181. package/dist/services/company-search.js.map +1 -1
  182. package/dist/services/company-skills.d.ts +64 -3
  183. package/dist/services/company-skills.d.ts.map +1 -1
  184. package/dist/services/company-skills.js +1205 -20
  185. package/dist/services/company-skills.js.map +1 -1
  186. package/dist/services/costs.d.ts +9 -8
  187. package/dist/services/costs.d.ts.map +1 -1
  188. package/dist/services/costs.js +9 -2
  189. package/dist/services/costs.js.map +1 -1
  190. package/dist/services/dashboard.d.ts +2 -0
  191. package/dist/services/dashboard.d.ts.map +1 -1
  192. package/dist/services/dashboard.js +60 -17
  193. package/dist/services/dashboard.js.map +1 -1
  194. package/dist/services/database-backup-health.d.ts +34 -0
  195. package/dist/services/database-backup-health.d.ts.map +1 -0
  196. package/dist/services/database-backup-health.js +104 -0
  197. package/dist/services/database-backup-health.js.map +1 -0
  198. package/dist/services/document-annotations.d.ts +169 -1
  199. package/dist/services/document-annotations.d.ts.map +1 -1
  200. package/dist/services/document-annotations.js +272 -1
  201. package/dist/services/document-annotations.js.map +1 -1
  202. package/dist/services/documents.d.ts +368 -0
  203. package/dist/services/documents.d.ts.map +1 -1
  204. package/dist/services/documents.js +2 -2
  205. package/dist/services/documents.js.map +1 -1
  206. package/dist/services/environment-config.d.ts.map +1 -1
  207. package/dist/services/environment-config.js +6 -0
  208. package/dist/services/environment-config.js.map +1 -1
  209. package/dist/services/environment-custom-image-runtime.d.ts +28 -0
  210. package/dist/services/environment-custom-image-runtime.d.ts.map +1 -1
  211. package/dist/services/environment-custom-image-runtime.js +106 -7
  212. package/dist/services/environment-custom-image-runtime.js.map +1 -1
  213. package/dist/services/environment-custom-images.d.ts +31 -1
  214. package/dist/services/environment-custom-images.d.ts.map +1 -1
  215. package/dist/services/environment-custom-images.js +110 -4
  216. package/dist/services/environment-custom-images.js.map +1 -1
  217. package/dist/services/environment-execution-target.d.ts.map +1 -1
  218. package/dist/services/environment-execution-target.js +1 -3
  219. package/dist/services/environment-execution-target.js.map +1 -1
  220. package/dist/services/environment-probe.d.ts +1 -0
  221. package/dist/services/environment-probe.d.ts.map +1 -1
  222. package/dist/services/environment-probe.js +99 -5
  223. package/dist/services/environment-probe.js.map +1 -1
  224. package/dist/services/environments.d.ts +3 -1
  225. package/dist/services/environments.d.ts.map +1 -1
  226. package/dist/services/environments.js +98 -3
  227. package/dist/services/environments.js.map +1 -1
  228. package/dist/services/execution-workspace-policy.d.ts +29 -3
  229. package/dist/services/execution-workspace-policy.d.ts.map +1 -1
  230. package/dist/services/execution-workspace-policy.js +44 -1
  231. package/dist/services/execution-workspace-policy.js.map +1 -1
  232. package/dist/services/execution-workspaces.d.ts +64 -1
  233. package/dist/services/execution-workspaces.d.ts.map +1 -1
  234. package/dist/services/execution-workspaces.js +634 -3
  235. package/dist/services/execution-workspaces.js.map +1 -1
  236. package/dist/services/external-objects.d.ts +26 -26
  237. package/dist/services/feedback.d.ts +2 -2
  238. package/dist/services/finance.d.ts +5 -5
  239. package/dist/services/goals.d.ts +8 -8
  240. package/dist/services/heartbeat-stop-metadata.d.ts +2 -2
  241. package/dist/services/heartbeat-stop-metadata.d.ts.map +1 -1
  242. package/dist/services/heartbeat-stop-metadata.js +4 -0
  243. package/dist/services/heartbeat-stop-metadata.js.map +1 -1
  244. package/dist/services/heartbeat-stop-metadata.test.js +9 -0
  245. package/dist/services/heartbeat-stop-metadata.test.js.map +1 -1
  246. package/dist/services/heartbeat.d.ts +133 -28
  247. package/dist/services/heartbeat.d.ts.map +1 -1
  248. package/dist/services/heartbeat.js +1963 -239
  249. package/dist/services/heartbeat.js.map +1 -1
  250. package/dist/services/inbox-dismissals.d.ts +26 -0
  251. package/dist/services/inbox-dismissals.d.ts.map +1 -1
  252. package/dist/services/inbox-dismissals.js +33 -18
  253. package/dist/services/inbox-dismissals.js.map +1 -1
  254. package/dist/services/index.d.ts +3 -1
  255. package/dist/services/index.d.ts.map +1 -1
  256. package/dist/services/index.js +3 -1
  257. package/dist/services/index.js.map +1 -1
  258. package/dist/services/instance-settings.d.ts +25 -1
  259. package/dist/services/instance-settings.d.ts.map +1 -1
  260. package/dist/services/instance-settings.js +103 -5
  261. package/dist/services/instance-settings.js.map +1 -1
  262. package/dist/services/issue-continuation-summary.js +1 -1
  263. package/dist/services/issue-continuation-summary.js.map +1 -1
  264. package/dist/services/issue-recovery-actions.d.ts +3 -0
  265. package/dist/services/issue-recovery-actions.d.ts.map +1 -1
  266. package/dist/services/issue-recovery-actions.js +9 -0
  267. package/dist/services/issue-recovery-actions.js.map +1 -1
  268. package/dist/services/issue-rewake-throttle.d.ts +92 -0
  269. package/dist/services/issue-rewake-throttle.d.ts.map +1 -0
  270. package/dist/services/issue-rewake-throttle.js +139 -0
  271. package/dist/services/issue-rewake-throttle.js.map +1 -0
  272. package/dist/services/issue-thread-interactions.d.ts +8 -1
  273. package/dist/services/issue-thread-interactions.d.ts.map +1 -1
  274. package/dist/services/issue-thread-interactions.js +231 -16
  275. package/dist/services/issue-thread-interactions.js.map +1 -1
  276. package/dist/services/issue-visibility.d.ts +4 -0
  277. package/dist/services/issue-visibility.d.ts.map +1 -0
  278. package/dist/services/issue-visibility.js +9 -0
  279. package/dist/services/issue-visibility.js.map +1 -0
  280. package/dist/services/issues.d.ts +225 -105
  281. package/dist/services/issues.d.ts.map +1 -1
  282. package/dist/services/issues.js +540 -18
  283. package/dist/services/issues.js.map +1 -1
  284. package/dist/services/local-service-supervisor.d.ts +3 -0
  285. package/dist/services/local-service-supervisor.d.ts.map +1 -1
  286. package/dist/services/local-service-supervisor.js +51 -0
  287. package/dist/services/local-service-supervisor.js.map +1 -1
  288. package/dist/services/pipeline-case-outputs.d.ts.map +1 -1
  289. package/dist/services/pipeline-case-outputs.js +2 -1
  290. package/dist/services/pipeline-case-outputs.js.map +1 -1
  291. package/dist/services/pipelines-aggregation.d.ts.map +1 -1
  292. package/dist/services/pipelines-aggregation.js +3 -2
  293. package/dist/services/pipelines-aggregation.js.map +1 -1
  294. package/dist/services/pipelines.d.ts +165 -165
  295. package/dist/services/pipelines.d.ts.map +1 -1
  296. package/dist/services/pipelines.js +6 -4
  297. package/dist/services/pipelines.js.map +1 -1
  298. package/dist/services/plugin-database.d.ts +2 -2
  299. package/dist/services/plugin-environment-driver.d.ts +1 -1
  300. package/dist/services/plugin-host-services.d.ts.map +1 -1
  301. package/dist/services/plugin-host-services.js +3 -1
  302. package/dist/services/plugin-host-services.js.map +1 -1
  303. package/dist/services/plugin-managed-routines.d.ts +1 -0
  304. package/dist/services/plugin-managed-routines.d.ts.map +1 -1
  305. package/dist/services/plugin-registry.d.ts +21 -21
  306. package/dist/services/productivity-review.d.ts +1 -0
  307. package/dist/services/productivity-review.d.ts.map +1 -1
  308. package/dist/services/productivity-review.js +6 -5
  309. package/dist/services/productivity-review.js.map +1 -1
  310. package/dist/services/projects.d.ts +9 -9
  311. package/dist/services/recovery/service.d.ts +82 -54
  312. package/dist/services/recovery/service.d.ts.map +1 -1
  313. package/dist/services/recovery/service.js +200 -35
  314. package/dist/services/recovery/service.js.map +1 -1
  315. package/dist/services/recovery/successful-run-handoff.d.ts +1 -0
  316. package/dist/services/recovery/successful-run-handoff.d.ts.map +1 -1
  317. package/dist/services/recovery/successful-run-handoff.js +2 -0
  318. package/dist/services/recovery/successful-run-handoff.js.map +1 -1
  319. package/dist/services/recovery/successful-run-handoff.test.js +20 -0
  320. package/dist/services/recovery/successful-run-handoff.test.js.map +1 -1
  321. package/dist/services/resource-memberships.d.ts +13 -10
  322. package/dist/services/resource-memberships.d.ts.map +1 -1
  323. package/dist/services/resource-memberships.js +89 -20
  324. package/dist/services/resource-memberships.js.map +1 -1
  325. package/dist/services/responsible-user-denial-run-outcomes.d.ts +60 -0
  326. package/dist/services/responsible-user-denial-run-outcomes.d.ts.map +1 -0
  327. package/dist/services/responsible-user-denial-run-outcomes.js +56 -0
  328. package/dist/services/responsible-user-denial-run-outcomes.js.map +1 -0
  329. package/dist/services/responsible-user-denial-run-outcomes.test.d.ts +2 -0
  330. package/dist/services/responsible-user-denial-run-outcomes.test.d.ts.map +1 -0
  331. package/dist/services/responsible-user-denial-run-outcomes.test.js +75 -0
  332. package/dist/services/responsible-user-denial-run-outcomes.test.js.map +1 -0
  333. package/dist/services/routines.d.ts +30 -8
  334. package/dist/services/routines.d.ts.map +1 -1
  335. package/dist/services/routines.js +241 -18
  336. package/dist/services/routines.js.map +1 -1
  337. package/dist/services/run-liveness.d.ts.map +1 -1
  338. package/dist/services/run-liveness.js +21 -0
  339. package/dist/services/run-liveness.js.map +1 -1
  340. package/dist/services/run-log-store.d.ts +1 -0
  341. package/dist/services/run-log-store.d.ts.map +1 -1
  342. package/dist/services/run-log-store.js +4 -0
  343. package/dist/services/run-log-store.js.map +1 -1
  344. package/dist/services/run-scratch.d.ts +42 -0
  345. package/dist/services/run-scratch.d.ts.map +1 -0
  346. package/dist/services/run-scratch.js +111 -0
  347. package/dist/services/run-scratch.js.map +1 -0
  348. package/dist/services/run-scratch.test.d.ts +2 -0
  349. package/dist/services/run-scratch.test.d.ts.map +1 -0
  350. package/dist/services/run-scratch.test.js +98 -0
  351. package/dist/services/run-scratch.test.js.map +1 -0
  352. package/dist/services/secrets.d.ts +1261 -64
  353. package/dist/services/secrets.d.ts.map +1 -1
  354. package/dist/services/secrets.js +1089 -96
  355. package/dist/services/secrets.js.map +1 -1
  356. package/dist/services/task-watchdogs.d.ts +1 -0
  357. package/dist/services/task-watchdogs.d.ts.map +1 -1
  358. package/dist/services/task-watchdogs.js +78 -9
  359. package/dist/services/task-watchdogs.js.map +1 -1
  360. package/dist/services/work-timeline.d.ts.map +1 -1
  361. package/dist/services/work-timeline.js +34 -2
  362. package/dist/services/work-timeline.js.map +1 -1
  363. package/dist/services/workspace-runtime-read-model.d.ts +30 -29
  364. package/dist/services/workspace-runtime-read-model.d.ts.map +1 -1
  365. package/dist/services/workspace-runtime-read-model.js.map +1 -1
  366. package/dist/services/workspace-runtime.d.ts +59 -13
  367. package/dist/services/workspace-runtime.d.ts.map +1 -1
  368. package/dist/services/workspace-runtime.js +1121 -102
  369. package/dist/services/workspace-runtime.js.map +1 -1
  370. package/dist/skills-catalog/catalog/bundled/paperclip-operations/reflection-coach/SKILL.md +202 -0
  371. package/dist/skills-catalog/catalog/bundled/product/paperclip-capsules/SKILL.md +1 -1
  372. package/dist/skills-catalog/catalog/bundled/product/wireframe/SKILL.md +1 -1
  373. package/dist/skills-catalog/catalog/optional/content/release-announcement/SKILL.md +90 -0
  374. package/dist/skills-catalog/catalog/optional/finance/ramp/SKILL.md +98 -0
  375. package/dist/skills-catalog/generated/catalog.json +84 -12
  376. package/dist/ui-branding.d.ts +7 -0
  377. package/dist/ui-branding.d.ts.map +1 -1
  378. package/dist/ui-branding.js +8 -2
  379. package/dist/ui-branding.js.map +1 -1
  380. package/dist/version.d.ts +14 -0
  381. package/dist/version.d.ts.map +1 -1
  382. package/dist/version.js +114 -3
  383. package/dist/version.js.map +1 -1
  384. package/package.json +19 -20
  385. package/skills/paperclip/SKILL.md +45 -10
  386. package/skills/paperclip/references/api-reference.md +246 -1
  387. package/skills/paperclip/references/cases.md +295 -0
  388. package/skills/paperclip/references/company-skills.md +1 -1
  389. package/skills/paperclip-board/SKILL.md +3 -4
  390. package/skills/paperclip-converting-plans-to-tasks/SKILL.md +3 -7
  391. package/skills/para-memory-files/SKILL.md +3 -7
  392. package/ui-dist/assets/{abnfDiagram-VRR7QNED-BsFz2IiG.js → abnfDiagram-VRR7QNED-Dtgfy1PK.js} +1 -1
  393. package/ui-dist/assets/{arc-HZhAwbOs.js → arc-BGdvNvs8.js} +1 -1
  394. package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-BteMjuOn.js → architectureDiagram-ZJ3FMSHR-CK19SQDx.js} +1 -1
  395. package/ui-dist/assets/{blockDiagram-677ZJIJ3-Iq66uZjf.js → blockDiagram-677ZJIJ3-Kh4N3XG4.js} +1 -1
  396. package/ui-dist/assets/{browser-ponyfill-BBsuyZJt.js → browser-ponyfill-B3hXtEFW.js} +1 -1
  397. package/ui-dist/assets/{c4Diagram-LMCZKHZV-_nlglj7I.js → c4Diagram-LMCZKHZV-CBHpGrgU.js} +1 -1
  398. package/ui-dist/assets/channel-4fjB8e8N.js +1 -0
  399. package/ui-dist/assets/{chunk-2Q5K7J3B-Cvz7WwSQ.js → chunk-2Q5K7J3B-BdHbqi7k.js} +1 -1
  400. package/ui-dist/assets/{chunk-32BRIVSS-LLubniCS.js → chunk-32BRIVSS-DxtzZzpt.js} +1 -1
  401. package/ui-dist/assets/{chunk-5VM5RSS4-BOst5hcr.js → chunk-5VM5RSS4-DMKxBbgu.js} +1 -1
  402. package/ui-dist/assets/{chunk-EX3LRPZG-D5WNShVm.js → chunk-EX3LRPZG-BaIOPi4v.js} +1 -1
  403. package/ui-dist/assets/{chunk-JWPE2WC7-CA07x4av.js → chunk-JWPE2WC7-DGo3MPmr.js} +1 -1
  404. package/ui-dist/assets/{chunk-MOJQB5TN-Clfi83rK.js → chunk-MOJQB5TN-BEhQg0uD.js} +1 -1
  405. package/ui-dist/assets/{chunk-RYQCIY6F-BhZ6p7YJ.js → chunk-RYQCIY6F-HPJ6zRpJ.js} +1 -1
  406. package/ui-dist/assets/{chunk-V7JOEXUC-CdexJGoV.js → chunk-V7JOEXUC-Bl_6cAJD.js} +1 -1
  407. package/ui-dist/assets/{chunk-VR4S4FIN-8vjmBhr1.js → chunk-VR4S4FIN-KMjgGCsw.js} +1 -1
  408. package/ui-dist/assets/{chunk-XXDRQBXY-CqmCaplj.js → chunk-XXDRQBXY-oWGAIKjr.js} +1 -1
  409. package/ui-dist/assets/classDiagram-OUVF2IWQ-CTXxO5l9.js +1 -0
  410. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CTXxO5l9.js +1 -0
  411. package/ui-dist/assets/{cose-bilkent-JH36ORCC-CY-zAygY.js → cose-bilkent-JH36ORCC-Ckqse1pH.js} +1 -1
  412. package/ui-dist/assets/{cynefin-VYW2F7L2-BQSQ1HKr.js → cynefin-VYW2F7L2-DfZ8Hzqi.js} +1 -1
  413. package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-NJCuFrZL.js → cynefinDiagram-TSTJHNR4-BkDQo9oi.js} +1 -1
  414. package/ui-dist/assets/{dagre-VKFMJZFB-DAUPIc8g.js → dagre-VKFMJZFB-ClghXQ6E.js} +1 -1
  415. package/ui-dist/assets/{diagram-FQU43EPY-DvMwJlCi.js → diagram-FQU43EPY-D5a0CwpV.js} +1 -1
  416. package/ui-dist/assets/{diagram-G47NLZAW-DPY0Jz_y.js → diagram-G47NLZAW-hVjYR_xl.js} +1 -1
  417. package/ui-dist/assets/{diagram-NH7WQ7WH-BpopeEhp.js → diagram-NH7WQ7WH-BlDPgD5Z.js} +1 -1
  418. package/ui-dist/assets/{diagram-OA4YK3LP-Qpu05z9X.js → diagram-OA4YK3LP-D0iZKIS3.js} +1 -1
  419. package/ui-dist/assets/{diagram-WEI45ONY-DHnvw9XU.js → diagram-WEI45ONY-m6hrfD0J.js} +1 -1
  420. package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-D61S54_7.js → ebnfDiagram-CCIWWBDH-D4SQYLod.js} +1 -1
  421. package/ui-dist/assets/{erDiagram-Q63AITRT-pplAN_x2.js → erDiagram-Q63AITRT-Byzb6-I5.js} +1 -1
  422. package/ui-dist/assets/{flowDiagram-23GEKE2U-BaBcbyDq.js → flowDiagram-23GEKE2U-CaTUkFO6.js} +1 -1
  423. package/ui-dist/assets/{ganttDiagram-NO4QXBWP-BOJSII2b.js → ganttDiagram-NO4QXBWP-DmdMQ3ES.js} +1 -1
  424. package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-aYAaO4a2.js → gitGraphDiagram-IHSO6WYX-Bt-1g2CS.js} +1 -1
  425. package/ui-dist/assets/{index-CZxYajxF.js → index-2Dk9yO0W.js} +1 -1
  426. package/ui-dist/assets/{index-B8H0SHw1.js → index-8jLpgFNU.js} +1 -1
  427. package/ui-dist/assets/{index-3EKATXgc.js → index-AP_iimxs.js} +1 -1
  428. package/ui-dist/assets/{index-C2JgdjPa.js → index-BNJasQY9.js} +1 -1
  429. package/ui-dist/assets/{index-BaiskB3o.js → index-BO-aNmyX.js} +1 -1
  430. package/ui-dist/assets/{index-B5YenxAQ.js → index-BPCzCn1Y.js} +1 -1
  431. package/ui-dist/assets/{index-Da2kqT1M.js → index-BSLnLTb2.js} +1 -1
  432. package/ui-dist/assets/{index-By0oeEvz.js → index-CCZ2qgHN.js} +1 -1
  433. package/ui-dist/assets/{index-bUFCSEgv.js → index-CLZXR1k9.js} +1 -1
  434. package/ui-dist/assets/{index-CJlw4l9L.js → index-CTNfrE1s.js} +1 -1
  435. package/ui-dist/assets/{index-TmpY6Xh_.js → index-ChNd25s7.js} +1 -1
  436. package/ui-dist/assets/{index-BRgdHUNR.js → index-CjHiMOEO.js} +1 -1
  437. package/ui-dist/assets/{index-DrL6pHSJ.js → index-CmeJQpXZ.js} +1 -1
  438. package/ui-dist/assets/index-CyuYtn7U.css +1 -0
  439. package/ui-dist/assets/{index-CKKytnOd.js → index-CzZjM8eh.js} +1 -1
  440. package/ui-dist/assets/{index-Dceamza_.js → index-D-6T0Aft.js} +1 -1
  441. package/ui-dist/assets/{index-CjDqB1SX.js → index-DG_7V1pG.js} +1 -1
  442. package/ui-dist/assets/index-DIKcgxCt.js +676 -0
  443. package/ui-dist/assets/{index-BKVeJ3Jh.js → index-DiUerHmi.js} +1 -1
  444. package/ui-dist/assets/{index-C-nKjFZh.js → index-NZ7v5Fc2.js} +1 -1
  445. package/ui-dist/assets/{index-CvPPuNs1.js → index-Py70EvBg.js} +1 -1
  446. package/ui-dist/assets/{index-LHkZdu0h.js → index-R3aYn0qM.js} +1 -1
  447. package/ui-dist/assets/{index-BT8b79Bd.js → index-YXpm7gW-.js} +1 -1
  448. package/ui-dist/assets/{index-CemenVOf.js → index-n4q3gzki.js} +1 -1
  449. package/ui-dist/assets/{index-D3ODiUup.js → index-vlZ3GoYY.js} +1 -1
  450. package/ui-dist/assets/{infoDiagram-FWYZ7A6U-C7_90qGq.js → infoDiagram-FWYZ7A6U-jdi5ciVg.js} +1 -1
  451. package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-T-nPPdTt.js → ishikawaDiagram-FXEZZL3T-CMz5VvYp.js} +1 -1
  452. package/ui-dist/assets/{journeyDiagram-5HDEW3XC-C3hqQN0R.js → journeyDiagram-5HDEW3XC-DK6dk2R-.js} +1 -1
  453. package/ui-dist/assets/{kanban-definition-HUTT4EX6-CPoD9DUm.js → kanban-definition-HUTT4EX6-DX5cZL-D.js} +1 -1
  454. package/ui-dist/assets/{linear-D-S8yr3Z.js → linear-CI96ABKp.js} +1 -1
  455. package/ui-dist/assets/{mermaid.core-DhvH8shK.js → mermaid.core-DnsEVfbd.js} +4 -4
  456. package/ui-dist/assets/{mindmap-definition-LN4V7U3C-CxCIKrKo.js → mindmap-definition-LN4V7U3C-BdDCY7hf.js} +1 -1
  457. package/ui-dist/assets/{pegDiagram-2B236MQR-D4G-PC6N.js → pegDiagram-2B236MQR-DuY4TF-f.js} +1 -1
  458. package/ui-dist/assets/{pieDiagram-ENE6RG2P-N4X8UvqY.js → pieDiagram-ENE6RG2P-bgFw7dm3.js} +1 -1
  459. package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-CZohoDln.js → quadrantDiagram-ABIIQ3AL-BCZVWyWS.js} +1 -1
  460. package/ui-dist/assets/{railroadDiagram-RFXS5EU6-fMGQVhwF.js → railroadDiagram-RFXS5EU6-D9V5_Cgc.js} +1 -1
  461. package/ui-dist/assets/{requirementDiagram-TGXJPOKE-CK0IuUmk.js → requirementDiagram-TGXJPOKE-CItsya2r.js} +1 -1
  462. package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-pSfb3CqG.js → sankeyDiagram-HTMAVEWB-Cz9IHsZO.js} +1 -1
  463. package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-CbhkqIeq.js → sequenceDiagram-DBY2YBRQ-hMSqTiwK.js} +1 -1
  464. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-B6vqqPx-.js → sizeCapture-X5ZJPWSS-0g9M5wMf.js} +1 -1
  465. package/ui-dist/assets/{stateDiagram-2N3HPSRC-DIJf9h5C.js → stateDiagram-2N3HPSRC-F8_YhgWl.js} +1 -1
  466. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-fZImUBtq.js +1 -0
  467. package/ui-dist/assets/{swimlanes-5IMT3BWC-DIX_LV8O.js → swimlanes-5IMT3BWC-CCZqPbpE.js} +2 -2
  468. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-9C1UT51R.js +8 -0
  469. package/ui-dist/assets/{timeline-definition-FHXFAJF6-CD-Pxb_g.js → timeline-definition-FHXFAJF6-BeUIr18x.js} +1 -1
  470. package/ui-dist/assets/{vennDiagram-L72KCM5P-BAZsWL0R.js → vennDiagram-L72KCM5P-D3d5h_G4.js} +1 -1
  471. package/ui-dist/assets/{wardleyDiagram-EHGQE667-CnNyfwX5.js → wardleyDiagram-EHGQE667-Bzt-As9A.js} +1 -1
  472. package/ui-dist/assets/{xychartDiagram-FW5EYKEG-j9YgsD3Y.js → xychartDiagram-FW5EYKEG-C2mly0xf.js} +1 -1
  473. package/ui-dist/fonts/InterVariable-Italic.woff2 +0 -0
  474. package/ui-dist/fonts/InterVariable.woff2 +0 -0
  475. package/ui-dist/fonts/NOTICE.md +17 -0
  476. package/ui-dist/index.html +2 -2
  477. package/ui-dist/locales/en/common.json +1142 -5
  478. package/ui-dist/locales/zh-CN/common.json +1140 -3
  479. package/ui-dist/assets/channel-CsiI2LYw.js +0 -1
  480. package/ui-dist/assets/classDiagram-OUVF2IWQ-CBn1Jqo8.js +0 -1
  481. package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CBn1Jqo8.js +0 -1
  482. package/ui-dist/assets/index-BsL8K1vL.css +0 -1
  483. package/ui-dist/assets/index-D__fTsb2.js +0 -643
  484. package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DpwLD7YL.js +0 -1
  485. package/ui-dist/assets/swimlanesDiagram-G3AALYLV-Cklauutg.js +0 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention.js","sourceRoot":"","sources":["../../src/services/attention.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,22 @@ export type AuthorizationActor = {
9
9
  membershipRole?: string | null;
10
10
  status?: string;
11
11
  }>;
12
+ onBehalfOfMemberships?: Array<{
13
+ companyId: string;
14
+ membershipRole?: string | null;
15
+ status?: string;
16
+ }>;
12
17
  isInstanceAdmin?: boolean;
18
+ ignoreInstanceAdmin?: boolean;
13
19
  agentId?: string | null;
14
20
  companyId?: string | null;
15
21
  keyId?: string | null;
16
22
  keyScope?: AgentApiKeyScope | null;
17
23
  runId?: string | null;
24
+ onBehalfOfUserId?: string | null;
18
25
  source?: "local_implicit" | "session" | "board_key" | "agent_key" | "agent_jwt" | "cloud_tenant" | "none";
19
26
  };
20
- export type AuthorizationAction = PermissionKey | "agent_config:read" | "agent_config:update" | "agent:read" | "agent:wake" | "company_scope:read" | "issue:comment" | "issue:mutate" | "issue:read" | "project:read" | "runtime:manage" | "secrets:read";
27
+ export type AuthorizationAction = PermissionKey | "agent_config:read" | "agent_config:update" | "skill_config:update" | "agent:read" | "agent:wake" | "company_scope:read" | "issue:comment" | "issue:mutate" | "issue:read" | "project:read" | "runtime:manage" | "secrets:read";
21
28
  export type AuthorizationResource = {
22
29
  type: "company";
23
30
  companyId: string;
@@ -45,7 +52,8 @@ export type AuthorizationDecision = {
45
52
  allowed: boolean;
46
53
  action: AuthorizationAction;
47
54
  explanation: string;
48
- reason: "allow_low_trust_boundary" | "allow_local_board" | "allow_instance_admin" | "allow_explicit_grant" | "allow_legacy_agent_creator" | "allow_issue_mention_grant" | "allow_self" | "allow_company_agent" | "allow_company_member" | "allow_simple_company_member" | "allow_manager_chain" | "deny_unauthenticated" | "deny_company_boundary" | "deny_missing_membership" | "deny_missing_grant" | "deny_policy_restricted" | "deny_low_trust_boundary" | "deny_scope" | "deny_unsupported_action";
55
+ code?: "RESPONSIBLE_USER_UNAUTHORIZED" | "RESPONSIBLE_USER_UNAVAILABLE";
56
+ reason: "allow_low_trust_boundary" | "allow_local_board" | "allow_instance_admin" | "allow_explicit_grant" | "allow_direct_change" | "allow_consented_change" | "allow_legacy_agent_creator" | "allow_issue_mention_grant" | "allow_self" | "allow_company_agent" | "allow_company_member" | "allow_simple_company_member" | "allow_manager_chain" | "deny_unauthenticated" | "deny_company_boundary" | "deny_missing_membership" | "deny_missing_grant" | "deny_missing_consent" | "deny_no_grant" | "deny_policy_restricted" | "deny_low_trust_boundary" | "deny_scope" | "deny_unsupported_action";
49
57
  grant?: {
50
58
  principalType: PrincipalType;
51
59
  principalId: string;
@@ -56,6 +64,11 @@ export type AuthorizationDecision = {
56
64
  type PrincipalGrantDecision = AuthorizationDecision & {
57
65
  grant?: NonNullable<AuthorizationDecision["grant"]>;
58
66
  };
67
+ export declare function responsibleUserAuthzShadowMode(): boolean;
68
+ export declare function authorizationDeniedDetails(decision: AuthorizationDecision): {
69
+ reason: "allow_low_trust_boundary" | "allow_local_board" | "allow_instance_admin" | "allow_explicit_grant" | "allow_direct_change" | "allow_consented_change" | "allow_legacy_agent_creator" | "allow_issue_mention_grant" | "allow_self" | "allow_company_agent" | "allow_company_member" | "allow_simple_company_member" | "allow_manager_chain" | "deny_unauthenticated" | "deny_company_boundary" | "deny_missing_membership" | "deny_missing_grant" | "deny_missing_consent" | "deny_no_grant" | "deny_policy_restricted" | "deny_low_trust_boundary" | "deny_scope" | "deny_unsupported_action";
70
+ code?: "RESPONSIBLE_USER_UNAUTHORIZED" | "RESPONSIBLE_USER_UNAVAILABLE" | undefined;
71
+ };
59
72
  export declare function authorizationService(db: Db): {
60
73
  decide: (input: {
61
74
  actor: AuthorizationActor;
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/services/authorization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAWxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAA2B,MAAM,mBAAmB,CAAC;AAUjH,MAAM,MAAM,kBAAkB,GAC5B;IACE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EACH,gBAAgB,GAChB,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,cAAc,GACd,MAAM,CAAC;CACZ,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,mBAAmB,GACnB,qBAAqB,GACrB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,eAAe,GACf,cAAc,GACd,YAAY,GACZ,cAAc,GACd,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjE;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEN,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EACF,0BAA0B,GAC1B,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,4BAA4B,GAC5B,2BAA2B,GAC3B,YAAY,GACZ,qBAAqB,GACrB,sBAAsB,GACtB,6BAA6B,GAC7B,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,yBAAyB,GACzB,oBAAoB,GACpB,wBAAwB,GACxB,yBAAyB,GACzB,YAAY,GACZ,yBAAyB,CAAC;IAC9B,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,aAAa,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,aAAa,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KACvC,CAAC;CACH,CAAC;AAEF,KAAK,sBAAsB,GAAG,qBAAqB,GAAG;IACpD,KAAK,CAAC,EAAE,WAAW,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;CACrD,CAAC;AA4SF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE;oBAwqBZ;QAC3B,KAAK,EAAE,kBAAkB,CAAC;QAC1B,MAAM,EAAE,mBAAmB,CAAC;QAC5B,QAAQ,EAAE,qBAAqB,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KACxC,KAAG,OAAO,CAAC,qBAAqB,CAAC;kCAvnBS;QACzC,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,aAAa,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,mBAAmB,CAAC;QAC5B,aAAa,EAAE,aAAa,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KACxC,KAAG,OAAO,CAAC,sBAAsB,CAAC;EAghCpC"}
1
+ {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/services/authorization.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { and, eq, inArray, isNull, sql } from "drizzle-orm";
2
- import { agents, companyMemberships, heartbeatRuns, instanceUserRoles, issueComments, issues, principalPermissionGrants, projects, } from "@penclipai/db";
2
+ import { agents, authUsers, companyMemberships, heartbeatRuns, instanceUserRoles, issueComments, issues, principalPermissionGrants, projects, } from "@penclipai/db";
3
3
  import { LOW_TRUST_REVIEW_PRESET, extractAgentMentionIds } from "@penclipai/shared";
4
4
  import { LOW_TRUST_ISSUE_ANCESTRY_MAX_DEPTH, isIssueWithinLowTrustBoundary, resolveCoreTrustPreset, } from "./trust-preset-resolver.js";
5
5
  import { logger } from "../middleware/logger.js";
@@ -7,8 +7,9 @@ function companyIdForResource(resource) {
7
7
  return resource.companyId;
8
8
  }
9
9
  function permissionForAction(action) {
10
- if (action === "agent_config:read" || action === "agent_config:update")
11
- return "agents:create";
10
+ if (action === "agent_config:read" || action === "agent_config:update" || action === "skill_config:update") {
11
+ return null;
12
+ }
12
13
  if (action === "agent:read" ||
13
14
  action === "agent:wake" ||
14
15
  action === "company_scope:read" ||
@@ -228,6 +229,37 @@ function allow(input) {
228
229
  function deny(input) {
229
230
  return { ...input, allowed: false };
230
231
  }
232
+ const responsibleUserSnapshotCache = new Map();
233
+ function responsibleUserSnapshotTtlMs() {
234
+ const raw = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_CACHE_TTL_MS?.trim();
235
+ if (!raw)
236
+ return 5_000;
237
+ const parsed = Number(raw);
238
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : 5_000;
239
+ }
240
+ export function responsibleUserAuthzShadowMode() {
241
+ const mode = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_MODE?.trim().toLowerCase();
242
+ const shadow = process.env.PAPERCLIP_RESPONSIBLE_USER_AUTHZ_SHADOW?.trim().toLowerCase();
243
+ return mode === "shadow" || shadow === "1" || shadow === "true" || shadow === "yes";
244
+ }
245
+ function activeActorMembership(memberships, companyId) {
246
+ return memberships?.find((membership) => membership.companyId === companyId && membership.status === "active") ?? null;
247
+ }
248
+ function activeResponsibleUserCanAuthorizeIssueAction(action, membership) {
249
+ return Boolean(membership &&
250
+ membership.status === "active" &&
251
+ membership.membershipRole !== "viewer" &&
252
+ (action === "issue:comment" || action === "issue:mutate"));
253
+ }
254
+ function scopeBoolean(scope, key) {
255
+ return scope?.[key] === true;
256
+ }
257
+ export function authorizationDeniedDetails(decision) {
258
+ return {
259
+ ...(decision.code ? { code: decision.code } : {}),
260
+ reason: decision.reason,
261
+ };
262
+ }
231
263
  export function authorizationService(db) {
232
264
  async function isInstanceAdmin(userId) {
233
265
  if (!userId)
@@ -248,6 +280,67 @@ export function authorizationService(db) {
248
280
  .where(and(eq(companyMemberships.companyId, companyId), eq(companyMemberships.principalType, principalType), eq(companyMemberships.principalId, principalId), eq(companyMemberships.status, "active")))
249
281
  .then((rows) => rows[0] ?? null);
250
282
  }
283
+ async function loadResponsibleUserSnapshot(companyId, userId) {
284
+ const [user, membership] = await Promise.all([
285
+ db
286
+ .select({ id: authUsers.id })
287
+ .from(authUsers)
288
+ .where(eq(authUsers.id, userId))
289
+ .then((rows) => rows[0] ?? null),
290
+ db
291
+ .select({
292
+ companyId: companyMemberships.companyId,
293
+ membershipRole: companyMemberships.membershipRole,
294
+ status: companyMemberships.status,
295
+ })
296
+ .from(companyMemberships)
297
+ .where(and(eq(companyMemberships.companyId, companyId), eq(companyMemberships.principalType, "user"), eq(companyMemberships.principalId, userId), eq(companyMemberships.status, "active")))
298
+ .then((rows) => rows[0] ?? null),
299
+ ]);
300
+ return {
301
+ userId,
302
+ companyId,
303
+ userExists: Boolean(user),
304
+ activeMembership: user ? membership : null,
305
+ };
306
+ }
307
+ function getResponsibleUserSnapshot(input) {
308
+ const actorWithMemo = input.actor;
309
+ const key = `${input.companyId}:${input.userId}`;
310
+ actorWithMemo.__responsibleUserSnapshotMemo ??= new Map();
311
+ const requestMemo = actorWithMemo.__responsibleUserSnapshotMemo.get(key);
312
+ if (requestMemo)
313
+ return requestMemo;
314
+ const actorMembership = activeActorMembership(input.actor.onBehalfOfMemberships, input.companyId);
315
+ if (actorMembership) {
316
+ const promise = Promise.resolve({
317
+ userId: input.userId,
318
+ companyId: input.companyId,
319
+ userExists: true,
320
+ activeMembership: actorMembership,
321
+ });
322
+ actorWithMemo.__responsibleUserSnapshotMemo.set(key, promise);
323
+ return promise;
324
+ }
325
+ const now = Date.now();
326
+ const cached = responsibleUserSnapshotCache.get(key);
327
+ if (cached && cached.expiresAt > now) {
328
+ actorWithMemo.__responsibleUserSnapshotMemo.set(key, cached.promise);
329
+ return cached.promise;
330
+ }
331
+ const ttlMs = responsibleUserSnapshotTtlMs();
332
+ const promise = loadResponsibleUserSnapshot(input.companyId, input.userId);
333
+ if (ttlMs > 0) {
334
+ responsibleUserSnapshotCache.set(key, { expiresAt: now + ttlMs, promise });
335
+ promise.catch(() => {
336
+ if (responsibleUserSnapshotCache.get(key)?.promise === promise) {
337
+ responsibleUserSnapshotCache.delete(key);
338
+ }
339
+ });
340
+ }
341
+ actorWithMemo.__responsibleUserSnapshotMemo.set(key, promise);
342
+ return promise;
343
+ }
251
344
  async function findGrant(companyId, principalType, principalId, permissionKey) {
252
345
  return db
253
346
  .select()
@@ -485,6 +578,9 @@ export function authorizationService(db) {
485
578
  explanation,
486
579
  });
487
580
  if (input.action === "company_scope:read" ||
581
+ input.action === "agent_config:read" ||
582
+ input.action === "agent_config:update" ||
583
+ input.action === "skill_config:update" ||
488
584
  input.action === "runtime:manage" ||
489
585
  input.action === "secrets:read") {
490
586
  return lowTrustDeny(`${LOW_TRUST_REVIEW_PRESET} agents cannot use company-wide or privileged ${input.action} APIs by default.`);
@@ -638,6 +734,36 @@ export function authorizationService(db) {
638
734
  }
639
735
  return denyBridge("Task bridge key cannot use this API action.");
640
736
  }
737
+ function decideSkillTestAccess(input) {
738
+ const denySkillTest = (explanation) => deny({
739
+ action: input.action,
740
+ reason: "deny_scope",
741
+ explanation,
742
+ });
743
+ const allowSkillTest = (explanation) => allow({
744
+ action: input.action,
745
+ reason: "allow_explicit_grant",
746
+ explanation,
747
+ });
748
+ if (input.action === "company_scope:read" ||
749
+ input.action === "agent:read" ||
750
+ input.action === "agent:wake" ||
751
+ input.action === "project:read" ||
752
+ input.action === "runtime:manage" ||
753
+ input.action === "secrets:read" ||
754
+ input.action === "tasks:assign") {
755
+ return denySkillTest("Skill-test run tokens cannot use company-wide, peer-agent, project, runtime, secret, or task-create APIs.");
756
+ }
757
+ if (input.action === "issue:read" || input.action === "issue:comment" || input.action === "issue:mutate") {
758
+ if (input.resource.type !== "issue") {
759
+ return denySkillTest("Skill-test issue access requires an issue resource.");
760
+ }
761
+ return input.resource.issueId === input.scope.issueId
762
+ ? allowSkillTest("Allowed for the scoped skill-test issue.")
763
+ : denySkillTest("Skill-test run token can only access its own harness issue.");
764
+ }
765
+ return denySkillTest("Skill-test run token cannot use this API action.");
766
+ }
641
767
  async function assignmentTargetIsInCompany(resource) {
642
768
  if (resource.type !== "issue")
643
769
  return true;
@@ -738,7 +864,7 @@ export function authorizationService(db) {
738
864
  explanation: "Allowed by a mention-scoped issue comment grant.",
739
865
  });
740
866
  }
741
- async function decide(input) {
867
+ async function decideBase(input) {
742
868
  const permissionKey = permissionForAction(input.action);
743
869
  const companyId = companyIdForResource(input.resource);
744
870
  async function decideWithTaskAssignmentGrants(principalType, principalId) {
@@ -764,6 +890,86 @@ export function authorizationService(db) {
764
890
  return scopedDecision;
765
891
  return broadDecision;
766
892
  }
893
+ async function decideWithAgentConfigReadGrant(principalType, principalId) {
894
+ const configureDecision = await decidePrincipalGrant({
895
+ companyId,
896
+ principalType,
897
+ principalId,
898
+ action: input.action,
899
+ permissionKey: "agents:configure",
900
+ scope: input.scope,
901
+ });
902
+ if (configureDecision.allowed || configureDecision.reason === "deny_missing_membership") {
903
+ return configureDecision;
904
+ }
905
+ const suggestDecision = await decidePrincipalGrant({
906
+ companyId,
907
+ principalType,
908
+ principalId,
909
+ action: input.action,
910
+ permissionKey: "agents:suggest-changes",
911
+ scope: input.scope,
912
+ });
913
+ if (suggestDecision.allowed || suggestDecision.reason === "deny_missing_grant") {
914
+ return suggestDecision;
915
+ }
916
+ return configureDecision;
917
+ }
918
+ async function decideWithProtectedChangeGrants(principalType, principalId, keys) {
919
+ const directDecision = await decidePrincipalGrant({
920
+ companyId,
921
+ principalType,
922
+ principalId,
923
+ action: input.action,
924
+ permissionKey: keys.direct,
925
+ scope: input.scope,
926
+ });
927
+ if (directDecision.allowed) {
928
+ return allow({
929
+ action: input.action,
930
+ reason: "allow_direct_change",
931
+ explanation: `Allowed by direct change permission ${keys.direct}.`,
932
+ grant: directDecision.grant,
933
+ });
934
+ }
935
+ if (directDecision.reason === "deny_missing_membership")
936
+ return directDecision;
937
+ const suggestDecision = await decidePrincipalGrant({
938
+ companyId,
939
+ principalType,
940
+ principalId,
941
+ action: input.action,
942
+ permissionKey: keys.suggest,
943
+ scope: input.scope,
944
+ });
945
+ if (suggestDecision.allowed) {
946
+ if (scopeBoolean(input.scope, "consentedChange")) {
947
+ return allow({
948
+ action: input.action,
949
+ reason: "allow_consented_change",
950
+ explanation: `Allowed by suggest permission ${keys.suggest} after accepted change consent.`,
951
+ grant: suggestDecision.grant,
952
+ });
953
+ }
954
+ return deny({
955
+ action: input.action,
956
+ reason: "deny_missing_consent",
957
+ explanation: `Permission ${keys.suggest} requires accepted change consent before applying this mutation.`,
958
+ grant: suggestDecision.grant,
959
+ });
960
+ }
961
+ if (suggestDecision.reason === "deny_missing_membership")
962
+ return suggestDecision;
963
+ if (directDecision.reason === "deny_scope")
964
+ return directDecision;
965
+ if (suggestDecision.reason === "deny_scope")
966
+ return suggestDecision;
967
+ return deny({
968
+ action: input.action,
969
+ reason: "deny_no_grant",
970
+ explanation: `Missing permission: ${keys.direct} or ${keys.suggest}.`,
971
+ });
972
+ }
767
973
  async function denyForAssignmentPolicyIfNeeded(policyEffect) {
768
974
  if (policyEffect.kind === "none" || policyEffect.kind === "restricted")
769
975
  return null;
@@ -801,7 +1007,8 @@ export function authorizationService(db) {
801
1007
  // cloud_tenant actors are company-scoped by contract and must never be
802
1008
  // elevated — not even via stale instance_admin rows left behind by
803
1009
  // deployments that ran the pre-hardening cloud_tenant path.
804
- if (input.actor.source !== "cloud_tenant" &&
1010
+ if (!input.actor.ignoreInstanceAdmin &&
1011
+ input.actor.source !== "cloud_tenant" &&
805
1012
  (input.actor.isInstanceAdmin || await isInstanceAdmin(input.actor.userId))) {
806
1013
  return allow({
807
1014
  action: input.action,
@@ -912,6 +1119,21 @@ export function authorizationService(db) {
912
1119
  return denyRestrictedAssignmentPolicy(policyEffect);
913
1120
  return grantDecision;
914
1121
  }
1122
+ if (input.action === "agent_config:read") {
1123
+ return decideWithAgentConfigReadGrant("user", input.actor.userId);
1124
+ }
1125
+ if (input.action === "agent_config:update") {
1126
+ return decideWithProtectedChangeGrants("user", input.actor.userId, {
1127
+ direct: "agents:configure",
1128
+ suggest: "agents:suggest-changes",
1129
+ });
1130
+ }
1131
+ if (input.action === "skill_config:update") {
1132
+ return decideWithProtectedChangeGrants("user", input.actor.userId, {
1133
+ direct: "skills:create",
1134
+ suggest: "skills:suggest-changes",
1135
+ });
1136
+ }
915
1137
  return decidePrincipalGrant({
916
1138
  companyId,
917
1139
  principalType: "user",
@@ -944,6 +1166,15 @@ export function authorizationService(db) {
944
1166
  explanation: "Actor agent was not found in the target company.",
945
1167
  });
946
1168
  }
1169
+ if (input.actor.keyScope?.kind === "skill_test") {
1170
+ const skillTestDecision = decideSkillTestAccess({
1171
+ action: input.action,
1172
+ resource: input.resource,
1173
+ scope: input.actor.keyScope,
1174
+ });
1175
+ if (skillTestDecision)
1176
+ return skillTestDecision;
1177
+ }
947
1178
  if (input.actor.source === "agent_key" && input.actor.keyScope?.kind === "task_bridge") {
948
1179
  const keyId = input.actor.keyId ?? null;
949
1180
  if (!keyId) {
@@ -1068,13 +1299,36 @@ export function authorizationService(db) {
1068
1299
  }
1069
1300
  if (input.action === "agent_config:update" &&
1070
1301
  input.resource.type === "agent" &&
1071
- input.resource.agentId === actorAgentId) {
1302
+ input.resource.agentId === actorAgentId &&
1303
+ !scopeBoolean(input.scope, "requiresChangeGrant")) {
1072
1304
  return allow({
1073
1305
  action: input.action,
1074
1306
  reason: "allow_self",
1075
1307
  explanation: "Allowed because the actor is updating its own agent configuration.",
1076
1308
  });
1077
1309
  }
1310
+ if (input.action === "agent_config:read") {
1311
+ if (input.resource.type === "agent" && input.resource.agentId === actorAgentId) {
1312
+ return allow({
1313
+ action: input.action,
1314
+ reason: "allow_self",
1315
+ explanation: "Allowed because the actor is reading its own agent configuration.",
1316
+ });
1317
+ }
1318
+ return decideWithAgentConfigReadGrant("agent", actorAgentId);
1319
+ }
1320
+ if (input.action === "agent_config:update") {
1321
+ return decideWithProtectedChangeGrants("agent", actorAgentId, {
1322
+ direct: "agents:configure",
1323
+ suggest: "agents:suggest-changes",
1324
+ });
1325
+ }
1326
+ if (input.action === "skill_config:update") {
1327
+ return decideWithProtectedChangeGrants("agent", actorAgentId, {
1328
+ direct: "skills:create",
1329
+ suggest: "skills:suggest-changes",
1330
+ });
1331
+ }
1078
1332
  if (permissionKey) {
1079
1333
  const grantDecision = await decidePrincipalGrant({
1080
1334
  companyId,
@@ -1088,8 +1342,6 @@ export function authorizationService(db) {
1088
1342
  return grantDecision;
1089
1343
  }
1090
1344
  if ((input.action === "agents:create" ||
1091
- input.action === "agent_config:read" ||
1092
- input.action === "agent_config:update" ||
1093
1345
  input.action === "tasks:manage_active_checkouts") &&
1094
1346
  canCreateAgentsLegacy(actorAgent)) {
1095
1347
  return allow({
@@ -1116,6 +1368,70 @@ export function authorizationService(db) {
1116
1368
  : `No agent permission mapping exists for ${input.action}.`,
1117
1369
  });
1118
1370
  }
1371
+ async function applyResponsibleUserIntersection(input, agentDecision) {
1372
+ const responsibleUserId = input.actor.onBehalfOfUserId?.trim();
1373
+ if (input.actor.type !== "agent" || !responsibleUserId || !agentDecision.allowed) {
1374
+ return agentDecision;
1375
+ }
1376
+ const companyId = companyIdForResource(input.resource);
1377
+ const snapshot = await getResponsibleUserSnapshot({
1378
+ actor: input.actor,
1379
+ companyId,
1380
+ userId: responsibleUserId,
1381
+ });
1382
+ const denyCode = snapshot.userExists && snapshot.activeMembership
1383
+ ? "RESPONSIBLE_USER_UNAUTHORIZED"
1384
+ : "RESPONSIBLE_USER_UNAVAILABLE";
1385
+ const userDecision = snapshot.userExists && snapshot.activeMembership
1386
+ ? await decideBase({
1387
+ ...input,
1388
+ actor: {
1389
+ type: "board",
1390
+ userId: responsibleUserId,
1391
+ companyIds: [companyId],
1392
+ memberships: [snapshot.activeMembership],
1393
+ isInstanceAdmin: false,
1394
+ ignoreInstanceAdmin: true,
1395
+ source: "session",
1396
+ },
1397
+ })
1398
+ : deny({
1399
+ action: input.action,
1400
+ reason: "deny_missing_membership",
1401
+ explanation: `Responsible user ${responsibleUserId} is unavailable for company ${companyId}.`,
1402
+ });
1403
+ if (!userDecision.allowed &&
1404
+ userDecision.reason === "deny_unsupported_action" &&
1405
+ activeResponsibleUserCanAuthorizeIssueAction(input.action, snapshot.activeMembership)) {
1406
+ return agentDecision;
1407
+ }
1408
+ if (userDecision.allowed)
1409
+ return agentDecision;
1410
+ const denied = deny({
1411
+ action: input.action,
1412
+ reason: userDecision.reason,
1413
+ code: denyCode,
1414
+ explanation: denyCode === "RESPONSIBLE_USER_UNAVAILABLE"
1415
+ ? `Responsible user ${responsibleUserId} is unavailable for company ${companyId}.`
1416
+ : `Responsible user ${responsibleUserId} is not authorized for ${input.action}: ${userDecision.explanation}`,
1417
+ grant: userDecision.grant,
1418
+ });
1419
+ logger.warn({
1420
+ authzMode: responsibleUserAuthzShadowMode() ? "shadow" : "enforce",
1421
+ code: denied.code,
1422
+ reason: userDecision.reason,
1423
+ action: input.action,
1424
+ resourceType: input.resource.type,
1425
+ companyId,
1426
+ actorAgentId: input.actor.agentId ?? null,
1427
+ responsibleUserId,
1428
+ }, "responsible-user authorization intersection denied");
1429
+ return responsibleUserAuthzShadowMode() ? agentDecision : denied;
1430
+ }
1431
+ async function decide(input) {
1432
+ const agentDecision = await decideBase(input);
1433
+ return applyResponsibleUserIntersection(input, agentDecision);
1434
+ }
1119
1435
  return {
1120
1436
  decide,
1121
1437
  decidePrincipalGrant,