@murphai/murph 0.2.5 → 0.2.7

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 (533) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +1 -1
  3. package/config.schema.json +4 -12
  4. package/dist/commands/export-intake-read-helpers.d.ts +1 -1
  5. package/dist/commands/knowledge.js +1 -1
  6. package/dist/commands/knowledge.js.map +1 -1
  7. package/dist/commands/model.d.ts.map +1 -1
  8. package/dist/commands/model.js +5 -5
  9. package/dist/commands/model.js.map +1 -1
  10. package/dist/commands/route.js +4 -4
  11. package/dist/commands/route.js.map +1 -1
  12. package/dist/incur.generated.d.ts +0 -2
  13. package/dist/incur.generated.d.ts.map +1 -1
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +0 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/mapbox-route-client.d.ts +17 -0
  19. package/dist/mapbox-route-client.d.ts.map +1 -0
  20. package/dist/mapbox-route-client.js +51 -0
  21. package/dist/mapbox-route-client.js.map +1 -0
  22. package/dist/mapbox-route-contracts.d.ts +277 -0
  23. package/dist/mapbox-route-contracts.d.ts.map +1 -0
  24. package/dist/mapbox-route-contracts.js +145 -0
  25. package/dist/mapbox-route-contracts.js.map +1 -0
  26. package/dist/mapbox-route-directions.d.ts +11 -0
  27. package/dist/mapbox-route-directions.d.ts.map +1 -0
  28. package/dist/mapbox-route-directions.js +55 -0
  29. package/dist/mapbox-route-directions.js.map +1 -0
  30. package/dist/mapbox-route-elevation.d.ts +10 -0
  31. package/dist/mapbox-route-elevation.d.ts.map +1 -0
  32. package/dist/mapbox-route-elevation.js +186 -0
  33. package/dist/mapbox-route-elevation.js.map +1 -0
  34. package/dist/mapbox-route-points.d.ts +14 -0
  35. package/dist/mapbox-route-points.d.ts.map +1 -0
  36. package/dist/mapbox-route-points.js +236 -0
  37. package/dist/mapbox-route-points.js.map +1 -0
  38. package/dist/mapbox-route.d.ts +13 -0
  39. package/dist/mapbox-route.d.ts.map +1 -0
  40. package/dist/mapbox-route.js +119 -0
  41. package/dist/mapbox-route.js.map +1 -0
  42. package/dist/vault-cli-command-manifest.d.ts +20 -13
  43. package/dist/vault-cli-command-manifest.d.ts.map +1 -1
  44. package/dist/vault-cli-command-manifest.js +4 -4
  45. package/dist/vault-cli-command-manifest.js.map +1 -1
  46. package/dist/vault-cli.d.ts.map +1 -1
  47. package/dist/vault-cli.js +7 -1
  48. package/dist/vault-cli.js.map +1 -1
  49. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts +15 -3
  50. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts.map +1 -1
  51. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.d.ts.map +1 -1
  52. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js +1 -0
  53. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js.map +1 -1
  54. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.d.ts.map +1 -1
  55. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js +10 -15
  56. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js.map +1 -1
  57. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts +32 -0
  58. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts.map +1 -0
  59. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js +93 -0
  60. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js.map +1 -0
  61. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts +1 -0
  62. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts.map +1 -1
  63. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js +1 -1
  64. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js.map +1 -1
  65. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.d.ts.map +1 -1
  66. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js +6 -25
  67. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js.map +1 -1
  68. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts +0 -1
  69. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts.map +1 -1
  70. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js +19 -23
  71. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js.map +1 -1
  72. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.d.ts.map +1 -1
  73. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js +17 -11
  74. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js.map +1 -1
  75. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts +5 -2
  76. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts.map +1 -1
  77. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js +86 -48
  78. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js.map +1 -1
  79. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js +2 -3
  80. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js.map +1 -1
  81. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.d.ts.map +1 -1
  82. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js +20 -7
  83. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js.map +1 -1
  84. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts +1 -13
  85. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts.map +1 -1
  86. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js +6 -111
  87. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js.map +1 -1
  88. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts +1 -0
  89. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts.map +1 -1
  90. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.js.map +1 -1
  91. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.d.ts.map +1 -1
  92. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js +11 -4
  93. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js.map +1 -1
  94. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts +0 -7
  95. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts.map +1 -1
  96. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js +13 -82
  97. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js.map +1 -1
  98. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.d.ts.map +1 -1
  99. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js +26 -9
  100. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js.map +1 -1
  101. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.d.ts.map +1 -1
  102. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js +1 -0
  103. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js.map +1 -1
  104. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.d.ts.map +1 -1
  105. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js +133 -32
  106. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js.map +1 -1
  107. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.d.ts.map +1 -1
  108. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js +6 -1
  109. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js.map +1 -1
  110. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts +4 -0
  111. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts.map +1 -1
  112. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts +14 -0
  113. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts.map +1 -0
  114. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js +51 -0
  115. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js.map +1 -0
  116. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js +1 -1
  117. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js.map +1 -1
  118. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts +2 -0
  119. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts.map +1 -1
  120. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts +1 -1
  121. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts.map +1 -1
  122. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js +2 -0
  123. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js.map +1 -1
  124. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts.map +1 -1
  125. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js +0 -4
  126. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js.map +1 -1
  127. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts +13 -1
  128. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts.map +1 -1
  129. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.d.ts.map +1 -1
  130. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js +7 -0
  131. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js.map +1 -1
  132. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts +1 -3
  133. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts.map +1 -1
  134. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js +1 -36
  135. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js.map +1 -1
  136. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.d.ts.map +1 -1
  137. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js +8 -9
  138. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js.map +1 -1
  139. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts +2 -0
  140. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts.map +1 -1
  141. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.js.map +1 -1
  142. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.d.ts +1 -1
  143. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.js +1 -1
  144. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts +2 -0
  145. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts.map +1 -1
  146. package/node_modules/@murphai/assistant-engine/dist/assistant/store.js +1 -1
  147. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts +2 -0
  148. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts.map +1 -1
  149. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js +14 -1
  150. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js.map +1 -1
  151. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts +4 -0
  152. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts.map +1 -1
  153. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js +9 -11
  154. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js.map +1 -1
  155. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts +45 -0
  156. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts.map +1 -0
  157. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js +112 -0
  158. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js.map +1 -0
  159. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts +22 -0
  160. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts.map +1 -0
  161. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js +136 -0
  162. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js.map +1 -0
  163. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts +12 -0
  164. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts.map +1 -0
  165. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js +248 -0
  166. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js.map +1 -0
  167. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts +10 -0
  168. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts.map +1 -0
  169. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js +280 -0
  170. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js.map +1 -0
  171. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts +18 -0
  172. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts.map +1 -0
  173. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js +221 -0
  174. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js.map +1 -0
  175. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts +5 -58
  176. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts.map +1 -1
  177. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js +11 -859
  178. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js.map +1 -1
  179. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.d.ts.map +1 -1
  180. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js +5 -6
  181. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js.map +1 -1
  182. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts +19 -25
  183. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts.map +1 -1
  184. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js +14 -7
  185. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js.map +1 -1
  186. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts +4 -0
  187. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts.map +1 -1
  188. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js +88 -20
  189. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js.map +1 -1
  190. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.d.ts.map +1 -1
  191. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js +87 -3
  192. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js.map +1 -1
  193. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts +1 -0
  194. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts.map +1 -1
  195. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js +1 -0
  196. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js.map +1 -1
  197. package/node_modules/@murphai/assistant-engine/dist/index.d.ts +0 -2
  198. package/node_modules/@murphai/assistant-engine/dist/index.d.ts.map +1 -1
  199. package/node_modules/@murphai/assistant-engine/dist/index.js +0 -2
  200. package/node_modules/@murphai/assistant-engine/dist/index.js.map +1 -1
  201. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts +1 -2
  202. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts.map +1 -1
  203. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js +0 -1
  204. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js.map +1 -1
  205. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.d.ts.map +1 -1
  206. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js +124 -104
  207. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js.map +1 -1
  208. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts +7 -3
  209. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts.map +1 -1
  210. package/node_modules/@murphai/assistant-engine/dist/knowledge.js +7 -2
  211. package/node_modules/@murphai/assistant-engine/dist/knowledge.js.map +1 -1
  212. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts +2 -0
  213. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts.map +1 -1
  214. package/node_modules/@murphai/assistant-engine/dist/model-harness.js +31 -14
  215. package/node_modules/@murphai/assistant-engine/dist/model-harness.js.map +1 -1
  216. package/node_modules/@murphai/assistant-engine/package.json +2 -2
  217. package/node_modules/@murphai/assistantd/README.md +1 -1
  218. package/node_modules/@murphai/assistantd/dist/config.d.ts.map +1 -1
  219. package/node_modules/@murphai/assistantd/dist/config.js +5 -6
  220. package/node_modules/@murphai/assistantd/dist/config.js.map +1 -1
  221. package/node_modules/@murphai/assistantd/dist/http.d.ts +6 -1
  222. package/node_modules/@murphai/assistantd/dist/http.d.ts.map +1 -1
  223. package/node_modules/@murphai/assistantd/dist/http.js +28 -24
  224. package/node_modules/@murphai/assistantd/dist/http.js.map +1 -1
  225. package/node_modules/@murphai/assistantd/dist/service.d.ts.map +1 -1
  226. package/node_modules/@murphai/assistantd/dist/service.js +2 -1
  227. package/node_modules/@murphai/assistantd/dist/service.js.map +1 -1
  228. package/node_modules/@murphai/assistantd/package.json +1 -1
  229. package/node_modules/@murphai/core/dist/audit.d.ts.map +1 -1
  230. package/node_modules/@murphai/core/dist/audit.js +10 -4
  231. package/node_modules/@murphai/core/dist/audit.js.map +1 -1
  232. package/node_modules/@murphai/core/dist/domains/vault-summary.d.ts.map +1 -1
  233. package/node_modules/@murphai/core/dist/domains/vault-summary.js +48 -38
  234. package/node_modules/@murphai/core/dist/domains/vault-summary.js.map +1 -1
  235. package/node_modules/@murphai/core/dist/index.d.ts +2 -2
  236. package/node_modules/@murphai/core/dist/index.d.ts.map +1 -1
  237. package/node_modules/@murphai/core/dist/index.js +1 -1
  238. package/node_modules/@murphai/core/dist/index.js.map +1 -1
  239. package/node_modules/@murphai/core/dist/jsonl.d.ts +0 -5
  240. package/node_modules/@murphai/core/dist/jsonl.d.ts.map +1 -1
  241. package/node_modules/@murphai/core/dist/jsonl.js +1 -12
  242. package/node_modules/@murphai/core/dist/jsonl.js.map +1 -1
  243. package/node_modules/@murphai/core/dist/memory.d.ts.map +1 -1
  244. package/node_modules/@murphai/core/dist/memory.js +83 -63
  245. package/node_modules/@murphai/core/dist/memory.js.map +1 -1
  246. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts +38 -0
  247. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts.map +1 -0
  248. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js +221 -0
  249. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js.map +1 -0
  250. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts +1 -0
  251. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts.map +1 -1
  252. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js +48 -2
  253. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js.map +1 -1
  254. package/node_modules/@murphai/core/dist/operations/index.d.ts +3 -1
  255. package/node_modules/@murphai/core/dist/operations/index.d.ts.map +1 -1
  256. package/node_modules/@murphai/core/dist/operations/index.js +2 -1
  257. package/node_modules/@murphai/core/dist/operations/index.js.map +1 -1
  258. package/node_modules/@murphai/core/dist/operations/write-batch.js +2 -2
  259. package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -1
  260. package/node_modules/@murphai/core/dist/preferences.d.ts.map +1 -1
  261. package/node_modules/@murphai/core/dist/preferences.js +71 -86
  262. package/node_modules/@murphai/core/dist/preferences.js.map +1 -1
  263. package/node_modules/@murphai/core/dist/public-mutations.d.ts +3 -3
  264. package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -1
  265. package/node_modules/@murphai/core/dist/public-mutations.js +103 -65
  266. package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -1
  267. package/node_modules/@murphai/core/dist/raw.d.ts +1 -1
  268. package/node_modules/@murphai/core/dist/raw.d.ts.map +1 -1
  269. package/node_modules/@murphai/core/package.json +1 -1
  270. package/node_modules/@murphai/device-syncd/README.md +2 -0
  271. package/node_modules/@murphai/device-syncd/dist/bin.js +73 -15
  272. package/node_modules/@murphai/device-syncd/dist/bin.js.map +1 -1
  273. package/node_modules/@murphai/device-syncd/dist/config.d.ts.map +1 -1
  274. package/node_modules/@murphai/device-syncd/dist/config.js +18 -9
  275. package/node_modules/@murphai/device-syncd/dist/config.js.map +1 -1
  276. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js +2 -26
  277. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js.map +1 -1
  278. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +5 -0
  279. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts.map +1 -1
  280. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js +48 -8
  281. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -1
  282. package/node_modules/@murphai/device-syncd/dist/http.d.ts +0 -1
  283. package/node_modules/@murphai/device-syncd/dist/http.d.ts.map +1 -1
  284. package/node_modules/@murphai/device-syncd/dist/http.js +65 -52
  285. package/node_modules/@murphai/device-syncd/dist/http.js.map +1 -1
  286. package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts.map +1 -1
  287. package/node_modules/@murphai/device-syncd/dist/providers/oura.js +1 -9
  288. package/node_modules/@murphai/device-syncd/dist/providers/oura.js.map +1 -1
  289. package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts.map +1 -1
  290. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js +1 -12
  291. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js.map +1 -1
  292. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts +2 -3
  293. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -1
  294. package/node_modules/@murphai/device-syncd/dist/public-ingress.js +83 -48
  295. package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -1
  296. package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -1
  297. package/node_modules/@murphai/device-syncd/dist/service.js +4 -2
  298. package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -1
  299. package/node_modules/@murphai/device-syncd/dist/shared.d.ts +1 -0
  300. package/node_modules/@murphai/device-syncd/dist/shared.d.ts.map +1 -1
  301. package/node_modules/@murphai/device-syncd/dist/shared.js +3 -0
  302. package/node_modules/@murphai/device-syncd/dist/shared.js.map +1 -1
  303. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts +31 -0
  304. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts.map +1 -0
  305. package/node_modules/@murphai/device-syncd/dist/store/jobs.js +207 -0
  306. package/node_modules/@murphai/device-syncd/dist/store/jobs.js.map +1 -0
  307. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts +9 -0
  308. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts.map +1 -0
  309. package/node_modules/@murphai/device-syncd/dist/store/schema.js +116 -0
  310. package/node_modules/@murphai/device-syncd/dist/store/schema.js.map +1 -0
  311. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts +10 -0
  312. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts.map +1 -0
  313. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js +76 -0
  314. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js.map +1 -0
  315. package/node_modules/@murphai/device-syncd/dist/store.d.ts +2 -6
  316. package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -1
  317. package/node_modules/@murphai/device-syncd/dist/store.js +29 -363
  318. package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -1
  319. package/node_modules/@murphai/device-syncd/dist/types.d.ts +19 -5
  320. package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -1
  321. package/node_modules/@murphai/device-syncd/dist/types.js +4 -1
  322. package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -1
  323. package/node_modules/@murphai/gateway-local/dist/store/schema.d.ts +1 -1
  324. package/node_modules/@murphai/gateway-local/dist/store/schema.js +1 -1
  325. package/node_modules/@murphai/gateway-local/package.json +1 -1
  326. package/node_modules/@murphai/importers/dist/device-providers/garmin.d.ts.map +1 -1
  327. package/node_modules/@murphai/importers/dist/device-providers/garmin.js +9 -4
  328. package/node_modules/@murphai/importers/dist/device-providers/garmin.js.map +1 -1
  329. package/node_modules/@murphai/importers/dist/device-providers/oura.d.ts.map +1 -1
  330. package/node_modules/@murphai/importers/dist/device-providers/oura.js +10 -6
  331. package/node_modules/@murphai/importers/dist/device-providers/oura.js.map +1 -1
  332. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts +8 -1
  333. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts.map +1 -1
  334. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js +94 -3
  335. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js.map +1 -1
  336. package/node_modules/@murphai/importers/dist/device-providers/whoop.d.ts.map +1 -1
  337. package/node_modules/@murphai/importers/dist/device-providers/whoop.js +9 -3
  338. package/node_modules/@murphai/importers/dist/device-providers/whoop.js.map +1 -1
  339. package/node_modules/@murphai/importers/package.json +1 -1
  340. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.d.ts.map +1 -1
  341. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js +4 -4
  342. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js.map +1 -1
  343. package/node_modules/@murphai/inbox-services/package.json +1 -1
  344. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.d.ts.map +1 -1
  345. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js +2 -1
  346. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js.map +1 -1
  347. package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts.map +1 -1
  348. package/node_modules/@murphai/inboxd/dist/indexing/persist.js +31 -29
  349. package/node_modules/@murphai/inboxd/dist/indexing/persist.js.map +1 -1
  350. package/node_modules/@murphai/inboxd/package.json +1 -1
  351. package/node_modules/@murphai/messaging-ingress/README.md +6 -0
  352. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts +0 -1
  353. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts.map +1 -1
  354. package/node_modules/@murphai/messaging-ingress/dist/index.js +0 -1
  355. package/node_modules/@murphai/messaging-ingress/dist/index.js.map +1 -1
  356. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts +116 -0
  357. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts.map +1 -0
  358. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js +2 -0
  359. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js.map +1 -0
  360. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts +1 -1
  361. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts.map +1 -1
  362. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts +2 -116
  363. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts.map +1 -1
  364. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js +21 -10
  365. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js.map +1 -1
  366. package/node_modules/@murphai/messaging-ingress/package.json +4 -4
  367. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts +68 -0
  368. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts.map +1 -1
  369. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js +1 -0
  370. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js.map +1 -1
  371. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts +13 -1
  372. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts.map +1 -1
  373. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js +63 -14
  374. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js.map +1 -1
  375. package/node_modules/@murphai/operator-config/dist/assistant/shared.d.ts.map +1 -1
  376. package/node_modules/@murphai/operator-config/dist/assistant/shared.js +5 -13
  377. package/node_modules/@murphai/operator-config/dist/assistant/shared.js.map +1 -1
  378. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts +45 -0
  379. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts.map +1 -0
  380. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js +198 -0
  381. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js.map +1 -0
  382. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts +26 -0
  383. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts.map +1 -1
  384. package/node_modules/@murphai/operator-config/dist/assistant-backend.js +6 -0
  385. package/node_modules/@murphai/operator-config/dist/assistant-backend.js.map +1 -1
  386. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts +736 -26
  387. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts.map +1 -1
  388. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js +58 -9
  389. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js.map +1 -1
  390. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.d.ts.map +1 -1
  391. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js +43 -5
  392. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js.map +1 -1
  393. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts +2 -0
  394. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts.map +1 -1
  395. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js +50 -5
  396. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js.map +1 -1
  397. package/node_modules/@murphai/operator-config/dist/index.d.ts +0 -1
  398. package/node_modules/@murphai/operator-config/dist/index.d.ts.map +1 -1
  399. package/node_modules/@murphai/operator-config/dist/index.js +0 -1
  400. package/node_modules/@murphai/operator-config/dist/index.js.map +1 -1
  401. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts +53 -1
  402. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts.map +1 -1
  403. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts +40 -2
  404. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts.map +1 -1
  405. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js +2 -1
  406. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js.map +1 -1
  407. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts +53 -33
  408. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts.map +1 -1
  409. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js +26 -42
  410. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js.map +1 -1
  411. package/node_modules/@murphai/operator-config/package.json +7 -7
  412. package/node_modules/@murphai/parsers/dist/shared.d.ts +1 -0
  413. package/node_modules/@murphai/parsers/dist/shared.d.ts.map +1 -1
  414. package/node_modules/@murphai/parsers/dist/shared.js +44 -3
  415. package/node_modules/@murphai/parsers/dist/shared.js.map +1 -1
  416. package/node_modules/@murphai/query/dist/index.d.ts +2 -1
  417. package/node_modules/@murphai/query/dist/index.d.ts.map +1 -1
  418. package/node_modules/@murphai/query/dist/index.js +2 -1
  419. package/node_modules/@murphai/query/dist/index.js.map +1 -1
  420. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts +1 -1
  421. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts.map +1 -1
  422. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts +0 -29
  423. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts.map +1 -1
  424. package/node_modules/@murphai/query/dist/knowledge-graph.js +1 -7
  425. package/node_modules/@murphai/query/dist/knowledge-graph.js.map +1 -1
  426. package/node_modules/@murphai/query/dist/knowledge-search.d.ts +29 -1
  427. package/node_modules/@murphai/query/dist/knowledge-search.d.ts.map +1 -1
  428. package/node_modules/@murphai/query/dist/knowledge-search.js +5 -0
  429. package/node_modules/@murphai/query/dist/knowledge-search.js.map +1 -1
  430. package/node_modules/@murphai/query/package.json +1 -1
  431. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts +0 -4
  432. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts.map +1 -1
  433. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js +0 -4
  434. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js.map +1 -1
  435. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.d.ts +1 -1
  436. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.js +1 -1
  437. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.d.ts +1 -1
  438. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.js +1 -1
  439. package/node_modules/@murphai/runtime-state/dist/local-state-files.d.ts.map +1 -1
  440. package/node_modules/@murphai/runtime-state/dist/local-state-files.js +20 -8
  441. package/node_modules/@murphai/runtime-state/dist/local-state-files.js.map +1 -1
  442. package/node_modules/@murphai/runtime-state/dist/locks.d.ts.map +1 -1
  443. package/node_modules/@murphai/runtime-state/dist/locks.js +234 -87
  444. package/node_modules/@murphai/runtime-state/dist/locks.js.map +1 -1
  445. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts +19 -0
  446. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts.map +1 -1
  447. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js +106 -9
  448. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js.map +1 -1
  449. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts +1 -0
  450. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts.map +1 -1
  451. package/node_modules/@murphai/runtime-state/dist/node/index.js +1 -0
  452. package/node_modules/@murphai/runtime-state/dist/node/index.js.map +1 -1
  453. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts +3 -0
  454. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts.map +1 -0
  455. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js +20 -0
  456. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js.map +1 -0
  457. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.d.ts.map +1 -1
  458. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js +2 -0
  459. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js.map +1 -1
  460. package/node_modules/@murphai/setup-cli/dist/setup-assistant.d.ts.map +1 -1
  461. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js +34 -14
  462. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js.map +1 -1
  463. package/node_modules/@murphai/setup-cli/dist/setup-cli.d.ts.map +1 -1
  464. package/node_modules/@murphai/setup-cli/dist/setup-cli.js +8 -17
  465. package/node_modules/@murphai/setup-cli/dist/setup-cli.js.map +1 -1
  466. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.d.ts.map +1 -1
  467. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js +30 -97
  468. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js.map +1 -1
  469. package/node_modules/@murphai/setup-cli/dist/setup-services.d.ts.map +1 -1
  470. package/node_modules/@murphai/setup-cli/dist/setup-services.js +7 -1
  471. package/node_modules/@murphai/setup-cli/dist/setup-services.js.map +1 -1
  472. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts +11 -1
  473. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts.map +1 -1
  474. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js +18 -3
  475. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js.map +1 -1
  476. package/node_modules/@murphai/vault-usecases/dist/health-cli-descriptors.d.ts +5 -5
  477. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts +2 -2
  478. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts.map +1 -1
  479. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts +5 -5
  480. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts.map +1 -1
  481. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js +5 -2
  482. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js.map +1 -1
  483. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts +2 -36
  484. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts.map +1 -1
  485. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js +15 -3
  486. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js.map +1 -1
  487. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.d.ts.map +1 -1
  488. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js +86 -5
  489. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js.map +1 -1
  490. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts +1 -14
  491. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts.map +1 -1
  492. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js +3 -3
  493. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js.map +1 -1
  494. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts +2 -34
  495. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts.map +1 -1
  496. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js +18 -4
  497. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js.map +1 -1
  498. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts +1 -14
  499. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts.map +1 -1
  500. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js +3 -3
  501. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js.map +1 -1
  502. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts +10 -11
  503. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts.map +1 -1
  504. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js +44 -2
  505. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js.map +1 -1
  506. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts +7 -7
  507. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts.map +1 -1
  508. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts +1 -44
  509. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts.map +1 -1
  510. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js +28 -2
  511. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js.map +1 -1
  512. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts +5 -5
  513. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts.map +1 -1
  514. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js +5 -2
  515. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js.map +1 -1
  516. package/node_modules/@murphai/vault-usecases/package.json +1 -1
  517. package/package.json +4 -4
  518. package/dist/knowledge-cli-contracts.d.ts +0 -3
  519. package/dist/knowledge-cli-contracts.d.ts.map +0 -1
  520. package/dist/knowledge-cli-contracts.js +0 -2
  521. package/dist/knowledge-cli-contracts.js.map +0 -1
  522. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts +0 -2
  523. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts.map +0 -1
  524. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js +0 -2
  525. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js.map +0 -1
  526. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts +0 -142
  527. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts.map +0 -1
  528. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js +0 -670
  529. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js.map +0 -1
  530. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts +0 -86
  531. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts.map +0 -1
  532. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js +0 -2
  533. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,uBAAuB,EAE5B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAc5B,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CA0BjC;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAG9B;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CAGD;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC;IACT,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CA2CD;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IACT,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B,CAAC,CA6BD;AAED,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1F"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,uBAAuB,EAE5B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAC;AAkB5B,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CA0BjC;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAG9B;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CAKD;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC;IACT,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC,CAyCD;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IACT,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B,CAAC,CA+BD;AAED,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE1F"}
@@ -1,7 +1,7 @@
1
1
  import { buildMemoryPromptBlock, createEmptyMemoryDocument, forgetMemoryRecord, memoryDocumentRelativePath, parseMemoryDocument, renderMemoryDocument, upsertMemoryRecord, } from "@murphai/contracts";
2
2
  import { pathExists, readUtf8File, } from "./fs.js";
3
3
  import { stageMarkdownDocumentWrite, resolveSingletonMarkdownDocumentTarget, writeCanonicalMarkdownDocument, } from "./markdown-documents.js";
4
- import { runCanonicalWrite } from "./operations/index.js";
4
+ import { canonicalPathResource, runCanonicalWrite, withCanonicalResourceLocks, } from "./operations/index.js";
5
5
  import { resolveVaultPath } from "./path-safety.js";
6
6
  export function resolveMemoryDocumentPath(vaultRoot) {
7
7
  return resolveVaultPath(vaultRoot, memoryDocumentRelativePath).absolutePath;
@@ -36,77 +36,97 @@ export async function getMemoryRecord(vaultRoot, recordId) {
36
36
  return snapshot.records.find((record) => record.id === recordId) ?? null;
37
37
  }
38
38
  export async function upsertMemory(vaultRoot, input) {
39
- const snapshot = await readMemoryDocument(vaultRoot);
40
- return persistUpsertMemory(vaultRoot, snapshot, input);
39
+ return await withLockedMemoryDocument(vaultRoot, async () => {
40
+ const snapshot = await readMemoryDocument(vaultRoot);
41
+ return await persistUpsertMemory(vaultRoot, snapshot, input);
42
+ });
41
43
  }
42
44
  export async function updateMemory(vaultRoot, input) {
43
- const result = await runCanonicalWrite({
44
- vaultRoot,
45
- operationType: "memory_update",
46
- summary: `Update memory record ${input.recordId}`,
47
- occurredAt: input.now,
48
- mutate: async ({ batch, vaultRoot: lockedVaultRoot }) => {
49
- const snapshot = await readMemoryDocument(lockedVaultRoot);
50
- const existing = snapshot.records.find((record) => record.id === input.recordId) ?? null;
51
- if (existing === null) {
52
- throw new Error(`Memory record "${input.recordId}" does not exist.`);
53
- }
54
- const next = upsertMemoryRecord(snapshot, {
55
- now: input.now,
56
- recordId: input.recordId,
57
- section: input.section ?? existing.section,
58
- text: input.text,
59
- });
60
- await stageMarkdownDocumentWrite(batch, resolveSingletonMarkdownDocumentTarget({
61
- relativePath: memoryDocumentRelativePath,
62
- created: !snapshot.exists,
63
- }), renderMemoryDocument({ document: next.document }));
64
- return {
65
- recordId: next.record.id,
66
- };
67
- },
45
+ return await withLockedMemoryDocument(vaultRoot, async () => {
46
+ const result = await runCanonicalWrite({
47
+ vaultRoot,
48
+ operationType: "memory_update",
49
+ summary: `Update memory record ${input.recordId}`,
50
+ occurredAt: input.now,
51
+ mutate: async ({ batch, vaultRoot: lockedVaultRoot }) => {
52
+ const snapshot = await readMemoryDocument(lockedVaultRoot);
53
+ const existing = snapshot.records.find((record) => record.id === input.recordId) ?? null;
54
+ if (existing === null) {
55
+ throw new Error(`Memory record "${input.recordId}" does not exist.`);
56
+ }
57
+ const next = upsertMemoryRecord(snapshot, {
58
+ now: input.now,
59
+ recordId: input.recordId,
60
+ section: input.section ?? existing.section,
61
+ text: input.text,
62
+ });
63
+ await stageMarkdownDocumentWrite(batch, resolveSingletonMarkdownDocumentTarget({
64
+ relativePath: memoryDocumentRelativePath,
65
+ created: !snapshot.exists,
66
+ }), renderMemoryDocument({ document: next.document }));
67
+ return {
68
+ recordId: next.record.id,
69
+ };
70
+ },
71
+ });
72
+ const persisted = await readPersistedMemoryRecord(vaultRoot, result.recordId, "update");
73
+ return {
74
+ document: persisted.document,
75
+ record: persisted.record,
76
+ };
68
77
  });
69
- const nextSnapshot = await readMemoryDocument(vaultRoot);
70
- const record = nextSnapshot.records.find((entry) => entry.id === result.recordId) ?? null;
71
- if (record === null) {
72
- throw new Error(`Memory record "${result.recordId}" was not found after update.`);
73
- }
74
- return {
75
- document: nextSnapshot,
76
- record,
77
- };
78
78
  }
79
79
  export async function forgetMemory(vaultRoot, input) {
80
- const snapshot = await readMemoryDocument(vaultRoot);
81
- const next = forgetMemoryRecord(snapshot, input);
82
- if (next.record === null) {
80
+ return await withLockedMemoryDocument(vaultRoot, async () => {
81
+ const snapshot = await readMemoryDocument(vaultRoot);
82
+ const next = forgetMemoryRecord(snapshot, input);
83
+ if (next.record === null) {
84
+ return {
85
+ document: snapshot,
86
+ existed: false,
87
+ record: null,
88
+ };
89
+ }
90
+ const markdown = renderMemoryDocument({ document: next.document });
91
+ await writeCanonicalMarkdownDocument({
92
+ vaultRoot,
93
+ operationType: "memory_forget",
94
+ summary: `Forget memory record ${next.record.id}`,
95
+ target: resolveSingletonMarkdownDocumentTarget({
96
+ relativePath: memoryDocumentRelativePath,
97
+ created: !snapshot.exists,
98
+ }),
99
+ markdown,
100
+ });
101
+ const nextSnapshot = await readMemoryDocument(vaultRoot);
83
102
  return {
84
- document: snapshot,
85
- existed: false,
86
- record: null,
103
+ document: nextSnapshot,
104
+ existed: true,
105
+ record: next.record,
87
106
  };
88
- }
89
- const markdown = renderMemoryDocument({ document: next.document });
90
- await writeCanonicalMarkdownDocument({
91
- vaultRoot,
92
- operationType: "memory_forget",
93
- summary: `Forget memory record ${next.record.id}`,
94
- target: resolveSingletonMarkdownDocumentTarget({
95
- relativePath: memoryDocumentRelativePath,
96
- created: !snapshot.exists,
97
- }),
98
- markdown,
99
107
  });
100
- const nextSnapshot = await readMemoryDocument(vaultRoot);
101
- return {
102
- document: nextSnapshot,
103
- existed: true,
104
- record: next.record,
105
- };
106
108
  }
107
109
  export async function buildMemoryCorePromptBlock(vaultRoot) {
108
110
  return buildMemoryPromptBlock(await readMemoryDocument(vaultRoot));
109
111
  }
112
+ async function withLockedMemoryDocument(vaultRoot, run) {
113
+ return await withCanonicalResourceLocks({
114
+ vaultRoot,
115
+ resources: [canonicalPathResource(memoryDocumentRelativePath)],
116
+ run,
117
+ });
118
+ }
119
+ async function readPersistedMemoryRecord(vaultRoot, recordId, operation) {
120
+ const document = await readMemoryDocument(vaultRoot);
121
+ const record = document.records.find((entry) => entry.id === recordId) ?? null;
122
+ if (record === null) {
123
+ throw new Error(`Memory record "${recordId}" was not found after ${operation}.`);
124
+ }
125
+ return {
126
+ document,
127
+ record,
128
+ };
129
+ }
110
130
  async function persistUpsertMemory(vaultRoot, snapshot, input) {
111
131
  const next = upsertMemoryRecord(snapshot, input);
112
132
  await writeCanonicalMarkdownDocument({
@@ -119,11 +139,11 @@ async function persistUpsertMemory(vaultRoot, snapshot, input) {
119
139
  }),
120
140
  markdown: renderMemoryDocument({ document: next.document }),
121
141
  });
122
- const nextSnapshot = await readMemoryDocument(vaultRoot);
142
+ const persisted = await readPersistedMemoryRecord(vaultRoot, next.record.id, "upsert");
123
143
  return {
124
144
  created: next.created,
125
- document: nextSnapshot,
126
- record: nextSnapshot.records.find((record) => record.id === next.record.id) ?? next.record,
145
+ document: persisted.document,
146
+ record: persisted.record,
127
147
  };
128
148
  }
129
149
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export declare const CANONICAL_RESOURCE_LOCK_DIRECTORY = ".runtime/locks/canonical-resources";
2
+ export declare const CANONICAL_RESOURCE_LOCK_METADATA_BASENAME = "owner.json";
3
+ export interface CanonicalMutationResource {
4
+ key: string;
5
+ label: string;
6
+ }
7
+ export interface CanonicalResourceLockMetadata {
8
+ command: string;
9
+ host: string;
10
+ pid: number;
11
+ resourceKey: string;
12
+ resourceLabel: string;
13
+ startedAt: string;
14
+ }
15
+ export interface CanonicalResourceLockHandle {
16
+ readonly metadata: CanonicalResourceLockMetadata;
17
+ readonly resource: CanonicalMutationResource;
18
+ release(): Promise<void>;
19
+ }
20
+ interface AcquireCanonicalResourceLockInput {
21
+ ownerToken?: string;
22
+ timeoutMs?: number;
23
+ resource: CanonicalMutationResource;
24
+ vaultRoot: string;
25
+ }
26
+ export declare function canonicalPathResource(relativePath: string): CanonicalMutationResource;
27
+ export declare function canonicalLogicalResource(key: string, label?: string): CanonicalMutationResource;
28
+ export declare function dedupeCanonicalResources(resources: readonly CanonicalMutationResource[]): CanonicalMutationResource[];
29
+ export declare function isCanonicalResourceLockScopeActive(vaultRoot: string): boolean;
30
+ export declare function withCanonicalResourceLocks<TResult>(input: {
31
+ vaultRoot: string;
32
+ timeoutMs?: number;
33
+ resources: readonly CanonicalMutationResource[];
34
+ run: () => Promise<TResult>;
35
+ }): Promise<TResult>;
36
+ export declare function acquireCanonicalResourceLock(input: AcquireCanonicalResourceLockInput): Promise<CanonicalResourceLockHandle>;
37
+ export {};
38
+ //# sourceMappingURL=canonical-resource-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-resource-lock.d.ts","sourceRoot":"","sources":["../../src/operations/canonical-resource-lock.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iCAAiC,uCAAuC,CAAC;AACtF,eAAO,MAAM,yCAAyC,eAAe,CAAC;AAMtE,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAOD,UAAU,iCAAiC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,yBAAyB,CAMrF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,yBAAyB,CAc5F;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,yBAAyB,EAAE,GAC9C,yBAAyB,EAAE,CAS7B;AAED,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,KAAK,EAAE;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAChD,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCnB;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,2BAA2B,CAAC,CAqFtC"}
@@ -0,0 +1,221 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { setTimeout as sleep } from "node:timers/promises";
4
+ import { acquireDirectoryLock, buildProcessCommand, DirectoryLockHeldError, fingerprintHost, hashVaultRoot, isProcessRunning, } from "@murphai/runtime-state/node";
5
+ import { VaultError } from "../errors.js";
6
+ import { normalizeRelativeVaultPath, normalizeVaultRoot, resolveVaultPath, } from "../path-safety.js";
7
+ import { toIsoTimestamp } from "../time.js";
8
+ export const CANONICAL_RESOURCE_LOCK_DIRECTORY = ".runtime/locks/canonical-resources";
9
+ export const CANONICAL_RESOURCE_LOCK_METADATA_BASENAME = "owner.json";
10
+ const DEFAULT_CANONICAL_RESOURCE_LOCK_TIMEOUT_MS = 30_000;
11
+ const MAX_CANONICAL_RESOURCE_LOCK_WAIT_MS = 250;
12
+ const CANONICAL_RESOURCE_LOCK_CLEANUP_RETRIES = 8;
13
+ const CANONICAL_RESOURCE_LOCK_CLEANUP_RETRY_DELAY_MS = 25;
14
+ const canonicalResourceLockContextStorage = new AsyncLocalStorage();
15
+ const processCanonicalResourceQueues = new Map();
16
+ export function canonicalPathResource(relativePath) {
17
+ const normalizedRelativePath = normalizeRelativeVaultPath(relativePath);
18
+ return {
19
+ key: `path:${normalizedRelativePath}`,
20
+ label: normalizedRelativePath,
21
+ };
22
+ }
23
+ export function canonicalLogicalResource(key, label = key) {
24
+ const normalizedKey = String(key).trim();
25
+ const normalizedLabel = String(label).trim();
26
+ if (normalizedKey.length === 0 || normalizedLabel.length === 0) {
27
+ throw new VaultError("CANONICAL_RESOURCE_INVALID", "Canonical logical resource keys and labels must be non-empty.");
28
+ }
29
+ return {
30
+ key: `logical:${normalizedKey}`,
31
+ label: normalizedLabel,
32
+ };
33
+ }
34
+ export function dedupeCanonicalResources(resources) {
35
+ const unique = new Map();
36
+ for (const resource of resources) {
37
+ if (!unique.has(resource.key)) {
38
+ unique.set(resource.key, resource);
39
+ }
40
+ }
41
+ return [...unique.values()].sort((left, right) => left.key.localeCompare(right.key));
42
+ }
43
+ export function isCanonicalResourceLockScopeActive(vaultRoot) {
44
+ const context = canonicalResourceLockContextStorage.getStore();
45
+ return context?.vaultRoot === normalizeVaultRoot(vaultRoot);
46
+ }
47
+ export async function withCanonicalResourceLocks(input) {
48
+ const vaultRoot = normalizeVaultRoot(input.vaultRoot);
49
+ const resources = dedupeCanonicalResources(input.resources);
50
+ if (resources.length === 0) {
51
+ return await input.run();
52
+ }
53
+ const parentContext = canonicalResourceLockContextStorage.getStore();
54
+ const ownerToken = parentContext?.vaultRoot === vaultRoot ? parentContext.ownerToken : randomUUID().replace(/-/g, "");
55
+ const context = parentContext?.vaultRoot === vaultRoot
56
+ ? parentContext
57
+ : {
58
+ ownerToken,
59
+ vaultRoot,
60
+ };
61
+ const acquiredHandles = [];
62
+ try {
63
+ for (const resource of resources) {
64
+ acquiredHandles.push(await acquireCanonicalResourceLock({
65
+ vaultRoot,
66
+ resource,
67
+ timeoutMs: input.timeoutMs,
68
+ ownerToken,
69
+ }));
70
+ }
71
+ if (parentContext?.vaultRoot === vaultRoot) {
72
+ return await input.run();
73
+ }
74
+ return await canonicalResourceLockContextStorage.run(context, input.run);
75
+ }
76
+ finally {
77
+ await releaseCanonicalResourceLocks(acquiredHandles);
78
+ }
79
+ }
80
+ export async function acquireCanonicalResourceLock(input) {
81
+ const vaultRoot = normalizeVaultRoot(input.vaultRoot);
82
+ const context = canonicalResourceLockContextStorage.getStore();
83
+ const ownerToken = input.ownerToken ??
84
+ context?.ownerToken ??
85
+ randomUUID().replace(/-/g, "");
86
+ const isReentrantOwner = context?.vaultRoot === vaultRoot && context.ownerToken === ownerToken;
87
+ const metadata = buildCanonicalResourceLockMetadata(input.resource);
88
+ const ownerKey = `canonical-resource:${hashVaultRoot(vaultRoot)}:${input.resource.key}:${ownerToken}`;
89
+ const { lockPath, metadataPath } = resolveCanonicalResourceLockPaths(vaultRoot, input.resource);
90
+ const queueKey = `${hashVaultRoot(vaultRoot)}:${input.resource.key}`;
91
+ const releaseQueue = isReentrantOwner
92
+ ? null
93
+ : await acquireCanonicalResourceQueueSlot(queueKey);
94
+ const startedAt = Date.now();
95
+ let attempt = 0;
96
+ try {
97
+ while (true) {
98
+ try {
99
+ const handle = await acquireDirectoryLock({
100
+ ownerKey,
101
+ lockPath,
102
+ metadataPath,
103
+ metadata,
104
+ cleanupRetries: CANONICAL_RESOURCE_LOCK_CLEANUP_RETRIES,
105
+ cleanupRetryDelayMs: CANONICAL_RESOURCE_LOCK_CLEANUP_RETRY_DELAY_MS,
106
+ parseMetadata(value) {
107
+ return isCanonicalResourceLockMetadata(value) ? value : null;
108
+ },
109
+ invalidMetadataReason: "Canonical resource lock metadata is malformed.",
110
+ inspectStale(lockMetadata) {
111
+ if (lockMetadata.host === fingerprintHost() && !isProcessRunning(lockMetadata.pid)) {
112
+ return `Process ${lockMetadata.pid} is no longer running.`;
113
+ }
114
+ return null;
115
+ },
116
+ });
117
+ let released = false;
118
+ return {
119
+ metadata: handle.metadata,
120
+ resource: input.resource,
121
+ async release() {
122
+ if (released) {
123
+ return;
124
+ }
125
+ released = true;
126
+ try {
127
+ await handle.release();
128
+ }
129
+ finally {
130
+ releaseQueue?.();
131
+ }
132
+ },
133
+ };
134
+ }
135
+ catch (error) {
136
+ if (!(error instanceof DirectoryLockHeldError)) {
137
+ throw error;
138
+ }
139
+ if (Date.now() - startedAt >= (input.timeoutMs ?? DEFAULT_CANONICAL_RESOURCE_LOCK_TIMEOUT_MS)) {
140
+ throw new VaultError("CANONICAL_RESOURCE_LOCKED", buildCanonicalResourceLockTimeoutMessage(input.resource, error.inspection.metadata), {
141
+ resourceKey: input.resource.key,
142
+ resourceLabel: input.resource.label,
143
+ metadata: error.inspection.metadata ?? null,
144
+ });
145
+ }
146
+ const waitMs = Math.min(MAX_CANONICAL_RESOURCE_LOCK_WAIT_MS, 25 * 2 ** Math.min(attempt, 3));
147
+ attempt += 1;
148
+ await sleep(waitMs);
149
+ }
150
+ }
151
+ }
152
+ catch (error) {
153
+ releaseQueue?.();
154
+ throw error;
155
+ }
156
+ }
157
+ async function acquireCanonicalResourceQueueSlot(queueKey) {
158
+ const prior = processCanonicalResourceQueues.get(queueKey) ?? Promise.resolve();
159
+ let releaseQueue;
160
+ const queued = new Promise((resolve) => {
161
+ releaseQueue = resolve;
162
+ });
163
+ const tail = prior.then(() => queued, () => queued);
164
+ processCanonicalResourceQueues.set(queueKey, tail);
165
+ await prior.catch(() => undefined);
166
+ return () => {
167
+ releaseQueue();
168
+ if (processCanonicalResourceQueues.get(queueKey) === tail) {
169
+ processCanonicalResourceQueues.delete(queueKey);
170
+ }
171
+ };
172
+ }
173
+ async function releaseCanonicalResourceLocks(handles) {
174
+ for (const handle of [...handles].reverse()) {
175
+ await handle.release();
176
+ }
177
+ }
178
+ function buildCanonicalResourceLockMetadata(resource) {
179
+ return {
180
+ command: buildProcessCommand(),
181
+ host: fingerprintHost(),
182
+ pid: process.pid,
183
+ resourceKey: resource.key,
184
+ resourceLabel: resource.label,
185
+ startedAt: toIsoTimestamp(new Date(), "startedAt"),
186
+ };
187
+ }
188
+ function resolveCanonicalResourceLockPaths(vaultRoot, resource) {
189
+ const resourceHash = createHash("sha1").update(resource.key).digest("hex");
190
+ const lockRelativePath = `${CANONICAL_RESOURCE_LOCK_DIRECTORY}/${resourceHash}`;
191
+ const lockPath = resolveVaultPath(vaultRoot, lockRelativePath).absolutePath;
192
+ const metadataPath = resolveVaultPath(vaultRoot, `${lockRelativePath}/${CANONICAL_RESOURCE_LOCK_METADATA_BASENAME}`).absolutePath;
193
+ return {
194
+ lockPath,
195
+ metadataPath,
196
+ };
197
+ }
198
+ function buildCanonicalResourceLockTimeoutMessage(resource, metadata) {
199
+ if (!metadata) {
200
+ return `Timed out waiting for canonical resource "${resource.label}".`;
201
+ }
202
+ return `Timed out waiting for canonical resource "${resource.label}" held by pid=${metadata.pid}, startedAt=${metadata.startedAt}, command=${metadata.command}.`;
203
+ }
204
+ function isCanonicalResourceLockMetadata(value) {
205
+ return Boolean(value &&
206
+ typeof value === "object" &&
207
+ "command" in value &&
208
+ typeof value.command === "string" &&
209
+ "host" in value &&
210
+ typeof value.host === "string" &&
211
+ "pid" in value &&
212
+ typeof value.pid === "number" &&
213
+ Number.isInteger(value.pid) &&
214
+ "resourceKey" in value &&
215
+ typeof value.resourceKey === "string" &&
216
+ "resourceLabel" in value &&
217
+ typeof value.resourceLabel === "string" &&
218
+ "startedAt" in value &&
219
+ typeof value.startedAt === "string");
220
+ }
221
+ //# sourceMappingURL=canonical-resource-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-resource-lock.js","sourceRoot":"","sources":["../../src/operations/canonical-resource-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,iCAAiC,GAAG,oCAAoC,CAAC;AACtF,MAAM,CAAC,MAAM,yCAAyC,GAAG,YAAY,CAAC;AACtE,MAAM,0CAA0C,GAAG,MAAM,CAAC;AAC1D,MAAM,mCAAmC,GAAG,GAAG,CAAC;AAChD,MAAM,uCAAuC,GAAG,CAAC,CAAC;AAClD,MAAM,8CAA8C,GAAG,EAAE,CAAC;AAkC1D,MAAM,mCAAmC,GAAG,IAAI,iBAAiB,EAAgC,CAAC;AAClG,MAAM,8BAA8B,GAAG,IAAI,GAAG,EAAyB,CAAC;AAExE,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACxE,OAAO;QACL,GAAG,EAAE,QAAQ,sBAAsB,EAAE;QACrC,KAAK,EAAE,sBAAsB;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,KAAK,GAAG,GAAG;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAClB,4BAA4B,EAC5B,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,WAAW,aAAa,EAAE;QAC/B,KAAK,EAAE,eAAe;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA+C;IAE/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC5D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,SAAiB;IAClE,MAAM,OAAO,GAAG,mCAAmC,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,OAAO,EAAE,SAAS,KAAK,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAU,KAKzD;IACC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,aAAa,GAAG,mCAAmC,CAAC,QAAQ,EAAE,CAAC;IACrE,MAAM,UAAU,GACd,aAAa,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrG,MAAM,OAAO,GACX,aAAa,EAAE,SAAS,KAAK,SAAS;QACpC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC;YACE,UAAU;YACV,SAAS;SACV,CAAC;IACR,MAAM,eAAe,GAAkC,EAAE,CAAC;IAE1D,IAAI,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,MAAM,4BAA4B,CAAC;gBACtD,SAAS;gBACT,QAAQ;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU;aACX,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,aAAa,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,mCAAmC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;YAAS,CAAC;QACT,MAAM,6BAA6B,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAwC;IAExC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,mCAAmC,CAAC,QAAQ,EAAE,CAAC;IAC/D,MAAM,UAAU,GACd,KAAK,CAAC,UAAU;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,gBAAgB,GAAG,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC;IAC/F,MAAM,QAAQ,GAAG,kCAAkC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,sBAAsB,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;IACtG,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,iCAAiC,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChG,MAAM,QAAQ,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,gBAAgB;QACnC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;oBACxC,QAAQ;oBACR,QAAQ;oBACR,YAAY;oBACZ,QAAQ;oBACR,cAAc,EAAE,uCAAuC;oBACvD,mBAAmB,EAAE,8CAA8C;oBACnE,aAAa,CAAC,KAAK;wBACjB,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC/D,CAAC;oBACD,qBAAqB,EAAE,gDAAgD;oBACvE,YAAY,CAAC,YAAY;wBACvB,IAAI,YAAY,CAAC,IAAI,KAAK,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;4BACnF,OAAO,WAAW,YAAY,CAAC,GAAG,wBAAwB,CAAC;wBAC7D,CAAC;wBAED,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,OAAO;oBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK,CAAC,OAAO;wBACX,IAAI,QAAQ,EAAE,CAAC;4BACb,OAAO;wBACT,CAAC;wBAED,QAAQ,GAAG,IAAI,CAAC;wBAEhB,IAAI,CAAC;4BACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;wBACzB,CAAC;gCAAS,CAAC;4BACT,YAAY,EAAE,EAAE,CAAC;wBACnB,CAAC;oBACH,CAAC;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,KAAK,YAAY,sBAAsB,CAAC,EAAE,CAAC;oBAC/C,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,0CAA0C,CAAC,EAAE,CAAC;oBAC9F,MAAM,IAAI,UAAU,CAClB,2BAA2B,EAC3B,wCAAwC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnF;wBACE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG;wBAC/B,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;wBACnC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI;qBAC5C,CACF,CAAC;gBACJ,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7F,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iCAAiC,CAAC,QAAgB;IAC/D,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAChF,IAAI,YAAyB,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,GAAG,EAAE,CAAC,MAAM,EACZ,GAAG,EAAE,CAAC,MAAM,CACb,CAAC;IACF,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEnD,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO,GAAG,EAAE;QACV,YAAY,EAAE,CAAC;QACf,IAAI,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1D,8BAA8B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,OAA+C;IAC1F,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,kCAAkC,CACzC,QAAmC;IAEnC,OAAO;QACL,OAAO,EAAE,mBAAmB,EAAE;QAC9B,IAAI,EAAE,eAAe,EAAE;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,WAAW,EAAE,QAAQ,CAAC,GAAG;QACzB,aAAa,EAAE,QAAQ,CAAC,KAAK;QAC7B,SAAS,EAAE,cAAc,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,SAAiB,EACjB,QAAmC;IAKnC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,GAAG,iCAAiC,IAAI,YAAY,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,YAAY,CAAC;IAC5E,MAAM,YAAY,GAAG,gBAAgB,CACnC,SAAS,EACT,GAAG,gBAAgB,IAAI,yCAAyC,EAAE,CACnE,CAAC,YAAY,CAAC;IAEf,OAAO;QACL,QAAQ;QACR,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAC/C,QAAmC,EACnC,QAA8C;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,6CAA6C,QAAQ,CAAC,KAAK,IAAI,CAAC;IACzE,CAAC;IAED,OAAO,6CAA6C,QAAQ,CAAC,KAAK,iBAAiB,QAAQ,CAAC,GAAG,eAAe,QAAQ,CAAC,SAAS,aAAa,QAAQ,CAAC,OAAO,GAAG,CAAC;AACnK,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAc;IACrD,OAAO,OAAO,CACZ,KAAK;QACH,OAAO,KAAK,KAAK,QAAQ;QACzB,SAAS,IAAI,KAAK;QAClB,OAAQ,KAA+B,CAAC,OAAO,KAAK,QAAQ;QAC5D,MAAM,IAAI,KAAK;QACf,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QACtD,KAAK,IAAI,KAAK;QACd,OAAQ,KAA2B,CAAC,GAAG,KAAK,QAAQ;QACpD,MAAM,CAAC,SAAS,CAAE,KAAyB,CAAC,GAAG,CAAC;QAChD,aAAa,IAAI,KAAK;QACtB,OAAQ,KAAmC,CAAC,WAAW,KAAK,QAAQ;QACpE,eAAe,IAAI,KAAK;QACxB,OAAQ,KAAqC,CAAC,aAAa,KAAK,QAAQ;QACxE,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAiC,CAAC,SAAS,KAAK,QAAQ,CACnE,CAAC;AACJ,CAAC"}
@@ -25,5 +25,6 @@ export type CanonicalWriteLockInspection = {
25
25
  reason: string;
26
26
  };
27
27
  export declare function inspectCanonicalWriteLock(vaultRoot: string): Promise<CanonicalWriteLockInspection>;
28
+ export declare function withCanonicalWriteLockScope<TResult>(vaultRoot: string, run: () => Promise<TResult>): Promise<TResult>;
28
29
  export declare function acquireCanonicalWriteLock(vaultRoot: string): Promise<CanonicalWriteLockHandle>;
29
30
  //# sourceMappingURL=canonical-write-lock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-write-lock.d.ts","sourceRoot":"","sources":["../../src/operations/canonical-write-lock.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAC/E,eAAO,MAAM,kCAAkC,8CAAiD,CAAC;AAEjG,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,OAAO,8BAA8B,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,4BAA4B,GACpC;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,OAAO,8BAA8B,CAAC;CACrD,GACD;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,OAAO,8BAA8B,CAAC;IACpD,QAAQ,EAAE,0BAA0B,CAAC;CACtC,GACD;IACE,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,8BAA8B,CAAC;IACpD,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAkEN,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA0CxG;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA6EpG"}
1
+ {"version":3,"file":"canonical-write-lock.d.ts","sourceRoot":"","sources":["../../src/operations/canonical-write-lock.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,8BAA8B,mCAAmC,CAAC;AAC/E,eAAO,MAAM,kCAAkC,8CAAiD,CAAC;AAEjG,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,OAAO,8BAA8B,CAAC;IAC7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAOD,MAAM,MAAM,4BAA4B,GACpC;IACE,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,OAAO,8BAA8B,CAAC;CACrD,GACD;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,OAAO,8BAA8B,CAAC;IACpD,QAAQ,EAAE,0BAA0B,CAAC;CACtC,GACD;IACE,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,OAAO,8BAA8B,CAAC;IACpD,QAAQ,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAqEN,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA0CxG;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EACvD,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA4FpG"}
@@ -1,3 +1,5 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { randomUUID } from "node:crypto";
1
3
  import path from "node:path";
2
4
  import { acquireDirectoryLock, buildProcessCommand, DirectoryLockHeldError, fingerprintHost, inspectDirectoryLock, isProcessRunning, } from "@murphai/runtime-state/node";
3
5
  import { VaultError } from "../errors.js";
@@ -6,6 +8,8 @@ import { toIsoTimestamp } from "../time.js";
6
8
  import { isErrnoException, isPlainRecord } from "../types.js";
7
9
  export const CANONICAL_WRITE_LOCK_DIRECTORY = ".runtime/locks/canonical-write";
8
10
  export const CANONICAL_WRITE_LOCK_METADATA_PATH = `${CANONICAL_WRITE_LOCK_DIRECTORY}/owner.json`;
11
+ const canonicalWriteLockContextStorage = new AsyncLocalStorage();
12
+ const processCanonicalWriteQueues = new Map();
9
13
  function buildMetadata() {
10
14
  return {
11
15
  pid: process.pid,
@@ -90,13 +94,30 @@ export async function inspectCanonicalWriteLock(vaultRoot) {
90
94
  metadata: inspection.metadata,
91
95
  };
92
96
  }
97
+ export async function withCanonicalWriteLockScope(vaultRoot, run) {
98
+ const absoluteRoot = normalizeVaultRoot(vaultRoot);
99
+ const parentContext = canonicalWriteLockContextStorage.getStore();
100
+ if (parentContext?.vaultRoot === absoluteRoot) {
101
+ return await run();
102
+ }
103
+ return await canonicalWriteLockContextStorage.run({
104
+ ownerToken: randomUUID().replace(/-/g, ""),
105
+ vaultRoot: absoluteRoot,
106
+ }, run);
107
+ }
93
108
  export async function acquireCanonicalWriteLock(vaultRoot) {
94
109
  const absoluteRoot = normalizeVaultRoot(vaultRoot);
110
+ const context = canonicalWriteLockContextStorage.getStore();
111
+ const ownerToken = context?.vaultRoot === absoluteRoot
112
+ ? context.ownerToken
113
+ : randomUUID().replace(/-/g, "");
114
+ const isReentrantOwner = context?.vaultRoot === absoluteRoot && context.ownerToken === ownerToken;
115
+ const releaseQueue = isReentrantOwner ? null : await acquireCanonicalWriteQueueSlot(absoluteRoot);
95
116
  const lockPath = resolveVaultPath(absoluteRoot, CANONICAL_WRITE_LOCK_DIRECTORY);
96
117
  const metadataPath = resolveVaultPath(absoluteRoot, CANONICAL_WRITE_LOCK_METADATA_PATH);
97
118
  try {
98
119
  const handle = await acquireDirectoryLock({
99
- ownerKey: `canonical-write:${absoluteRoot}`,
120
+ ownerKey: `canonical-write:${absoluteRoot}:${ownerToken}`,
100
121
  lockPath: lockPath.absolutePath,
101
122
  metadataPath: metadataPath.absolutePath,
102
123
  metadata: buildMetadata(),
@@ -115,10 +136,18 @@ export async function acquireCanonicalWriteLock(vaultRoot) {
115
136
  return {
116
137
  metadata: handle.metadata,
117
138
  relativePath: CANONICAL_WRITE_LOCK_DIRECTORY,
118
- release: handle.release,
139
+ async release() {
140
+ try {
141
+ await handle.release();
142
+ }
143
+ finally {
144
+ releaseQueue?.();
145
+ }
146
+ },
119
147
  };
120
148
  }
121
149
  catch (error) {
150
+ releaseQueue?.();
122
151
  if (error instanceof DirectoryLockHeldError) {
123
152
  const inspection = mapDirectoryLockInspection(error.inspection.state === "active"
124
153
  ? {
@@ -161,4 +190,21 @@ export async function acquireCanonicalWriteLock(vaultRoot) {
161
190
  throw error;
162
191
  }
163
192
  }
193
+ async function acquireCanonicalWriteQueueSlot(vaultRoot) {
194
+ const queueKey = `canonical-write:${vaultRoot}`;
195
+ const prior = processCanonicalWriteQueues.get(queueKey) ?? Promise.resolve();
196
+ let releaseQueue;
197
+ const queued = new Promise((resolve) => {
198
+ releaseQueue = resolve;
199
+ });
200
+ const tail = prior.then(() => queued, () => queued);
201
+ processCanonicalWriteQueues.set(queueKey, tail);
202
+ await prior.catch(() => undefined);
203
+ return () => {
204
+ releaseQueue();
205
+ if (processCanonicalWriteQueues.get(queueKey) === tail) {
206
+ processCanonicalWriteQueues.delete(queueKey);
207
+ }
208
+ };
209
+ }
164
210
  //# sourceMappingURL=canonical-write-lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical-write-lock.js","sourceRoot":"","sources":["../../src/operations/canonical-write-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical-write-lock.js","sourceRoot":"","sources":["../../src/operations/canonical-write-lock.ts"],"names":[],"mappings":"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"}