stitchkit 0.94.0 → 0.94.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 (346) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/agent-runtime/coding-shell-process.d.ts.map +1 -1
  3. package/dist/agent-runtime/coding-tool-listing.d.ts.map +1 -1
  4. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
  5. package/dist/agent-runtime/contained-darwin.d.ts +38 -0
  6. package/dist/agent-runtime/contained-darwin.d.ts.map +1 -0
  7. package/dist/agent-runtime/contained-files.d.ts +11 -26
  8. package/dist/agent-runtime/contained-files.d.ts.map +1 -1
  9. package/dist/agent-runtime/contained-scan.d.ts +21 -0
  10. package/dist/agent-runtime/contained-scan.d.ts.map +1 -0
  11. package/dist/agent-runtime/contained-write.d.ts +9 -0
  12. package/dist/agent-runtime/contained-write.d.ts.map +1 -0
  13. package/dist/agent-runtime/deferred-tool-types.d.ts +3 -2
  14. package/dist/agent-runtime/deferred-tool-types.d.ts.map +1 -1
  15. package/dist/agent-runtime/harness-control.d.ts +0 -1
  16. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  17. package/dist/agent-runtime/harness.d.ts +0 -5
  18. package/dist/agent-runtime/harness.d.ts.map +1 -1
  19. package/dist/agent-runtime/managed-tools.d.ts +3 -2
  20. package/dist/agent-runtime/managed-tools.d.ts.map +1 -1
  21. package/dist/agent-runtime/runtime.d.ts +1 -1
  22. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  23. package/dist/agent-runtime/schedule-records.d.ts +34 -0
  24. package/dist/agent-runtime/schedule-records.d.ts.map +1 -0
  25. package/dist/agent-runtime/schedules.d.ts +34 -0
  26. package/dist/agent-runtime/schedules.d.ts.map +1 -1
  27. package/dist/agent-runtime/store-conformance-lifecycle.d.ts +434 -0
  28. package/dist/agent-runtime/store-conformance-lifecycle.d.ts.map +1 -0
  29. package/dist/agent-runtime/store-conformance-ordering.d.ts +18 -0
  30. package/dist/agent-runtime/store-conformance-ordering.d.ts.map +1 -0
  31. package/dist/agent-runtime/store-conformance-support.d.ts +130 -0
  32. package/dist/agent-runtime/store-conformance-support.d.ts.map +1 -0
  33. package/dist/agent-runtime/store-conformance-terminal.d.ts +12 -0
  34. package/dist/agent-runtime/store-conformance-terminal.d.ts.map +1 -0
  35. package/dist/agent-runtime/store-conformance.d.ts.map +1 -1
  36. package/dist/application/admission-rate.d.ts +21 -0
  37. package/dist/application/admission-rate.d.ts.map +1 -0
  38. package/dist/application/admission-run.d.ts +8 -0
  39. package/dist/application/admission-run.d.ts.map +1 -0
  40. package/dist/application/admission.d.ts.map +1 -1
  41. package/dist/application/diagnostic-journal-lock.d.ts +9 -34
  42. package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
  43. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -1
  44. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -1
  45. package/dist/application/kernel-resource-context.d.ts.map +1 -1
  46. package/dist/application/notification-outbox.d.ts.map +1 -1
  47. package/dist/application/schedule.d.ts +0 -1
  48. package/dist/application/schedule.d.ts.map +1 -1
  49. package/dist/application/watch-hub-core.d.ts +122 -0
  50. package/dist/application/watch-hub-core.d.ts.map +1 -0
  51. package/dist/application/watch-hub.d.ts +2 -2
  52. package/dist/application/watch-hub.d.ts.map +1 -1
  53. package/dist/browser/client-executors.d.ts +14 -0
  54. package/dist/browser/client-executors.d.ts.map +1 -0
  55. package/dist/browser/client-multipart.d.ts +1 -1
  56. package/dist/browser/client-multipart.d.ts.map +1 -1
  57. package/dist/browser/client.d.ts +3 -2
  58. package/dist/browser/client.d.ts.map +1 -1
  59. package/dist/browser/http-fetch.d.ts +22 -0
  60. package/dist/browser/http-fetch.d.ts.map +1 -0
  61. package/dist/browser/http.d.ts +1 -3
  62. package/dist/browser/http.d.ts.map +1 -1
  63. package/dist/browser/live-state-core.d.ts +63 -0
  64. package/dist/browser/live-state-core.d.ts.map +1 -0
  65. package/dist/browser/live-state.d.ts.map +1 -1
  66. package/dist/browser/realtime-client.d.ts +26 -0
  67. package/dist/browser/realtime-client.d.ts.map +1 -0
  68. package/dist/browser/socket-io-connection.d.ts +82 -0
  69. package/dist/browser/socket-io-connection.d.ts.map +1 -0
  70. package/dist/browser/socket-io-peer.d.ts +20 -0
  71. package/dist/browser/socket-io-peer.d.ts.map +1 -0
  72. package/dist/browser/socket-io-trace.d.ts +31 -0
  73. package/dist/browser/socket-io-trace.d.ts.map +1 -0
  74. package/dist/browser/socket-io.d.ts +2 -18
  75. package/dist/browser/socket-io.d.ts.map +1 -1
  76. package/dist/contract/client-types.d.ts +134 -0
  77. package/dist/contract/client-types.d.ts.map +1 -0
  78. package/dist/contract/define-validation.d.ts +30 -0
  79. package/dist/contract/define-validation.d.ts.map +1 -0
  80. package/dist/contract/define.d.ts +3 -357
  81. package/dist/contract/define.d.ts.map +1 -1
  82. package/dist/contract/runtime-context.d.ts +131 -0
  83. package/dist/contract/runtime-context.d.ts.map +1 -0
  84. package/dist/contract/tool-options.d.ts +105 -0
  85. package/dist/contract/tool-options.d.ts.map +1 -0
  86. package/dist/contract/tool-view.d.ts +15 -2
  87. package/dist/contract/tool-view.d.ts.map +1 -1
  88. package/dist/durability/contract.d.ts +83 -0
  89. package/dist/durability/contract.d.ts.map +1 -1
  90. package/dist/durability/effect.d.ts +24 -0
  91. package/dist/durability/effect.d.ts.map +1 -0
  92. package/dist/durability/engine.d.ts +2 -2
  93. package/dist/durability/engine.d.ts.map +1 -1
  94. package/dist/durability/events.d.ts +2 -0
  95. package/dist/durability/events.d.ts.map +1 -1
  96. package/dist/durability/ledger.d.ts +11 -0
  97. package/dist/durability/ledger.d.ts.map +1 -1
  98. package/dist/durability/parks.d.ts +22 -0
  99. package/dist/durability/parks.d.ts.map +1 -0
  100. package/dist/durability/scheduler.d.ts +1 -0
  101. package/dist/durability/scheduler.d.ts.map +1 -1
  102. package/dist/entrypoints/agent-runtime/coding-tools.js +4 -4
  103. package/dist/entrypoints/agent-runtime/harness.js +127 -116
  104. package/dist/entrypoints/agent-runtime/sandbox.js +4 -4
  105. package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
  106. package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
  107. package/dist/entrypoints/agent-runtime/testing.js +246 -214
  108. package/dist/entrypoints/agent-runtime.js +224 -203
  109. package/dist/entrypoints/application/diagnostic-journal.js +63 -203
  110. package/dist/entrypoints/application/opentelemetry.js +1 -1
  111. package/dist/entrypoints/application.js +361 -324
  112. package/dist/entrypoints/cli.d.ts +4 -1
  113. package/dist/entrypoints/cli.d.ts.map +1 -1
  114. package/dist/entrypoints/cli.js +57 -35
  115. package/dist/entrypoints/contract.d.ts +5 -2
  116. package/dist/entrypoints/contract.d.ts.map +1 -1
  117. package/dist/entrypoints/contract.js +3 -2
  118. package/dist/entrypoints/files.d.ts +2 -0
  119. package/dist/entrypoints/files.d.ts.map +1 -1
  120. package/dist/entrypoints/files.js +98 -2
  121. package/dist/entrypoints/index.d.ts +4 -2
  122. package/dist/entrypoints/index.d.ts.map +1 -1
  123. package/dist/entrypoints/index.js +348 -282
  124. package/dist/entrypoints/live.js +89 -71
  125. package/dist/entrypoints/node.d.ts +2 -1
  126. package/dist/entrypoints/node.d.ts.map +1 -1
  127. package/dist/entrypoints/node.js +13 -12
  128. package/dist/entrypoints/react.js +1 -1
  129. package/dist/entrypoints/remote.js +4 -4
  130. package/dist/entrypoints/server.d.ts +4 -2
  131. package/dist/entrypoints/server.d.ts.map +1 -1
  132. package/dist/entrypoints/server.js +293 -79
  133. package/dist/entrypoints/testing.d.ts +2 -1
  134. package/dist/entrypoints/testing.d.ts.map +1 -1
  135. package/dist/entrypoints/testing.js +288 -281
  136. package/dist/entrypoints/tools/connections.js +2 -2
  137. package/dist/entrypoints/tools/invoker.js +4 -4
  138. package/dist/entrypoints/tools.d.ts +6 -3
  139. package/dist/entrypoints/tools.d.ts.map +1 -1
  140. package/dist/entrypoints/tools.js +245 -202
  141. package/dist/entrypoints/tracking.js +325 -274
  142. package/dist/files/boundary.d.ts.map +1 -1
  143. package/dist/files/file-io.d.ts +14 -0
  144. package/dist/files/file-io.d.ts.map +1 -0
  145. package/dist/index-1j8pm5t0.js +412 -0
  146. package/dist/{index-kvj7f4hq.js → index-2bxbyab0.js} +10 -2
  147. package/dist/{index-xnj9bgxe.js → index-2gxzjvyr.js} +2 -162
  148. package/dist/index-4gcnakhx.js +82 -0
  149. package/dist/{index-j05z5gn4.js → index-55hkhm67.js} +136 -119
  150. package/dist/{index-cq4qfycf.js → index-79z7m7dt.js} +227 -59
  151. package/dist/{index-97ac4gph.js → index-7f68ghdn.js} +3 -3
  152. package/dist/{index-r7nmqpsg.js → index-7p1f0vp2.js} +1 -1
  153. package/dist/{index-dcpdvjsc.js → index-863ea9jb.js} +4 -4
  154. package/dist/index-8p52kd5p.js +242 -0
  155. package/dist/{index-2qzskm8h.js → index-dce5wxcq.js} +1 -1
  156. package/dist/index-e01r054k.js +105 -0
  157. package/dist/{index-sees8yf8.js → index-ensd0r74.js} +118 -111
  158. package/dist/{index-1nd48tm9.js → index-gxrt5h6v.js} +2 -1
  159. package/dist/{index-e87kakm4.js → index-ham5sz8m.js} +112 -110
  160. package/dist/{index-kj2wbeta.js → index-het2he5g.js} +280 -196
  161. package/dist/{index-vcvkq30w.js → index-hmp4800j.js} +3 -3
  162. package/dist/{index-gyr48nzg.js → index-k30h66yd.js} +71 -151
  163. package/dist/{index-2cr1cqhn.js → index-khtgb21r.js} +2 -2
  164. package/dist/{index-x4799c19.js → index-ndddxtyx.js} +11 -11
  165. package/dist/{index-dydjcp8z.js → index-np4m8hd3.js} +38 -36
  166. package/dist/{index-p81267c2.js → index-p3vsv1fb.js} +621 -357
  167. package/dist/{index-mp5sn43f.js → index-p9e0w8hs.js} +2 -2
  168. package/dist/{index-rewkc2hj.js → index-p9sh0xx4.js} +3 -3
  169. package/dist/{index-70yj2ebz.js → index-paz6sgdp.js} +107 -103
  170. package/dist/{index-bn2cjajt.js → index-px2gm2jp.js} +26 -102
  171. package/dist/index-s812ycat.js +65 -0
  172. package/dist/{index-xsqjkha9.js → index-sp1tzwnb.js} +2 -2
  173. package/dist/{index-n6hxg8as.js → index-t9rhjr9f.js} +615 -566
  174. package/dist/{index-zeemqhqx.js → index-v260df89.js} +88 -80
  175. package/dist/{index-fdp6hdxn.js → index-w906953s.js} +5 -1
  176. package/dist/{index-mdzh02yc.js → index-wdkt63w3.js} +1 -1
  177. package/dist/{index-58k4fp34.js → index-wsm5w4ee.js} +1 -1
  178. package/dist/{index-v38qyerb.js → index-xw3s75nj.js} +1 -1
  179. package/dist/internal/atomic-file.d.ts +23 -2
  180. package/dist/internal/atomic-file.d.ts.map +1 -1
  181. package/dist/internal/exclusive-lock.d.ts +51 -0
  182. package/dist/internal/exclusive-lock.d.ts.map +1 -0
  183. package/dist/internal/process-identity.d.ts +47 -0
  184. package/dist/internal/process-identity.d.ts.map +1 -0
  185. package/dist/internal/with-exclusive-lock.d.ts +67 -0
  186. package/dist/internal/with-exclusive-lock.d.ts.map +1 -0
  187. package/dist/live/watch-client.d.ts.map +1 -1
  188. package/dist/observability/audit.d.ts +2 -2
  189. package/dist/observability/audit.d.ts.map +1 -1
  190. package/dist/observability/event.d.ts +2 -1
  191. package/dist/observability/event.d.ts.map +1 -1
  192. package/dist/primitives/export-operation.d.ts +1 -1
  193. package/dist/primitives/export-operation.d.ts.map +1 -1
  194. package/dist/realtime/registry.d.ts +0 -5
  195. package/dist/realtime/registry.d.ts.map +1 -1
  196. package/dist/server/bun.d.ts +0 -1
  197. package/dist/server/bun.d.ts.map +1 -1
  198. package/dist/server/context-contribution.d.ts +1 -1
  199. package/dist/server/context-contribution.d.ts.map +1 -1
  200. package/dist/server/context.d.ts +1 -1
  201. package/dist/server/context.d.ts.map +1 -1
  202. package/dist/server/endpoint-response.d.ts +2 -1
  203. package/dist/server/endpoint-response.d.ts.map +1 -1
  204. package/dist/server/error-dispatch.d.ts +1 -1
  205. package/dist/server/error-dispatch.d.ts.map +1 -1
  206. package/dist/server/error-hook.d.ts +1 -1
  207. package/dist/server/error-hook.d.ts.map +1 -1
  208. package/dist/server/handler-state.d.ts +1 -1
  209. package/dist/server/handler-state.d.ts.map +1 -1
  210. package/dist/server/implement-registry.d.ts +54 -0
  211. package/dist/server/implement-registry.d.ts.map +1 -0
  212. package/dist/server/implement.d.ts +9 -55
  213. package/dist/server/implement.d.ts.map +1 -1
  214. package/dist/server/middleware/auth.d.ts +1 -31
  215. package/dist/server/middleware/auth.d.ts.map +1 -1
  216. package/dist/server/middleware/jwt.d.ts +31 -0
  217. package/dist/server/middleware/jwt.d.ts.map +1 -0
  218. package/dist/server/multipart-reader.d.ts +22 -0
  219. package/dist/server/multipart-reader.d.ts.map +1 -0
  220. package/dist/server/multipart.d.ts +1 -1
  221. package/dist/server/multipart.d.ts.map +1 -1
  222. package/dist/server/oauth/cimd.d.ts +88 -0
  223. package/dist/server/oauth/cimd.d.ts.map +1 -0
  224. package/dist/server/oauth/endpoints.d.ts +39 -0
  225. package/dist/server/oauth/endpoints.d.ts.map +1 -0
  226. package/dist/server/oauth/provider.d.ts +1 -68
  227. package/dist/server/oauth/provider.d.ts.map +1 -1
  228. package/dist/server/streaming-pump.d.ts +66 -0
  229. package/dist/server/streaming-pump.d.ts.map +1 -0
  230. package/dist/server/streaming-route.d.ts +12 -5
  231. package/dist/server/streaming-route.d.ts.map +1 -1
  232. package/dist/server/types.d.ts +4 -1
  233. package/dist/server/types.d.ts.map +1 -1
  234. package/dist/server/unix-client-bun.d.ts.map +1 -1
  235. package/dist/server/unix-client-http1.d.ts +76 -0
  236. package/dist/server/unix-client-http1.d.ts.map +1 -0
  237. package/dist/server/unix-client.d.ts.map +1 -1
  238. package/dist/testing/handler-clients.d.ts +2 -1
  239. package/dist/testing/handler-clients.d.ts.map +1 -1
  240. package/dist/testing/realtime-probe.d.ts +33 -0
  241. package/dist/testing/realtime-probe.d.ts.map +1 -0
  242. package/dist/testing/surface-conformance.d.ts +0 -31
  243. package/dist/testing/surface-conformance.d.ts.map +1 -1
  244. package/dist/testing/surface-manifest-digest.d.ts +44 -0
  245. package/dist/testing/surface-manifest-digest.d.ts.map +1 -0
  246. package/dist/testing/surface-manifest.d.ts.map +1 -1
  247. package/dist/tools/agent.d.ts +1 -1
  248. package/dist/tools/agent.d.ts.map +1 -1
  249. package/dist/tools/cli/args-fields.d.ts +31 -0
  250. package/dist/tools/cli/args-fields.d.ts.map +1 -0
  251. package/dist/tools/cli/args-route.d.ts +42 -0
  252. package/dist/tools/cli/args-route.d.ts.map +1 -0
  253. package/dist/tools/cli/args-view.d.ts +32 -0
  254. package/dist/tools/cli/args-view.d.ts.map +1 -0
  255. package/dist/tools/cli/args.d.ts +2 -65
  256. package/dist/tools/cli/args.d.ts.map +1 -1
  257. package/dist/tools/cli/argument-error.d.ts +5 -0
  258. package/dist/tools/cli/argument-error.d.ts.map +1 -0
  259. package/dist/tools/cli/checkpoint.d.ts.map +1 -1
  260. package/dist/tools/cli/command.d.ts +1 -1
  261. package/dist/tools/cli/command.d.ts.map +1 -1
  262. package/dist/tools/cli/config.d.ts +1 -1
  263. package/dist/tools/cli/config.d.ts.map +1 -1
  264. package/dist/tools/cli/format.d.ts +2 -1
  265. package/dist/tools/cli/format.d.ts.map +1 -1
  266. package/dist/tools/cli/invoke.d.ts +2 -1
  267. package/dist/tools/cli/invoke.d.ts.map +1 -1
  268. package/dist/tools/cli/managed-surface.d.ts +1 -1
  269. package/dist/tools/cli/managed-surface.d.ts.map +1 -1
  270. package/dist/tools/cli/policy.d.ts +1 -1
  271. package/dist/tools/cli/policy.d.ts.map +1 -1
  272. package/dist/tools/cli/prepare.d.ts.map +1 -1
  273. package/dist/tools/cli/run-managed.d.ts.map +1 -1
  274. package/dist/tools/cli/session.d.ts +1 -1
  275. package/dist/tools/cli/session.d.ts.map +1 -1
  276. package/dist/tools/cli/update.d.ts +19 -0
  277. package/dist/tools/cli/update.d.ts.map +1 -1
  278. package/dist/tools/cli/view.d.ts +1 -1
  279. package/dist/tools/cli/view.d.ts.map +1 -1
  280. package/dist/tools/cli/wait.d.ts +1 -1
  281. package/dist/tools/cli/wait.d.ts.map +1 -1
  282. package/dist/tools/connections/runtime.d.ts +1 -1
  283. package/dist/tools/connections/runtime.d.ts.map +1 -1
  284. package/dist/tools/execute-args.d.ts +23 -0
  285. package/dist/tools/execute-args.d.ts.map +1 -0
  286. package/dist/tools/execute-hooks.d.ts +146 -0
  287. package/dist/tools/execute-hooks.d.ts.map +1 -0
  288. package/dist/tools/execute-result.d.ts +40 -0
  289. package/dist/tools/execute-result.d.ts.map +1 -0
  290. package/dist/tools/execute.d.ts +4 -193
  291. package/dist/tools/execute.d.ts.map +1 -1
  292. package/dist/tools/internal/surface-projector.d.ts +2 -1
  293. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  294. package/dist/tools/invoker.d.ts +2 -1
  295. package/dist/tools/invoker.d.ts.map +1 -1
  296. package/dist/tools/lifecycle.d.ts +1 -1
  297. package/dist/tools/lifecycle.d.ts.map +1 -1
  298. package/dist/tools/mcp/mount.d.ts +1 -1
  299. package/dist/tools/mcp/mount.d.ts.map +1 -1
  300. package/dist/tools/mcp/prepare.d.ts +2 -1
  301. package/dist/tools/mcp/prepare.d.ts.map +1 -1
  302. package/dist/tools/mcp/progress.d.ts +1 -1
  303. package/dist/tools/mcp/progress.d.ts.map +1 -1
  304. package/dist/tools/mcp/register.d.ts +3 -2
  305. package/dist/tools/mcp/register.d.ts.map +1 -1
  306. package/dist/tools/mcp/round-context.d.ts +38 -0
  307. package/dist/tools/mcp/round-context.d.ts.map +1 -0
  308. package/dist/tools/mcp/round-policy.d.ts +1 -1
  309. package/dist/tools/mcp/round-policy.d.ts.map +1 -1
  310. package/dist/tools/mcp/round.d.ts +3 -11
  311. package/dist/tools/mcp/round.d.ts.map +1 -1
  312. package/dist/tools/mcp/runtime-tools.d.ts +2 -1
  313. package/dist/tools/mcp/runtime-tools.d.ts.map +1 -1
  314. package/dist/tools/mount.d.ts +3 -1
  315. package/dist/tools/mount.d.ts.map +1 -1
  316. package/dist/tools/native-definition.d.ts +2 -1
  317. package/dist/tools/native-definition.d.ts.map +1 -1
  318. package/dist/tools/operations/async-operation-runtime-tools.d.ts +2 -1
  319. package/dist/tools/operations/async-operation-runtime-tools.d.ts.map +1 -1
  320. package/dist/tools/operations/async-operation-runtime-types.d.ts +2 -1
  321. package/dist/tools/operations/async-operation-runtime-types.d.ts.map +1 -1
  322. package/dist/tools/remote.d.ts.map +1 -1
  323. package/dist/tools/runtime-tool.d.ts +3 -1
  324. package/dist/tools/runtime-tool.d.ts.map +1 -1
  325. package/dist/tools/tool-logger.d.ts +1 -1
  326. package/dist/tools/tool-logger.d.ts.map +1 -1
  327. package/dist/tracking/client-listeners.d.ts +30 -0
  328. package/dist/tracking/client-listeners.d.ts.map +1 -0
  329. package/dist/tracking/client-visit.d.ts +61 -0
  330. package/dist/tracking/client-visit.d.ts.map +1 -0
  331. package/dist/tracking/client.d.ts +3 -2
  332. package/dist/tracking/client.d.ts.map +1 -1
  333. package/llms/application.2.txt +266 -2
  334. package/llms/application.txt +8 -266
  335. package/llms/cli.2.txt +80 -0
  336. package/llms/cli.txt +45 -74
  337. package/llms/contract.txt +3 -3
  338. package/llms/files.txt +3 -0
  339. package/llms/tools.2.txt +88 -279
  340. package/llms/tools.3.txt +288 -0
  341. package/llms/tools.txt +27 -65
  342. package/llms-full.txt +108 -12
  343. package/llms.txt +5 -5
  344. package/package.json +1 -1
  345. package/dist/index-e2z3ahw9.js +0 -325
  346. package/dist/index-mkm15s49.js +0 -394
@@ -1,3 +1,6 @@
1
+ import {
2
+ attemptExclusiveLock
3
+ } from "../../index-8p52kd5p.js";
1
4
  import {
2
5
  DiagnosticJournalCloseResultSchema,
3
6
  DiagnosticJournalFrameSchema,
@@ -22,168 +25,25 @@ import { randomUUID } from "node:crypto";
22
25
  import { z } from "zod";
23
26
 
24
27
  // src/application/diagnostic-journal-storage.ts
25
- import { constants as constants2 } from "node:fs";
26
- import { lstat, open as open2, readdir, realpath, rename, unlink as unlink2 } from "node:fs/promises";
28
+ import { constants } from "node:fs";
29
+ import { lstat, open, readdir, realpath, rename, unlink } from "node:fs/promises";
27
30
  import { basename, dirname, isAbsolute, resolve } from "node:path";
28
31
 
29
32
  // src/application/diagnostic-journal-lock.ts
30
- import { execFile } from "node:child_process";
31
- import { constants } from "node:fs";
32
- import { open, readFile, unlink } from "node:fs/promises";
33
- import { hostname, platform } from "node:os";
34
- import { promisify } from "node:util";
35
- function isExisting(error) {
36
- return isRecord(error) && error.code === "EEXIST";
37
- }
38
- function readOwner(text) {
39
- let parsed;
40
- try {
41
- parsed = JSON.parse(text);
42
- } catch {
43
- return;
44
- }
45
- if (!isRecord(parsed))
46
- return;
47
- const { pid, host, acquiredAt, machine } = parsed;
48
- if (typeof pid !== "number" || !Number.isSafeInteger(pid) || pid <= 0)
49
- return;
50
- if (typeof host !== "string" || host.length === 0)
51
- return;
52
- if (typeof acquiredAt !== "string")
53
- return;
54
- const identified = typeof machine === "string" && machine.length > 0 ? { machine } : {};
55
- return { pid, host, acquiredAt, ...identified };
56
- }
57
- var detectedIdentity;
58
- async function firstReadableLine(paths) {
59
- for (const path of paths) {
60
- try {
61
- const text = (await readFile(path, "utf8")).trim();
62
- if (text.length > 0)
63
- return text;
64
- } catch {}
65
- }
66
- return null;
67
- }
68
- var run = promisify(execFile);
69
- function parsePlatformUuid(dump) {
70
- return /"IOPlatformUUID"\s*=\s*"([^"]+)"/.exec(dump)?.[1] ?? null;
71
- }
72
- async function readDarwinPlatformUuid(command = "ioreg") {
73
- try {
74
- const { stdout } = await run(command, ["-rd1", "-c", "IOPlatformExpertDevice"], {
75
- timeout: 2000,
76
- maxBuffer: 1 << 20,
77
- encoding: "utf8"
78
- });
79
- return parsePlatformUuid(stdout);
80
- } catch {
81
- return null;
82
- }
83
- }
84
- async function machineIdentity(declared) {
85
- if (declared !== undefined)
86
- return declared;
87
- if (detectedIdentity !== undefined)
88
- return detectedIdentity;
89
- detectedIdentity = platform() === "darwin" ? await readDarwinPlatformUuid() : await firstReadableLine(["/etc/machine-id", "/var/lib/dbus/machine-id"]);
90
- return detectedIdentity;
91
- }
92
- function attribute(owner, identity) {
93
- if (identity !== null && owner.machine !== undefined) {
94
- return owner.machine === identity ? "this-machine" : "another-machine";
95
- }
96
- return owner.host === hostname() ? "this-machine" : "unattributable";
97
- }
98
- async function probeLiveness(owner) {
99
- try {
100
- process.kill(owner.pid, 0);
101
- } catch (error) {
102
- return isRecord(error) && error.code === "ESRCH" ? "gone" : "alive";
103
- }
104
- return await isZombieProcess(owner.pid) ? "gone" : "alive";
105
- }
106
- async function isZombieProcess(pid, seam = {}) {
107
- const { procRoot = "/proc", psCommand = "ps" } = seam;
108
- try {
109
- const stat = await readFile(`${procRoot}/${pid}/stat`, "utf8");
110
- return stat.slice(stat.lastIndexOf(")") + 1).trimStart().startsWith("Z");
111
- } catch {}
112
- try {
113
- const { stdout } = await run(psCommand, ["-o", "state=", "-p", String(pid)], {
114
- timeout: 2000,
115
- maxBuffer: 1 << 16,
116
- encoding: "utf8"
117
- });
118
- return stdout.trim().startsWith("Z");
119
- } catch {
120
- return false;
121
- }
122
- }
123
- async function diagnose(owner, declaredIdentity) {
124
- if (!owner)
125
- return { attribution: "unattributable", liveness: "not-probed", owner: null };
126
- const attribution = attribute(owner, await machineIdentity(declaredIdentity));
127
- const record = {
128
- pid: owner.pid,
129
- host: owner.host,
130
- acquiredAt: owner.acquiredAt,
131
- ...owner.machine !== undefined && { machine: owner.machine }
132
- };
133
- if (attribution !== "this-machine")
134
- return { attribution, liveness: "not-probed", owner: record };
135
- return { attribution, liveness: await probeLiveness(owner), owner: record };
136
- }
137
- async function readLockOwner(lockPath) {
138
- let handle;
139
- try {
140
- handle = await open(lockPath, constants.O_RDONLY | constants.O_NOFOLLOW);
141
- return readOwner(await handle.readFile("utf8"));
142
- } catch {
143
- return;
144
- } finally {
145
- await handle?.close().catch(() => {
146
- return;
147
- });
148
- }
149
- }
150
- async function createExclusive(lockPath, mode, declaredIdentity) {
151
- const handle = await open(lockPath, "wx", mode);
152
- const identity = await machineIdentity(declaredIdentity);
153
- const owner = {
154
- pid: process.pid,
155
- host: hostname(),
156
- acquiredAt: new Date().toISOString(),
157
- ...identity !== null && { machine: identity }
158
- };
159
- await handle.writeFile(`${JSON.stringify(owner)}
160
- `, "utf8");
161
- return handle;
162
- }
163
33
  async function acquireDiagnosticJournalLock(lockPath, mode, policy, declaredIdentity) {
164
- try {
165
- return {
166
- handle: await createExclusive(lockPath, mode, declaredIdentity),
167
- reclaimedStale: false
168
- };
169
- } catch (error) {
170
- if (policy !== "reclaim-stale" || !isExisting(error))
171
- throw error;
172
- const owner = await readLockOwner(lockPath);
173
- const diagnosis = await diagnose(owner, declaredIdentity);
174
- if (!owner || diagnosis.liveness !== "gone") {
175
- if (isRecord(error))
176
- Object.assign(error, { journalLock: diagnosis });
177
- throw error;
178
- }
179
- await unlink(lockPath).catch(() => {
180
- return;
181
- });
182
- return {
183
- handle: await createExclusive(lockPath, mode, declaredIdentity),
184
- reclaimedStale: true
185
- };
34
+ const attempt = await attemptExclusiveLock(lockPath, {
35
+ mode,
36
+ reclaim: policy === "reclaim-stale",
37
+ ...declaredIdentity !== undefined && { machineIdentity: declaredIdentity }
38
+ });
39
+ if ("held" in attempt) {
40
+ return { lock: attempt.held, reclaimedStale: attempt.held.reclaimed };
41
+ }
42
+ const { error, diagnosis } = attempt;
43
+ if (diagnosis && error !== null && typeof error === "object") {
44
+ Object.assign(error, { journalLock: diagnosis });
186
45
  }
46
+ throw error;
187
47
  }
188
48
 
189
49
  // src/application/diagnostic-journal-storage.ts
@@ -204,7 +64,7 @@ async function removeIfPresent(path) {
204
64
  if (info.isSymbolicLink() || !info.isFile()) {
205
65
  throw new Error("Diagnostic journal generations must be regular files");
206
66
  }
207
- await unlink2(path);
67
+ await unlink(path);
208
68
  } catch (error) {
209
69
  if (!isMissing(error))
210
70
  throw error;
@@ -243,7 +103,7 @@ async function createRotatingDiagnosticJournalStorage(config) {
243
103
  const parent = await realpath(dirname(config.path));
244
104
  const journalPath = resolve(parent, basename(config.path));
245
105
  const lockPath = `${journalPath}.lock`;
246
- const { handle: lock, reclaimedStale } = await acquireDiagnosticJournalLock(lockPath, config.mode, config.lock, config.machineIdentity);
106
+ const { lock, reclaimedStale } = await acquireDiagnosticJournalLock(lockPath, config.mode, config.lock, config.machineIdentity);
247
107
  let handle;
248
108
  let currentFileBytes = 0;
249
109
  let retainedFiles = 1;
@@ -251,7 +111,7 @@ async function createRotatingDiagnosticJournalStorage(config) {
251
111
  let partialTails = 0;
252
112
  let closed = false;
253
113
  const openCurrent = async () => {
254
- handle = await open2(journalPath, constants2.O_APPEND | constants2.O_CREAT | constants2.O_RDWR | constants2.O_NOFOLLOW, config.mode);
114
+ handle = await open(journalPath, constants.O_APPEND | constants.O_CREAT | constants.O_RDWR | constants.O_NOFOLLOW, config.mode);
255
115
  const info = await handle.stat();
256
116
  if (!info.isFile()) {
257
117
  await handle.close();
@@ -312,10 +172,7 @@ async function createRotatingDiagnosticJournalStorage(config) {
312
172
  await handle?.close().catch(() => {
313
173
  return;
314
174
  });
315
- await lock.close().catch(() => {
316
- return;
317
- });
318
- await unlink2(lockPath).catch(() => {
175
+ await lock.release().catch(() => {
319
176
  return;
320
177
  });
321
178
  throw error;
@@ -359,8 +216,7 @@ async function createRotatingDiagnosticJournalStorage(config) {
359
216
  failure = error;
360
217
  }
361
218
  try {
362
- await lock.close();
363
- await unlink2(lockPath);
219
+ await lock.release();
364
220
  } catch (error) {
365
221
  failure ??= error;
366
222
  }
@@ -382,6 +238,45 @@ function waitBudget(options) {
382
238
  }
383
239
  return options.timeoutMs;
384
240
  }
241
+ var NO_REFUSALS = {
242
+ closed: 0,
243
+ failed: 0,
244
+ invalid: 0,
245
+ oversized: 0,
246
+ "item-capacity": 0,
247
+ "byte-capacity": 0
248
+ };
249
+ function waitForProgress(progressWaiters, predicate, options) {
250
+ const timeoutMs = waitBudget(options);
251
+ if (predicate())
252
+ return Promise.resolve("settled");
253
+ if (options.signal?.aborted)
254
+ return Promise.resolve("cancelled");
255
+ return new Promise((resolve2) => {
256
+ let settled = false;
257
+ let timer;
258
+ const finish = (outcome) => {
259
+ if (settled)
260
+ return;
261
+ settled = true;
262
+ progressWaiters.delete(onProgress);
263
+ options.signal?.removeEventListener("abort", onAbort);
264
+ if (timer)
265
+ clearTimeout(timer);
266
+ resolve2(outcome);
267
+ };
268
+ const onProgress = () => {
269
+ if (predicate())
270
+ finish("settled");
271
+ };
272
+ const onAbort = () => finish("cancelled");
273
+ progressWaiters.add(onProgress);
274
+ options.signal?.addEventListener("abort", onAbort, { once: true });
275
+ if (timeoutMs !== undefined)
276
+ timer = setTimeout(() => finish("timed-out"), timeoutMs);
277
+ onProgress();
278
+ });
279
+ }
385
280
  function createDiagnosticJournalManager(config, storage) {
386
281
  const limits = DiagnosticJournalLimitsSchema.parse(config.limits);
387
282
  const encoder = new TextEncoder;
@@ -392,12 +287,7 @@ function createDiagnosticJournalManager(config, storage) {
392
287
  sizeOf: (frame) => frame.bytes.byteLength
393
288
  });
394
289
  const refusals = {
395
- closed: 0,
396
- failed: 0,
397
- invalid: 0,
398
- oversized: 0,
399
- "item-capacity": 0,
400
- "byte-capacity": 0
290
+ ...NO_REFUSALS
401
291
  };
402
292
  const progressWaiters = new Set;
403
293
  let state = "open";
@@ -477,37 +367,7 @@ function createDiagnosticJournalManager(config, storage) {
477
367
  refusals[reason] += 1;
478
368
  return DiagnosticJournalSubmitResultSchema.parse({ outcome: "refused", reason });
479
369
  };
480
- const waitUntil = (predicate, options) => {
481
- const timeoutMs = waitBudget(options);
482
- if (predicate())
483
- return Promise.resolve("settled");
484
- if (options.signal?.aborted)
485
- return Promise.resolve("cancelled");
486
- return new Promise((resolve2) => {
487
- let settled = false;
488
- let timer;
489
- const finish = (outcome) => {
490
- if (settled)
491
- return;
492
- settled = true;
493
- progressWaiters.delete(onProgress);
494
- options.signal?.removeEventListener("abort", onAbort);
495
- if (timer)
496
- clearTimeout(timer);
497
- resolve2(outcome);
498
- };
499
- const onProgress = () => {
500
- if (predicate())
501
- finish("settled");
502
- };
503
- const onAbort = () => finish("cancelled");
504
- progressWaiters.add(onProgress);
505
- options.signal?.addEventListener("abort", onAbort, { once: true });
506
- if (timeoutMs !== undefined)
507
- timer = setTimeout(() => finish("timed-out"), timeoutMs);
508
- onProgress();
509
- });
510
- };
370
+ const waitUntil = (predicate, options) => waitForProgress(progressWaiters, predicate, options);
511
371
  const getStatus = () => {
512
372
  const file = storage.snapshot();
513
373
  return DiagnosticJournalStatusSchema.parse({
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ActivitySnapshotSchema,
3
3
  ManagedScheduleStatusSchema
4
- } from "../../index-sees8yf8.js";
4
+ } from "../../index-ensd0r74.js";
5
5
  import {
6
6
  ApplicationSnapshotSchema
7
7
  } from "../../index-3gye9wzb.js";