@murphai/murph 0.2.6 → 0.2.10

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 (759) hide show
  1. package/CHANGELOG.md +185 -0
  2. package/README.md +1 -1
  3. package/config.schema.json +40 -15
  4. package/dist/cli-entry.d.ts.map +1 -1
  5. package/dist/cli-entry.js +7 -5
  6. package/dist/cli-entry.js.map +1 -1
  7. package/dist/commands/automation.d.ts +4 -8
  8. package/dist/commands/automation.d.ts.map +1 -1
  9. package/dist/commands/automation.js +2 -2
  10. package/dist/commands/automation.js.map +1 -1
  11. package/dist/commands/document.d.ts.map +1 -1
  12. package/dist/commands/document.js +1 -1
  13. package/dist/commands/document.js.map +1 -1
  14. package/dist/commands/export-intake-read-helpers.d.ts +1 -1
  15. package/dist/commands/intervention.d.ts.map +1 -1
  16. package/dist/commands/intervention.js +1 -1
  17. package/dist/commands/intervention.js.map +1 -1
  18. package/dist/commands/knowledge.js +1 -1
  19. package/dist/commands/knowledge.js.map +1 -1
  20. package/dist/commands/meal.d.ts +1 -1
  21. package/dist/commands/meal.d.ts.map +1 -1
  22. package/dist/commands/meal.js +53 -3
  23. package/dist/commands/meal.js.map +1 -1
  24. package/dist/commands/model.d.ts.map +1 -1
  25. package/dist/commands/model.js +5 -5
  26. package/dist/commands/model.js.map +1 -1
  27. package/dist/commands/route.d.ts.map +1 -1
  28. package/dist/commands/route.js +8 -8
  29. package/dist/commands/route.js.map +1 -1
  30. package/dist/commands/search.d.ts.map +1 -1
  31. package/dist/commands/search.js +2 -1
  32. package/dist/commands/search.js.map +1 -1
  33. package/dist/commands/workout.d.ts.map +1 -1
  34. package/dist/commands/workout.js +1 -1
  35. package/dist/commands/workout.js.map +1 -1
  36. package/dist/incur.generated.d.ts +9 -2
  37. package/dist/incur.generated.d.ts.map +1 -1
  38. package/dist/index.d.ts +0 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +0 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/mapbox-route-client.d.ts +17 -0
  43. package/dist/mapbox-route-client.d.ts.map +1 -0
  44. package/dist/mapbox-route-client.js +51 -0
  45. package/dist/mapbox-route-client.js.map +1 -0
  46. package/dist/mapbox-route-contracts.d.ts +277 -0
  47. package/dist/mapbox-route-contracts.d.ts.map +1 -0
  48. package/dist/mapbox-route-contracts.js +145 -0
  49. package/dist/mapbox-route-contracts.js.map +1 -0
  50. package/dist/mapbox-route-directions.d.ts +11 -0
  51. package/dist/mapbox-route-directions.d.ts.map +1 -0
  52. package/dist/mapbox-route-directions.js +55 -0
  53. package/dist/mapbox-route-directions.js.map +1 -0
  54. package/dist/mapbox-route-elevation.d.ts +10 -0
  55. package/dist/mapbox-route-elevation.d.ts.map +1 -0
  56. package/dist/mapbox-route-elevation.js +186 -0
  57. package/dist/mapbox-route-elevation.js.map +1 -0
  58. package/dist/mapbox-route-points.d.ts +14 -0
  59. package/dist/mapbox-route-points.d.ts.map +1 -0
  60. package/dist/mapbox-route-points.js +236 -0
  61. package/dist/mapbox-route-points.js.map +1 -0
  62. package/dist/mapbox-route.d.ts +13 -0
  63. package/dist/mapbox-route.d.ts.map +1 -0
  64. package/dist/mapbox-route.js +119 -0
  65. package/dist/mapbox-route.js.map +1 -0
  66. package/dist/vault-cli-bootstrap.d.ts +1 -1
  67. package/dist/vault-cli-bootstrap.d.ts.map +1 -1
  68. package/dist/vault-cli-bootstrap.js +2 -2
  69. package/dist/vault-cli-bootstrap.js.map +1 -1
  70. package/dist/vault-cli-command-manifest.d.ts +23 -13
  71. package/dist/vault-cli-command-manifest.d.ts.map +1 -1
  72. package/dist/vault-cli-command-manifest.js +8 -4
  73. package/dist/vault-cli-command-manifest.js.map +1 -1
  74. package/dist/vault-cli.d.ts +6 -0
  75. package/dist/vault-cli.d.ts.map +1 -1
  76. package/dist/vault-cli.js +20 -3
  77. package/dist/vault-cli.js.map +1 -1
  78. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts +15 -3
  79. package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts.map +1 -1
  80. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.d.ts.map +1 -1
  81. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js +1 -0
  82. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/chat-controller-models.js.map +1 -1
  83. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.d.ts.map +1 -1
  84. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js +10 -15
  85. package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js.map +1 -1
  86. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts +32 -0
  87. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.d.ts.map +1 -0
  88. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js +93 -0
  89. package/node_modules/@murphai/assistant-engine/dist/assistant/auto-reply-channels.js.map +1 -0
  90. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts +1 -0
  91. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts.map +1 -1
  92. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js +1 -1
  93. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js.map +1 -1
  94. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.d.ts.map +1 -1
  95. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js +6 -25
  96. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js.map +1 -1
  97. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts +0 -1
  98. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts.map +1 -1
  99. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js +19 -23
  100. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js.map +1 -1
  101. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.d.ts.map +1 -1
  102. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js +17 -11
  103. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/runtime-lock.js.map +1 -1
  104. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts +5 -2
  105. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.d.ts.map +1 -1
  106. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js +86 -48
  107. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/startup-recovery.js.map +1 -1
  108. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.d.ts.map +1 -1
  109. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.js +1 -16
  110. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.js.map +1 -1
  111. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.d.ts +2 -12
  112. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.d.ts.map +1 -1
  113. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.js +23 -43
  114. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.js.map +1 -1
  115. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/registry.d.ts.map +1 -1
  116. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/registry.js +3 -2
  117. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/registry.js.map +1 -1
  118. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/types.d.ts +1 -1
  119. package/node_modules/@murphai/assistant-engine/dist/assistant/channels/types.d.ts.map +1 -1
  120. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js +2 -3
  121. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js.map +1 -1
  122. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/notification-delivery.d.ts +6 -0
  123. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/notification-delivery.d.ts.map +1 -0
  124. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/notification-delivery.js +21 -0
  125. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/notification-delivery.js.map +1 -0
  126. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.d.ts +0 -2
  127. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.d.ts.map +1 -1
  128. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.js +0 -1
  129. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.js.map +1 -1
  130. package/node_modules/@murphai/assistant-engine/dist/assistant/cron.d.ts.map +1 -1
  131. package/node_modules/@murphai/assistant-engine/dist/assistant/cron.js +67 -43
  132. package/node_modules/@murphai/assistant-engine/dist/assistant/cron.js.map +1 -1
  133. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.d.ts.map +1 -1
  134. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js +20 -7
  135. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js.map +1 -1
  136. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.d.ts +25 -0
  137. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.d.ts.map +1 -0
  138. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.js +201 -0
  139. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.js.map +1 -0
  140. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.d.ts +38 -0
  141. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.d.ts.map +1 -0
  142. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.js +215 -0
  143. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.js.map +1 -0
  144. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.d.ts.map +1 -1
  145. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.js +77 -41
  146. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.js.map +1 -1
  147. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.d.ts.map +1 -1
  148. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.js +4 -201
  149. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.js.map +1 -1
  150. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts +1 -13
  151. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.d.ts.map +1 -1
  152. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js +6 -111
  153. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-binding.js.map +1 -1
  154. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts +1 -0
  155. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.d.ts.map +1 -1
  156. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-catalog.js.map +1 -1
  157. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.d.ts.map +1 -1
  158. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js +18 -4
  159. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-config.js.map +1 -1
  160. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts +0 -7
  161. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.d.ts.map +1 -1
  162. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js +13 -82
  163. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-state.js.map +1 -1
  164. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.d.ts +9 -0
  165. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.d.ts.map +1 -1
  166. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js +84 -32
  167. package/node_modules/@murphai/assistant-engine/dist/assistant/provider-turn-runner.js.map +1 -1
  168. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.d.ts.map +1 -1
  169. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js +1 -0
  170. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js.map +1 -1
  171. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.d.ts.map +1 -1
  172. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js +95 -32
  173. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/openai-compatible.js.map +1 -1
  174. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.d.ts.map +1 -1
  175. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js +6 -1
  176. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/registry.js.map +1 -1
  177. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts +4 -0
  178. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts.map +1 -1
  179. package/node_modules/@murphai/assistant-engine/dist/assistant/redaction.d.ts +4 -8
  180. package/node_modules/@murphai/assistant-engine/dist/assistant/redaction.d.ts.map +1 -1
  181. package/node_modules/@murphai/assistant-engine/dist/assistant/redaction.js +3 -37
  182. package/node_modules/@murphai/assistant-engine/dist/assistant/redaction.js.map +1 -1
  183. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts +14 -0
  184. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.d.ts.map +1 -0
  185. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js +51 -0
  186. package/node_modules/@murphai/assistant-engine/dist/assistant/rich-content-routing.js.map +1 -0
  187. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js +1 -1
  188. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js.map +1 -1
  189. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts +2 -0
  190. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts.map +1 -1
  191. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts +1 -1
  192. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts.map +1 -1
  193. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js +2 -0
  194. package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js.map +1 -1
  195. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts.map +1 -1
  196. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js +0 -4
  197. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js.map +1 -1
  198. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts +16 -1
  199. package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts.map +1 -1
  200. package/node_modules/@murphai/assistant-engine/dist/assistant/service.js +5 -0
  201. package/node_modules/@murphai/assistant-engine/dist/assistant/service.js.map +1 -1
  202. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.d.ts.map +1 -1
  203. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js +7 -0
  204. package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js.map +1 -1
  205. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts +1 -3
  206. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts.map +1 -1
  207. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js +1 -36
  208. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js.map +1 -1
  209. package/node_modules/@murphai/assistant-engine/dist/assistant/state-ids.d.ts +0 -1
  210. package/node_modules/@murphai/assistant-engine/dist/assistant/state-ids.d.ts.map +1 -1
  211. package/node_modules/@murphai/assistant-engine/dist/assistant/state-ids.js +3 -8
  212. package/node_modules/@murphai/assistant-engine/dist/assistant/state-ids.js.map +1 -1
  213. package/node_modules/@murphai/assistant-engine/dist/assistant/state-secrets.d.ts.map +1 -1
  214. package/node_modules/@murphai/assistant-engine/dist/assistant/state-secrets.js +9 -15
  215. package/node_modules/@murphai/assistant-engine/dist/assistant/state-secrets.js.map +1 -1
  216. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.d.ts.map +1 -1
  217. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js +8 -9
  218. package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js.map +1 -1
  219. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts +2 -0
  220. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts.map +1 -1
  221. package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.js.map +1 -1
  222. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.d.ts +1 -1
  223. package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.js +1 -1
  224. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts +2 -0
  225. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts.map +1 -1
  226. package/node_modules/@murphai/assistant-engine/dist/assistant/store.js +1 -1
  227. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts +10 -0
  228. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts.map +1 -1
  229. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js +44 -5
  230. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js.map +1 -1
  231. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts +7 -0
  232. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts.map +1 -1
  233. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js +24 -18
  234. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js.map +1 -1
  235. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts +45 -0
  236. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.d.ts.map +1 -0
  237. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js +112 -0
  238. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/config.js.map +1 -0
  239. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts +22 -0
  240. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.d.ts.map +1 -0
  241. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js +136 -0
  242. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/content.js.map +1 -0
  243. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts +12 -0
  244. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.d.ts.map +1 -0
  245. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js +248 -0
  246. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/html.js.map +1 -0
  247. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts +10 -0
  248. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.d.ts.map +1 -0
  249. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js +280 -0
  250. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/network.js.map +1 -0
  251. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts +18 -0
  252. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.d.ts.map +1 -0
  253. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js +221 -0
  254. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch/response.js.map +1 -0
  255. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts +5 -58
  256. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.d.ts.map +1 -1
  257. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js +11 -859
  258. package/node_modules/@murphai/assistant-engine/dist/assistant/web-fetch.js.map +1 -1
  259. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.d.ts.map +1 -1
  260. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js +5 -6
  261. package/node_modules/@murphai/assistant-engine/dist/assistant/web-pdf-read.js.map +1 -1
  262. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts +22 -28
  263. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.d.ts.map +1 -1
  264. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js +49 -24
  265. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/capability-definitions.js.map +1 -1
  266. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/catalog-profiles.d.ts +1 -0
  267. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/catalog-profiles.d.ts.map +1 -1
  268. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/catalog-profiles.js +14 -0
  269. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/catalog-profiles.js.map +1 -1
  270. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts +4 -0
  271. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.d.ts.map +1 -1
  272. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js +88 -20
  273. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/execution-adapters.js.map +1 -1
  274. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.d.ts.map +1 -1
  275. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js +88 -3
  276. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools/policy-wrappers.js.map +1 -1
  277. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools.d.ts +1 -1
  278. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools.d.ts.map +1 -1
  279. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools.js +1 -1
  280. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-tools.js.map +1 -1
  281. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts +1 -0
  282. package/node_modules/@murphai/assistant-engine/dist/assistant-state.d.ts.map +1 -1
  283. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js +1 -0
  284. package/node_modules/@murphai/assistant-engine/dist/assistant-state.js.map +1 -1
  285. package/node_modules/@murphai/assistant-engine/dist/inbox-model-contracts.d.ts +1 -4
  286. package/node_modules/@murphai/assistant-engine/dist/inbox-model-contracts.d.ts.map +1 -1
  287. package/node_modules/@murphai/assistant-engine/dist/inbox-model-contracts.js +1 -1
  288. package/node_modules/@murphai/assistant-engine/dist/inbox-model-contracts.js.map +1 -1
  289. package/node_modules/@murphai/assistant-engine/dist/inbox-model-harness.js +1 -1
  290. package/node_modules/@murphai/assistant-engine/dist/inbox-model-harness.js.map +1 -1
  291. package/node_modules/@murphai/assistant-engine/dist/index.d.ts +0 -2
  292. package/node_modules/@murphai/assistant-engine/dist/index.d.ts.map +1 -1
  293. package/node_modules/@murphai/assistant-engine/dist/index.js +0 -2
  294. package/node_modules/@murphai/assistant-engine/dist/index.js.map +1 -1
  295. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts +1 -2
  296. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.d.ts.map +1 -1
  297. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js +0 -1
  298. package/node_modules/@murphai/assistant-engine/dist/knowledge/documents.js.map +1 -1
  299. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.d.ts.map +1 -1
  300. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js +124 -104
  301. package/node_modules/@murphai/assistant-engine/dist/knowledge/service.js.map +1 -1
  302. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts +7 -3
  303. package/node_modules/@murphai/assistant-engine/dist/knowledge.d.ts.map +1 -1
  304. package/node_modules/@murphai/assistant-engine/dist/knowledge.js +7 -2
  305. package/node_modules/@murphai/assistant-engine/dist/knowledge.js.map +1 -1
  306. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts +6 -0
  307. package/node_modules/@murphai/assistant-engine/dist/model-harness.d.ts.map +1 -1
  308. package/node_modules/@murphai/assistant-engine/dist/model-harness.js +64 -26
  309. package/node_modules/@murphai/assistant-engine/dist/model-harness.js.map +1 -1
  310. package/node_modules/@murphai/assistant-engine/package.json +2 -2
  311. package/node_modules/@murphai/assistantd/README.md +1 -1
  312. package/node_modules/@murphai/assistantd/dist/config.d.ts.map +1 -1
  313. package/node_modules/@murphai/assistantd/dist/config.js +5 -6
  314. package/node_modules/@murphai/assistantd/dist/config.js.map +1 -1
  315. package/node_modules/@murphai/assistantd/dist/http.d.ts +6 -1
  316. package/node_modules/@murphai/assistantd/dist/http.d.ts.map +1 -1
  317. package/node_modules/@murphai/assistantd/dist/http.js +28 -24
  318. package/node_modules/@murphai/assistantd/dist/http.js.map +1 -1
  319. package/node_modules/@murphai/assistantd/dist/service.d.ts.map +1 -1
  320. package/node_modules/@murphai/assistantd/dist/service.js +2 -1
  321. package/node_modules/@murphai/assistantd/dist/service.js.map +1 -1
  322. package/node_modules/@murphai/assistantd/package.json +1 -1
  323. package/node_modules/@murphai/core/dist/audit.d.ts.map +1 -1
  324. package/node_modules/@murphai/core/dist/audit.js +10 -4
  325. package/node_modules/@murphai/core/dist/audit.js.map +1 -1
  326. package/node_modules/@murphai/core/dist/automation.d.ts +1 -1
  327. package/node_modules/@murphai/core/dist/automation.d.ts.map +1 -1
  328. package/node_modules/@murphai/core/dist/automation.js +13 -16
  329. package/node_modules/@murphai/core/dist/automation.js.map +1 -1
  330. package/node_modules/@murphai/core/dist/bank/foods.d.ts.map +1 -1
  331. package/node_modules/@murphai/core/dist/bank/foods.js +29 -0
  332. package/node_modules/@murphai/core/dist/bank/foods.js.map +1 -1
  333. package/node_modules/@murphai/core/dist/bank/types.d.ts +3 -1
  334. package/node_modules/@murphai/core/dist/bank/types.d.ts.map +1 -1
  335. package/node_modules/@murphai/core/dist/bank/types.js.map +1 -1
  336. package/node_modules/@murphai/core/dist/domains/vault-summary.d.ts.map +1 -1
  337. package/node_modules/@murphai/core/dist/domains/vault-summary.js +48 -38
  338. package/node_modules/@murphai/core/dist/domains/vault-summary.js.map +1 -1
  339. package/node_modules/@murphai/core/dist/index.d.ts +2 -2
  340. package/node_modules/@murphai/core/dist/index.d.ts.map +1 -1
  341. package/node_modules/@murphai/core/dist/index.js +1 -1
  342. package/node_modules/@murphai/core/dist/index.js.map +1 -1
  343. package/node_modules/@murphai/core/dist/jsonl.d.ts +0 -5
  344. package/node_modules/@murphai/core/dist/jsonl.d.ts.map +1 -1
  345. package/node_modules/@murphai/core/dist/jsonl.js +1 -12
  346. package/node_modules/@murphai/core/dist/jsonl.js.map +1 -1
  347. package/node_modules/@murphai/core/dist/memory.d.ts.map +1 -1
  348. package/node_modules/@murphai/core/dist/memory.js +83 -63
  349. package/node_modules/@murphai/core/dist/memory.js.map +1 -1
  350. package/node_modules/@murphai/core/dist/mutations.d.ts +3 -2
  351. package/node_modules/@murphai/core/dist/mutations.d.ts.map +1 -1
  352. package/node_modules/@murphai/core/dist/mutations.js +6 -3
  353. package/node_modules/@murphai/core/dist/mutations.js.map +1 -1
  354. package/node_modules/@murphai/core/dist/nutrition.d.ts +6 -0
  355. package/node_modules/@murphai/core/dist/nutrition.d.ts.map +1 -0
  356. package/node_modules/@murphai/core/dist/nutrition.js +69 -0
  357. package/node_modules/@murphai/core/dist/nutrition.js.map +1 -0
  358. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts +38 -0
  359. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.d.ts.map +1 -0
  360. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js +221 -0
  361. package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js.map +1 -0
  362. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts +1 -0
  363. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.d.ts.map +1 -1
  364. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js +48 -2
  365. package/node_modules/@murphai/core/dist/operations/canonical-write-lock.js.map +1 -1
  366. package/node_modules/@murphai/core/dist/operations/index.d.ts +3 -1
  367. package/node_modules/@murphai/core/dist/operations/index.d.ts.map +1 -1
  368. package/node_modules/@murphai/core/dist/operations/index.js +2 -1
  369. package/node_modules/@murphai/core/dist/operations/index.js.map +1 -1
  370. package/node_modules/@murphai/core/dist/operations/write-batch.js +2 -2
  371. package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -1
  372. package/node_modules/@murphai/core/dist/preferences.d.ts.map +1 -1
  373. package/node_modules/@murphai/core/dist/preferences.js +71 -86
  374. package/node_modules/@murphai/core/dist/preferences.js.map +1 -1
  375. package/node_modules/@murphai/core/dist/public-mutations.d.ts +3 -3
  376. package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -1
  377. package/node_modules/@murphai/core/dist/public-mutations.js +103 -65
  378. package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -1
  379. package/node_modules/@murphai/core/dist/raw.d.ts +1 -1
  380. package/node_modules/@murphai/core/dist/raw.d.ts.map +1 -1
  381. package/node_modules/@murphai/core/package.json +1 -1
  382. package/node_modules/@murphai/device-syncd/README.md +6 -2
  383. package/node_modules/@murphai/device-syncd/dist/bin.js +73 -15
  384. package/node_modules/@murphai/device-syncd/dist/bin.js.map +1 -1
  385. package/node_modules/@murphai/device-syncd/dist/callback-redirect.d.ts +11 -0
  386. package/node_modules/@murphai/device-syncd/dist/callback-redirect.d.ts.map +1 -0
  387. package/node_modules/@murphai/device-syncd/dist/callback-redirect.js +51 -0
  388. package/node_modules/@murphai/device-syncd/dist/callback-redirect.js.map +1 -0
  389. package/node_modules/@murphai/device-syncd/dist/client.d.ts +21 -0
  390. package/node_modules/@murphai/device-syncd/dist/client.d.ts.map +1 -1
  391. package/node_modules/@murphai/device-syncd/dist/client.js.map +1 -1
  392. package/node_modules/@murphai/device-syncd/dist/config.d.ts.map +1 -1
  393. package/node_modules/@murphai/device-syncd/dist/config.js +18 -9
  394. package/node_modules/@murphai/device-syncd/dist/config.js.map +1 -1
  395. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js +2 -26
  396. package/node_modules/@murphai/device-syncd/dist/hosted-hints.js.map +1 -1
  397. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +5 -0
  398. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts.map +1 -1
  399. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js +27 -6
  400. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -1
  401. package/node_modules/@murphai/device-syncd/dist/http.d.ts +1 -6
  402. package/node_modules/@murphai/device-syncd/dist/http.d.ts.map +1 -1
  403. package/node_modules/@murphai/device-syncd/dist/http.js +75 -78
  404. package/node_modules/@murphai/device-syncd/dist/http.js.map +1 -1
  405. package/node_modules/@murphai/device-syncd/dist/index.d.ts +1 -0
  406. package/node_modules/@murphai/device-syncd/dist/index.d.ts.map +1 -1
  407. package/node_modules/@murphai/device-syncd/dist/index.js +1 -0
  408. package/node_modules/@murphai/device-syncd/dist/index.js.map +1 -1
  409. package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts.map +1 -1
  410. package/node_modules/@murphai/device-syncd/dist/providers/oura.js +1 -9
  411. package/node_modules/@murphai/device-syncd/dist/providers/oura.js.map +1 -1
  412. package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts.map +1 -1
  413. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js +1 -12
  414. package/node_modules/@murphai/device-syncd/dist/providers/whoop.js.map +1 -1
  415. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts +3 -3
  416. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -1
  417. package/node_modules/@murphai/device-syncd/dist/public-ingress.js +105 -60
  418. package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -1
  419. package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -1
  420. package/node_modules/@murphai/device-syncd/dist/service.js +5 -3
  421. package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -1
  422. package/node_modules/@murphai/device-syncd/dist/shared.d.ts +1 -0
  423. package/node_modules/@murphai/device-syncd/dist/shared.d.ts.map +1 -1
  424. package/node_modules/@murphai/device-syncd/dist/shared.js +3 -0
  425. package/node_modules/@murphai/device-syncd/dist/shared.js.map +1 -1
  426. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts +31 -0
  427. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts.map +1 -0
  428. package/node_modules/@murphai/device-syncd/dist/store/jobs.js +207 -0
  429. package/node_modules/@murphai/device-syncd/dist/store/jobs.js.map +1 -0
  430. package/node_modules/@murphai/device-syncd/dist/store/oauth-states.d.ts +2 -2
  431. package/node_modules/@murphai/device-syncd/dist/store/oauth-states.d.ts.map +1 -1
  432. package/node_modules/@murphai/device-syncd/dist/store/oauth-states.js +20 -4
  433. package/node_modules/@murphai/device-syncd/dist/store/oauth-states.js.map +1 -1
  434. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts +9 -0
  435. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts.map +1 -0
  436. package/node_modules/@murphai/device-syncd/dist/store/schema.js +116 -0
  437. package/node_modules/@murphai/device-syncd/dist/store/schema.js.map +1 -0
  438. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts +10 -0
  439. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.d.ts.map +1 -0
  440. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js +90 -0
  441. package/node_modules/@murphai/device-syncd/dist/store/webhook-traces.js.map +1 -0
  442. package/node_modules/@murphai/device-syncd/dist/store.d.ts +4 -8
  443. package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -1
  444. package/node_modules/@murphai/device-syncd/dist/store.js +31 -365
  445. package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -1
  446. package/node_modules/@murphai/device-syncd/dist/types.d.ts +31 -28
  447. package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -1
  448. package/node_modules/@murphai/device-syncd/dist/types.js +4 -1
  449. package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -1
  450. package/node_modules/@murphai/device-syncd/package.json +4 -0
  451. package/node_modules/@murphai/gateway-local/dist/store/schema.d.ts +1 -1
  452. package/node_modules/@murphai/gateway-local/dist/store/schema.js +1 -1
  453. package/node_modules/@murphai/gateway-local/package.json +1 -1
  454. package/node_modules/@murphai/importers/dist/device-providers/garmin.d.ts.map +1 -1
  455. package/node_modules/@murphai/importers/dist/device-providers/garmin.js +9 -4
  456. package/node_modules/@murphai/importers/dist/device-providers/garmin.js.map +1 -1
  457. package/node_modules/@murphai/importers/dist/device-providers/oura.d.ts.map +1 -1
  458. package/node_modules/@murphai/importers/dist/device-providers/oura.js +10 -6
  459. package/node_modules/@murphai/importers/dist/device-providers/oura.js.map +1 -1
  460. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts +8 -1
  461. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts.map +1 -1
  462. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js +94 -3
  463. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js.map +1 -1
  464. package/node_modules/@murphai/importers/dist/device-providers/whoop.d.ts.map +1 -1
  465. package/node_modules/@murphai/importers/dist/device-providers/whoop.js +9 -3
  466. package/node_modules/@murphai/importers/dist/device-providers/whoop.js.map +1 -1
  467. package/node_modules/@murphai/importers/package.json +1 -1
  468. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.d.ts.map +1 -1
  469. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js +4 -4
  470. package/node_modules/@murphai/inbox-services/dist/inbox-app/sources.js.map +1 -1
  471. package/node_modules/@murphai/inbox-services/package.json +1 -1
  472. package/node_modules/@murphai/inboxd/README.md +2 -1
  473. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.d.ts.map +1 -1
  474. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js +2 -1
  475. package/node_modules/@murphai/inboxd/dist/connectors/telegram/normalize.js.map +1 -1
  476. package/node_modules/@murphai/inboxd/dist/index.d.ts +1 -1
  477. package/node_modules/@murphai/inboxd/dist/index.d.ts.map +1 -1
  478. package/node_modules/@murphai/inboxd/dist/index.js +1 -1
  479. package/node_modules/@murphai/inboxd/dist/index.js.map +1 -1
  480. package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts +2 -26
  481. package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts.map +1 -1
  482. package/node_modules/@murphai/inboxd/dist/indexing/persist.js +269 -263
  483. package/node_modules/@murphai/inboxd/dist/indexing/persist.js.map +1 -1
  484. package/node_modules/@murphai/inboxd/dist/kernel/pipeline.js +1 -1
  485. package/node_modules/@murphai/inboxd/dist/kernel/pipeline.js.map +1 -1
  486. package/node_modules/@murphai/inboxd/package.json +1 -1
  487. package/node_modules/@murphai/messaging-ingress/README.md +6 -0
  488. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts +0 -1
  489. package/node_modules/@murphai/messaging-ingress/dist/index.d.ts.map +1 -1
  490. package/node_modules/@murphai/messaging-ingress/dist/index.js +0 -1
  491. package/node_modules/@murphai/messaging-ingress/dist/index.js.map +1 -1
  492. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts +116 -0
  493. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.d.ts.map +1 -0
  494. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js +2 -0
  495. package/node_modules/@murphai/messaging-ingress/dist/telegram-types.js.map +1 -0
  496. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts +1 -1
  497. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook-payload.d.ts.map +1 -1
  498. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts +2 -116
  499. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.d.ts.map +1 -1
  500. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js +21 -10
  501. package/node_modules/@murphai/messaging-ingress/dist/telegram-webhook.js.map +1 -1
  502. package/node_modules/@murphai/messaging-ingress/package.json +4 -4
  503. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts +68 -0
  504. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts.map +1 -1
  505. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js +1 -0
  506. package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.js.map +1 -1
  507. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts +13 -1
  508. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.d.ts.map +1 -1
  509. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js +62 -14
  510. package/node_modules/@murphai/operator-config/dist/assistant/provider-config.js.map +1 -1
  511. package/node_modules/@murphai/operator-config/dist/assistant/redaction.d.ts +1 -0
  512. package/node_modules/@murphai/operator-config/dist/assistant/redaction.d.ts.map +1 -1
  513. package/node_modules/@murphai/operator-config/dist/assistant/redaction.js +8 -2
  514. package/node_modules/@murphai/operator-config/dist/assistant/redaction.js.map +1 -1
  515. package/node_modules/@murphai/operator-config/dist/assistant/shared.d.ts.map +1 -1
  516. package/node_modules/@murphai/operator-config/dist/assistant/shared.js +5 -13
  517. package/node_modules/@murphai/operator-config/dist/assistant/shared.js.map +1 -1
  518. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts +45 -0
  519. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts.map +1 -0
  520. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js +203 -0
  521. package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js.map +1 -0
  522. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts +26 -0
  523. package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts.map +1 -1
  524. package/node_modules/@murphai/operator-config/dist/assistant-backend.js +6 -0
  525. package/node_modules/@murphai/operator-config/dist/assistant-backend.js.map +1 -1
  526. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts +742 -42
  527. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts.map +1 -1
  528. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js +86 -30
  529. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js.map +1 -1
  530. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.d.ts.map +1 -1
  531. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js +43 -5
  532. package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js.map +1 -1
  533. package/node_modules/@murphai/operator-config/dist/device-sync-client.d.ts +1 -22
  534. package/node_modules/@murphai/operator-config/dist/device-sync-client.d.ts.map +1 -1
  535. package/node_modules/@murphai/operator-config/dist/device-sync-client.js.map +1 -1
  536. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts +2 -0
  537. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts.map +1 -1
  538. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js +50 -5
  539. package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.js.map +1 -1
  540. package/node_modules/@murphai/operator-config/dist/index.d.ts +0 -1
  541. package/node_modules/@murphai/operator-config/dist/index.d.ts.map +1 -1
  542. package/node_modules/@murphai/operator-config/dist/index.js +0 -1
  543. package/node_modules/@murphai/operator-config/dist/index.js.map +1 -1
  544. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts +53 -1
  545. package/node_modules/@murphai/operator-config/dist/operator-config.d.ts.map +1 -1
  546. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts +40 -2
  547. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts.map +1 -1
  548. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js +2 -1
  549. package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.js.map +1 -1
  550. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts +53 -33
  551. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts.map +1 -1
  552. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js +26 -42
  553. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js.map +1 -1
  554. package/node_modules/@murphai/operator-config/package.json +12 -7
  555. package/node_modules/@murphai/parsers/dist/shared.d.ts +1 -0
  556. package/node_modules/@murphai/parsers/dist/shared.d.ts.map +1 -1
  557. package/node_modules/@murphai/parsers/dist/shared.js +44 -3
  558. package/node_modules/@murphai/parsers/dist/shared.js.map +1 -1
  559. package/node_modules/@murphai/query/README.md +2 -0
  560. package/node_modules/@murphai/query/dist/automation.d.ts +1 -1
  561. package/node_modules/@murphai/query/dist/automation.d.ts.map +1 -1
  562. package/node_modules/@murphai/query/dist/automation.js +7 -8
  563. package/node_modules/@murphai/query/dist/automation.js.map +1 -1
  564. package/node_modules/@murphai/query/dist/entity-families.d.ts +2 -0
  565. package/node_modules/@murphai/query/dist/entity-families.d.ts.map +1 -0
  566. package/node_modules/@murphai/query/dist/entity-families.js +20 -0
  567. package/node_modules/@murphai/query/dist/entity-families.js.map +1 -0
  568. package/node_modules/@murphai/query/dist/health/bank-registry-query-metadata.d.ts +1 -3
  569. package/node_modules/@murphai/query/dist/health/bank-registry-query-metadata.d.ts.map +1 -1
  570. package/node_modules/@murphai/query/dist/health/bank-registry-query-metadata.js +1 -4
  571. package/node_modules/@murphai/query/dist/health/bank-registry-query-metadata.js.map +1 -1
  572. package/node_modules/@murphai/query/dist/health/registries.d.ts +6 -1
  573. package/node_modules/@murphai/query/dist/health/registries.d.ts.map +1 -1
  574. package/node_modules/@murphai/query/dist/health/registries.js.map +1 -1
  575. package/node_modules/@murphai/query/dist/index.d.ts +5 -2
  576. package/node_modules/@murphai/query/dist/index.d.ts.map +1 -1
  577. package/node_modules/@murphai/query/dist/index.js +4 -2
  578. package/node_modules/@murphai/query/dist/index.js.map +1 -1
  579. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts +1 -1
  580. package/node_modules/@murphai/query/dist/knowledge-contracts.d.ts.map +1 -1
  581. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts +0 -29
  582. package/node_modules/@murphai/query/dist/knowledge-graph.d.ts.map +1 -1
  583. package/node_modules/@murphai/query/dist/knowledge-graph.js +1 -7
  584. package/node_modules/@murphai/query/dist/knowledge-graph.js.map +1 -1
  585. package/node_modules/@murphai/query/dist/knowledge-search.d.ts +29 -1
  586. package/node_modules/@murphai/query/dist/knowledge-search.d.ts.map +1 -1
  587. package/node_modules/@murphai/query/dist/knowledge-search.js +5 -0
  588. package/node_modules/@murphai/query/dist/knowledge-search.js.map +1 -1
  589. package/node_modules/@murphai/query/dist/meal-nutrition.d.ts +31 -0
  590. package/node_modules/@murphai/query/dist/meal-nutrition.d.ts.map +1 -0
  591. package/node_modules/@murphai/query/dist/meal-nutrition.js +127 -0
  592. package/node_modules/@murphai/query/dist/meal-nutrition.js.map +1 -0
  593. package/node_modules/@murphai/query/dist/model.d.ts +0 -1
  594. package/node_modules/@murphai/query/dist/model.d.ts.map +1 -1
  595. package/node_modules/@murphai/query/dist/model.js +1 -19
  596. package/node_modules/@murphai/query/dist/model.js.map +1 -1
  597. package/node_modules/@murphai/query/package.json +6 -1
  598. package/node_modules/@murphai/runtime-state/README.md +2 -1
  599. package/node_modules/@murphai/runtime-state/dist/assistant-ids.d.ts +3 -0
  600. package/node_modules/@murphai/runtime-state/dist/assistant-ids.d.ts.map +1 -0
  601. package/node_modules/@murphai/runtime-state/dist/assistant-ids.js +14 -0
  602. package/node_modules/@murphai/runtime-state/dist/assistant-ids.js.map +1 -0
  603. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts +0 -4
  604. package/node_modules/@murphai/runtime-state/dist/assistant-usage.d.ts.map +1 -1
  605. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js +0 -4
  606. package/node_modules/@murphai/runtime-state/dist/assistant-usage.js.map +1 -1
  607. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.d.ts +1 -1
  608. package/node_modules/@murphai/runtime-state/dist/hosted-bundle.js +1 -1
  609. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.d.ts +1 -1
  610. package/node_modules/@murphai/runtime-state/dist/hosted-user-keys.js +1 -1
  611. package/node_modules/@murphai/runtime-state/dist/local-state-files.d.ts.map +1 -1
  612. package/node_modules/@murphai/runtime-state/dist/local-state-files.js +20 -8
  613. package/node_modules/@murphai/runtime-state/dist/local-state-files.js.map +1 -1
  614. package/node_modules/@murphai/runtime-state/dist/locks.d.ts.map +1 -1
  615. package/node_modules/@murphai/runtime-state/dist/locks.js +234 -87
  616. package/node_modules/@murphai/runtime-state/dist/locks.js.map +1 -1
  617. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts +19 -0
  618. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.d.ts.map +1 -1
  619. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js +106 -9
  620. package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js.map +1 -1
  621. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts +1 -0
  622. package/node_modules/@murphai/runtime-state/dist/node/index.d.ts.map +1 -1
  623. package/node_modules/@murphai/runtime-state/dist/node/index.js +1 -0
  624. package/node_modules/@murphai/runtime-state/dist/node/index.js.map +1 -1
  625. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts +3 -0
  626. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.d.ts.map +1 -0
  627. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js +20 -0
  628. package/node_modules/@murphai/runtime-state/dist/node/loopback-control-plane-auth.js.map +1 -0
  629. package/node_modules/@murphai/runtime-state/package.json +4 -0
  630. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.d.ts.map +1 -1
  631. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js +2 -0
  632. package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js.map +1 -1
  633. package/node_modules/@murphai/setup-cli/dist/setup-assistant.d.ts.map +1 -1
  634. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js +34 -14
  635. package/node_modules/@murphai/setup-cli/dist/setup-assistant.js.map +1 -1
  636. package/node_modules/@murphai/setup-cli/dist/setup-cli.d.ts.map +1 -1
  637. package/node_modules/@murphai/setup-cli/dist/setup-cli.js +8 -17
  638. package/node_modules/@murphai/setup-cli/dist/setup-cli.js.map +1 -1
  639. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.d.ts.map +1 -1
  640. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js +30 -97
  641. package/node_modules/@murphai/setup-cli/dist/setup-services/channels.js.map +1 -1
  642. package/node_modules/@murphai/setup-cli/dist/setup-services/operator-defaults.d.ts +27 -0
  643. package/node_modules/@murphai/setup-cli/dist/setup-services/operator-defaults.d.ts.map +1 -0
  644. package/node_modules/@murphai/setup-cli/dist/setup-services/operator-defaults.js +92 -0
  645. package/node_modules/@murphai/setup-cli/dist/setup-services/operator-defaults.js.map +1 -0
  646. package/node_modules/@murphai/setup-cli/dist/setup-services/tool-provisioning.d.ts +29 -0
  647. package/node_modules/@murphai/setup-cli/dist/setup-services/tool-provisioning.d.ts.map +1 -0
  648. package/node_modules/@murphai/setup-cli/dist/setup-services/tool-provisioning.js +306 -0
  649. package/node_modules/@murphai/setup-cli/dist/setup-services/tool-provisioning.js.map +1 -0
  650. package/node_modules/@murphai/setup-cli/dist/setup-services.d.ts.map +1 -1
  651. package/node_modules/@murphai/setup-cli/dist/setup-services.js +27 -406
  652. package/node_modules/@murphai/setup-cli/dist/setup-services.js.map +1 -1
  653. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts +11 -1
  654. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts.map +1 -1
  655. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js +18 -3
  656. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js.map +1 -1
  657. package/node_modules/@murphai/vault-usecases/dist/health-cli-descriptors.d.ts +5 -5
  658. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts +2 -2
  659. package/node_modules/@murphai/vault-usecases/dist/health-cli-method-types.d.ts.map +1 -1
  660. package/node_modules/@murphai/vault-usecases/dist/query-runtime.d.ts +10 -3
  661. package/node_modules/@murphai/vault-usecases/dist/query-runtime.d.ts.map +1 -1
  662. package/node_modules/@murphai/vault-usecases/dist/query-runtime.js +1 -2
  663. package/node_modules/@murphai/vault-usecases/dist/query-runtime.js.map +1 -1
  664. package/node_modules/@murphai/vault-usecases/dist/runtime.d.ts +1 -1
  665. package/node_modules/@murphai/vault-usecases/dist/runtime.d.ts.map +1 -1
  666. package/node_modules/@murphai/vault-usecases/dist/runtime.js +1 -1
  667. package/node_modules/@murphai/vault-usecases/dist/runtime.js.map +1 -1
  668. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts +5 -5
  669. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts.map +1 -1
  670. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js +5 -2
  671. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js.map +1 -1
  672. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts +2 -36
  673. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts.map +1 -1
  674. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js +15 -3
  675. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js.map +1 -1
  676. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.d.ts.map +1 -1
  677. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js +86 -5
  678. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js.map +1 -1
  679. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts +50 -26
  680. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts.map +1 -1
  681. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js +23 -7
  682. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js.map +1 -1
  683. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.d.ts.map +1 -1
  684. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.js +21 -2
  685. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.js.map +1 -1
  686. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention.d.ts +2 -1
  687. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention.d.ts.map +1 -1
  688. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention.js.map +1 -1
  689. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts +2 -34
  690. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts.map +1 -1
  691. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js +18 -4
  692. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js.map +1 -1
  693. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts +1 -14
  694. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts.map +1 -1
  695. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js +3 -3
  696. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js.map +1 -1
  697. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts +10 -11
  698. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts.map +1 -1
  699. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js +44 -2
  700. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js.map +1 -1
  701. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts +30 -9
  702. package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts.map +1 -1
  703. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts +1 -44
  704. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts.map +1 -1
  705. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js +28 -2
  706. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.js.map +1 -1
  707. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-measurement.d.ts +2 -2
  708. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-measurement.d.ts.map +1 -1
  709. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-measurement.js.map +1 -1
  710. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts +5 -5
  711. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts.map +1 -1
  712. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js +5 -2
  713. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js.map +1 -1
  714. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.d.ts +2 -2
  715. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.d.ts.map +1 -1
  716. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.js +73 -1
  717. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.js.map +1 -1
  718. package/node_modules/@murphai/vault-usecases/package.json +1 -1
  719. package/package.json +4 -4
  720. package/dist/knowledge-cli-contracts.d.ts +0 -3
  721. package/dist/knowledge-cli-contracts.d.ts.map +0 -1
  722. package/dist/knowledge-cli-contracts.js +0 -2
  723. package/dist/knowledge-cli-contracts.js.map +0 -1
  724. package/dist/runner-vault-cli-bin.d.ts +0 -3
  725. package/dist/runner-vault-cli-bin.d.ts.map +0 -1
  726. package/dist/runner-vault-cli-bin.js +0 -8
  727. package/dist/runner-vault-cli-bin.js.map +0 -1
  728. package/dist/runner-vault-cli-command-manifest.d.ts +0 -9
  729. package/dist/runner-vault-cli-command-manifest.d.ts.map +0 -1
  730. package/dist/runner-vault-cli-command-manifest.js +0 -71
  731. package/dist/runner-vault-cli-command-manifest.js.map +0 -1
  732. package/dist/runner-vault-cli.d.ts +0 -10
  733. package/dist/runner-vault-cli.d.ts.map +0 -1
  734. package/dist/runner-vault-cli.js +0 -22
  735. package/dist/runner-vault-cli.js.map +0 -1
  736. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts +0 -2
  737. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.d.ts.map +0 -1
  738. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js +0 -2
  739. package/node_modules/@murphai/assistant-engine/dist/knowledge/contracts.js.map +0 -1
  740. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts +0 -142
  741. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.d.ts.map +0 -1
  742. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js +0 -670
  743. package/node_modules/@murphai/assistant-engine/dist/mapbox-route.js.map +0 -1
  744. package/node_modules/@murphai/core/dist/storage-spine.d.ts +0 -3
  745. package/node_modules/@murphai/core/dist/storage-spine.d.ts.map +0 -1
  746. package/node_modules/@murphai/core/dist/storage-spine.js +0 -3
  747. package/node_modules/@murphai/core/dist/storage-spine.js.map +0 -1
  748. package/node_modules/@murphai/operator-config/dist/assistant/state-ids.d.ts +0 -2
  749. package/node_modules/@murphai/operator-config/dist/assistant/state-ids.d.ts.map +0 -1
  750. package/node_modules/@murphai/operator-config/dist/assistant/state-ids.js +0 -7
  751. package/node_modules/@murphai/operator-config/dist/assistant/state-ids.js.map +0 -1
  752. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts +0 -86
  753. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.d.ts.map +0 -1
  754. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js +0 -2
  755. package/node_modules/@murphai/operator-config/dist/knowledge-contracts.js.map +0 -1
  756. package/node_modules/@murphai/query/dist/health/health-registry-query-metadata.d.ts +0 -3
  757. package/node_modules/@murphai/query/dist/health/health-registry-query-metadata.d.ts.map +0 -1
  758. package/node_modules/@murphai/query/dist/health/health-registry-query-metadata.js +0 -2
  759. package/node_modules/@murphai/query/dist/health/health-registry-query-metadata.js.map +0 -1
@@ -1,25 +1,11 @@
1
1
  import path from "node:path";
2
2
  import { createHash } from "node:crypto";
3
- import { mkdir, readFile, realpath, rename, stat } from "node:fs/promises";
3
+ import { readFile, realpath, stat } from "node:fs/promises";
4
4
  import { tmpdir } from "node:os";
5
5
  import { assertContract, inboxCaptureRecordSchema, } from "@murphai/contracts";
6
- import { acquireCanonicalWriteLock, applyCanonicalWriteBatch, loadVault, readJsonlRecords, VAULT_LAYOUT, walkVaultFiles, } from "@murphai/core";
7
- import { buildAttachmentId, createDeterministicInboxCaptureId, createInboxCaptureIdentityKey, assertVaultPathOnDisk, normalizeStoredAttachments, normalizeAccountKey, normalizeRelativePath, redactSensitivePaths, resolveVaultPath, sanitizeFileName, sanitizeSegment, sha256File, walkNamedFiles, } from "../shared.js";
8
- import { INBOX_CAPTURE_LEDGER_DIRECTORY, buildInboxCaptureAuditPathForStoredAt, buildInboxCaptureAuditRecord, buildInboxCaptureEventPathForOccurredAt, buildInboxCaptureEventRecord, buildInboxCaptureLedgerPath, buildInboxCaptureLedgerPathForOccurredAt, buildInboxCaptureRecord, } from "./persist/canonical-records.js";
9
- const STORED_CAPTURE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/u;
10
- const QUARANTINED_INVALID_CAPTURE_ID_SUFFIX = "quarantined-invalid-capture-id";
11
- class UnsafeStoredCaptureIdError extends Error {
12
- captureId;
13
- canonicalCaptureId;
14
- absolutePath;
15
- constructor(input) {
16
- super(`Stored inbox envelope at ${input.absolutePath} contains unsafe captureId "${input.captureId}".`);
17
- this.name = "UnsafeStoredCaptureIdError";
18
- this.captureId = input.captureId;
19
- this.canonicalCaptureId = input.canonicalCaptureId;
20
- this.absolutePath = input.absolutePath;
21
- }
22
- }
6
+ import { acquireCanonicalWriteLock, applyCanonicalWriteBatch, loadVault, listWriteOperationMetadataPaths, readJsonlRecords, readStoredWriteOperation, VAULT_LAYOUT, walkVaultFiles, withCanonicalWriteLockScope, } from "@murphai/core";
7
+ import { buildAttachmentId, createDeterministicInboxCaptureId, createInboxCaptureIdentityKey, normalizeStoredAttachments, normalizeAccountKey, normalizeRelativePath, redactSensitivePaths, resolveVaultPath, sanitizeFileName, sanitizeSegment, sha256File, } from "../shared.js";
8
+ import { INBOX_CAPTURE_LEDGER_DIRECTORY, buildInboxCaptureLedgerPathForOccurredAt, buildInboxCaptureRecord, } from "./persist/canonical-records.js";
23
9
  export async function ensureInboxVault(vaultRoot) {
24
10
  await loadVault({ vaultRoot });
25
11
  }
@@ -204,23 +190,6 @@ async function prepareRawCapturePersistence({ captureId, eventId, input, storedA
204
190
  rawContents,
205
191
  };
206
192
  }
207
- export async function persistRawCapture({ vaultRoot, captureId, eventId, input, storedAt = new Date().toISOString(), }) {
208
- const prepared = await prepareRawCapturePersistence({
209
- captureId,
210
- eventId,
211
- input,
212
- storedAt,
213
- });
214
- await applyCanonicalWriteBatch({
215
- vaultRoot,
216
- operationType: "inbox_capture_raw_persist",
217
- summary: `Persist inbox capture ${captureId}`,
218
- occurredAt: prepared.stored.storedAt,
219
- rawCopies: prepared.rawCopies,
220
- rawContents: prepared.rawContents,
221
- });
222
- return prepared.stored;
223
- }
224
193
  export async function persistCanonicalInboxCapture({ vaultRoot, captureId, eventId, input, storedAt = new Date().toISOString(), }) {
225
194
  const prepared = await prepareRawCapturePersistence({
226
195
  captureId,
@@ -266,105 +235,52 @@ export async function findStoredCaptureEnvelope(input) {
266
235
  if (storedRecord) {
267
236
  return inboxCaptureRecordToStoredCaptureEnvelope(storedRecord);
268
237
  }
269
- const expectedPath = await resolveVaultPath(input.vaultRoot, buildInboxEnvelopePath(input.inbound, captureId));
270
- const expectedEnvelope = await readStoredCaptureEnvelope(expectedPath);
271
- if (expectedEnvelope) {
272
- return expectedEnvelope;
238
+ const expectedEnvelopePath = buildInboxEnvelopePath(input.inbound, captureId);
239
+ const expectedCapturePath = buildInboxCaptureLedgerPathForOccurredAt(input.inbound.occurredAt);
240
+ const recoverableOperations = await listRecoverableInboxCaptureOperations(input.vaultRoot);
241
+ const recoverableOperation = recoverableOperations.get(expectedEnvelopePath);
242
+ if (!recoverableOperation || recoverableOperation.capturePath !== expectedCapturePath) {
243
+ return null;
273
244
  }
274
- const accountRoot = await resolveVaultPath(input.vaultRoot, buildInboxAccountDirectory(input.inbound));
275
- const envelopeFiles = await walkInboxEnvelopeFiles(accountRoot);
276
- let selected = null;
277
- const identityKey = createInboxCaptureIdentityKey(input.inbound);
278
- for (const envelopePath of envelopeFiles) {
279
- const envelope = await readStoredCaptureEnvelope(envelopePath);
280
- if (!envelope || createInboxCaptureIdentityKey(envelope.input) !== identityKey) {
281
- continue;
282
- }
283
- const entry = { absolutePath: envelopePath, envelope };
284
- if (!selected || compareEnvelopeEntries(entry, selected) < 0) {
285
- selected = entry;
286
- }
287
- }
288
- return selected?.envelope ?? null;
289
- }
290
- export async function ensureStoredCaptureCanonicalEvidence(input) {
291
- const capturePath = buildInboxCaptureLedgerPath(input.envelope);
292
- const lock = await acquireCanonicalWriteLock(input.vaultRoot);
293
- try {
294
- const captureRecords = await readInboxCaptureRecordsIfPresent({
295
- vaultRoot: input.vaultRoot,
296
- relativePath: capturePath,
297
- });
298
- if (findMatchingInboxCaptureRecord(captureRecords, input.envelope)) {
299
- return;
300
- }
301
- await applyCanonicalWriteBatch({
302
- vaultRoot: input.vaultRoot,
303
- operationType: "inbox_capture_canonical_evidence",
304
- summary: `Ensure canonical evidence for inbox capture ${input.envelope.captureId}`,
305
- occurredAt: input.envelope.stored.storedAt,
306
- jsonlAppends: [
307
- {
308
- relativePath: capturePath,
309
- record: buildInboxCaptureRecord({
310
- eventId: input.envelope.eventId,
311
- inbound: input.envelope.input,
312
- stored: input.envelope.stored,
313
- }),
314
- },
315
- ],
316
- });
317
- }
318
- finally {
319
- await lock.release();
320
- }
321
- }
322
- export async function appendInboxCaptureEvent(input) {
323
- const vault = await loadVault({ vaultRoot: input.vaultRoot });
324
- const relativePath = buildInboxCaptureEventPathForOccurredAt(input.occurredAt);
325
- const record = buildInboxCaptureEventRecord({
326
- eventId: input.eventId,
327
- inbound: input.inbound,
328
- stored: input.stored,
329
- timeZone: vault.metadata.timezone,
330
- });
331
- await applyCanonicalWriteBatch({
245
+ return await readStoredCaptureEnvelope({
332
246
  vaultRoot: input.vaultRoot,
333
- operationType: "inbox_capture_event_append",
334
- summary: `Append inbox capture event ${input.eventId}`,
335
- occurredAt: input.stored.storedAt,
336
- jsonlAppends: [
337
- {
338
- relativePath,
339
- record,
340
- },
341
- ],
247
+ relativePath: expectedEnvelopePath,
342
248
  });
343
- return { relativePath, record };
344
249
  }
345
- export async function appendImportAudit(input) {
346
- const relativePath = buildInboxCaptureAuditPathForStoredAt(input.stored.storedAt);
347
- const record = buildInboxCaptureAuditRecord({
348
- auditId: input.auditId,
349
- eventId: input.eventId,
350
- inbound: input.inbound,
351
- stored: input.stored,
352
- capturePath: input.capturePath,
353
- eventPath: input.eventPath,
354
- });
355
- await applyCanonicalWriteBatch({
356
- vaultRoot: input.vaultRoot,
357
- operationType: "inbox_capture_audit_append",
358
- summary: `Append inbox capture audit ${input.auditId}`,
359
- occurredAt: input.stored.storedAt,
360
- jsonlAppends: [
361
- {
250
+ export async function ensureStoredCaptureCanonicalEvidence(input) {
251
+ const relativePath = buildInboxCaptureLedgerPathForOccurredAt(input.envelope.input.occurredAt);
252
+ await withCanonicalWriteLockScope(input.vaultRoot, async () => {
253
+ const lock = await acquireCanonicalWriteLock(input.vaultRoot);
254
+ try {
255
+ const records = await readInboxCaptureRecordsIfPresent({
256
+ vaultRoot: input.vaultRoot,
362
257
  relativePath,
363
- record,
364
- },
365
- ],
258
+ });
259
+ const identityKey = createInboxCaptureIdentityKey(input.envelope.input);
260
+ if (selectMatchingInboxCaptureRecord(records, identityKey, input.envelope.captureId)) {
261
+ return;
262
+ }
263
+ await applyCanonicalWriteBatch({
264
+ vaultRoot: input.vaultRoot,
265
+ operationType: "inbox_capture_canonical_evidence",
266
+ summary: `Ensure canonical evidence for inbox capture ${input.envelope.captureId}`,
267
+ occurredAt: input.envelope.stored.storedAt,
268
+ jsonlAppends: [
269
+ {
270
+ relativePath,
271
+ record: buildInboxCaptureRecord({
272
+ eventId: input.envelope.eventId,
273
+ inbound: input.envelope.input,
274
+ stored: input.envelope.stored,
275
+ }),
276
+ },
277
+ ],
278
+ });
279
+ }
280
+ finally {
281
+ await lock.release();
282
+ }
366
283
  });
367
- return { relativePath, record };
368
284
  }
369
285
  export async function rebuildRuntimeFromVault(input) {
370
286
  const canonicalRecords = await listCanonicalInboxCaptureRecords(input.vaultRoot);
@@ -383,47 +299,24 @@ export async function rebuildRuntimeFromVault(input) {
383
299
  });
384
300
  restoredIdentityKeys.add(record.identityKey);
385
301
  }
386
- const inboxRoot = await resolveVaultPath(input.vaultRoot, VAULT_LAYOUT.rawInboxDirectory);
387
- try {
388
- await mkdir(inboxRoot, { recursive: true });
389
- }
390
- catch {
391
- return;
392
- }
393
- await assertVaultPathOnDisk(input.vaultRoot, inboxRoot);
394
- const envelopeFiles = await walkInboxEnvelopeFiles(inboxRoot);
395
- const canonicalEntries = new Map();
396
- for (const envelopePath of envelopeFiles) {
397
- const envelope = await readStoredCaptureEnvelope(envelopePath);
398
- if (!envelope) {
399
- continue;
400
- }
401
- const identityKey = createInboxCaptureIdentityKey(envelope.input);
402
- if (restoredIdentityKeys.has(identityKey)) {
403
- continue;
404
- }
405
- const entry = { absolutePath: envelopePath, envelope };
406
- const current = canonicalEntries.get(identityKey);
407
- if (!current || compareEnvelopeEntries(entry, current) < 0) {
408
- canonicalEntries.set(identityKey, entry);
409
- }
410
- }
411
- for (const entry of [...canonicalEntries.values()].sort(compareEnvelopeEntries)) {
302
+ const recoverableOperations = await listRecoverableInboxCaptureOperations(input.vaultRoot);
303
+ const recoveredEnvelopes = await listRecoverableRawCaptureEnvelopes(input.vaultRoot, restoredIdentityKeys, recoverableOperations);
304
+ for (const envelope of recoveredEnvelopes) {
412
305
  await ensureStoredCaptureCanonicalEvidence({
413
306
  vaultRoot: input.vaultRoot,
414
- envelope: entry.envelope,
307
+ envelope,
415
308
  });
416
309
  const captureId = input.runtime.upsertCaptureIndex({
417
- captureId: entry.envelope.captureId,
418
- eventId: entry.envelope.eventId,
419
- input: entry.envelope.input,
420
- stored: entry.envelope.stored,
310
+ captureId: envelope.captureId,
311
+ eventId: envelope.eventId,
312
+ input: envelope.input,
313
+ stored: envelope.stored,
421
314
  });
422
315
  input.runtime.enqueueDerivedJobs({
423
316
  captureId,
424
- stored: entry.envelope.stored,
317
+ stored: envelope.stored,
425
318
  });
426
- restoredIdentityKeys.add(createInboxCaptureIdentityKey(entry.envelope.input));
319
+ restoredIdentityKeys.add(createInboxCaptureIdentityKey(envelope.input));
427
320
  }
428
321
  }
429
322
  function buildInboxAccountDirectory(input) {
@@ -437,71 +330,78 @@ function buildInboxCaptureDirectory(input, captureId) {
437
330
  function buildInboxEnvelopePath(input, captureId) {
438
331
  return normalizeRelativePath(path.posix.join(buildInboxCaptureDirectory(input, captureId), "envelope.json"));
439
332
  }
440
- async function walkInboxEnvelopeFiles(directory) {
333
+ async function readStoredCaptureEnvelope(input) {
334
+ const absolutePath = await resolveVaultPath(input.vaultRoot, input.relativePath);
441
335
  try {
442
- return (await walkNamedFiles(directory, "envelope.json", { skipDirectories: ["attachments"] })).sort();
336
+ return normalizeStoredCaptureEnvelope(JSON.parse(await readFile(absolutePath, "utf8")), input.relativePath);
443
337
  }
444
338
  catch (error) {
445
339
  if (isMissingFileError(error)) {
446
- return [];
340
+ return null;
447
341
  }
448
342
  throw error;
449
343
  }
450
344
  }
451
- async function readStoredCaptureEnvelope(absolutePath) {
452
- try {
453
- return normalizeStoredCaptureEnvelope(JSON.parse(await readFile(absolutePath, "utf8")), absolutePath);
345
+ function normalizeStoredCaptureEnvelope(value, relativePath) {
346
+ const context = `stored inbox envelope at ${relativePath}`;
347
+ const envelope = expectRecord(value, context);
348
+ if (envelope.schema !== "murph.inbox-envelope.v1") {
349
+ throw new TypeError(`Expected canonical "schema" in ${context}.`);
454
350
  }
455
- catch (error) {
456
- if (isMissingFileError(error)) {
457
- return null;
458
- }
459
- if (error instanceof UnsafeStoredCaptureIdError) {
460
- await quarantineStoredCaptureEnvelope(absolutePath);
461
- return null;
462
- }
463
- throw error;
351
+ const inbound = buildSanitizedInboundCapture(normalizeStoredCaptureInboundInput(envelope.input, `${context}.input`));
352
+ const captureId = createDeterministicInboxCaptureId(inbound);
353
+ const eventId = requireStringField(envelope, "eventId", context);
354
+ const storedAt = requireStringField(envelope, "storedAt", context);
355
+ if (requireStringField(envelope, "captureId", context) !== captureId) {
356
+ throw new TypeError(`Stored inbox envelope at ${relativePath} must use the deterministic captureId.`);
464
357
  }
465
- }
466
- function normalizeStoredCaptureEnvelope(envelope, absolutePath) {
467
- if (!envelope || typeof envelope !== "object") {
468
- throw new TypeError(`Expected stored inbox envelope object at ${absolutePath}.`);
358
+ const storedRecord = expectRecord(envelope.stored, `${context}.stored`);
359
+ const sourceDirectory = requireStringField(storedRecord, "sourceDirectory", `${context}.stored`);
360
+ const envelopePath = requireStringField(storedRecord, "envelopePath", `${context}.stored`);
361
+ const attachmentsValue = storedRecord.attachments;
362
+ if (!Array.isArray(attachmentsValue)) {
363
+ throw new TypeError(`Expected canonical "attachments" array in ${context}.stored.`);
469
364
  }
470
- if (!envelope.stored || typeof envelope.stored !== "object") {
471
- throw new TypeError(`Missing canonical "stored" payload in stored inbox envelope at ${absolutePath}.`);
365
+ if (requireStringField(storedRecord, "captureId", `${context}.stored`) !== captureId) {
366
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched stored.captureId.`);
472
367
  }
473
- if (!envelope.input || typeof envelope.input !== "object") {
474
- throw new TypeError(`Missing canonical "input" payload in stored inbox envelope at ${absolutePath}.`);
368
+ if (requireStringField(storedRecord, "eventId", `${context}.stored`) !== eventId) {
369
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched stored.eventId.`);
475
370
  }
476
- if (typeof envelope.input.source !== "string" || envelope.input.source.trim().length === 0) {
477
- throw new TypeError(`Missing canonical "input.source" in stored inbox envelope at ${absolutePath}.`);
371
+ if (requireStringField(storedRecord, "storedAt", `${context}.stored`) !== storedAt) {
372
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched stored.storedAt.`);
478
373
  }
479
- if (typeof envelope.input.externalId !== "string" || envelope.input.externalId.trim().length === 0) {
480
- throw new TypeError(`Missing canonical "input.externalId" in stored inbox envelope at ${absolutePath}.`);
374
+ const expectedSourceDirectory = buildInboxCaptureDirectory(inbound, captureId);
375
+ if (sourceDirectory !== expectedSourceDirectory) {
376
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched stored.sourceDirectory.`);
481
377
  }
482
- if (!Array.isArray(envelope.stored.attachments)) {
483
- throw new TypeError(`Missing canonical "stored.attachments" array in stored inbox envelope at ${absolutePath}.`);
378
+ const expectedEnvelopePath = buildInboxEnvelopePath(inbound, captureId);
379
+ if (envelopePath !== expectedEnvelopePath) {
380
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched stored.envelopePath.`);
484
381
  }
485
- const canonicalCaptureId = createDeterministicInboxCaptureId(envelope.input);
486
- const captureId = normalizeStoredCaptureId({
487
- captureId: envelope.captureId,
488
- canonicalCaptureId,
489
- absolutePath,
382
+ const attachments = normalizeStoredAttachments(captureId, attachmentsValue, `${context}.stored.attachments`).map((attachment) => {
383
+ const expectedAttachmentId = buildAttachmentId(captureId, attachment.ordinal);
384
+ if (attachment.attachmentId !== expectedAttachmentId) {
385
+ throw new TypeError(`Stored inbox envelope at ${relativePath} has a mismatched attachmentId for ordinal ${attachment.ordinal}.`);
386
+ }
387
+ return {
388
+ ...attachment,
389
+ attachmentId: expectedAttachmentId,
390
+ originalPath: null,
391
+ };
490
392
  });
491
- return {
492
- ...envelope,
493
- captureId,
393
+ return inboxCaptureRecordToStoredCaptureEnvelope(buildInboxCaptureRecord({
394
+ eventId,
395
+ inbound,
494
396
  stored: {
495
- ...envelope.stored,
496
397
  captureId,
497
- eventId: envelope.eventId,
498
- attachments: normalizeStoredAttachmentsForCaptureId({
499
- captureId,
500
- attachments: envelope.stored.attachments,
501
- absolutePath,
502
- }),
398
+ eventId,
399
+ storedAt,
400
+ sourceDirectory,
401
+ envelopePath,
402
+ attachments,
503
403
  },
504
- };
404
+ }));
505
405
  }
506
406
  async function readJsonlRecordsIfPresent(input) {
507
407
  try {
@@ -516,24 +416,80 @@ async function readJsonlRecordsIfPresent(input) {
516
416
  throw error;
517
417
  }
518
418
  }
519
- function compareEnvelopeEntries(left, right) {
520
- const idComparison = comparePreferenceScore(left) - comparePreferenceScore(right);
521
- if (idComparison !== 0) {
522
- return idComparison;
419
+ async function listRecoverableRawCaptureEnvelopes(vaultRoot, restoredIdentityKeys, recoverableOperations) {
420
+ const selectedByIdentityKey = new Map();
421
+ for (const relativePath of [...recoverableOperations.keys()].sort()) {
422
+ const envelope = await readStoredCaptureEnvelope({ vaultRoot, relativePath });
423
+ if (!envelope) {
424
+ continue;
425
+ }
426
+ const identityKey = createInboxCaptureIdentityKey(envelope.input);
427
+ if (restoredIdentityKeys.has(identityKey)) {
428
+ continue;
429
+ }
430
+ const current = selectedByIdentityKey.get(identityKey);
431
+ const candidate = { relativePath, envelope };
432
+ if (!current || compareEnvelopeEntries(candidate, current) < 0) {
433
+ selectedByIdentityKey.set(identityKey, candidate);
434
+ }
435
+ }
436
+ return [...selectedByIdentityKey.values()].sort(compareEnvelopeEntries).map((entry) => entry.envelope);
437
+ }
438
+ async function listRecoverableInboxCaptureOperations(vaultRoot) {
439
+ const relativePaths = await listWriteOperationMetadataPaths(vaultRoot);
440
+ const selected = new Map();
441
+ for (const relativePath of relativePaths) {
442
+ let operation;
443
+ try {
444
+ operation = await readStoredWriteOperation(vaultRoot, relativePath);
445
+ }
446
+ catch {
447
+ continue;
448
+ }
449
+ const recoverable = selectRecoverableInboxCaptureOperation(operation);
450
+ if (!recoverable) {
451
+ continue;
452
+ }
453
+ const current = selected.get(recoverable.envelopePath);
454
+ if (!current || current.updatedAt.localeCompare(recoverable.updatedAt) < 0) {
455
+ selected.set(recoverable.envelopePath, recoverable);
456
+ }
457
+ }
458
+ return selected;
459
+ }
460
+ function selectRecoverableInboxCaptureOperation(operation) {
461
+ if (operation.operationType !== "inbox_capture_persist") {
462
+ return null;
523
463
  }
464
+ if (operation.status === "committed" || operation.status === "rolled_back") {
465
+ return null;
466
+ }
467
+ const envelopeAction = operation.actions.find((action) => action.kind === "raw_copy" &&
468
+ action.targetRelativePath.startsWith(`${VAULT_LAYOUT.rawInboxDirectory}/`) &&
469
+ action.targetRelativePath.endsWith("/envelope.json") &&
470
+ (action.state === "applied" || action.state === "reused"));
471
+ const captureAction = operation.actions.find((action) => action.kind === "jsonl_append" &&
472
+ action.targetRelativePath.startsWith(`${INBOX_CAPTURE_LEDGER_DIRECTORY}/`) &&
473
+ action.state === "staged");
474
+ if (!envelopeAction || !captureAction) {
475
+ return null;
476
+ }
477
+ return {
478
+ envelopePath: envelopeAction.targetRelativePath,
479
+ capturePath: captureAction.targetRelativePath,
480
+ updatedAt: operation.updatedAt,
481
+ };
482
+ }
483
+ function compareEnvelopeEntries(left, right) {
524
484
  const storedAtComparison = left.envelope.stored.storedAt.localeCompare(right.envelope.stored.storedAt);
525
485
  if (storedAtComparison !== 0) {
526
486
  return storedAtComparison;
527
487
  }
528
- const captureComparison = left.envelope.captureId.localeCompare(right.envelope.captureId);
529
- if (captureComparison !== 0) {
530
- return captureComparison;
488
+ const captureIdComparison = left.envelope.captureId.localeCompare(right.envelope.captureId);
489
+ if (captureIdComparison !== 0) {
490
+ return captureIdComparison;
531
491
  }
532
- return left.absolutePath.localeCompare(right.absolutePath);
533
- }
534
- function comparePreferenceScore(entry) {
535
- const canonicalCaptureId = createDeterministicInboxCaptureId(entry.envelope.input);
536
- return path.basename(path.dirname(entry.absolutePath)) === canonicalCaptureId ? 0 : 1;
492
+ return left.relativePath.localeCompare(right.relativePath);
537
493
  }
538
494
  function inboxCaptureRecordToStoredCaptureEnvelope(record) {
539
495
  const input = {
@@ -664,10 +620,6 @@ function compareInboxCaptureRecords(left, right) {
664
620
  }
665
621
  return left.envelopePath.localeCompare(right.envelopePath);
666
622
  }
667
- function findMatchingInboxCaptureRecord(records, envelope) {
668
- const identityKey = createInboxCaptureIdentityKey(envelope.input);
669
- return selectMatchingInboxCaptureRecord(records, identityKey, envelope.captureId);
670
- }
671
623
  function stripEphemeralAttachmentFields(attachment) {
672
624
  const { data, ...sanitized } = attachment;
673
625
  return sanitized;
@@ -682,55 +634,109 @@ function buildUnstoredAttachment(input) {
682
634
  sha256: null,
683
635
  };
684
636
  }
685
- function normalizeStoredCaptureId(input) {
686
- const captureId = typeof input.captureId === "string" ? input.captureId.trim() : "";
687
- if (!captureId) {
688
- throw new TypeError(`Missing canonical "captureId" in stored inbox envelope at ${input.absolutePath}.`);
637
+ function normalizeStoredCaptureInboundInput(value, context) {
638
+ const input = expectRecord(value, context);
639
+ const thread = expectRecord(input.thread, `${context}.thread`);
640
+ const actor = expectRecord(input.actor, `${context}.actor`);
641
+ const raw = expectRecord(input.raw, `${context}.raw`);
642
+ const attachmentsValue = input.attachments;
643
+ if (!Array.isArray(attachmentsValue)) {
644
+ throw new TypeError(`Expected canonical "attachments" array in ${context}.`);
689
645
  }
690
- if (!STORED_CAPTURE_ID_PATTERN.test(captureId)) {
691
- throw new UnsafeStoredCaptureIdError({
692
- captureId,
693
- canonicalCaptureId: input.canonicalCaptureId,
694
- absolutePath: input.absolutePath,
695
- });
646
+ return {
647
+ source: requireStringField(input, "source", context),
648
+ externalId: requireStringField(input, "externalId", context),
649
+ accountId: readOptionalNullableStringField(input, "accountId", context),
650
+ thread: {
651
+ id: requireStringField(thread, "id", `${context}.thread`),
652
+ title: readOptionalNullableStringField(thread, "title", `${context}.thread`),
653
+ isDirect: readOptionalBooleanField(thread, "isDirect", `${context}.thread`),
654
+ },
655
+ actor: {
656
+ id: readOptionalNullableStringField(actor, "id", `${context}.actor`),
657
+ displayName: readOptionalNullableStringField(actor, "displayName", `${context}.actor`),
658
+ isSelf: requireBooleanField(actor, "isSelf", `${context}.actor`),
659
+ },
660
+ occurredAt: requireStringField(input, "occurredAt", context),
661
+ receivedAt: readOptionalNullableStringField(input, "receivedAt", context),
662
+ text: readOptionalNullableStringField(input, "text", context) ?? null,
663
+ attachments: attachmentsValue.map((attachment, index) => normalizeStoredCaptureInboundAttachment(attachment, `${context}.attachments[${index}]`)),
664
+ raw,
665
+ };
666
+ }
667
+ function normalizeStoredCaptureInboundAttachment(value, context) {
668
+ const attachment = expectRecord(value, context);
669
+ const kind = requireStringField(attachment, "kind", context);
670
+ if (!isInboundAttachmentKind(kind)) {
671
+ throw new TypeError(`Unsupported canonical attachment kind "${kind}" in ${context}.`);
696
672
  }
697
- return input.canonicalCaptureId;
673
+ return {
674
+ externalId: readOptionalNullableStringField(attachment, "externalId", context),
675
+ kind,
676
+ mime: readOptionalNullableStringField(attachment, "mime", context),
677
+ originalPath: null,
678
+ fileName: readOptionalNullableStringField(attachment, "fileName", context),
679
+ byteSize: readOptionalNullableNumberField(attachment, "byteSize", context),
680
+ };
698
681
  }
699
- function normalizeStoredAttachmentsForCaptureId(input) {
700
- const normalizedAttachments = normalizeStoredAttachments(input.captureId, input.attachments, `stored inbox envelope at ${input.absolutePath}`);
701
- return normalizedAttachments.map((attachment) => ({
702
- ...attachment,
703
- attachmentId: buildAttachmentId(input.captureId, attachment.ordinal),
704
- }));
682
+ function expectRecord(value, context) {
683
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
684
+ throw new TypeError(`Expected object in ${context}.`);
685
+ }
686
+ return value;
705
687
  }
706
- async function quarantineStoredCaptureEnvelope(absolutePath) {
707
- const quarantinePath = await resolveQuarantinedEnvelopePath(absolutePath);
708
- try {
709
- await rename(absolutePath, quarantinePath);
688
+ function requireStringField(value, field, context) {
689
+ const fieldValue = value[field];
690
+ if (typeof fieldValue !== "string" || fieldValue.trim().length === 0) {
691
+ throw new TypeError(`Expected canonical "${field}" string in ${context}.`);
710
692
  }
711
- catch (error) {
712
- if (isMissingFileError(error)) {
713
- return;
714
- }
715
- throw error;
693
+ return fieldValue;
694
+ }
695
+ function requireBooleanField(value, field, context) {
696
+ const fieldValue = value[field];
697
+ if (typeof fieldValue !== "boolean") {
698
+ throw new TypeError(`Expected canonical "${field}" boolean in ${context}.`);
716
699
  }
700
+ return fieldValue;
717
701
  }
718
- async function resolveQuarantinedEnvelopePath(absolutePath) {
719
- const parsed = path.parse(absolutePath);
720
- for (let index = 0; index < 1000; index += 1) {
721
- const suffix = index === 0 ? "" : `-${index}`;
722
- const candidate = path.join(parsed.dir, `${parsed.name}.${QUARANTINED_INVALID_CAPTURE_ID_SUFFIX}${suffix}${parsed.ext}`);
723
- try {
724
- await stat(candidate);
725
- }
726
- catch (error) {
727
- if (isMissingFileError(error)) {
728
- return candidate;
729
- }
730
- throw error;
731
- }
702
+ function readOptionalBooleanField(value, field, context) {
703
+ const fieldValue = value[field];
704
+ if (fieldValue === undefined) {
705
+ return undefined;
732
706
  }
733
- throw new TypeError(`Unable to quarantine stored inbox envelope at ${absolutePath}.`);
707
+ if (typeof fieldValue !== "boolean") {
708
+ throw new TypeError(`Expected canonical "${field}" boolean in ${context}.`);
709
+ }
710
+ return fieldValue;
711
+ }
712
+ function readOptionalNullableStringField(value, field, context) {
713
+ const fieldValue = value[field];
714
+ if (fieldValue === undefined) {
715
+ return undefined;
716
+ }
717
+ if (fieldValue === null) {
718
+ return null;
719
+ }
720
+ if (typeof fieldValue !== "string") {
721
+ throw new TypeError(`Expected canonical "${field}" string in ${context}.`);
722
+ }
723
+ return fieldValue;
724
+ }
725
+ function readOptionalNullableNumberField(value, field, context) {
726
+ const fieldValue = value[field];
727
+ if (fieldValue === undefined) {
728
+ return undefined;
729
+ }
730
+ if (fieldValue === null) {
731
+ return null;
732
+ }
733
+ if (typeof fieldValue !== "number" || !Number.isFinite(fieldValue)) {
734
+ throw new TypeError(`Expected canonical "${field}" number in ${context}.`);
735
+ }
736
+ return fieldValue;
737
+ }
738
+ function isInboundAttachmentKind(value) {
739
+ return ["image", "audio", "video", "document", "other"].includes(value);
734
740
  }
735
741
  function isMissingFileError(error) {
736
742
  return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";