@paperclipai/server 2026.824.1 → 2026.825.0-beta.1

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 (519) hide show
  1. package/dist/adapters/builtin-adapter-types.d.ts.map +1 -1
  2. package/dist/adapters/builtin-adapter-types.js +1 -0
  3. package/dist/adapters/builtin-adapter-types.js.map +1 -1
  4. package/dist/adapters/plugin-loader.d.ts +1 -0
  5. package/dist/adapters/plugin-loader.d.ts.map +1 -1
  6. package/dist/adapters/plugin-loader.js +12 -1
  7. package/dist/adapters/plugin-loader.js.map +1 -1
  8. package/dist/adapters/plugin-loader.test.d.ts +2 -0
  9. package/dist/adapters/plugin-loader.test.d.ts.map +1 -0
  10. package/dist/adapters/plugin-loader.test.js +37 -0
  11. package/dist/adapters/plugin-loader.test.js.map +1 -0
  12. package/dist/adapters/registry.d.ts.map +1 -1
  13. package/dist/adapters/registry.js +68 -5
  14. package/dist/adapters/registry.js.map +1 -1
  15. package/dist/adapters/registry.test.d.ts +2 -0
  16. package/dist/adapters/registry.test.d.ts.map +1 -0
  17. package/dist/adapters/registry.test.js +35 -0
  18. package/dist/adapters/registry.test.js.map +1 -0
  19. package/dist/app.d.ts.map +1 -1
  20. package/dist/app.js +5 -7
  21. package/dist/app.js.map +1 -1
  22. package/dist/auth/better-auth.d.ts +10 -0
  23. package/dist/auth/better-auth.d.ts.map +1 -1
  24. package/dist/auth/better-auth.js +47 -0
  25. package/dist/auth/better-auth.js.map +1 -1
  26. package/dist/auth/workspace-login-handoff-exchange.d.ts +75 -0
  27. package/dist/auth/workspace-login-handoff-exchange.d.ts.map +1 -0
  28. package/dist/auth/workspace-login-handoff-exchange.js +73 -0
  29. package/dist/auth/workspace-login-handoff-exchange.js.map +1 -0
  30. package/dist/auth/workspace-login-handoff-plugin.d.ts +40 -0
  31. package/dist/auth/workspace-login-handoff-plugin.d.ts.map +1 -0
  32. package/dist/auth/workspace-login-handoff-plugin.js +140 -0
  33. package/dist/auth/workspace-login-handoff-plugin.js.map +1 -0
  34. package/dist/auth/workspace-login-handoff.d.ts +189 -0
  35. package/dist/auth/workspace-login-handoff.d.ts.map +1 -0
  36. package/dist/auth/workspace-login-handoff.js +319 -0
  37. package/dist/auth/workspace-login-handoff.js.map +1 -0
  38. package/dist/build-info.json +3 -0
  39. package/dist/config.d.ts +1 -0
  40. package/dist/config.d.ts.map +1 -1
  41. package/dist/config.js +14 -0
  42. package/dist/config.js.map +1 -1
  43. package/dist/dev-runner-worktree.d.ts.map +1 -1
  44. package/dist/dev-runner-worktree.js +5 -0
  45. package/dist/dev-runner-worktree.js.map +1 -1
  46. package/dist/duplex-aggregate-ceiling-env.d.ts +21 -0
  47. package/dist/duplex-aggregate-ceiling-env.d.ts.map +1 -0
  48. package/dist/duplex-aggregate-ceiling-env.js +23 -0
  49. package/dist/duplex-aggregate-ceiling-env.js.map +1 -0
  50. package/dist/embedded-postgres-supervisor.d.ts +27 -0
  51. package/dist/embedded-postgres-supervisor.d.ts.map +1 -0
  52. package/dist/embedded-postgres-supervisor.js +72 -0
  53. package/dist/embedded-postgres-supervisor.js.map +1 -0
  54. package/dist/errors.d.ts +2 -0
  55. package/dist/errors.d.ts.map +1 -1
  56. package/dist/errors.js +6 -0
  57. package/dist/errors.js.map +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +115 -7
  60. package/dist/index.js.map +1 -1
  61. package/dist/instrumentation.d.ts +33 -0
  62. package/dist/instrumentation.d.ts.map +1 -1
  63. package/dist/instrumentation.js +68 -1
  64. package/dist/instrumentation.js.map +1 -1
  65. package/dist/middleware/auth.d.ts.map +1 -1
  66. package/dist/middleware/auth.js +35 -10
  67. package/dist/middleware/auth.js.map +1 -1
  68. package/dist/middleware/error-handler.d.ts.map +1 -1
  69. package/dist/middleware/error-handler.js +8 -1
  70. package/dist/middleware/error-handler.js.map +1 -1
  71. package/dist/middleware/logger.d.ts.map +1 -1
  72. package/dist/middleware/logger.js +5 -2
  73. package/dist/middleware/logger.js.map +1 -1
  74. package/dist/middleware/redact-sensitive.d.ts.map +1 -1
  75. package/dist/middleware/redact-sensitive.js +4 -0
  76. package/dist/middleware/redact-sensitive.js.map +1 -1
  77. package/dist/middleware/validate.d.ts +3 -1
  78. package/dist/middleware/validate.d.ts.map +1 -1
  79. package/dist/middleware/validate.js +37 -0
  80. package/dist/middleware/validate.js.map +1 -1
  81. package/dist/routes/access.d.ts.map +1 -1
  82. package/dist/routes/access.js +20 -0
  83. package/dist/routes/access.js.map +1 -1
  84. package/dist/routes/activity.js +4 -4
  85. package/dist/routes/activity.js.map +1 -1
  86. package/dist/routes/adapter-login-route-spine.d.ts +81 -0
  87. package/dist/routes/adapter-login-route-spine.d.ts.map +1 -0
  88. package/dist/routes/adapter-login-route-spine.js +40 -0
  89. package/dist/routes/adapter-login-route-spine.js.map +1 -0
  90. package/dist/routes/adapters.d.ts +33 -0
  91. package/dist/routes/adapters.d.ts.map +1 -1
  92. package/dist/routes/adapters.js +35 -1
  93. package/dist/routes/adapters.js.map +1 -1
  94. package/dist/routes/adapters.test.d.ts +2 -0
  95. package/dist/routes/adapters.test.d.ts.map +1 -0
  96. package/dist/routes/adapters.test.js +58 -0
  97. package/dist/routes/adapters.test.js.map +1 -0
  98. package/dist/routes/agents.d.ts.map +1 -1
  99. package/dist/routes/agents.js +281 -91
  100. package/dist/routes/agents.js.map +1 -1
  101. package/dist/routes/cases.d.ts +11 -22
  102. package/dist/routes/cases.d.ts.map +1 -1
  103. package/dist/routes/cases.js +13 -13
  104. package/dist/routes/companies.js +3 -3
  105. package/dist/routes/decision-training.js +6 -6
  106. package/dist/routes/decisions.js +4 -4
  107. package/dist/routes/decisions.js.map +1 -1
  108. package/dist/routes/environments.d.ts.map +1 -1
  109. package/dist/routes/environments.js +79 -6
  110. package/dist/routes/environments.js.map +1 -1
  111. package/dist/routes/execution-workspaces.d.ts.map +1 -1
  112. package/dist/routes/execution-workspaces.js +384 -16
  113. package/dist/routes/execution-workspaces.js.map +1 -1
  114. package/dist/routes/file-resources.js +2 -2
  115. package/dist/routes/health.d.ts.map +1 -1
  116. package/dist/routes/health.js +58 -4
  117. package/dist/routes/health.js.map +1 -1
  118. package/dist/routes/instance-settings.d.ts.map +1 -1
  119. package/dist/routes/instance-settings.js +40 -0
  120. package/dist/routes/instance-settings.js.map +1 -1
  121. package/dist/routes/issues.d.ts +10 -0
  122. package/dist/routes/issues.d.ts.map +1 -1
  123. package/dist/routes/issues.js +495 -65
  124. package/dist/routes/issues.js.map +1 -1
  125. package/dist/routes/openapi.d.ts.map +1 -1
  126. package/dist/routes/openapi.js +241 -122
  127. package/dist/routes/openapi.js.map +1 -1
  128. package/dist/routes/pipelines.js +19 -19
  129. package/dist/routes/plugins.d.ts.map +1 -1
  130. package/dist/routes/plugins.js +22 -0
  131. package/dist/routes/plugins.js.map +1 -1
  132. package/dist/routes/projects.d.ts.map +1 -1
  133. package/dist/routes/projects.js +2 -0
  134. package/dist/routes/projects.js.map +1 -1
  135. package/dist/routes/routines.js +2 -2
  136. package/dist/routes/routines.js.map +1 -1
  137. package/dist/routes/secrets.d.ts +1 -1
  138. package/dist/routes/secrets.d.ts.map +1 -1
  139. package/dist/routes/secrets.js +39 -50
  140. package/dist/routes/secrets.js.map +1 -1
  141. package/dist/routes/setup-token-route.test.js +50 -3
  142. package/dist/routes/setup-token-route.test.js.map +1 -1
  143. package/dist/services/adapter-login-lease.d.ts +50 -0
  144. package/dist/services/adapter-login-lease.d.ts.map +1 -0
  145. package/dist/services/adapter-login-lease.js +26 -0
  146. package/dist/services/adapter-login-lease.js.map +1 -0
  147. package/dist/services/adapter-login-lease.test.d.ts +2 -0
  148. package/dist/services/adapter-login-lease.test.d.ts.map +1 -0
  149. package/dist/services/adapter-login-lease.test.js +68 -0
  150. package/dist/services/adapter-login-lease.test.js.map +1 -0
  151. package/dist/services/agent-action-audit.js +1 -1
  152. package/dist/services/agent-secret-bindings.d.ts +15 -0
  153. package/dist/services/agent-secret-bindings.d.ts.map +1 -1
  154. package/dist/services/agent-secret-bindings.js +2 -2
  155. package/dist/services/agent-secret-bindings.js.map +1 -1
  156. package/dist/services/agents.d.ts +13 -13
  157. package/dist/services/agents.d.ts.map +1 -1
  158. package/dist/services/agents.js +46 -5
  159. package/dist/services/agents.js.map +1 -1
  160. package/dist/services/artifact-review-documents.d.ts +34 -0
  161. package/dist/services/artifact-review-documents.d.ts.map +1 -0
  162. package/dist/services/artifact-review-documents.js +196 -0
  163. package/dist/services/artifact-review-documents.js.map +1 -0
  164. package/dist/services/assets.d.ts +1 -1
  165. package/dist/services/codex-device-login-credential-read.d.ts +58 -0
  166. package/dist/services/codex-device-login-credential-read.d.ts.map +1 -0
  167. package/dist/services/codex-device-login-credential-read.js +118 -0
  168. package/dist/services/codex-device-login-credential-read.js.map +1 -0
  169. package/dist/services/codex-device-login-reaper.d.ts.map +1 -1
  170. package/dist/services/codex-device-login-reaper.js +8 -5
  171. package/dist/services/codex-device-login-reaper.js.map +1 -1
  172. package/dist/services/codex-device-login-service.d.ts +127 -36
  173. package/dist/services/codex-device-login-service.d.ts.map +1 -1
  174. package/dist/services/codex-device-login-service.js +204 -84
  175. package/dist/services/codex-device-login-service.js.map +1 -1
  176. package/dist/services/company-portability.d.ts +3 -1
  177. package/dist/services/company-portability.d.ts.map +1 -1
  178. package/dist/services/company-portability.js +76 -20
  179. package/dist/services/company-portability.js.map +1 -1
  180. package/dist/services/company-skill-policy.d.ts +1 -1
  181. package/dist/services/costs.d.ts +1 -1
  182. package/dist/services/decisions.d.ts +6 -6
  183. package/dist/services/duplex-observability-recorder.d.ts +62 -0
  184. package/dist/services/duplex-observability-recorder.d.ts.map +1 -0
  185. package/dist/services/duplex-observability-recorder.js +54 -0
  186. package/dist/services/duplex-observability-recorder.js.map +1 -0
  187. package/dist/services/environment-config.js +5 -5
  188. package/dist/services/environment-config.js.map +1 -1
  189. package/dist/services/environment-custom-image-runtime.d.ts +116 -0
  190. package/dist/services/environment-custom-image-runtime.d.ts.map +1 -1
  191. package/dist/services/environment-custom-image-runtime.js +255 -1
  192. package/dist/services/environment-custom-image-runtime.js.map +1 -1
  193. package/dist/services/environment-custom-images.d.ts +39 -0
  194. package/dist/services/environment-custom-images.d.ts.map +1 -1
  195. package/dist/services/environment-custom-images.js +219 -17
  196. package/dist/services/environment-custom-images.js.map +1 -1
  197. package/dist/services/environment-driver-traits.d.ts +109 -0
  198. package/dist/services/environment-driver-traits.d.ts.map +1 -0
  199. package/dist/services/environment-driver-traits.js +102 -0
  200. package/dist/services/environment-driver-traits.js.map +1 -0
  201. package/dist/services/environment-execution-target.d.ts +4 -0
  202. package/dist/services/environment-execution-target.d.ts.map +1 -1
  203. package/dist/services/environment-execution-target.js +63 -7
  204. package/dist/services/environment-execution-target.js.map +1 -1
  205. package/dist/services/environment-run-orchestrator.d.ts +27 -1
  206. package/dist/services/environment-run-orchestrator.d.ts.map +1 -1
  207. package/dist/services/environment-run-orchestrator.js +24 -4
  208. package/dist/services/environment-run-orchestrator.js.map +1 -1
  209. package/dist/services/environment-runtime.d.ts +118 -20
  210. package/dist/services/environment-runtime.d.ts.map +1 -1
  211. package/dist/services/environment-runtime.js +436 -91
  212. package/dist/services/environment-runtime.js.map +1 -1
  213. package/dist/services/environments.d.ts.map +1 -1
  214. package/dist/services/environments.js +20 -2
  215. package/dist/services/environments.js.map +1 -1
  216. package/dist/services/execution-workspace-branch-ownership.d.ts +4 -0
  217. package/dist/services/execution-workspace-branch-ownership.d.ts.map +1 -0
  218. package/dist/services/execution-workspace-branch-ownership.js +9 -0
  219. package/dist/services/execution-workspace-branch-ownership.js.map +1 -0
  220. package/dist/services/execution-workspace-policy.d.ts.map +1 -1
  221. package/dist/services/execution-workspace-policy.js +3 -0
  222. package/dist/services/execution-workspace-policy.js.map +1 -1
  223. package/dist/services/execution-workspaces.d.ts +2 -0
  224. package/dist/services/execution-workspaces.d.ts.map +1 -1
  225. package/dist/services/execution-workspaces.js +90 -2
  226. package/dist/services/execution-workspaces.js.map +1 -1
  227. package/dist/services/external-objects.d.ts +19 -19
  228. package/dist/services/finance.d.ts +1 -1
  229. package/dist/services/goals.d.ts +2 -2
  230. package/dist/services/heartbeat-policy.d.ts +3 -0
  231. package/dist/services/heartbeat-policy.d.ts.map +1 -0
  232. package/dist/services/heartbeat-policy.js +10 -0
  233. package/dist/services/heartbeat-policy.js.map +1 -0
  234. package/dist/services/heartbeat-run-runtime-status.test.js +1 -1
  235. package/dist/services/heartbeat-run-runtime-status.test.js.map +1 -1
  236. package/dist/services/heartbeat.d.ts +23 -1
  237. package/dist/services/heartbeat.d.ts.map +1 -1
  238. package/dist/services/heartbeat.js +192 -11
  239. package/dist/services/heartbeat.js.map +1 -1
  240. package/dist/services/index.d.ts +1 -0
  241. package/dist/services/index.d.ts.map +1 -1
  242. package/dist/services/index.js +1 -0
  243. package/dist/services/index.js.map +1 -1
  244. package/dist/services/instance-settings.d.ts.map +1 -1
  245. package/dist/services/instance-settings.js +2 -0
  246. package/dist/services/instance-settings.js.map +1 -1
  247. package/dist/services/issue-dependency-wakeups.d.ts +57 -9
  248. package/dist/services/issue-dependency-wakeups.d.ts.map +1 -1
  249. package/dist/services/issue-dependency-wakeups.js +146 -14
  250. package/dist/services/issue-dependency-wakeups.js.map +1 -1
  251. package/dist/services/issue-dependency-wakeups.test.d.ts +2 -0
  252. package/dist/services/issue-dependency-wakeups.test.d.ts.map +1 -0
  253. package/dist/services/issue-dependency-wakeups.test.js +183 -0
  254. package/dist/services/issue-dependency-wakeups.test.js.map +1 -0
  255. package/dist/services/issue-recovery-actions.d.ts +6 -1
  256. package/dist/services/issue-recovery-actions.d.ts.map +1 -1
  257. package/dist/services/issue-recovery-actions.js +123 -44
  258. package/dist/services/issue-recovery-actions.js.map +1 -1
  259. package/dist/services/issue-thread-interactions.d.ts +8 -0
  260. package/dist/services/issue-thread-interactions.d.ts.map +1 -1
  261. package/dist/services/issue-thread-interactions.js +220 -10
  262. package/dist/services/issue-thread-interactions.js.map +1 -1
  263. package/dist/services/issues.d.ts +8 -7
  264. package/dist/services/issues.d.ts.map +1 -1
  265. package/dist/services/issues.js +84 -12
  266. package/dist/services/issues.js.map +1 -1
  267. package/dist/services/local-service-supervisor.d.ts +61 -1
  268. package/dist/services/local-service-supervisor.d.ts.map +1 -1
  269. package/dist/services/local-service-supervisor.js +221 -25
  270. package/dist/services/local-service-supervisor.js.map +1 -1
  271. package/dist/services/login-command.d.ts +46 -0
  272. package/dist/services/login-command.d.ts.map +1 -0
  273. package/dist/services/login-command.js +87 -0
  274. package/dist/services/login-command.js.map +1 -0
  275. package/dist/services/login-command.test.d.ts +2 -0
  276. package/dist/services/login-command.test.d.ts.map +1 -0
  277. package/dist/services/login-command.test.js +71 -0
  278. package/dist/services/login-command.test.js.map +1 -0
  279. package/dist/services/managed-workspace-identity.d.ts +140 -0
  280. package/dist/services/managed-workspace-identity.d.ts.map +1 -0
  281. package/dist/services/managed-workspace-identity.js +277 -0
  282. package/dist/services/managed-workspace-identity.js.map +1 -0
  283. package/dist/services/plugin-environment-driver.d.ts +15 -1
  284. package/dist/services/plugin-environment-driver.d.ts.map +1 -1
  285. package/dist/services/plugin-environment-driver.js +23 -1
  286. package/dist/services/plugin-environment-driver.js.map +1 -1
  287. package/dist/services/plugin-host-services.d.ts +3 -2
  288. package/dist/services/plugin-host-services.d.ts.map +1 -1
  289. package/dist/services/plugin-host-services.js +11 -2
  290. package/dist/services/plugin-host-services.js.map +1 -1
  291. package/dist/services/plugin-loader.d.ts.map +1 -1
  292. package/dist/services/plugin-loader.js +39 -8
  293. package/dist/services/plugin-loader.js.map +1 -1
  294. package/dist/services/plugin-managed-agents.d.ts.map +1 -1
  295. package/dist/services/plugin-managed-agents.js +50 -5
  296. package/dist/services/plugin-managed-agents.js.map +1 -1
  297. package/dist/services/plugin-manifest-validator.d.ts.map +1 -1
  298. package/dist/services/plugin-manifest-validator.js +5 -2
  299. package/dist/services/plugin-manifest-validator.js.map +1 -1
  300. package/dist/services/plugin-registry.d.ts +5 -5
  301. package/dist/services/plugin-worker-manager.d.ts +158 -11
  302. package/dist/services/plugin-worker-manager.d.ts.map +1 -1
  303. package/dist/services/plugin-worker-manager.js +1139 -79
  304. package/dist/services/plugin-worker-manager.js.map +1 -1
  305. package/dist/services/projects.d.ts +1 -1
  306. package/dist/services/recovery/disposition-repair.d.ts +24 -0
  307. package/dist/services/recovery/disposition-repair.d.ts.map +1 -0
  308. package/dist/services/recovery/disposition-repair.js +125 -0
  309. package/dist/services/recovery/disposition-repair.js.map +1 -0
  310. package/dist/services/recovery/service.d.ts +6 -6
  311. package/dist/services/recovery/service.d.ts.map +1 -1
  312. package/dist/services/recovery/service.js +856 -384
  313. package/dist/services/recovery/service.js.map +1 -1
  314. package/dist/services/recovery/stranded-notice.js +4 -4
  315. package/dist/services/recovery/stranded-notice.js.map +1 -1
  316. package/dist/services/recovery/stranded-notice.test.js +1 -1
  317. package/dist/services/recovery/stranded-notice.test.js.map +1 -1
  318. package/dist/services/recovery/successful-run-handoff.d.ts +1 -1
  319. package/dist/services/recovery/successful-run-handoff.d.ts.map +1 -1
  320. package/dist/services/recovery/successful-run-handoff.js +6 -4
  321. package/dist/services/recovery/successful-run-handoff.js.map +1 -1
  322. package/dist/services/recovery/successful-run-handoff.test.js +1 -1
  323. package/dist/services/recovery/successful-run-handoff.test.js.map +1 -1
  324. package/dist/services/recovery-observability.d.ts +1 -1
  325. package/dist/services/recovery-observability.d.ts.map +1 -1
  326. package/dist/services/recovery-observability.js +4 -1
  327. package/dist/services/recovery-observability.js.map +1 -1
  328. package/dist/services/routines.d.ts.map +1 -1
  329. package/dist/services/routines.js +86 -1
  330. package/dist/services/routines.js.map +1 -1
  331. package/dist/services/runtime-exposure/loopback-listener.js +1 -1
  332. package/dist/services/runtime-exposure/loopback-listener.js.map +1 -1
  333. package/dist/services/runtime-exposure/loopback-listener.test.js +1 -1
  334. package/dist/services/runtime-exposure/loopback-listener.test.js.map +1 -1
  335. package/dist/services/scripts/codex-auth-read.cjs +93 -0
  336. package/dist/services/secret-proposal-authorization.d.ts +15 -0
  337. package/dist/services/secret-proposal-authorization.d.ts.map +1 -0
  338. package/dist/services/secret-proposal-authorization.js +29 -0
  339. package/dist/services/secret-proposal-authorization.js.map +1 -0
  340. package/dist/services/secret-proposal-notifications.d.ts +18 -0
  341. package/dist/services/secret-proposal-notifications.d.ts.map +1 -0
  342. package/dist/services/secret-proposal-notifications.js +37 -0
  343. package/dist/services/secret-proposal-notifications.js.map +1 -0
  344. package/dist/services/secret-proposals.d.ts +20 -10
  345. package/dist/services/secret-proposals.d.ts.map +1 -1
  346. package/dist/services/secret-proposals.js +205 -14
  347. package/dist/services/secret-proposals.js.map +1 -1
  348. package/dist/services/secrets.d.ts +3 -3
  349. package/dist/services/settings-visibility.d.ts +17 -0
  350. package/dist/services/settings-visibility.d.ts.map +1 -0
  351. package/dist/services/settings-visibility.js +29 -0
  352. package/dist/services/settings-visibility.js.map +1 -0
  353. package/dist/services/setup-token-reaper.d.ts +36 -0
  354. package/dist/services/setup-token-reaper.d.ts.map +1 -0
  355. package/dist/services/setup-token-reaper.js +38 -0
  356. package/dist/services/setup-token-reaper.js.map +1 -0
  357. package/dist/services/setup-token-reaper.test.d.ts +2 -0
  358. package/dist/services/setup-token-reaper.test.d.ts.map +1 -0
  359. package/dist/services/setup-token-reaper.test.js +123 -0
  360. package/dist/services/setup-token-reaper.test.js.map +1 -0
  361. package/dist/services/setup-token-session.d.ts +57 -45
  362. package/dist/services/setup-token-session.d.ts.map +1 -1
  363. package/dist/services/setup-token-session.js +118 -110
  364. package/dist/services/setup-token-session.js.map +1 -1
  365. package/dist/services/setup-token-session.test.js +88 -47
  366. package/dist/services/setup-token-session.test.js.map +1 -1
  367. package/dist/services/setup-token-transport-binding.d.ts +20 -12
  368. package/dist/services/setup-token-transport-binding.d.ts.map +1 -1
  369. package/dist/services/setup-token-transport-binding.js +59 -32
  370. package/dist/services/setup-token-transport-binding.js.map +1 -1
  371. package/dist/services/setup-token-transport-binding.test.js +50 -17
  372. package/dist/services/setup-token-transport-binding.test.js.map +1 -1
  373. package/dist/services/smoke-lab.d.ts +1 -1
  374. package/dist/services/stalled-review-decisions.d.ts +1 -1
  375. package/dist/services/status-cards.d.ts +168 -168
  376. package/dist/services/tool-access-policy.d.ts +2 -2
  377. package/dist/services/tool-gateway.d.ts +1 -1
  378. package/dist/services/work-products.d.ts +19 -0
  379. package/dist/services/work-products.d.ts.map +1 -1
  380. package/dist/services/work-products.js +50 -3
  381. package/dist/services/work-products.js.map +1 -1
  382. package/dist/services/workspace-git-operation-scheduler.test.js +10 -3
  383. package/dist/services/workspace-git-operation-scheduler.test.js.map +1 -1
  384. package/dist/services/workspace-instance-cleanup.d.ts +9 -0
  385. package/dist/services/workspace-instance-cleanup.d.ts.map +1 -1
  386. package/dist/services/workspace-instance-cleanup.js +29 -3
  387. package/dist/services/workspace-instance-cleanup.js.map +1 -1
  388. package/dist/services/workspace-login-handoff-issuer.d.ts +95 -0
  389. package/dist/services/workspace-login-handoff-issuer.d.ts.map +1 -0
  390. package/dist/services/workspace-login-handoff-issuer.js +147 -0
  391. package/dist/services/workspace-login-handoff-issuer.js.map +1 -0
  392. package/dist/services/workspace-operations.d.ts +4 -1
  393. package/dist/services/workspace-operations.d.ts.map +1 -1
  394. package/dist/services/workspace-operations.js +29 -15
  395. package/dist/services/workspace-operations.js.map +1 -1
  396. package/dist/services/workspace-readiness.d.ts +56 -0
  397. package/dist/services/workspace-readiness.d.ts.map +1 -0
  398. package/dist/services/workspace-readiness.js +250 -0
  399. package/dist/services/workspace-readiness.js.map +1 -0
  400. package/dist/services/workspace-realization.d.ts.map +1 -1
  401. package/dist/services/workspace-realization.js +5 -33
  402. package/dist/services/workspace-realization.js.map +1 -1
  403. package/dist/services/workspace-runtime-exposure.test.js +321 -12
  404. package/dist/services/workspace-runtime-exposure.test.js.map +1 -1
  405. package/dist/services/workspace-runtime-leases.d.ts.map +1 -1
  406. package/dist/services/workspace-runtime-leases.js +1 -1
  407. package/dist/services/workspace-runtime-leases.js.map +1 -1
  408. package/dist/services/workspace-runtime-read-model.d.ts +8 -8
  409. package/dist/services/workspace-runtime-read-model.test.js +20 -0
  410. package/dist/services/workspace-runtime-read-model.test.js.map +1 -1
  411. package/dist/services/workspace-runtime-ready-comment.test.js +1 -0
  412. package/dist/services/workspace-runtime-ready-comment.test.js.map +1 -1
  413. package/dist/services/workspace-runtime.d.ts +77 -4
  414. package/dist/services/workspace-runtime.d.ts.map +1 -1
  415. package/dist/services/workspace-runtime.js +1020 -126
  416. package/dist/services/workspace-runtime.js.map +1 -1
  417. package/dist/worktree-config.d.ts.map +1 -1
  418. package/dist/worktree-config.js +3 -76
  419. package/dist/worktree-config.js.map +1 -1
  420. package/dist/worktree-seed-manifest.d.ts +8 -0
  421. package/dist/worktree-seed-manifest.d.ts.map +1 -0
  422. package/dist/worktree-seed-manifest.js +47 -0
  423. package/dist/worktree-seed-manifest.js.map +1 -0
  424. package/package.json +34 -30
  425. package/skills/paperclip/SKILL.md +2 -0
  426. package/skills/paperclip/references/api-reference.md +44 -2
  427. package/ui-dist/assets/CompanyExport-DnEsO-St.js +4 -0
  428. package/ui-dist/assets/{abnfDiagram-N423BO3Z-BvgoV-u5.js → abnfDiagram-N423BO3Z-2ff8TsQ0.js} +1 -1
  429. package/ui-dist/assets/{arc-BInnUBUU.js → arc-B2AXsH34.js} +1 -1
  430. package/ui-dist/assets/architectureDiagram-T3A2C74G-BDxtKMxk.js +36 -0
  431. package/ui-dist/assets/{blockDiagram-VBNYF7ZC-D9kzAkLN.js → blockDiagram-VBNYF7ZC-BB8T5Mj5.js} +1 -1
  432. package/ui-dist/assets/{c4Diagram-5PPSVZJV-BwzsgV_0.js → c4Diagram-5PPSVZJV-lMo8qk-x.js} +1 -1
  433. package/ui-dist/assets/channel-DCTVZpyq.js +1 -0
  434. package/ui-dist/assets/{chunk-2GRJ4B5K-D2EQ9vrl.js → chunk-2GRJ4B5K-CsS7EB3G.js} +1 -1
  435. package/ui-dist/assets/{chunk-2Q5K7J3B-DOA_8fSd.js → chunk-2Q5K7J3B-DFyQPjoR.js} +1 -1
  436. package/ui-dist/assets/{chunk-5RXB4S5H-CT5ukRiT.js → chunk-5RXB4S5H-No2SHOQR.js} +1 -1
  437. package/ui-dist/assets/{chunk-5VM5RSS4-D2gOlkyB.js → chunk-5VM5RSS4-DdxQO7V9.js} +1 -1
  438. package/ui-dist/assets/{chunk-6Q2QTUOP-DUb6aG8c.js → chunk-6Q2QTUOP-gbHjh-aK.js} +1 -1
  439. package/ui-dist/assets/{chunk-GF5L2VYU-BPabG3Cx.js → chunk-GF5L2VYU-h-BBl6NY.js} +1 -1
  440. package/ui-dist/assets/{chunk-JWPE2WC7-scNfhlZz.js → chunk-JWPE2WC7-Q3pJdTz5.js} +1 -1
  441. package/ui-dist/assets/{chunk-KBJHAD2P-BcRAzRpq.js → chunk-KBJHAD2P-Ba8LGLSx.js} +1 -1
  442. package/ui-dist/assets/{chunk-RYQCIY6F-BiZ0-EGh.js → chunk-RYQCIY6F-9VcvykBo.js} +1 -1
  443. package/ui-dist/assets/{chunk-XXDRQBXY-lJULxFIE.js → chunk-XXDRQBXY-NVbjDH4W.js} +1 -1
  444. package/ui-dist/assets/classDiagram-JCYQIIEL-CzJ88u6h.js +1 -0
  445. package/ui-dist/assets/classDiagram-v2-OCEON4UE-CzJ88u6h.js +1 -0
  446. package/ui-dist/assets/cose-bilkent-JH36ORCC-Cdz4wtUh.js +1 -0
  447. package/ui-dist/assets/{cynefin-VYW2F7L2-B34jJY1x.js → cynefin-VYW2F7L2-MpzJkW5s.js} +1 -1
  448. package/ui-dist/assets/{cynefinDiagram-MW4NZA55-DQ8QK8JK.js → cynefinDiagram-MW4NZA55-_Nx8av7i.js} +1 -1
  449. package/ui-dist/assets/{dagre-VZM6K2ZE-B7lSKgxH.js → dagre-VZM6K2ZE-DcZTQ4Oh.js} +1 -1
  450. package/ui-dist/assets/{diagram-7IWD3JNH-B3hLAFGE.js → diagram-7IWD3JNH-UyLi2mee.js} +1 -1
  451. package/ui-dist/assets/{diagram-B4RE2ZJO-CH9Ro9e0.js → diagram-B4RE2ZJO-B6p0Ivqg.js} +1 -1
  452. package/ui-dist/assets/{diagram-LBJQPF4R-DdPVMii7.js → diagram-LBJQPF4R-C8u6pa97.js} +1 -1
  453. package/ui-dist/assets/{diagram-Q27KOJAE-f5VXswjc.js → diagram-Q27KOJAE-DbwyagW0.js} +1 -1
  454. package/ui-dist/assets/{diagram-UB23O5K3-DGqxixsR.js → diagram-UB23O5K3-Cn5BMEH7.js} +1 -1
  455. package/ui-dist/assets/{ebnfDiagram-BXEA7PRR-C-1klg_w.js → ebnfDiagram-BXEA7PRR-vE0IZma9.js} +1 -1
  456. package/ui-dist/assets/{erDiagram-JOGREHBK-Dt4qK4gv.js → erDiagram-JOGREHBK-3OZVIlVG.js} +1 -1
  457. package/ui-dist/assets/{flowDiagram-UKHOOZJN-9ZlrTuET.js → flowDiagram-UKHOOZJN-C94FiPyr.js} +1 -1
  458. package/ui-dist/assets/ganttDiagram-PKOTCBZU-DMVaPmF-.js +292 -0
  459. package/ui-dist/assets/{gitGraphDiagram-DS77QQ5N-HH2fSgad.js → gitGraphDiagram-DS77QQ5N-yeFtJ689.js} +1 -1
  460. package/ui-dist/assets/{index-Cm6iEYPt.js → index-B4ZF3vY8.js} +288 -224
  461. package/ui-dist/assets/{index-CHXG4GPL.js → index-Bi_vqkcQ.js} +1 -1
  462. package/ui-dist/assets/{index-Bc9g6q63.js → index-BjDGQg9-.js} +1 -1
  463. package/ui-dist/assets/{index-FHzrJ7iQ.js → index-BnpyUMTb.js} +1 -1
  464. package/ui-dist/assets/{index-C1mpWCcn.js → index-BoqQTVMA.js} +1 -1
  465. package/ui-dist/assets/index-Bq-Mr-4x.js +1 -0
  466. package/ui-dist/assets/{index-DceuCrr8.js → index-Brb2U7N4.js} +1 -1
  467. package/ui-dist/assets/{index-DQIrrn2L.js → index-BsBybVwH.js} +1 -1
  468. package/ui-dist/assets/{index-CQhaM6qd.js → index-C2iv4Wgu.js} +1 -1
  469. package/ui-dist/assets/{index-DV2FOgyD.js → index-CKxIu7uO.js} +1 -1
  470. package/ui-dist/assets/{index-DU4U1fuv.js → index-Cb4VGIwp.js} +1 -1
  471. package/ui-dist/assets/{index-B61ORkIb.js → index-ChpszwcO.js} +1 -1
  472. package/ui-dist/assets/{index-DlVBBF8o.js → index-CoQFdT8N.js} +1 -1
  473. package/ui-dist/assets/index-D6P8_f0W.css +1 -0
  474. package/ui-dist/assets/index-DKdmghUG.js +1 -0
  475. package/ui-dist/assets/{index-CVTL3aAL.js → index-DaBci7Bx.js} +1 -1
  476. package/ui-dist/assets/{index-diFs0CNC.js → index-DjYaNiXZ.js} +1 -1
  477. package/ui-dist/assets/{index-Bf7tyGxE.js → index-DxTBJl4h.js} +1 -1
  478. package/ui-dist/assets/{index-DsdVneqe.js → index-Dz3E8nn0.js} +1 -1
  479. package/ui-dist/assets/{index-DvFUXI-Q.js → index-J7dz_hap.js} +1 -1
  480. package/ui-dist/assets/{index-CLu3Tfpv.js → index-JMp2Gpnz.js} +1 -1
  481. package/ui-dist/assets/{index-CcRTJ93J.js → index-Kp6wavQt.js} +1 -1
  482. package/ui-dist/assets/{index-BvFx-4KW.js → index-LBhYZ0L4.js} +1 -1
  483. package/ui-dist/assets/{index-BbAhzCq8.js → index-c3C0P6l8.js} +4 -4
  484. package/ui-dist/assets/{index-BY5ITKmG.js → index-pBEPheTW.js} +1 -1
  485. package/ui-dist/assets/{infoDiagram-6WML65LV-2jai2fw-.js → infoDiagram-6WML65LV-BiL7jKLA.js} +1 -1
  486. package/ui-dist/assets/{ishikawaDiagram-WSZJBQD7-CUmGhmEb.js → ishikawaDiagram-WSZJBQD7-DYcQy41D.js} +1 -1
  487. package/ui-dist/assets/{journeyDiagram-NVQOT4AX-CGQuPDO1.js → journeyDiagram-NVQOT4AX-Bxva6JgA.js} +1 -1
  488. package/ui-dist/assets/{kanban-definition-27J2QSJJ-zgEPcbHl.js → kanban-definition-27J2QSJJ-B2HpN34Q.js} +1 -1
  489. package/ui-dist/assets/{linear-BVf5VtLS.js → linear-Dq8qSESw.js} +1 -1
  490. package/ui-dist/assets/{mermaid.core-D2TFkGfI.js → mermaid.core-Ikay8Cpl.js} +35 -35
  491. package/ui-dist/assets/{mindmap-definition-FAOFIHXS-xoAQ0Lb_.js → mindmap-definition-FAOFIHXS-C-SIdYSY.js} +1 -1
  492. package/ui-dist/assets/{pegDiagram-VL7TDLO6-CBR1PWLr.js → pegDiagram-VL7TDLO6-C7rIJ_13.js} +1 -1
  493. package/ui-dist/assets/{pieDiagram-7S7Q4E2Y-BMPnzK_e.js → pieDiagram-7S7Q4E2Y-3gx0a0ve.js} +1 -1
  494. package/ui-dist/assets/{quadrantDiagram-CIZ2JOQS-CPtVUPkR.js → quadrantDiagram-CIZ2JOQS-BiwM9QGv.js} +1 -1
  495. package/ui-dist/assets/{railroadDiagram-AXF67PYL-DC0lsZV1.js → railroadDiagram-AXF67PYL-rFS8XcFA.js} +1 -1
  496. package/ui-dist/assets/{requirementDiagram-LRYGKXZP-BF6k05SB.js → requirementDiagram-LRYGKXZP-CEAUDUTQ.js} +1 -1
  497. package/ui-dist/assets/{sankeyDiagram-W5VNT64P-CRN0ibiP.js → sankeyDiagram-W5VNT64P-B7anpjlM.js} +1 -1
  498. package/ui-dist/assets/{sequenceDiagram-SI44F4Z6-CQtTiPWm.js → sequenceDiagram-SI44F4Z6-CJEdJvm_.js} +1 -1
  499. package/ui-dist/assets/{sizeCapture-X5ZJPWSS-BdjuGZd1.js → sizeCapture-X5ZJPWSS-CU1Vm6c1.js} +1 -1
  500. package/ui-dist/assets/{stateDiagram-OKZ733FA-B99onxyh.js → stateDiagram-OKZ733FA-wxVV9WIi.js} +1 -1
  501. package/ui-dist/assets/stateDiagram-v2-UEYNNEHI-BIFLqlqR.js +1 -0
  502. package/ui-dist/assets/{swimlanes-SLNWSIFB-BIByPbrL.js → swimlanes-SLNWSIFB-Cd-C1Z_k.js} +2 -2
  503. package/ui-dist/assets/swimlanesDiagram-ULZ7WXOC-CoBROkkd.js +8 -0
  504. package/ui-dist/assets/{timeline-definition-Z64GVDOM-I1NgOcn9.js → timeline-definition-Z64GVDOM-SWngk4aR.js} +1 -1
  505. package/ui-dist/assets/{vennDiagram-T6HMQDX7-D6t2Njcl.js → vennDiagram-T6HMQDX7-DFdPUr36.js} +1 -1
  506. package/ui-dist/assets/{wardleyDiagram-T6FBY63Y-BiYKm9gh.js → wardleyDiagram-T6FBY63Y-C6IlrZ7t.js} +1 -1
  507. package/ui-dist/assets/{xychartDiagram-ELKLHX3M-BhwXKWIa.js → xychartDiagram-ELKLHX3M-BNm6hHGl.js} +1 -1
  508. package/ui-dist/index.html +2 -2
  509. package/ui-dist/assets/architectureDiagram-T3A2C74G-Dg4MziOm.js +0 -36
  510. package/ui-dist/assets/channel-qoSYbCn0.js +0 -1
  511. package/ui-dist/assets/classDiagram-JCYQIIEL-B24u1REs.js +0 -1
  512. package/ui-dist/assets/classDiagram-v2-OCEON4UE-B24u1REs.js +0 -1
  513. package/ui-dist/assets/cose-bilkent-JH36ORCC-Do8pe8JB.js +0 -1
  514. package/ui-dist/assets/ganttDiagram-PKOTCBZU-CE3lyvFq.js +0 -292
  515. package/ui-dist/assets/index-BHiUiToL.css +0 -1
  516. package/ui-dist/assets/index-hkanj4t6.js +0 -1
  517. package/ui-dist/assets/index-yRJnh4vx.js +0 -1
  518. package/ui-dist/assets/stateDiagram-v2-UEYNNEHI-bzFlYBZ1.js +0 -1
  519. package/ui-dist/assets/swimlanesDiagram-ULZ7WXOC-DgdkBnuK.js +0 -8
@@ -1,3 +1,4 @@
1
+ import fsSync from "node:fs";
1
2
  export interface LocalServiceRegistryRecord {
2
3
  version: 1;
3
4
  serviceKey: string;
@@ -26,6 +27,19 @@ export interface LocalServiceIdentityInput {
26
27
  port: number | null;
27
28
  scope: Record<string, unknown> | null;
28
29
  }
30
+ export declare function resolveLocalServiceLogPath(serviceKey: string): string;
31
+ /**
32
+ * Open a managed service's durable append-only output file.
33
+ *
34
+ * The returned descriptor is intended to be passed directly to spawn(). The
35
+ * child receives its own duplicate, so the caller can close this handle as soon
36
+ * as spawn returns without tying the service's stdio lifetime to Paperclip's.
37
+ */
38
+ export declare function openLocalServiceLogFile(serviceKey: string): Promise<{
39
+ handle: fsSync.promises.FileHandle;
40
+ logPath: string;
41
+ startOffset: number;
42
+ }>;
29
43
  export declare function createLocalServiceKey(input: LocalServiceIdentityInput): string;
30
44
  export declare function writeLocalServiceRegistryRecord(record: LocalServiceRegistryRecord): Promise<void>;
31
45
  export declare function removeLocalServiceRegistryRecord(serviceKey: string): Promise<void>;
@@ -40,6 +54,32 @@ export declare function findLocalServiceRegistryRecordByRuntimeServiceId(input:
40
54
  }): Promise<LocalServiceRegistryRecord | null>;
41
55
  export declare function isPidAlive(pid: number): boolean;
42
56
  export declare function isProcessGroupAlive(processGroupId: number | null | undefined): boolean;
57
+ /**
58
+ * Return whether the configured shell command has a stable argv that can be
59
+ * compared with the operating system's process command line.
60
+ *
61
+ * Managed local services are started through `shell -lc`. Once a command uses
62
+ * shell control syntax, the surviving process-group leader can be the result of
63
+ * that program rather than the configured shell expression. In that case a
64
+ * literal argv comparison is not evidence that the process belongs to a
65
+ * different service; adoption instead relies on the listener, process group,
66
+ * and workspace cwd checks.
67
+ */
68
+ export declare function isLocalServiceCommandLineComparable(recordedCommand: string): boolean;
69
+ /**
70
+ * Compare a configured service command with the argv exposed by the OS.
71
+ *
72
+ * Package-manager launchers commonly replace `pnpm dev` with
73
+ * `node /path/to/pnpm.cjs dev` after the shell starts. A literal substring
74
+ * check rejects that surviving process even though the executable and all
75
+ * configured arguments are still present. Normalize executable paths and
76
+ * script extensions, then require the configured argv to remain contiguous.
77
+ */
78
+ export declare function doesLocalServiceCommandLineMatch(input: {
79
+ commandLine: string;
80
+ recordedCommand: string;
81
+ serviceName: string;
82
+ }): boolean;
43
83
  export declare function findAdoptableLocalService(input: {
44
84
  serviceKey: string;
45
85
  profileKind?: string | null;
@@ -53,11 +93,31 @@ export declare function findAdoptableLocalService(input: {
53
93
  export declare function readLocalServiceProcessGroupId(pid: number): Promise<number | null>;
54
94
  export declare function isLocalServiceProcessOwnedBy(pid: number, ownerProcessId: number): Promise<boolean>;
55
95
  export declare function touchLocalServiceRegistryRecord(serviceKey: string, patch?: Partial<Omit<LocalServiceRegistryRecord, "serviceKey" | "version">>): Promise<LocalServiceRegistryRecord | null>;
56
- export declare function terminateLocalService(record: Pick<LocalServiceRegistryRecord, "pid" | "processGroupId">, opts?: {
96
+ export declare function terminateLocalService(record: Pick<LocalServiceRegistryRecord, "pid" | "processGroupId"> & Partial<Pick<LocalServiceRegistryRecord, "port">>, opts?: {
57
97
  signal?: NodeJS.Signals;
58
98
  forceAfterMs?: number;
99
+ verifyAfterMs?: number;
59
100
  }): Promise<void>;
60
101
  export declare function readLocalServicePortOwner(port: number): Promise<number | null>;
102
+ /**
103
+ * Resolve a running process's working directory.
104
+ *
105
+ * Linux reads it straight off procfs. macOS has no procfs, so it asks `lsof`
106
+ * for the process's `cwd` descriptor — the same tool this module already shells
107
+ * out to for port ownership, so this adds no new dependency. `-d cwd` narrows
108
+ * the output to the working directory.
109
+ *
110
+ * `-F0n` terminates each field with NUL instead of a newline. The parser does
111
+ * not trim the path or split it on newlines. That matters because the caller
112
+ * compares this value against a workspace root: a directory name may contain
113
+ * leading or trailing spaces, or even a newline, and changing the path would
114
+ * report a different directory than the one the process runs in.
115
+ *
116
+ * Returning a real path on macOS is what lets `adoptLocalServiceFromPortOwner`
117
+ * verify a listener actually belongs to the workspace. While this returned
118
+ * null off Linux, that check could never pass, so port-owner adoption always
119
+ * failed there and still-running services were reconciled to `stopped`.
120
+ */
61
121
  export declare function readLocalServiceProcessCwd(pid: number): Promise<string | null>;
62
122
  export declare function isLocalServiceProcessInWorkspace(processCwd: string, workspaceCwd: string): Promise<boolean>;
63
123
  export declare function isLocalServiceRegistryCwdCompatible(processCwd: string | null, workspaceCwd: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"local-service-supervisor.d.ts","sourceRoot":"","sources":["../../src/services/local-service-supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-service-supervisor.d.ts","sourceRoot":"","sources":["../../src/services/local-service-supervisor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { createHash } from "node:crypto";
3
+ import fsSync from "node:fs";
3
4
  import fs from "node:fs/promises";
4
5
  import path from "node:path";
5
6
  import { setTimeout as delay } from "node:timers/promises";
@@ -28,6 +29,29 @@ function sanitizeServiceKeySegment(value, fallback) {
28
29
  function getRuntimeServicesDir() {
29
30
  return path.resolve(resolvePaperclipInstanceRoot(), "runtime-services");
30
31
  }
32
+ function getRuntimeServiceLogsDir() {
33
+ return path.resolve(resolvePaperclipInstanceRoot(), "runtime-service-logs");
34
+ }
35
+ export function resolveLocalServiceLogPath(serviceKey) {
36
+ if (!/^[a-z0-9._-]+$/.test(serviceKey)) {
37
+ throw new Error("Invalid local service key for log path");
38
+ }
39
+ return path.resolve(getRuntimeServiceLogsDir(), `${serviceKey}.log`);
40
+ }
41
+ /**
42
+ * Open a managed service's durable append-only output file.
43
+ *
44
+ * The returned descriptor is intended to be passed directly to spawn(). The
45
+ * child receives its own duplicate, so the caller can close this handle as soon
46
+ * as spawn returns without tying the service's stdio lifetime to Paperclip's.
47
+ */
48
+ export async function openLocalServiceLogFile(serviceKey) {
49
+ await fs.mkdir(getRuntimeServiceLogsDir(), { recursive: true });
50
+ const logPath = resolveLocalServiceLogPath(serviceKey);
51
+ const handle = await fs.open(logPath, "a+", 0o600);
52
+ const startOffset = (await handle.stat()).size;
53
+ return { handle, logPath, startOffset };
54
+ }
31
55
  function getRuntimeServiceRegistryPath(serviceKey) {
32
56
  return path.resolve(getRuntimeServicesDir(), `${serviceKey}.json`);
33
57
  }
@@ -170,24 +194,137 @@ export function isProcessGroupAlive(processGroupId) {
170
194
  return false;
171
195
  try {
172
196
  process.kill(-processGroupId, 0);
173
- return true;
174
197
  }
175
198
  catch {
176
199
  return false;
177
200
  }
201
+ if (process.platform === "linux") {
202
+ const liveMember = readLinuxProcessGroupActivity(processGroupId);
203
+ if (liveMember !== null)
204
+ return liveMember;
205
+ }
206
+ return true;
207
+ }
208
+ function readLinuxProcessGroupActivity(processGroupId) {
209
+ let entries;
210
+ try {
211
+ entries = fsSync.readdirSync("/proc", { withFileTypes: true });
212
+ }
213
+ catch {
214
+ return null;
215
+ }
216
+ let foundMember = false;
217
+ for (const entry of entries) {
218
+ if (!entry.isDirectory() || !/^\d+$/.test(entry.name))
219
+ continue;
220
+ try {
221
+ const stat = fsSync.readFileSync(`/proc/${entry.name}/stat`, "utf8");
222
+ const commandEnd = stat.lastIndexOf(")");
223
+ if (commandEnd < 0)
224
+ continue;
225
+ const fields = stat.slice(commandEnd + 1).trim().split(/\s+/);
226
+ const state = fields[0];
227
+ const memberProcessGroupId = Number.parseInt(fields[2] ?? "", 10);
228
+ if (memberProcessGroupId !== processGroupId)
229
+ continue;
230
+ foundMember = true;
231
+ if (state !== "Z" && state !== "X")
232
+ return true;
233
+ }
234
+ catch {
235
+ // The process can exit while /proc is scanned.
236
+ }
237
+ }
238
+ // kill(-pgid, 0) also succeeds for a group that contains only zombies. Such
239
+ // processes cannot run or own a listener and are waiting only for their
240
+ // parent to reap them, so termination is complete for service-control use.
241
+ return foundMember ? false : null;
242
+ }
243
+ function tokenizeCommandLine(value) {
244
+ return value.match(/"(?:\\.|[^"\\])*"|'[^']*'|\S+/g) ?? [];
245
+ }
246
+ function normalizeCommandToken(value) {
247
+ const unquoted = value.replace(/^["']|["']$/g, "");
248
+ const basename = path.basename(unquoted.replace(/\\/g, "/"));
249
+ const launcher = basename.replace(/\.(?:cjs|mjs|js|cmd|exe)$/i, "");
250
+ return /^(?:bun|node|nodejs|npm|npx|pnpm|yarn)$/i.test(launcher) ? launcher : unquoted;
251
+ }
252
+ /**
253
+ * Return whether the configured shell command has a stable argv that can be
254
+ * compared with the operating system's process command line.
255
+ *
256
+ * Managed local services are started through `shell -lc`. Once a command uses
257
+ * shell control syntax, the surviving process-group leader can be the result of
258
+ * that program rather than the configured shell expression. In that case a
259
+ * literal argv comparison is not evidence that the process belongs to a
260
+ * different service; adoption instead relies on the listener, process group,
261
+ * and workspace cwd checks.
262
+ */
263
+ export function isLocalServiceCommandLineComparable(recordedCommand) {
264
+ let quote = null;
265
+ let escaped = false;
266
+ for (const character of recordedCommand) {
267
+ if (escaped) {
268
+ escaped = false;
269
+ continue;
270
+ }
271
+ if (character === "\\" && quote !== "'") {
272
+ escaped = true;
273
+ continue;
274
+ }
275
+ if (quote) {
276
+ if (character === quote)
277
+ quote = null;
278
+ continue;
279
+ }
280
+ if (character === "'" || character === '"') {
281
+ quote = character;
282
+ continue;
283
+ }
284
+ if ([";", "|", "&", "<", ">", "\n"].includes(character)) {
285
+ return false;
286
+ }
287
+ }
288
+ return true;
289
+ }
290
+ /**
291
+ * Compare a configured service command with the argv exposed by the OS.
292
+ *
293
+ * Package-manager launchers commonly replace `pnpm dev` with
294
+ * `node /path/to/pnpm.cjs dev` after the shell starts. A literal substring
295
+ * check rejects that surviving process even though the executable and all
296
+ * configured arguments are still present. Normalize executable paths and
297
+ * script extensions, then require the configured argv to remain contiguous.
298
+ */
299
+ export function doesLocalServiceCommandLineMatch(input) {
300
+ const normalize = (value) => value.replace(/["']/g, "").replace(/\s+/g, " ").trim();
301
+ const normalizedCommandLine = normalize(input.commandLine);
302
+ const normalizedRecordedCommand = normalize(input.recordedCommand);
303
+ if (normalizedCommandLine.includes(normalizedRecordedCommand)
304
+ || normalizedCommandLine.includes(input.serviceName)) {
305
+ return true;
306
+ }
307
+ const actualTokens = tokenizeCommandLine(input.commandLine).map(normalizeCommandToken);
308
+ const recordedTokens = tokenizeCommandLine(input.recordedCommand).map(normalizeCommandToken);
309
+ if (recordedTokens.length === 0 || recordedTokens.length > actualTokens.length)
310
+ return false;
311
+ return actualTokens.some((_, start) => recordedTokens.every((token, offset) => actualTokens[start + offset] === token));
178
312
  }
179
313
  async function isLikelyMatchingCommand(record) {
180
314
  if (process.platform === "win32")
181
315
  return true;
316
+ if (!isLocalServiceCommandLineComparable(record.command))
317
+ return true;
182
318
  try {
183
319
  const { stdout } = await execFileAsync("ps", ["-o", "command=", "-p", String(record.pid)]);
184
320
  const commandLine = stdout.trim();
185
321
  if (!commandLine)
186
322
  return false;
187
- const normalize = (value) => value.replace(/["']/g, "").replace(/\s+/g, " ").trim();
188
- const normalizedCommandLine = normalize(commandLine);
189
- const normalizedRecordedCommand = normalize(record.command);
190
- return normalizedCommandLine.includes(normalizedRecordedCommand) || normalizedCommandLine.includes(record.serviceName);
323
+ return doesLocalServiceCommandLineMatch({
324
+ commandLine,
325
+ recordedCommand: record.command,
326
+ serviceName: record.serviceName,
327
+ });
191
328
  }
192
329
  catch {
193
330
  return true;
@@ -321,6 +458,29 @@ export async function touchLocalServiceRegistryRecord(serviceKey, patch) {
321
458
  export async function terminateLocalService(record, opts) {
322
459
  const signal = opts?.signal ?? "SIGTERM";
323
460
  const targetProcessGroup = process.platform !== "win32" && record.processGroupId && record.processGroupId > 0;
461
+ const targetIsGone = async () => {
462
+ const targetAlive = targetProcessGroup
463
+ ? isProcessGroupAlive(record.processGroupId)
464
+ : isPidAlive(record.pid);
465
+ if (targetAlive)
466
+ return false;
467
+ if (!record.port)
468
+ return true;
469
+ const portOwnerPid = await readLocalServicePortOwner(record.port);
470
+ if (!portOwnerPid)
471
+ return true;
472
+ const ownerProcessId = targetProcessGroup ? record.processGroupId : record.pid;
473
+ return !(await isLocalServiceProcessOwnedBy(portOwnerPid, ownerProcessId));
474
+ };
475
+ const waitUntilGone = async (timeoutMs) => {
476
+ const deadline = Date.now() + timeoutMs;
477
+ do {
478
+ if (await targetIsGone())
479
+ return true;
480
+ await delay(100);
481
+ } while (Date.now() < deadline);
482
+ return await targetIsGone();
483
+ };
324
484
  try {
325
485
  if (targetProcessGroup) {
326
486
  process.kill(-record.processGroupId, signal);
@@ -330,22 +490,10 @@ export async function terminateLocalService(record, opts) {
330
490
  }
331
491
  }
332
492
  catch {
333
- return;
334
- }
335
- const deadline = Date.now() + (opts?.forceAfterMs ?? 2_000);
336
- while (Date.now() < deadline) {
337
- const targetAlive = targetProcessGroup
338
- ? isProcessGroupAlive(record.processGroupId)
339
- : isPidAlive(record.pid);
340
- if (!targetAlive) {
493
+ if (await targetIsGone())
341
494
  return;
342
- }
343
- await delay(100);
344
495
  }
345
- const stillAlive = targetProcessGroup
346
- ? isProcessGroupAlive(record.processGroupId)
347
- : isPidAlive(record.pid);
348
- if (!stillAlive)
496
+ if (await waitUntilGone(opts?.forceAfterMs ?? 2_000))
349
497
  return;
350
498
  try {
351
499
  if (targetProcessGroup) {
@@ -358,6 +506,13 @@ export async function terminateLocalService(record, opts) {
358
506
  catch {
359
507
  // Ignore cleanup races.
360
508
  }
509
+ if (await waitUntilGone(opts?.verifyAfterMs ?? 2_000))
510
+ return;
511
+ const target = targetProcessGroup
512
+ ? `process group ${record.processGroupId}`
513
+ : `process ${record.pid}`;
514
+ const listener = record.port ? ` and listener on port ${record.port}` : "";
515
+ throw new Error(`Failed to terminate local service ${target}${listener}`);
361
516
  }
362
517
  export async function readLocalServicePortOwner(port) {
363
518
  if (!Number.isInteger(port) || port <= 0)
@@ -391,15 +546,53 @@ export async function readLocalServicePortOwner(port) {
391
546
  return null;
392
547
  }
393
548
  }
549
+ /**
550
+ * Resolve a running process's working directory.
551
+ *
552
+ * Linux reads it straight off procfs. macOS has no procfs, so it asks `lsof`
553
+ * for the process's `cwd` descriptor — the same tool this module already shells
554
+ * out to for port ownership, so this adds no new dependency. `-d cwd` narrows
555
+ * the output to the working directory.
556
+ *
557
+ * `-F0n` terminates each field with NUL instead of a newline. The parser does
558
+ * not trim the path or split it on newlines. That matters because the caller
559
+ * compares this value against a workspace root: a directory name may contain
560
+ * leading or trailing spaces, or even a newline, and changing the path would
561
+ * report a different directory than the one the process runs in.
562
+ *
563
+ * Returning a real path on macOS is what lets `adoptLocalServiceFromPortOwner`
564
+ * verify a listener actually belongs to the workspace. While this returned
565
+ * null off Linux, that check could never pass, so port-owner adoption always
566
+ * failed there and still-running services were reconciled to `stopped`.
567
+ */
394
568
  export async function readLocalServiceProcessCwd(pid) {
395
- if (!Number.isInteger(pid) || pid <= 0 || process.platform !== "linux")
569
+ if (!Number.isInteger(pid) || pid <= 0)
396
570
  return null;
397
- try {
398
- return await fs.readlink(`/proc/${pid}/cwd`);
571
+ if (process.platform === "linux") {
572
+ try {
573
+ return await fs.readlink(`/proc/${pid}/cwd`);
574
+ }
575
+ catch {
576
+ return null;
577
+ }
399
578
  }
400
- catch {
401
- return null;
579
+ if (process.platform === "darwin") {
580
+ try {
581
+ const { stdout } = await execFileAsync("lsof", ["-a", "-d", "cwd", "-p", String(pid), "-F0n"]);
582
+ // Each field ends with NUL. The newline that ends a field set carries
583
+ // into the next field, so drop it before reading the `n` tag; anything
584
+ // after the tag is the path exactly as lsof reported it.
585
+ const cwdField = stdout
586
+ .split("\0")
587
+ .map((field) => field.replace(/^\n+/, ""))
588
+ .find((field) => field.startsWith("n"));
589
+ return cwdField ? cwdField.slice(1) || null : null;
590
+ }
591
+ catch {
592
+ return null;
593
+ }
402
594
  }
595
+ return null;
403
596
  }
404
597
  export async function isLocalServiceProcessInWorkspace(processCwd, workspaceCwd) {
405
598
  try {
@@ -416,7 +609,7 @@ export async function isLocalServiceProcessInWorkspace(processCwd, workspaceCwd)
416
609
  }
417
610
  export async function isLocalServiceRegistryCwdCompatible(processCwd, workspaceCwd) {
418
611
  if (!processCwd)
419
- return process.platform !== "linux";
612
+ return process.platform !== "linux" && process.platform !== "darwin";
420
613
  return isLocalServiceProcessInWorkspace(processCwd, workspaceCwd);
421
614
  }
422
615
  async function doesLocalServiceRecordMatchCwd(record) {
@@ -425,6 +618,9 @@ async function doesLocalServiceRecordMatchCwd(record) {
425
618
  const ownerPid = await readLocalServicePortOwner(record.port);
426
619
  if (!ownerPid)
427
620
  return false;
621
+ if (!(await isLocalServiceProcessOwnedBy(ownerPid, record.processGroupId ?? record.pid))) {
622
+ return false;
623
+ }
428
624
  const ownerCwd = await readLocalServiceProcessCwd(ownerPid);
429
625
  return isLocalServiceRegistryCwdCompatible(ownerCwd, record.cwd);
430
626
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-service-supervisor.js","sourceRoot":"","sources":["../../src/services/local-service-supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-service-supervisor.js","sourceRoot":"","sources":["../../src/services/local-service-supervisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The closed set of login command identities. The host resolves the key from the
3
+ * trusted adapter type. The worker maps the key to a compile-time command. The
4
+ * union is exhaustive: a value outside it fails closed before the worker RPC.
5
+ */
6
+ export type LoginCommandKey = "claude" | "codex";
7
+ /** The fixed non-secret error an unsupported adapter type returns. */
8
+ export declare const LOGIN_COMMAND_UNSUPPORTED_ADAPTER = "LOGIN_PTY_UNSUPPORTED_ADAPTER";
9
+ /** The fixed non-secret error an invalid session home returns. */
10
+ export declare const LOGIN_SESSION_HOME_INVALID = "LOGIN_PTY_INVALID_SESSION_HOME";
11
+ /**
12
+ * Resolves the login command key from the trusted adapter type. It reads only the
13
+ * exhaustive first-party map. It throws the fixed non-secret error for an adapter
14
+ * type that has no mapped key, so an unknown adapter fails closed before the
15
+ * worker RPC.
16
+ */
17
+ export declare function resolveLoginCommandKey(adapterType: string): LoginCommandKey;
18
+ /** Reports whether a value is a member of the closed login command key set. */
19
+ export declare function isLoginCommandKey(value: unknown): value is LoginCommandKey;
20
+ /**
21
+ * Reports whether the trusted adapter type maps to a login command key. The
22
+ * admission guard reads this predicate, so an adapter type with no mapped key
23
+ * fails closed at admission. The device login opener resolves the same closed
24
+ * map later, so admission and command resolution stay consistent.
25
+ */
26
+ export declare function isLoginCommandSupportedAdapterType(adapterType: string): boolean;
27
+ /**
28
+ * The fixed root for a login session home. The server derives one per-session
29
+ * home under this root. The path shape is exact, so the provider revalidates it
30
+ * before it touches the filesystem.
31
+ */
32
+ export declare const LOGIN_SESSION_HOME_ROOT = "/tmp/paperclip-adapter-login";
33
+ /**
34
+ * Derives the session home from a session UUID. It builds the exact
35
+ * `/tmp/paperclip-adapter-login/<uuid>` path. It throws the fixed non-secret
36
+ * error when the id is not a UUID, so a malformed id never becomes a home.
37
+ */
38
+ export declare function deriveLoginSessionHome(sessionUuid: string): string;
39
+ /**
40
+ * Validates the exact session home path shape. It throws the fixed non-secret
41
+ * error for an empty, a relative, a traversal, a whitespace, a control-character,
42
+ * or a shell-metacharacter candidate. The server validates before the worker RPC;
43
+ * the provider revalidates before the filesystem operation.
44
+ */
45
+ export declare function validateLoginSessionHome(sessionHome: string): void;
46
+ //# sourceMappingURL=login-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-command.d.ts","sourceRoot":"","sources":["../../src/services/login-command.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAYjD,sEAAsE;AACtE,eAAO,MAAM,iCAAiC,kCAAkC,CAAC;AACjF,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAM3E;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/E;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAetE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAIlE"}
@@ -0,0 +1,87 @@
1
+ // The host-owned login command contract for the shared login pseudo-terminal
2
+ // (PTY). The shared login PTY runs one fixed command. The host selects that
3
+ // command from a closed internal key, never from a request, a configuration, a
4
+ // plugin manifest, or the worker routing key. This module holds the closed key
5
+ // union, the exhaustive resolver from the trusted adapter type, and the
6
+ // server-controlled session home helpers.
7
+ //
8
+ // Security boundary: the key is the only command authority. The provider driver
9
+ // key routes the worker; it confers no command authority. A caller cannot pass a
10
+ // command, so the sandbox pseudo-terminal never runs an arbitrary process.
11
+ /**
12
+ * The exhaustive map from the trusted adapter type to the login command key. The
13
+ * host reads only this map. It never reads the key from a request, a
14
+ * configuration, a plugin manifest, or the provider driver key.
15
+ */
16
+ const ADAPTER_TYPE_TO_LOGIN_COMMAND_KEY = {
17
+ claude_local: "claude",
18
+ codex_local: "codex",
19
+ };
20
+ /** The fixed non-secret error an unsupported adapter type returns. */
21
+ export const LOGIN_COMMAND_UNSUPPORTED_ADAPTER = "LOGIN_PTY_UNSUPPORTED_ADAPTER";
22
+ /** The fixed non-secret error an invalid session home returns. */
23
+ export const LOGIN_SESSION_HOME_INVALID = "LOGIN_PTY_INVALID_SESSION_HOME";
24
+ /**
25
+ * Resolves the login command key from the trusted adapter type. It reads only the
26
+ * exhaustive first-party map. It throws the fixed non-secret error for an adapter
27
+ * type that has no mapped key, so an unknown adapter fails closed before the
28
+ * worker RPC.
29
+ */
30
+ export function resolveLoginCommandKey(adapterType) {
31
+ const key = ADAPTER_TYPE_TO_LOGIN_COMMAND_KEY[adapterType];
32
+ if (!key) {
33
+ throw new Error(LOGIN_COMMAND_UNSUPPORTED_ADAPTER);
34
+ }
35
+ return key;
36
+ }
37
+ /** Reports whether a value is a member of the closed login command key set. */
38
+ export function isLoginCommandKey(value) {
39
+ return value === "claude" || value === "codex";
40
+ }
41
+ /**
42
+ * Reports whether the trusted adapter type maps to a login command key. The
43
+ * admission guard reads this predicate, so an adapter type with no mapped key
44
+ * fails closed at admission. The device login opener resolves the same closed
45
+ * map later, so admission and command resolution stay consistent.
46
+ */
47
+ export function isLoginCommandSupportedAdapterType(adapterType) {
48
+ return ADAPTER_TYPE_TO_LOGIN_COMMAND_KEY[adapterType] !== undefined;
49
+ }
50
+ /**
51
+ * The fixed root for a login session home. The server derives one per-session
52
+ * home under this root. The path shape is exact, so the provider revalidates it
53
+ * before it touches the filesystem.
54
+ */
55
+ export const LOGIN_SESSION_HOME_ROOT = "/tmp/paperclip-adapter-login";
56
+ /** Matches one lowercase-hyphenated UUID (version 4 layout not enforced). */
57
+ const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
58
+ /**
59
+ * The exact absolute path shape for a login session home. The path is the fixed
60
+ * root, one slash, and one UUID. The anchors reject a relative path, a path
61
+ * traversal, whitespace, a control character, and a shell metacharacter, because
62
+ * none of those match the UUID or the fixed root.
63
+ */
64
+ const SESSION_HOME_PATTERN = new RegExp(`^${LOGIN_SESSION_HOME_ROOT.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$`);
65
+ /**
66
+ * Derives the session home from a session UUID. It builds the exact
67
+ * `/tmp/paperclip-adapter-login/<uuid>` path. It throws the fixed non-secret
68
+ * error when the id is not a UUID, so a malformed id never becomes a home.
69
+ */
70
+ export function deriveLoginSessionHome(sessionUuid) {
71
+ if (!UUID_PATTERN.test(sessionUuid)) {
72
+ throw new Error(LOGIN_SESSION_HOME_INVALID);
73
+ }
74
+ return `${LOGIN_SESSION_HOME_ROOT}/${sessionUuid}`;
75
+ }
76
+ /**
77
+ * Validates the exact session home path shape. It throws the fixed non-secret
78
+ * error for an empty, a relative, a traversal, a whitespace, a control-character,
79
+ * or a shell-metacharacter candidate. The server validates before the worker RPC;
80
+ * the provider revalidates before the filesystem operation.
81
+ */
82
+ export function validateLoginSessionHome(sessionHome) {
83
+ if (!SESSION_HOME_PATTERN.test(sessionHome)) {
84
+ throw new Error(LOGIN_SESSION_HOME_INVALID);
85
+ }
86
+ }
87
+ //# sourceMappingURL=login-command.js.map