@paperclipai/server 2026.824.0 → 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
@@ -168,6 +168,258 @@ export function classifyEnvironmentCustomImageConfigChange(input) {
168
168
  }
169
169
  return "relinkable";
170
170
  }
171
+ // --- Operator relink action (server-owned boot-source classification) --------
172
+ //
173
+ // A saved config change moves the fingerprint and detaches an otherwise-valid
174
+ // template. The relink action re-stamps the fingerprint, but only after the
175
+ // server decides the boot source did not change. To decide that without the
176
+ // capture-time config, the capture persists a small, server-owned snapshot of
177
+ // the boot-relevant fields. The relink then compares that snapshot to the
178
+ // current config. The comparison runs on the server; the client never
179
+ // classifies.
180
+ export const ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_METADATA_KEY = "bootRelevantConfig";
181
+ export const ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_VERSION = 1;
182
+ // A driver-declared identity path that fails canonicalization is never trusted
183
+ // and never persisted verbatim. It records this fixed marker instead, which
184
+ // forces the fail-closed `unclassified` result at relink time.
185
+ export const ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_UNRESOLVED_PATH = "[unresolved-identity-path]";
186
+ const BOOT_RELEVANT_CONFIG_MAX_PATH_DEPTH = 8;
187
+ const BOOT_RELEVANT_CONFIG_PATH_SEGMENT_RE = /^[A-Za-z_][A-Za-z0-9_-]*$/;
188
+ // Prototype keys have an identifier shape but never name an own config field.
189
+ // A driver that declares one is hostile or broken. Reject it so the path fails
190
+ // closed as an unresolved identity path.
191
+ const BOOT_RELEVANT_CONFIG_RESERVED_SEGMENTS = new Set(["__proto__", "prototype", "constructor"]);
192
+ /**
193
+ * Canonicalizes a config path as a bounded dot-path. Each segment must be a
194
+ * plain identifier and the depth is bounded. An invalid, ambiguous, or
195
+ * unresolvable path returns `null`; the caller must never persist the raw
196
+ * driver-supplied string.
197
+ */
198
+ export function canonicalizeEnvironmentCustomImageConfigPath(raw) {
199
+ if (typeof raw !== "string")
200
+ return null;
201
+ const trimmed = raw.trim();
202
+ if (!trimmed)
203
+ return null;
204
+ const segments = trimmed.split(".");
205
+ if (segments.length === 0 || segments.length > BOOT_RELEVANT_CONFIG_MAX_PATH_DEPTH)
206
+ return null;
207
+ for (const segment of segments) {
208
+ if (!BOOT_RELEVANT_CONFIG_PATH_SEGMENT_RE.test(segment))
209
+ return null;
210
+ if (BOOT_RELEVANT_CONFIG_RESERVED_SEGMENTS.has(segment))
211
+ return null;
212
+ }
213
+ return segments.join(".");
214
+ }
215
+ /**
216
+ * Reports whether a candidate path overlaps any secret-ref path by exact,
217
+ * ancestor, or descendant containment.
218
+ */
219
+ function environmentCustomImageConfigPathOverlapsSecret(candidate, secretPaths) {
220
+ for (const raw of secretPaths) {
221
+ const secret = canonicalizeEnvironmentCustomImageConfigPath(raw);
222
+ if (!secret)
223
+ continue;
224
+ if (candidate === secret)
225
+ return true;
226
+ if (candidate.startsWith(`${secret}.`))
227
+ return true;
228
+ if (secret.startsWith(`${candidate}.`))
229
+ return true;
230
+ }
231
+ return false;
232
+ }
233
+ /**
234
+ * Computes the canonical candidate boot-relevant paths for a binding and its
235
+ * driver identity paths. Both the capture snapshot and the relink staleness
236
+ * check use this function, so they share one path set. `hasUnresolved` is true
237
+ * when any raw path fails canonicalization.
238
+ */
239
+ export function environmentCustomImageBootRelevantCandidatePaths(contract) {
240
+ const canonicalPaths = [];
241
+ const seen = new Set();
242
+ let hasUnresolved = false;
243
+ const rawCandidatePaths = [
244
+ contract.binding.field,
245
+ ...contract.binding.unsetFields,
246
+ ...ENVIRONMENT_CUSTOM_IMAGE_TEMPLATE_SOURCE_FIELDS,
247
+ ...(contract.templateIdentityPaths ?? []),
248
+ ];
249
+ for (const rawPath of rawCandidatePaths) {
250
+ const canonical = canonicalizeEnvironmentCustomImageConfigPath(rawPath);
251
+ if (!canonical) {
252
+ hasUnresolved = true;
253
+ continue;
254
+ }
255
+ if (seen.has(canonical))
256
+ continue;
257
+ seen.add(canonical);
258
+ canonicalPaths.push(canonical);
259
+ }
260
+ return { canonicalPaths, hasUnresolved };
261
+ }
262
+ /**
263
+ * Builds the capture-time boot-relevant snapshot from the parsed config only.
264
+ * Candidate paths are the runtime binding field, the binding unset fields, the
265
+ * standard boot-source fields, and every driver identity path. A secret-ref
266
+ * overlap or an unresolvable path is recorded in `excludedPaths` with no value.
267
+ */
268
+ export function buildEnvironmentCustomImageBootRelevantConfig(input) {
269
+ const config = input.config;
270
+ const secretPaths = [...(input.secretRefExcludePaths ?? [])];
271
+ // A null-prototype map is a second guard: a reserved segment assignment can
272
+ // never mutate the prototype, so a hostile path cannot vanish from `values`.
273
+ const values = Object.create(null);
274
+ const excludedPaths = new Set();
275
+ const { canonicalPaths, hasUnresolved } = environmentCustomImageBootRelevantCandidatePaths({
276
+ binding: input.binding,
277
+ templateIdentityPaths: input.templateIdentityPaths,
278
+ });
279
+ if (hasUnresolved) {
280
+ excludedPaths.add(ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_UNRESOLVED_PATH);
281
+ }
282
+ for (const canonical of canonicalPaths) {
283
+ if (environmentCustomImageConfigPathOverlapsSecret(canonical, secretPaths)) {
284
+ excludedPaths.add(canonical);
285
+ continue;
286
+ }
287
+ const value = readConfigValueAtPath(config, canonical);
288
+ // An absent field is stored as `null` so that "absent then, absent now"
289
+ // compares equal at relink time.
290
+ values[canonical] = value === undefined ? null : value;
291
+ }
292
+ return {
293
+ version: ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_VERSION,
294
+ provider: input.config.provider,
295
+ bindingField: input.binding.field,
296
+ values,
297
+ excludedPaths: [...excludedPaths],
298
+ };
299
+ }
300
+ /**
301
+ * Reports whether a persisted snapshot no longer matches the current provider
302
+ * boot-relevant contract. A provider plugin can change its config binding or
303
+ * its identity paths after capture. When it does, a field that is boot-relevant
304
+ * now but absent from the snapshot would compare equal by absence and hide real
305
+ * drift. The check fails closed on:
306
+ *
307
+ * - a binding field that differs from the captured `bindingField`;
308
+ * - a current identity path the snapshot never covered (neither a value nor an
309
+ * excluded path);
310
+ * - a current contract that itself carries an unresolvable identity path.
311
+ */
312
+ export function environmentCustomImageBootRelevantSnapshotIsStale(input) {
313
+ const boot = input.bootRelevantConfig;
314
+ if (input.currentContract.binding.field !== boot.bindingField)
315
+ return true;
316
+ const { canonicalPaths, hasUnresolved } = environmentCustomImageBootRelevantCandidatePaths(input.currentContract);
317
+ if (hasUnresolved)
318
+ return true;
319
+ const covered = new Set([
320
+ ...Object.keys(boot.values),
321
+ ...boot.excludedPaths,
322
+ ]);
323
+ return canonicalPaths.some((path) => !covered.has(path));
324
+ }
325
+ /**
326
+ * Reads and validates the persisted boot-relevant snapshot. Returns `null` for
327
+ * a legacy template with no snapshot or for a malformed shape; both classify as
328
+ * `unclassified` (fail closed).
329
+ */
330
+ export function readEnvironmentCustomImageBootRelevantConfig(metadata) {
331
+ const raw = metadata?.[ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_METADATA_KEY];
332
+ if (!isRecord(raw))
333
+ return null;
334
+ if (raw.version !== ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_VERSION)
335
+ return null;
336
+ if (typeof raw.provider !== "string" || typeof raw.bindingField !== "string")
337
+ return null;
338
+ if (!isRecord(raw.values))
339
+ return null;
340
+ if (!Array.isArray(raw.excludedPaths))
341
+ return null;
342
+ const excludedPaths = raw.excludedPaths.filter((entry) => typeof entry === "string");
343
+ return {
344
+ version: ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_VERSION,
345
+ provider: raw.provider,
346
+ bindingField: raw.bindingField,
347
+ values: raw.values,
348
+ excludedPaths,
349
+ };
350
+ }
351
+ /**
352
+ * Classifies the drift between the capture-time boot-relevant snapshot and the
353
+ * current parsed config.
354
+ *
355
+ * - `knob_only`: the snapshot is present, no path was excluded, and every value
356
+ * still matches. The fingerprint can be re-stamped without confirmation.
357
+ * - `boot_source_drift`: a value-bearing path differs. The operator must
358
+ * confirm before the re-stamp.
359
+ * - `unclassified`: no snapshot, an excluded path, a provider mismatch, or a
360
+ * snapshot that no longer matches the current provider contract. The server
361
+ * cannot verify the boot source; the operator must confirm (fail closed).
362
+ *
363
+ * `driftedPaths` carries raw `from`/`to` values only for value-bearing paths
364
+ * that passed containment at capture. Excluded paths carry the path name only.
365
+ *
366
+ * `currentContract` is the current provider boot-relevant contract. When the
367
+ * caller cannot resolve the driver, it passes `null`; the server then cannot
368
+ * verify the boot source and the result is `unclassified` (fail closed).
369
+ */
370
+ export function classifyEnvironmentCustomImageBootRelevantDrift(input) {
371
+ const boot = input.bootRelevantConfig;
372
+ if (!boot)
373
+ return { classification: "unclassified", driftedPaths: [] };
374
+ // Without the current provider contract the boot source cannot be verified
375
+ // against a possible identity-path change; fail closed.
376
+ if (!input.currentContract)
377
+ return { classification: "unclassified", driftedPaths: [] };
378
+ // A provider change since capture (new binding or new identity path) makes
379
+ // the persisted snapshot untrustworthy; fail closed.
380
+ if (environmentCustomImageBootRelevantSnapshotIsStale({
381
+ bootRelevantConfig: boot,
382
+ currentContract: input.currentContract,
383
+ })) {
384
+ return { classification: "unclassified", driftedPaths: [] };
385
+ }
386
+ const current = input.currentConfig;
387
+ const driftedPaths = [];
388
+ let hasValueDrift = false;
389
+ for (const [path, capturedValue] of Object.entries(boot.values)) {
390
+ const currentValue = readConfigValueAtPath(current, path);
391
+ if (stableStringify(capturedValue ?? null) !== stableStringify(currentValue ?? null)) {
392
+ hasValueDrift = true;
393
+ driftedPaths.push({ path, from: capturedValue ?? null, to: currentValue ?? null });
394
+ }
395
+ }
396
+ for (const path of boot.excludedPaths) {
397
+ driftedPaths.push({ path });
398
+ }
399
+ const providerMismatch = boot.provider !== input.currentConfig.provider;
400
+ if (boot.excludedPaths.length > 0 || providerMismatch) {
401
+ return { classification: "unclassified", driftedPaths };
402
+ }
403
+ if (hasValueDrift) {
404
+ return { classification: "boot_source_drift", driftedPaths };
405
+ }
406
+ return { classification: "knob_only", driftedPaths: [] };
407
+ }
408
+ /**
409
+ * Removes the server-only boot-relevant snapshot from a template's metadata.
410
+ * The snapshot exists to classify a later relink and holds raw boot-source
411
+ * config values. It must never reach an API response. The runtime keeps it in
412
+ * the persisted row and reads it straight from the row at relink time.
413
+ */
414
+ export function stripInternalEnvironmentCustomImageTemplateMetadata(metadata) {
415
+ if (!metadata)
416
+ return null;
417
+ if (!(ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_METADATA_KEY in metadata))
418
+ return metadata;
419
+ const rest = { ...metadata };
420
+ delete rest[ENVIRONMENT_CUSTOM_IMAGE_BOOT_RELEVANT_CONFIG_METADATA_KEY];
421
+ return rest;
422
+ }
171
423
  export function environmentCustomImageTemplateFromRow(row) {
172
424
  return {
173
425
  id: row.id,
@@ -183,7 +435,9 @@ export function environmentCustomImageTemplateFromRow(row) {
183
435
  capturedAt: row.capturedAt ?? null,
184
436
  lastUsedAt: row.lastUsedAt ?? null,
185
437
  supersededByTemplateId: row.supersededByTemplateId ?? null,
186
- metadata: row.metadata ?? null,
438
+ // The boot-relevant snapshot is server-internal; keep it out of every
439
+ // template response. The relink path reads it from the persisted row.
440
+ metadata: stripInternalEnvironmentCustomImageTemplateMetadata(row.metadata),
187
441
  createdAt: row.createdAt,
188
442
  updatedAt: row.updatedAt,
189
443
  };
@@ -1 +1 @@
1
- {"version":3,"file":"environment-custom-image-runtime.js","sourceRoot":"","sources":["../../src/services/environment-custom-image-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-custom-image-runtime.js","sourceRoot":"","sources":["../../src/services/environment-custom-image-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Db } from "@paperclipai/db";
2
2
  import { type Environment, type EnvironmentCustomImageSetupSession, type EnvironmentCustomImageTemplate } from "@paperclipai/shared";
3
3
  import type { PluginEnvironmentInteractiveSetupConnectionPayload } from "@paperclipai/plugin-sdk";
4
+ import { type EnvironmentCustomImageRelinkClassification, type EnvironmentCustomImageDriftedPath } from "./environment-custom-image-runtime.js";
4
5
  import type { PluginWorkerManager } from "./plugin-worker-manager.js";
5
6
  export interface EnvironmentCustomImageOverview {
6
7
  activeTemplate: EnvironmentCustomImageTemplate | null;
@@ -11,9 +12,21 @@ export interface EnvironmentCustomImageOverview {
11
12
  * active template, or the config could not be evaluated).
12
13
  */
13
14
  activeTemplateMatchesConfig: boolean | null;
15
+ /**
16
+ * Boot-relevant drift attribution for the active template. It classifies the
17
+ * drift between the capture-time boot-relevant snapshot and the current
18
+ * config, and lists the drifted paths with their `from`/`to` values. The UI
19
+ * uses it to name the changed field instead of only "configuration changed".
20
+ * `null` when there is no active template or the driver is not `sandbox`.
21
+ */
22
+ activeTemplateDrift: EnvironmentCustomImageActiveTemplateDrift | null;
14
23
  activeSession: EnvironmentCustomImageSetupSession | null;
15
24
  latestSession: EnvironmentCustomImageSetupSession | null;
16
25
  }
26
+ export interface EnvironmentCustomImageActiveTemplateDrift {
27
+ classification: EnvironmentCustomImageRelinkClassification;
28
+ driftedPaths: EnvironmentCustomImageDriftedPath[];
29
+ }
17
30
  export type EnvironmentCustomImageReconciliation = {
18
31
  action: "none";
19
32
  } | {
@@ -84,6 +97,32 @@ export declare function environmentCustomImageService(db: Db, options?: {
84
97
  next: Pick<Environment, "driver" | "config">;
85
98
  now?: Date;
86
99
  }) => Promise<EnvironmentCustomImageReconciliation>;
100
+ /**
101
+ * Re-stamps the active template's source fingerprint so a detached-but-valid
102
+ * template applies again, without a sandbox boot or a new provider snapshot.
103
+ * The server classifies the drift between the capture-time boot-relevant
104
+ * snapshot and the current config. A `boot_source_drift` or `unclassified`
105
+ * result needs the `confirmBootSourceDrift` flag; the client never
106
+ * classifies. The re-stamp UPDATE and the activity row run in one
107
+ * transaction. Zero updated rows abort with a conflict and write no activity
108
+ * row.
109
+ */
110
+ relinkActiveTemplate: (input: {
111
+ environmentId: string;
112
+ confirmBootSourceDrift?: boolean;
113
+ actor: {
114
+ actorType: "agent" | "user" | "system" | "plugin";
115
+ actorId: string;
116
+ agentId?: string | null;
117
+ runId?: string | null;
118
+ agentApiKeyId?: string | null;
119
+ };
120
+ companyId: string;
121
+ now?: Date;
122
+ }) => Promise<{
123
+ template: EnvironmentCustomImageTemplate;
124
+ classification: EnvironmentCustomImageRelinkClassification;
125
+ }>;
87
126
  rollbackTemplate: (input: {
88
127
  environmentId: string;
89
128
  now?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"environment-custom-images.d.ts","sourceRoot":"","sources":["../../src/services/environment-custom-images.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment-custom-images.d.ts","sourceRoot":"","sources":["../../src/services/environment-custom-images.ts"],"names":[],"mappings":"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"}