@paperclipai/shared 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 (276) hide show
  1. package/dist/adapter-auth-check-code.d.ts +13 -0
  2. package/dist/adapter-auth-check-code.d.ts.map +1 -0
  3. package/dist/adapter-auth-check-code.js +13 -0
  4. package/dist/adapter-auth-check-code.js.map +1 -0
  5. package/dist/adapter-auth-check-code.test.d.ts +2 -0
  6. package/dist/adapter-auth-check-code.test.d.ts.map +1 -0
  7. package/dist/adapter-auth-check-code.test.js +8 -0
  8. package/dist/adapter-auth-check-code.test.js.map +1 -0
  9. package/dist/company-import-transfer.d.ts +3 -37
  10. package/dist/company-import-transfer.d.ts.map +1 -1
  11. package/dist/config-schema.d.ts +130 -1570
  12. package/dist/config-schema.d.ts.map +1 -1
  13. package/dist/config-schema.js +3 -7
  14. package/dist/config-schema.js.map +1 -1
  15. package/dist/constants.d.ts +3 -2
  16. package/dist/constants.d.ts.map +1 -1
  17. package/dist/constants.js +3 -0
  18. package/dist/constants.js.map +1 -1
  19. package/dist/environment-support.d.ts +1 -1
  20. package/dist/environment-support.d.ts.map +1 -1
  21. package/dist/environment-support.js +3 -2
  22. package/dist/environment-support.js.map +1 -1
  23. package/dist/environment-support.test.js +19 -0
  24. package/dist/environment-support.test.js.map +1 -1
  25. package/dist/feature-catalog.d.ts +7 -17
  26. package/dist/feature-catalog.d.ts.map +1 -1
  27. package/dist/feature-catalog.js +9 -2
  28. package/dist/feature-catalog.js.map +1 -1
  29. package/dist/frontmatter.d.ts +3 -13
  30. package/dist/frontmatter.d.ts.map +1 -1
  31. package/dist/frontmatter.js +2 -2
  32. package/dist/frontmatter.js.map +1 -1
  33. package/dist/index.d.ts +7 -3
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +6 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/markdown-work-products.d.ts +26 -0
  38. package/dist/markdown-work-products.d.ts.map +1 -0
  39. package/dist/markdown-work-products.js +70 -0
  40. package/dist/markdown-work-products.js.map +1 -0
  41. package/dist/markdown-work-products.test.d.ts +2 -0
  42. package/dist/markdown-work-products.test.d.ts.map +1 -0
  43. package/dist/markdown-work-products.test.js +122 -0
  44. package/dist/markdown-work-products.test.js.map +1 -0
  45. package/dist/node-version.d.ts +6 -0
  46. package/dist/node-version.d.ts.map +1 -0
  47. package/dist/node-version.js +46 -0
  48. package/dist/node-version.js.map +1 -0
  49. package/dist/runtime-exposure/loopback-bind.d.ts +2 -2
  50. package/dist/runtime-exposure/loopback-bind.d.ts.map +1 -1
  51. package/dist/runtime-exposure/loopback-bind.js +3 -3
  52. package/dist/runtime-exposure/loopback-bind.js.map +1 -1
  53. package/dist/runtime-exposure/loopback-bind.test.js +11 -10
  54. package/dist/runtime-exposure/loopback-bind.test.js.map +1 -1
  55. package/dist/settings-visibility.d.ts +62 -0
  56. package/dist/settings-visibility.d.ts.map +1 -0
  57. package/dist/settings-visibility.js +102 -0
  58. package/dist/settings-visibility.js.map +1 -0
  59. package/dist/settings-visibility.test.d.ts +2 -0
  60. package/dist/settings-visibility.test.d.ts.map +1 -0
  61. package/dist/settings-visibility.test.js +51 -0
  62. package/dist/settings-visibility.test.js.map +1 -0
  63. package/dist/telemetry/generated/paperclip-telemetry.d.ts +4 -2
  64. package/dist/telemetry/generated/paperclip-telemetry.d.ts.map +1 -1
  65. package/dist/telemetry/generated/paperclip-telemetry.js +2 -0
  66. package/dist/telemetry/generated/paperclip-telemetry.js.map +1 -1
  67. package/dist/types/environment.d.ts +20 -0
  68. package/dist/types/environment.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +5 -3
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/index.js +1 -0
  72. package/dist/types/index.js.map +1 -1
  73. package/dist/types/instance.d.ts +7 -0
  74. package/dist/types/instance.d.ts.map +1 -1
  75. package/dist/types/instance.js.map +1 -1
  76. package/dist/types/issue.d.ts +19 -0
  77. package/dist/types/issue.d.ts.map +1 -1
  78. package/dist/types/plugin.d.ts +36 -4
  79. package/dist/types/plugin.d.ts.map +1 -1
  80. package/dist/types/workspace-operation.d.ts +1 -1
  81. package/dist/types/workspace-operation.d.ts.map +1 -1
  82. package/dist/types/workspace-readiness.d.ts +62 -0
  83. package/dist/types/workspace-readiness.d.ts.map +1 -0
  84. package/dist/types/workspace-readiness.js +28 -0
  85. package/dist/types/workspace-readiness.js.map +1 -0
  86. package/dist/types/workspace-runtime.d.ts +6 -8
  87. package/dist/types/workspace-runtime.d.ts.map +1 -1
  88. package/dist/validators/access.d.ts +143 -277
  89. package/dist/validators/access.d.ts.map +1 -1
  90. package/dist/validators/access.js +5 -5
  91. package/dist/validators/adapter-auth-session.d.ts +50 -97
  92. package/dist/validators/adapter-auth-session.d.ts.map +1 -1
  93. package/dist/validators/adapter-auth-session.js +3 -3
  94. package/dist/validators/adapter-registry.d.ts +8 -40
  95. package/dist/validators/adapter-registry.d.ts.map +1 -1
  96. package/dist/validators/adapter-registry.js +1 -1
  97. package/dist/validators/adapter-registry.js.map +1 -1
  98. package/dist/validators/adapter-skills.d.ts +71 -170
  99. package/dist/validators/adapter-skills.d.ts.map +1 -1
  100. package/dist/validators/adapter-skills.js +3 -3
  101. package/dist/validators/agent.d.ts +412 -4798
  102. package/dist/validators/agent.d.ts.map +1 -1
  103. package/dist/validators/agent.js +13 -13
  104. package/dist/validators/agent.js.map +1 -1
  105. package/dist/validators/app-definition.d.ts +270 -2315
  106. package/dist/validators/app-definition.d.ts.map +1 -1
  107. package/dist/validators/approval.d.ts +15 -36
  108. package/dist/validators/approval.d.ts.map +1 -1
  109. package/dist/validators/approval.js +2 -2
  110. package/dist/validators/artifact.d.ts +162 -893
  111. package/dist/validators/artifact.d.ts.map +1 -1
  112. package/dist/validators/artifact.js +6 -6
  113. package/dist/validators/asset.d.ts +1 -5
  114. package/dist/validators/asset.d.ts.map +1 -1
  115. package/dist/validators/budget.d.ts +19 -43
  116. package/dist/validators/budget.d.ts.map +1 -1
  117. package/dist/validators/budget.js +1 -1
  118. package/dist/validators/claude-setup-token-session.d.ts +61 -181
  119. package/dist/validators/claude-setup-token-session.d.ts.map +1 -1
  120. package/dist/validators/claude-setup-token-session.js +4 -4
  121. package/dist/validators/company-portability.d.ts +318 -3616
  122. package/dist/validators/company-portability.d.ts.map +1 -1
  123. package/dist/validators/company-portability.js +2 -2
  124. package/dist/validators/company-skill.d.ts +722 -2934
  125. package/dist/validators/company-skill.d.ts.map +1 -1
  126. package/dist/validators/company-skill.js +63 -63
  127. package/dist/validators/company.d.ts +162 -289
  128. package/dist/validators/company.d.ts.map +1 -1
  129. package/dist/validators/company.js +4 -3
  130. package/dist/validators/company.js.map +1 -1
  131. package/dist/validators/cost.d.ts +29 -57
  132. package/dist/validators/cost.d.ts.map +1 -1
  133. package/dist/validators/cost.js +5 -5
  134. package/dist/validators/decision-queue.d.ts +60 -108
  135. package/dist/validators/decision-queue.d.ts.map +1 -1
  136. package/dist/validators/decision.d.ts +230 -1884
  137. package/dist/validators/decision.d.ts.map +1 -1
  138. package/dist/validators/decision.js +9 -9
  139. package/dist/validators/document-annotation.d.ts +37 -203
  140. package/dist/validators/document-annotation.d.ts.map +1 -1
  141. package/dist/validators/document-annotation.js +3 -3
  142. package/dist/validators/environment-custom-images.d.ts +79 -173
  143. package/dist/validators/environment-custom-images.d.ts.map +1 -1
  144. package/dist/validators/environment-custom-images.js +14 -11
  145. package/dist/validators/environment-custom-images.js.map +1 -1
  146. package/dist/validators/environment.d.ts +82 -259
  147. package/dist/validators/environment.d.ts.map +1 -1
  148. package/dist/validators/execution-workspace.d.ts +173 -513
  149. package/dist/validators/execution-workspace.d.ts.map +1 -1
  150. package/dist/validators/execution-workspace.js +13 -13
  151. package/dist/validators/execution-workspace.js.map +1 -1
  152. package/dist/validators/external-object.d.ts +55 -27
  153. package/dist/validators/external-object.d.ts.map +1 -1
  154. package/dist/validators/external-object.js +1 -1
  155. package/dist/validators/external-object.js.map +1 -1
  156. package/dist/validators/feedback.d.ts +28 -19
  157. package/dist/validators/feedback.d.ts.map +1 -1
  158. package/dist/validators/feedback.js +1 -1
  159. package/dist/validators/finance.d.ts +69 -74
  160. package/dist/validators/finance.d.ts.map +1 -1
  161. package/dist/validators/finance.js +6 -6
  162. package/dist/validators/folder.d.ts +44 -205
  163. package/dist/validators/folder.d.ts.map +1 -1
  164. package/dist/validators/folder.js +7 -7
  165. package/dist/validators/goal.d.ts +26 -34
  166. package/dist/validators/goal.d.ts.map +1 -1
  167. package/dist/validators/goal.js +4 -3
  168. package/dist/validators/goal.js.map +1 -1
  169. package/dist/validators/inbox-agent-policy.d.ts +12 -16
  170. package/dist/validators/inbox-agent-policy.d.ts.map +1 -1
  171. package/dist/validators/inbox-agent-policy.js +1 -1
  172. package/dist/validators/index.d.ts +2 -2
  173. package/dist/validators/index.d.ts.map +1 -1
  174. package/dist/validators/index.js +2 -2
  175. package/dist/validators/index.js.map +1 -1
  176. package/dist/validators/instance.d.ts +50 -563
  177. package/dist/validators/instance.d.ts.map +1 -1
  178. package/dist/validators/instance.js +16 -6
  179. package/dist/validators/instance.js.map +1 -1
  180. package/dist/validators/instance.test.js +13 -0
  181. package/dist/validators/instance.test.js.map +1 -1
  182. package/dist/validators/issue-tree-control.d.ts +41 -80
  183. package/dist/validators/issue-tree-control.d.ts.map +1 -1
  184. package/dist/validators/issue.d.ts +1772 -12251
  185. package/dist/validators/issue.d.ts.map +1 -1
  186. package/dist/validators/issue.js +150 -84
  187. package/dist/validators/issue.js.map +1 -1
  188. package/dist/validators/onboarding-seed.d.ts +3 -37
  189. package/dist/validators/onboarding-seed.d.ts.map +1 -1
  190. package/dist/validators/partial.d.ts +4 -0
  191. package/dist/validators/partial.d.ts.map +1 -0
  192. package/dist/validators/partial.js +35 -0
  193. package/dist/validators/partial.js.map +1 -0
  194. package/dist/validators/pipeline.d.ts +218 -3882
  195. package/dist/validators/pipeline.d.ts.map +1 -1
  196. package/dist/validators/pipeline.js +11 -11
  197. package/dist/validators/plugin.d.ts +725 -2597
  198. package/dist/validators/plugin.d.ts.map +1 -1
  199. package/dist/validators/plugin.js +38 -6
  200. package/dist/validators/plugin.js.map +1 -1
  201. package/dist/validators/plugin.test.js +54 -10
  202. package/dist/validators/plugin.test.js.map +1 -1
  203. package/dist/validators/project.d.ts +345 -2406
  204. package/dist/validators/project.d.ts.map +1 -1
  205. package/dist/validators/project.js +8 -7
  206. package/dist/validators/project.js.map +1 -1
  207. package/dist/validators/resource-memberships.d.ts +11 -27
  208. package/dist/validators/resource-memberships.d.ts.map +1 -1
  209. package/dist/validators/routine.d.ts +362 -1297
  210. package/dist/validators/routine.d.ts.map +1 -1
  211. package/dist/validators/routine.js +21 -20
  212. package/dist/validators/routine.js.map +1 -1
  213. package/dist/validators/runtime-exposure.d.ts +31 -80
  214. package/dist/validators/runtime-exposure.d.ts.map +1 -1
  215. package/dist/validators/search.d.ts +25 -93
  216. package/dist/validators/search.d.ts.map +1 -1
  217. package/dist/validators/secret.d.ts +174 -655
  218. package/dist/validators/secret.d.ts.map +1 -1
  219. package/dist/validators/secret.js +14 -14
  220. package/dist/validators/secret.js.map +1 -1
  221. package/dist/validators/sidebar-preferences.d.ts +5 -15
  222. package/dist/validators/sidebar-preferences.d.ts.map +1 -1
  223. package/dist/validators/sidebar-preferences.js +1 -1
  224. package/dist/validators/skill-policy.d.ts +184 -561
  225. package/dist/validators/skill-policy.d.ts.map +1 -1
  226. package/dist/validators/skill-policy.js +4 -4
  227. package/dist/validators/smoke-lab.d.ts +53 -37
  228. package/dist/validators/smoke-lab.d.ts.map +1 -1
  229. package/dist/validators/status-card.d.ts +139 -994
  230. package/dist/validators/status-card.d.ts.map +1 -1
  231. package/dist/validators/status-card.js +21 -21
  232. package/dist/validators/status-card.js.map +1 -1
  233. package/dist/validators/summary-slot.d.ts +28 -50
  234. package/dist/validators/summary-slot.d.ts.map +1 -1
  235. package/dist/validators/summary-slot.js +3 -3
  236. package/dist/validators/teams-catalog.d.ts +209 -472
  237. package/dist/validators/teams-catalog.d.ts.map +1 -1
  238. package/dist/validators/text.d.ts +1 -1
  239. package/dist/validators/text.d.ts.map +1 -1
  240. package/dist/validators/tool-access.d.ts +1088 -4670
  241. package/dist/validators/tool-access.d.ts.map +1 -1
  242. package/dist/validators/tool-access.js +96 -95
  243. package/dist/validators/tool-access.js.map +1 -1
  244. package/dist/validators/trust-policy.d.ts +62 -358
  245. package/dist/validators/trust-policy.d.ts.map +1 -1
  246. package/dist/validators/trust-policy.js +12 -12
  247. package/dist/validators/work-product.d.ts +110 -536
  248. package/dist/validators/work-product.d.ts.map +1 -1
  249. package/dist/validators/work-product.js +7 -6
  250. package/dist/validators/work-product.js.map +1 -1
  251. package/dist/validators/workspace-file-resource.d.ts +163 -618
  252. package/dist/validators/workspace-file-resource.d.ts.map +1 -1
  253. package/dist/validators/workspace-file-resource.js +11 -11
  254. package/dist/workspace-commands.d.ts +4 -2
  255. package/dist/workspace-commands.d.ts.map +1 -1
  256. package/dist/workspace-commands.js +9 -1
  257. package/dist/workspace-commands.js.map +1 -1
  258. package/dist/workspace-commands.test.js +45 -0
  259. package/dist/workspace-commands.test.js.map +1 -1
  260. package/dist/worktree-port-registry.d.ts +5 -0
  261. package/dist/worktree-port-registry.d.ts.map +1 -0
  262. package/dist/worktree-port-registry.js +382 -0
  263. package/dist/worktree-port-registry.js.map +1 -0
  264. package/dist/worktree-port-registry.test.d.ts +2 -0
  265. package/dist/worktree-port-registry.test.d.ts.map +1 -0
  266. package/dist/worktree-port-registry.test.js +118 -0
  267. package/dist/worktree-port-registry.test.js.map +1 -0
  268. package/dist/worktree-seed-source.d.ts +43 -0
  269. package/dist/worktree-seed-source.d.ts.map +1 -0
  270. package/dist/worktree-seed-source.js +180 -0
  271. package/dist/worktree-seed-source.js.map +1 -0
  272. package/dist/worktree-seed-source.test.d.ts +2 -0
  273. package/dist/worktree-seed-source.test.d.ts.map +1 -0
  274. package/dist/worktree-seed-source.test.js +166 -0
  275. package/dist/worktree-seed-source.test.js.map +1 -0
  276. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-file-resource.d.ts","sourceRoot":"","sources":["../../src/validators/workspace-file-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,gCAAgC,yDAAuD,CAAC;AACrG,eAAO,MAAM,2BAA2B,2DAA2D,CAAC;AACpG,eAAO,MAAM,2BAA2B,uDAAsD,CAAC;AAC/F,eAAO,MAAM,8BAA8B,6DAA2D,CAAC;AACvG,eAAO,MAAM,+BAA+B,qDAAmD,CAAC;AAEhG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWjC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;EAe3C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjD,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BvC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB1C,CAAC;AAEH,eAAO,MAAM,8CAA8C;;;;;;;;;;;;;;;EAKzD,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKhD,CAAC;AAEH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlD,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sCAAsC,CAAC,CAAC"}
1
+ {"version":3,"file":"workspace-file-resource.d.ts","sourceRoot":"","sources":["../../src/validators/workspace-file-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,gCAAgC;;;EAAuD,CAAC;AACrG,eAAO,MAAM,2BAA2B;;;;GAA2D,CAAC;AACpG,eAAO,MAAM,2BAA2B;;;;GAAsD,CAAC;AAC/F,eAAO,MAAM,8BAA8B;;;;;;EAA2D,CAAC;AACvG,eAAO,MAAM,+BAA+B;;;;EAAmD,CAAC;AAEhG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;iBAe3C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;iBAEjD,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;iBA8BvC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB1C,CAAC;AAEH,eAAO,MAAM,8CAA8C;;;;;;;;;iBAKzD,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKhD,CAAC;AAEH,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGlD,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sCAAsC,CAAC,CAAC"}
@@ -10,19 +10,19 @@ export const workspaceFilePreviewKindSchema = z.enum(["text", "image", "video",
10
10
  export const workspaceFileResourceKindSchema = z.enum(["file", "directory", "remote_resource"]);
11
11
  export const workspaceFileRefSchema = z.object({
12
12
  kind: z.literal("workspace_file"),
13
- issueId: z.string().uuid().optional(),
14
- projectId: z.string().uuid().optional(),
13
+ issueId: z.string().guid().optional(),
14
+ projectId: z.string().guid().optional(),
15
15
  projectName: z.string().min(1).optional(),
16
16
  workspaceKind: workspaceFileWorkspaceKindSchema,
17
- workspaceId: z.string().uuid(),
17
+ workspaceId: z.string().guid(),
18
18
  relativePath: z.string().min(1),
19
19
  line: z.number().int().positive().nullable().optional(),
20
20
  column: z.number().int().positive().nullable().optional(),
21
21
  displayPath: z.string().min(1),
22
22
  });
23
23
  export const workspaceFileResourceQuerySchema = z.object({
24
- projectId: z.string().uuid().optional(),
25
- workspaceId: z.string().uuid().optional(),
24
+ projectId: z.string().guid().optional(),
25
+ workspaceId: z.string().guid().optional(),
26
26
  path: z
27
27
  .string()
28
28
  .min(1)
@@ -40,8 +40,8 @@ export const workspaceFileAvailabilityRequestSchema = z.object({
40
40
  queries: z.array(workspaceFileResourceQuerySchema).max(100),
41
41
  });
42
42
  export const workspaceFileListQuerySchema = z.object({
43
- projectId: z.string().uuid().optional(),
44
- workspaceId: z.string().uuid().optional(),
43
+ projectId: z.string().guid().optional(),
44
+ workspaceId: z.string().guid().optional(),
45
45
  workspace: workspaceFileSelectorSchema.optional(),
46
46
  path: z
47
47
  .string()
@@ -77,8 +77,8 @@ export const resolvedWorkspaceResourceSchema = z.object({
77
77
  displayPath: z.string().min(1),
78
78
  workspaceLabel: z.string().min(1),
79
79
  workspaceKind: workspaceFileWorkspaceKindSchema,
80
- workspaceId: z.string().uuid(),
81
- projectId: z.string().uuid().nullable().optional(),
80
+ workspaceId: z.string().guid(),
81
+ projectId: z.string().guid().nullable().optional(),
82
82
  projectName: z.string().min(1).nullable().optional(),
83
83
  contentType: z.string().nullable().optional(),
84
84
  byteSize: z.number().int().nonnegative().nullable().optional(),
@@ -91,8 +91,8 @@ export const resolvedWorkspaceResourceSchema = z.object({
91
91
  }),
92
92
  });
93
93
  export const normalizedWorkspaceFileAvailabilityQuerySchema = z.object({
94
- projectId: z.string().uuid().nullable(),
95
- workspaceId: z.string().uuid().nullable(),
94
+ projectId: z.string().guid().nullable(),
95
+ workspaceId: z.string().guid().nullable(),
96
96
  path: z.string().min(1),
97
97
  workspace: workspaceFileSelectorSchema,
98
98
  });
@@ -1,7 +1,9 @@
1
1
  import type { WorkspaceCommandDefinition, WorkspaceRuntimeService } from "./types/workspace-runtime.js";
2
+ type WorkspaceRuntimeServiceMatchCandidate = Pick<WorkspaceRuntimeService, "configIndex" | "serviceName" | "command" | "cwd"> & Pick<Partial<WorkspaceRuntimeService>, "exposure">;
2
3
  export declare function listWorkspaceCommandDefinitions(workspaceRuntime: Record<string, unknown> | null | undefined): WorkspaceCommandDefinition[];
3
4
  export declare function listWorkspaceServiceCommandDefinitions(workspaceRuntime: Record<string, unknown> | null | undefined): WorkspaceCommandDefinition[];
4
5
  export declare function findWorkspaceCommandDefinition(workspaceRuntime: Record<string, unknown> | null | undefined, workspaceCommandId: string | null | undefined): WorkspaceCommandDefinition | null;
5
- export declare function scoreWorkspaceRuntimeServiceMatch(command: Pick<WorkspaceCommandDefinition, "serviceIndex" | "name" | "command" | "cwd">, runtimeService: Pick<WorkspaceRuntimeService, "configIndex" | "serviceName" | "command" | "cwd">): number;
6
- export declare function matchWorkspaceRuntimeServiceToCommand<T extends Pick<WorkspaceRuntimeService, "configIndex" | "serviceName" | "command" | "cwd">>(command: Pick<WorkspaceCommandDefinition, "serviceIndex" | "name" | "command" | "cwd">, runtimeServices: T[] | null | undefined): T | null;
6
+ export declare function scoreWorkspaceRuntimeServiceMatch(command: Pick<WorkspaceCommandDefinition, "serviceIndex" | "name" | "command" | "cwd">, runtimeService: WorkspaceRuntimeServiceMatchCandidate): number;
7
+ export declare function matchWorkspaceRuntimeServiceToCommand<T extends WorkspaceRuntimeServiceMatchCandidate>(command: Pick<WorkspaceCommandDefinition, "serviceIndex" | "name" | "command" | "cwd">, runtimeServices: T[] | null | undefined): T | null;
8
+ export {};
7
9
  //# sourceMappingURL=workspace-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-commands.d.ts","sourceRoot":"","sources":["../src/workspace-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAqGxG,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3D,0BAA0B,EAAE,CA4C9B;AAED,wBAAgB,sCAAsC,CACpD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,gCAG7D;AAED,wBAAgB,8BAA8B,CAC5C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5D,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,qCAK9C;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,EACtF,cAAc,EAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC,UAqBjG;AAED,wBAAgB,qCAAqC,CACnD,CAAC,SAAS,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC,EAE1F,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,EACtF,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,YAcxC"}
1
+ {"version":3,"file":"workspace-commands.d.ts","sourceRoot":"","sources":["../src/workspace-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGxG,KAAK,qCAAqC,GACtC,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC,GAChF,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC,CAAC;AAqGvD,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3D,0BAA0B,EAAE,CA4C9B;AAED,wBAAgB,sCAAsC,CACpD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,gCAG7D;AAED,wBAAgB,8BAA8B,CAC5C,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5D,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,qCAK9C;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,EACtF,cAAc,EAAE,qCAAqC,UAgCtD;AAED,wBAAgB,qCAAqC,CACnD,CAAC,SAAS,qCAAqC,EAE/C,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,EACtF,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,YAcxC"}
@@ -1,3 +1,4 @@
1
+ import { forceLoopbackBindInCommand } from "./runtime-exposure/loopback-bind.js";
1
2
  function isRecord(value) {
2
3
  return typeof value === "object" && value !== null && !Array.isArray(value);
3
4
  }
@@ -117,7 +118,14 @@ export function findWorkspaceCommandDefinition(workspaceRuntime, workspaceComman
117
118
  return listWorkspaceCommandDefinitions(workspaceRuntime).find((command) => command.id === normalizedId) ?? null;
118
119
  }
119
120
  export function scoreWorkspaceRuntimeServiceMatch(command, runtimeService) {
120
- if (command.command && runtimeService.command && runtimeService.command !== command.command) {
121
+ const exposedCommandMatches = Boolean(command.command
122
+ && runtimeService.command
123
+ && runtimeService.exposure?.provider === "tailscale_https"
124
+ && runtimeService.command === forceLoopbackBindInCommand(command.command));
125
+ if (command.command
126
+ && runtimeService.command
127
+ && runtimeService.command !== command.command
128
+ && !exposedCommandMatches) {
121
129
  return -1;
122
130
  }
123
131
  if (command.serviceIndex !== null && runtimeService.configIndex !== null && runtimeService.configIndex !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-commands.js","sourceRoot":"","sources":["../src/workspace-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-commands.js","sourceRoot":"","sources":["../src/workspace-commands.ts"],"names":[],"mappings":"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"}
@@ -61,5 +61,50 @@ describe("workspace command helpers", () => {
61
61
  ]);
62
62
  expect(match).toBeNull();
63
63
  });
64
+ it("matches an exposed dev runtime whose bind command was hardened to loopback", () => {
65
+ const workspaceRuntime = {
66
+ commands: [
67
+ { id: "web", name: "paperclip-dev", kind: "service", command: "pnpm dev --bind lan" },
68
+ ],
69
+ };
70
+ const command = findWorkspaceCommandDefinition(workspaceRuntime, "web");
71
+ expect(command).not.toBeNull();
72
+ const match = matchWorkspaceRuntimeServiceToCommand(command, [
73
+ {
74
+ id: "runtime-web",
75
+ serviceName: "paperclip-dev",
76
+ command: "pnpm dev --bind loopback",
77
+ cwd: "/repo",
78
+ configIndex: null,
79
+ exposure: {
80
+ provider: "tailscale_https",
81
+ state: "ready",
82
+ publicUrl: "https://paperclip-dev.example.ts.net:42012",
83
+ hostname: "paperclip-dev.example.ts.net",
84
+ listeners: [],
85
+ brokerRef: "broker-1",
86
+ lastError: null,
87
+ updatedAt: "2026-08-20T00:00:00.000Z",
88
+ },
89
+ },
90
+ ]);
91
+ expect(match).toEqual(expect.objectContaining({ id: "runtime-web" }));
92
+ });
93
+ it("does not equate a loopback command with a lan command without managed exposure", () => {
94
+ const command = findWorkspaceCommandDefinition({
95
+ services: [{ name: "paperclip-dev", command: "pnpm dev --bind lan" }],
96
+ }, "service:paperclip-dev");
97
+ const match = matchWorkspaceRuntimeServiceToCommand(command, [
98
+ {
99
+ id: "runtime-web",
100
+ serviceName: "paperclip-dev",
101
+ command: "pnpm dev --bind loopback",
102
+ cwd: "/repo",
103
+ configIndex: null,
104
+ exposure: null,
105
+ },
106
+ ]);
107
+ expect(match).toBeNull();
108
+ });
64
109
  });
65
110
  //# sourceMappingURL=workspace-commands.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-commands.test.js","sourceRoot":"","sources":["../src/workspace-commands.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,yBAAyB,CAAC;AAEjC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,QAAQ,GAAG,+BAA+B,CAAC;YAC/C,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE;gBAChE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE;aAClF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,QAAQ,GAAG,+BAA+B,CAAC;YAC/C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YAChD,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAC7E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,gBAAgB,GAAG;YACvB,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;aAC3E;SACF,CAAC;QACF,MAAM,OAAO,GAAG,8BAA8B,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,qCAAqC,CAAC,OAAQ,EAAE;YAC5D;gBACE,EAAE,EAAE,aAAa;gBACjB,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,UAAU;gBACnB,GAAG,EAAE,OAAO;gBACZ,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,gBAAgB,GAAG;YACvB,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gCAAgC,EAAE,GAAG,EAAE,GAAG,EAAE;aACjG;SACF,CAAC;QACF,MAAM,OAAO,GAAG,8BAA8B,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,qCAAqC,CAAC,OAAQ,EAAE;YAC5D;gBACE,EAAE,EAAE,aAAa;gBACjB,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE,UAAU;gBACnB,GAAG,EAAE,OAAO;gBACZ,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"workspace-commands.test.js","sourceRoot":"","sources":["../src/workspace-commands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function withWorktreePortRegistryLockSync<T>(homeDir: string, run: () => T): T;
2
+ export declare function withWorktreePortRegistryLock<T>(homeDir: string, run: () => Promise<T>): Promise<T>;
3
+ export declare function readWorktreePortRegistry(homeDir: string): Set<string>;
4
+ export declare function writeWorktreePortRegistry(homeDir: string, configPaths: Iterable<string>): void;
5
+ //# sourceMappingURL=worktree-port-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-port-registry.d.ts","sourceRoot":"","sources":["../src/worktree-port-registry.ts"],"names":[],"mappings":"AAyVA,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAcpF;AAED,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAerE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAa9F"}
@@ -0,0 +1,382 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { execFileSync } from "node:child_process";
4
+ import { randomUUID } from "node:crypto";
5
+ import { setTimeout as delay } from "node:timers/promises";
6
+ import { Worker } from "node:worker_threads";
7
+ const WORKTREE_PORT_REGISTRY_FILE = "worktree-port-reservations.json";
8
+ const WORKTREE_PORT_REGISTRY_LOCK_DIR = ".worktree-port-reservations.lock";
9
+ const WORKTREE_PORT_REGISTRY_LOCK_OWNER_FILE = "owner.json";
10
+ const WORKTREE_PORT_REGISTRY_LOCK_OWNER_BACKUP_FILE = "owner.backup.json";
11
+ const WORKTREE_PORT_REGISTRY_LOCK_STALE_MS = 5_000;
12
+ const WORKTREE_PORT_REGISTRY_LOCK_TIMEOUT_MS = 10_000;
13
+ const WORKTREE_PORT_REGISTRY_LOCK_HEARTBEAT_MS = 1_000;
14
+ const WORKTREE_PORT_REGISTRY_LOCK_PROBE_TIMEOUT_MS = 500;
15
+ const sleepSyncBuffer = new Int32Array(new SharedArrayBuffer(4));
16
+ const REGISTRY_LOCK_HEARTBEAT_SOURCE = `
17
+ const fs = require("node:fs");
18
+ const net = require("node:net");
19
+ const path = require("node:path");
20
+ const { parentPort, workerData } = require("node:worker_threads");
21
+ const control = new Int32Array(workerData.control);
22
+ function touchOwnedLock() {
23
+ let sawDifferentOwner = false;
24
+ for (const ownerFile of workerData.ownerFiles) {
25
+ try {
26
+ const owner = JSON.parse(fs.readFileSync(path.join(workerData.lockPath, ownerFile), "utf8"));
27
+ if (owner.token === workerData.token) {
28
+ try {
29
+ const now = new Date();
30
+ fs.utimesSync(workerData.lockPath, now, now);
31
+ return "refreshed";
32
+ } catch {
33
+ return "retry";
34
+ }
35
+ }
36
+ sawDifferentOwner = true;
37
+ } catch {
38
+ // The redundant owner file may still be readable.
39
+ }
40
+ }
41
+ return sawDifferentOwner ? "lost" : "retry";
42
+ }
43
+ let finished = false;
44
+ let timer;
45
+ function complete() {
46
+ Atomics.store(control, 0, 2);
47
+ Atomics.notify(control, 0);
48
+ }
49
+ function finish() {
50
+ if (finished) return;
51
+ finished = true;
52
+ if (timer) clearInterval(timer);
53
+ server.close(complete);
54
+ setTimeout(complete, 250).unref();
55
+ }
56
+ const server = net.createServer((socket) => {
57
+ socket.setEncoding("utf8");
58
+ socket.setTimeout(workerData.probeTimeoutMs, () => socket.destroy());
59
+ socket.once("data", (candidate) => {
60
+ socket.end(candidate === workerData.token ? "owned" : "denied");
61
+ });
62
+ });
63
+ parentPort.once("message", finish);
64
+ server.once("error", () => {
65
+ Atomics.store(control, 0, -1);
66
+ Atomics.notify(control, 0);
67
+ });
68
+ server.listen(0, "127.0.0.1", () => {
69
+ const address = server.address();
70
+ if (!address || typeof address === "string") {
71
+ Atomics.store(control, 0, -1);
72
+ Atomics.notify(control, 0);
73
+ return;
74
+ }
75
+ Atomics.store(control, 2, address.port);
76
+ Atomics.store(control, 0, 1);
77
+ Atomics.notify(control, 0);
78
+ touchOwnedLock();
79
+ timer = setInterval(() => {
80
+ if (Atomics.load(control, 1) !== 0 || touchOwnedLock() === "lost") finish();
81
+ }, workerData.heartbeatMs);
82
+ });
83
+ `;
84
+ const REGISTRY_LOCK_PROBE_SOURCE = `
85
+ const net = require("node:net");
86
+ const { workerData } = require("node:worker_threads");
87
+ const control = new Int32Array(workerData.control);
88
+ let finished = false;
89
+ function finish(result) {
90
+ if (finished) return;
91
+ finished = true;
92
+ Atomics.store(control, 0, result);
93
+ Atomics.notify(control, 0);
94
+ process.exit(0);
95
+ }
96
+ const socket = net.createConnection({ host: "127.0.0.1", port: workerData.port });
97
+ socket.setEncoding("utf8");
98
+ socket.setTimeout(workerData.timeoutMs, () => finish(2));
99
+ socket.once("connect", () => socket.write(workerData.token));
100
+ socket.once("data", (response) => finish(response === "owned" ? 1 : 2));
101
+ socket.once("error", () => finish(2));
102
+ socket.once("close", () => finish(2));
103
+ `;
104
+ function resolveRegistryLockPath(homeDir) {
105
+ fs.mkdirSync(homeDir, { recursive: true });
106
+ return path.resolve(homeDir, WORKTREE_PORT_REGISTRY_LOCK_DIR);
107
+ }
108
+ function readRegistryLockOwner(lockPath) {
109
+ for (const ownerFile of [
110
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_FILE,
111
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_BACKUP_FILE,
112
+ ]) {
113
+ try {
114
+ const parsed = JSON.parse(fs.readFileSync(path.join(lockPath, ownerFile), "utf8"));
115
+ if (parsed.version === 1
116
+ && Number.isInteger(parsed.pid)
117
+ && (parsed.pid ?? 0) > 0
118
+ && typeof parsed.processIdentity === "string"
119
+ && parsed.processIdentity.length > 0
120
+ && Number.isInteger(parsed.probePort)
121
+ && (parsed.probePort ?? 0) > 0
122
+ && (parsed.probePort ?? 0) <= 65_535
123
+ && typeof parsed.token === "string"
124
+ && parsed.token.length > 0) {
125
+ return parsed;
126
+ }
127
+ }
128
+ catch {
129
+ // Try the redundant owner record.
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ function writeRegistryLockOwner(lockPath, owner) {
135
+ const contents = `${JSON.stringify(owner)}\n`;
136
+ for (const ownerFile of [
137
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_FILE,
138
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_BACKUP_FILE,
139
+ ]) {
140
+ const ownerPath = path.join(lockPath, ownerFile);
141
+ const temporaryPath = `${ownerPath}.${owner.token}.tmp`;
142
+ fs.writeFileSync(temporaryPath, contents, { mode: 0o600 });
143
+ fs.renameSync(temporaryPath, ownerPath);
144
+ }
145
+ }
146
+ function isProcessAlive(pid) {
147
+ try {
148
+ process.kill(pid, 0);
149
+ return true;
150
+ }
151
+ catch (error) {
152
+ return !(error instanceof Error && "code" in error && error.code === "ESRCH");
153
+ }
154
+ }
155
+ function readProcessIdentity(pid) {
156
+ if (!Number.isInteger(pid) || pid <= 0)
157
+ return null;
158
+ if (process.platform === "linux") {
159
+ try {
160
+ const stat = fs.readFileSync(`/proc/${pid}/stat`, "utf8");
161
+ const commandEnd = stat.lastIndexOf(")");
162
+ if (commandEnd < 0)
163
+ return null;
164
+ const fields = stat.slice(commandEnd + 1).trim().split(/\s+/);
165
+ const startTicks = fields[19];
166
+ if (!startTicks)
167
+ return null;
168
+ const bootId = fs.readFileSync("/proc/sys/kernel/random/boot_id", "utf8").trim();
169
+ return bootId ? `linux:${bootId}:${startTicks}` : null;
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ try {
176
+ if (process.platform === "win32") {
177
+ const ticks = execFileSync("powershell.exe", [
178
+ "-NoProfile",
179
+ "-NonInteractive",
180
+ "-Command",
181
+ `(Get-Process -Id ${pid}).StartTime.ToUniversalTime().Ticks`,
182
+ ], { encoding: "utf8", windowsHide: true }).trim();
183
+ return ticks ? `win32:${ticks}` : null;
184
+ }
185
+ const startedAt = execFileSync("ps", ["-o", "lstart=", "-p", String(pid)], {
186
+ encoding: "utf8",
187
+ }).trim();
188
+ return startedAt ? `${process.platform}:${startedAt}` : null;
189
+ }
190
+ catch {
191
+ return null;
192
+ }
193
+ }
194
+ function probeRegistryLockOwner(owner) {
195
+ const control = new Int32Array(new SharedArrayBuffer(4));
196
+ const worker = new Worker(REGISTRY_LOCK_PROBE_SOURCE, {
197
+ eval: true,
198
+ execArgv: [],
199
+ workerData: {
200
+ control: control.buffer,
201
+ port: owner.probePort,
202
+ timeoutMs: WORKTREE_PORT_REGISTRY_LOCK_PROBE_TIMEOUT_MS,
203
+ token: owner.token,
204
+ },
205
+ });
206
+ Atomics.wait(control, 0, 0, WORKTREE_PORT_REGISTRY_LOCK_PROBE_TIMEOUT_MS + 250);
207
+ const isOwner = Atomics.load(control, 0) === 1;
208
+ void worker.terminate();
209
+ return isOwner;
210
+ }
211
+ function removeStaleRegistryLock(lockPath) {
212
+ try {
213
+ const ageMs = Date.now() - fs.statSync(lockPath).mtimeMs;
214
+ if (ageMs <= WORKTREE_PORT_REGISTRY_LOCK_STALE_MS)
215
+ return false;
216
+ const owner = readRegistryLockOwner(lockPath);
217
+ if (owner && isProcessAlive(owner.pid)) {
218
+ if (probeRegistryLockOwner(owner))
219
+ return false;
220
+ const currentIdentity = readProcessIdentity(owner.pid);
221
+ if (owner.processIdentity === currentIdentity)
222
+ return false;
223
+ }
224
+ const currentOwner = readRegistryLockOwner(lockPath);
225
+ if (owner ? currentOwner?.token !== owner.token : currentOwner !== null)
226
+ return false;
227
+ const currentAgeMs = Date.now() - fs.statSync(lockPath).mtimeMs;
228
+ if (currentAgeMs <= WORKTREE_PORT_REGISTRY_LOCK_STALE_MS)
229
+ return false;
230
+ fs.rmSync(lockPath, { recursive: true, force: true });
231
+ return true;
232
+ }
233
+ catch {
234
+ return false;
235
+ }
236
+ }
237
+ function startRegistryLockHeartbeat(lockPath, token) {
238
+ const control = new Int32Array(new SharedArrayBuffer(12));
239
+ const worker = new Worker(REGISTRY_LOCK_HEARTBEAT_SOURCE, {
240
+ eval: true,
241
+ execArgv: [],
242
+ workerData: {
243
+ control: control.buffer,
244
+ heartbeatMs: WORKTREE_PORT_REGISTRY_LOCK_HEARTBEAT_MS,
245
+ lockPath,
246
+ ownerFiles: [
247
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_FILE,
248
+ WORKTREE_PORT_REGISTRY_LOCK_OWNER_BACKUP_FILE,
249
+ ],
250
+ probeTimeoutMs: WORKTREE_PORT_REGISTRY_LOCK_PROBE_TIMEOUT_MS,
251
+ token,
252
+ },
253
+ });
254
+ Atomics.wait(control, 0, 0, 2_000);
255
+ if (Atomics.load(control, 0) !== 1) {
256
+ void worker.terminate();
257
+ throw new Error(`Failed to start worktree port reservation lock heartbeat at ${lockPath}`);
258
+ }
259
+ const probePort = Atomics.load(control, 2);
260
+ if (probePort <= 0) {
261
+ void worker.terminate();
262
+ throw new Error(`Failed to start worktree port reservation lock probe at ${lockPath}`);
263
+ }
264
+ return { token, worker, control, probePort };
265
+ }
266
+ function stopRegistryLockHeartbeat(lease) {
267
+ Atomics.store(lease.control, 1, 1);
268
+ Atomics.notify(lease.control, 1);
269
+ lease.worker.postMessage("stop");
270
+ if (Atomics.load(lease.control, 0) === 1) {
271
+ Atomics.wait(lease.control, 0, 1, 2_000);
272
+ }
273
+ void lease.worker.terminate();
274
+ }
275
+ function acquireRegistryLock(lockPath, deadline) {
276
+ try {
277
+ fs.mkdirSync(lockPath);
278
+ const token = `${process.pid}-${randomUUID()}`;
279
+ let lease = null;
280
+ try {
281
+ const processIdentity = readProcessIdentity(process.pid);
282
+ if (!processIdentity) {
283
+ throw new Error("Cannot determine worktree port reservation lock owner identity");
284
+ }
285
+ const owner = {
286
+ version: 1,
287
+ pid: process.pid,
288
+ processIdentity,
289
+ probePort: 1,
290
+ token,
291
+ };
292
+ writeRegistryLockOwner(lockPath, owner);
293
+ lease = startRegistryLockHeartbeat(lockPath, token);
294
+ writeRegistryLockOwner(lockPath, { ...owner, probePort: lease.probePort });
295
+ return lease;
296
+ }
297
+ catch (error) {
298
+ if (lease)
299
+ stopRegistryLockHeartbeat(lease);
300
+ fs.rmSync(lockPath, { recursive: true, force: true });
301
+ throw error;
302
+ }
303
+ }
304
+ catch (error) {
305
+ const code = error instanceof Error && "code" in error ? error.code : null;
306
+ if (code !== "EEXIST")
307
+ throw error;
308
+ if (removeStaleRegistryLock(lockPath))
309
+ return null;
310
+ if (Date.now() >= deadline) {
311
+ throw new Error(`Timed out waiting for worktree port reservation lock at ${lockPath}`);
312
+ }
313
+ return null;
314
+ }
315
+ }
316
+ function releaseRegistryLock(lockPath, lease) {
317
+ stopRegistryLockHeartbeat(lease);
318
+ const owner = readRegistryLockOwner(lockPath);
319
+ if (owner?.token !== lease.token) {
320
+ return;
321
+ }
322
+ fs.rmSync(lockPath, { recursive: true, force: true });
323
+ }
324
+ export function withWorktreePortRegistryLockSync(homeDir, run) {
325
+ const lockPath = resolveRegistryLockPath(homeDir);
326
+ const deadline = Date.now() + WORKTREE_PORT_REGISTRY_LOCK_TIMEOUT_MS;
327
+ let lease = null;
328
+ while (!(lease = acquireRegistryLock(lockPath, deadline))) {
329
+ Atomics.wait(sleepSyncBuffer, 0, 0, 25);
330
+ }
331
+ try {
332
+ return run();
333
+ }
334
+ finally {
335
+ releaseRegistryLock(lockPath, lease);
336
+ }
337
+ }
338
+ export async function withWorktreePortRegistryLock(homeDir, run) {
339
+ const lockPath = resolveRegistryLockPath(homeDir);
340
+ const deadline = Date.now() + WORKTREE_PORT_REGISTRY_LOCK_TIMEOUT_MS;
341
+ let lease = null;
342
+ while (!(lease = acquireRegistryLock(lockPath, deadline))) {
343
+ await delay(25);
344
+ }
345
+ try {
346
+ return await run();
347
+ }
348
+ finally {
349
+ releaseRegistryLock(lockPath, lease);
350
+ }
351
+ }
352
+ export function readWorktreePortRegistry(homeDir) {
353
+ const registryPath = path.resolve(homeDir, WORKTREE_PORT_REGISTRY_FILE);
354
+ if (!fs.existsSync(registryPath))
355
+ return new Set();
356
+ try {
357
+ const parsed = JSON.parse(fs.readFileSync(registryPath, "utf8"));
358
+ if (parsed.version !== 1 || !Array.isArray(parsed.configPaths))
359
+ return new Set();
360
+ return new Set(parsed.configPaths
361
+ .filter((configPath) => typeof configPath === "string" && configPath.length > 0)
362
+ .map((configPath) => path.resolve(configPath)));
363
+ }
364
+ catch {
365
+ return new Set();
366
+ }
367
+ }
368
+ export function writeWorktreePortRegistry(homeDir, configPaths) {
369
+ fs.mkdirSync(homeDir, { recursive: true });
370
+ const registryPath = path.resolve(homeDir, WORKTREE_PORT_REGISTRY_FILE);
371
+ const persistedPaths = Array.from(new Set(Array.from(configPaths, (configPath) => path.resolve(configPath))))
372
+ .filter((configPath) => fs.existsSync(configPath))
373
+ .sort();
374
+ const registry = {
375
+ version: 1,
376
+ configPaths: persistedPaths,
377
+ };
378
+ const temporaryPath = `${registryPath}.${process.pid}.tmp`;
379
+ fs.writeFileSync(temporaryPath, `${JSON.stringify(registry, null, 2)}\n`, { mode: 0o600 });
380
+ fs.renameSync(temporaryPath, registryPath);
381
+ }
382
+ //# sourceMappingURL=worktree-port-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-port-registry.js","sourceRoot":"","sources":["../src/worktree-port-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worktree-port-registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-port-registry.test.d.ts","sourceRoot":"","sources":["../src/worktree-port-registry.test.ts"],"names":[],"mappings":""}