@murphai/murph 1.3.1 → 1.3.2

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 (779) hide show
  1. package/CHANGELOG.md +808 -0
  2. package/config.schema.json +91 -40
  3. package/dist/bin.js +6 -4
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli-entry.d.ts +8 -1
  6. package/dist/cli-entry.d.ts.map +1 -1
  7. package/dist/cli-entry.js +79 -3
  8. package/dist/cli-entry.js.map +1 -1
  9. package/dist/commands/audit-command-helpers.d.ts.map +1 -1
  10. package/dist/commands/audit-command-helpers.js +7 -5
  11. package/dist/commands/audit-command-helpers.js.map +1 -1
  12. package/dist/commands/batch.d.ts +5 -5
  13. package/dist/commands/batch.d.ts.map +1 -1
  14. package/dist/commands/batch.js +2 -21
  15. package/dist/commands/batch.js.map +1 -1
  16. package/dist/commands/commons.d.ts.map +1 -1
  17. package/dist/commands/commons.js +2 -4
  18. package/dist/commands/commons.js.map +1 -1
  19. package/dist/commands/exercise.d.ts.map +1 -1
  20. package/dist/commands/exercise.js +16 -3
  21. package/dist/commands/exercise.js.map +1 -1
  22. package/dist/commands/experiment-progress-card-image.d.ts.map +1 -1
  23. package/dist/commands/experiment-progress-card-image.js +63 -12
  24. package/dist/commands/experiment-progress-card-image.js.map +1 -1
  25. package/dist/commands/experiment.d.ts.map +1 -1
  26. package/dist/commands/experiment.js +45 -5
  27. package/dist/commands/experiment.js.map +1 -1
  28. package/dist/commands/export-intake-read-helpers.d.ts.map +1 -1
  29. package/dist/commands/export-intake-read-helpers.js +2 -3
  30. package/dist/commands/export-intake-read-helpers.js.map +1 -1
  31. package/dist/commands/food.d.ts.map +1 -1
  32. package/dist/commands/food.js +1 -7
  33. package/dist/commands/food.js.map +1 -1
  34. package/dist/commands/habitat.d.ts.map +1 -1
  35. package/dist/commands/habitat.js +120 -9
  36. package/dist/commands/habitat.js.map +1 -1
  37. package/dist/commands/health-blood-test-save.d.ts.map +1 -1
  38. package/dist/commands/health-blood-test-save.js +42 -8
  39. package/dist/commands/health-blood-test-save.js.map +1 -1
  40. package/dist/commands/meal.d.ts.map +1 -1
  41. package/dist/commands/meal.js +4 -1
  42. package/dist/commands/meal.js.map +1 -1
  43. package/dist/commands/measurement.d.ts.map +1 -1
  44. package/dist/commands/measurement.js +3 -0
  45. package/dist/commands/measurement.js.map +1 -1
  46. package/dist/commands/murph-age.d.ts +9 -1
  47. package/dist/commands/murph-age.d.ts.map +1 -1
  48. package/dist/commands/murph-age.js +132 -7
  49. package/dist/commands/murph-age.js.map +1 -1
  50. package/dist/commands/public-validation-issue.d.ts +7 -0
  51. package/dist/commands/public-validation-issue.d.ts.map +1 -0
  52. package/dist/commands/public-validation-issue.js +7 -0
  53. package/dist/commands/public-validation-issue.js.map +1 -0
  54. package/dist/commands/scheduled-log.d.ts +12 -0
  55. package/dist/commands/scheduled-log.d.ts.map +1 -1
  56. package/dist/commands/scheduled-log.js +456 -106
  57. package/dist/commands/scheduled-log.js.map +1 -1
  58. package/dist/commands/wearables.d.ts +286 -0
  59. package/dist/commands/wearables.d.ts.map +1 -1
  60. package/dist/commands/wearables.js +33 -1
  61. package/dist/commands/wearables.js.map +1 -1
  62. package/dist/commands/workout-live.d.ts.map +1 -1
  63. package/dist/commands/workout-live.js +123 -42
  64. package/dist/commands/workout-live.js.map +1 -1
  65. package/dist/commands/workout-typed-options.d.ts +38 -0
  66. package/dist/commands/workout-typed-options.d.ts.map +1 -0
  67. package/dist/commands/workout-typed-options.js +90 -0
  68. package/dist/commands/workout-typed-options.js.map +1 -0
  69. package/dist/commands/workout.d.ts.map +1 -1
  70. package/dist/commands/workout.js +80 -73
  71. package/dist/commands/workout.js.map +1 -1
  72. package/dist/hosted-data-api-labels.d.ts.map +1 -1
  73. package/dist/hosted-data-api-labels.js +161 -30
  74. package/dist/hosted-data-api-labels.js.map +1 -1
  75. package/dist/incur-error-bridge.d.ts.map +1 -1
  76. package/dist/incur-error-bridge.js +7 -15
  77. package/dist/incur-error-bridge.js.map +1 -1
  78. package/dist/incur.generated.d.ts +22 -13
  79. package/dist/incur.generated.d.ts.map +1 -1
  80. package/dist/mapbox-address.d.ts.map +1 -1
  81. package/dist/mapbox-address.js +3 -4
  82. package/dist/mapbox-address.js.map +1 -1
  83. package/dist/mapbox-route-client.d.ts +2 -2
  84. package/dist/mapbox-route-client.d.ts.map +1 -1
  85. package/dist/mapbox-route-client.js +49 -12
  86. package/dist/mapbox-route-client.js.map +1 -1
  87. package/dist/mapbox-route-directions.d.ts.map +1 -1
  88. package/dist/mapbox-route-directions.js +0 -1
  89. package/dist/mapbox-route-directions.js.map +1 -1
  90. package/dist/mapbox-route-elevation.js +0 -1
  91. package/dist/mapbox-route-elevation.js.map +1 -1
  92. package/dist/mapbox-route-points.js +0 -2
  93. package/dist/mapbox-route-points.js.map +1 -1
  94. package/dist/mapbox-route.d.ts.map +1 -1
  95. package/dist/mapbox-route.js +1 -1
  96. package/dist/mapbox-route.js.map +1 -1
  97. package/dist/vault-cli-command-manifest.d.ts +304 -6
  98. package/dist/vault-cli-command-manifest.d.ts.map +1 -1
  99. package/dist/vault-cli-skill-hash.generated.d.ts +1 -1
  100. package/dist/vault-cli-skill-hash.generated.js +1 -1
  101. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink.d.ts.map +1 -1
  102. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink.js +6 -2
  103. package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink.js.map +1 -1
  104. package/node_modules/@murphai/assistant-engine/README.md +4 -3
  105. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-controller.d.ts +15 -1
  106. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-controller.d.ts.map +1 -1
  107. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-controller.js +121 -24
  108. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-controller.js.map +1 -1
  109. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-journal.js +2 -2
  110. package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-journal.js.map +1 -1
  111. package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.d.ts.map +1 -1
  112. package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.js +1 -0
  113. package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.js.map +1 -1
  114. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.d.ts.map +1 -1
  115. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js +55 -7
  116. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.js.map +1 -1
  117. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.d.ts.map +1 -1
  118. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js +9 -1
  119. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js.map +1 -1
  120. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/shared.d.ts +1 -0
  121. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/shared.d.ts.map +1 -1
  122. package/node_modules/@murphai/assistant-engine/dist/assistant/automation/shared.js.map +1 -1
  123. package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-contract.generated.json +1 -1
  124. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-base-instructions.d.ts +1 -1
  125. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-base-instructions.d.ts.map +1 -1
  126. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-base-instructions.js +7 -7
  127. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-base-instructions.js.map +1 -1
  128. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/planning.d.ts +1 -1
  129. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/planning.d.ts.map +1 -1
  130. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/planning.js +123 -22
  131. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/planning.js.map +1 -1
  132. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn-runner.d.ts.map +1 -1
  133. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn-runner.js +48 -19
  134. package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn-runner.js.map +1 -1
  135. package/node_modules/@murphai/assistant-engine/dist/assistant/context-snapshot.js +3 -7
  136. package/node_modules/@murphai/assistant-engine/dist/assistant/context-snapshot.js.map +1 -1
  137. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/execution.d.ts +5 -0
  138. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/execution.d.ts.map +1 -1
  139. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/execution.js +24 -10
  140. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/execution.js.map +1 -1
  141. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.d.ts +2 -0
  142. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.d.ts.map +1 -1
  143. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.js +12 -0
  144. package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.js.map +1 -1
  145. package/node_modules/@murphai/assistant-engine/dist/assistant/delivery-service.d.ts +5 -0
  146. package/node_modules/@murphai/assistant-engine/dist/assistant/delivery-service.d.ts.map +1 -1
  147. package/node_modules/@murphai/assistant-engine/dist/assistant/delivery-service.js +9 -10
  148. package/node_modules/@murphai/assistant-engine/dist/assistant/delivery-service.js.map +1 -1
  149. package/node_modules/@murphai/assistant-engine/dist/assistant/execution-context.d.ts +41 -9
  150. package/node_modules/@murphai/assistant-engine/dist/assistant/execution-context.d.ts.map +1 -1
  151. package/node_modules/@murphai/assistant-engine/dist/assistant/execution-context.js +9 -0
  152. package/node_modules/@murphai/assistant-engine/dist/assistant/execution-context.js.map +1 -1
  153. package/node_modules/@murphai/assistant-engine/dist/assistant/experiment-support-automations.d.ts.map +1 -1
  154. package/node_modules/@murphai/assistant-engine/dist/assistant/experiment-support-automations.js +2 -0
  155. package/node_modules/@murphai/assistant-engine/dist/assistant/experiment-support-automations.js.map +1 -1
  156. package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.d.ts +3 -0
  157. package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.d.ts.map +1 -1
  158. package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.js +8 -0
  159. package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.js.map +1 -1
  160. package/node_modules/@murphai/assistant-engine/dist/assistant/issue-reporting.d.ts +3 -0
  161. package/node_modules/@murphai/assistant-engine/dist/assistant/issue-reporting.d.ts.map +1 -1
  162. package/node_modules/@murphai/assistant-engine/dist/assistant/issue-reporting.js +26 -1
  163. package/node_modules/@murphai/assistant-engine/dist/assistant/issue-reporting.js.map +1 -1
  164. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.d.ts.map +1 -1
  165. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js +687 -370
  166. package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js.map +1 -1
  167. package/node_modules/@murphai/assistant-engine/dist/assistant/managed-automations.d.ts.map +1 -1
  168. package/node_modules/@murphai/assistant-engine/dist/assistant/managed-automations.js +54 -18
  169. package/node_modules/@murphai/assistant-engine/dist/assistant/managed-automations.js.map +1 -1
  170. package/node_modules/@murphai/assistant-engine/dist/assistant/model-behavior.d.ts +2 -3
  171. package/node_modules/@murphai/assistant-engine/dist/assistant/model-behavior.d.ts.map +1 -1
  172. package/node_modules/@murphai/assistant-engine/dist/assistant/model-behavior.js +10 -9
  173. package/node_modules/@murphai/assistant-engine/dist/assistant/model-behavior.js.map +1 -1
  174. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.d.ts +1 -1
  175. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.d.ts.map +1 -1
  176. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.js +146 -18
  177. package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.js.map +1 -1
  178. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-seed.d.ts +25 -0
  179. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-seed.d.ts.map +1 -0
  180. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-seed.js +72 -0
  181. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-seed.js.map +1 -0
  182. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-state.d.ts +4 -0
  183. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-state.d.ts.map +1 -1
  184. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-state.js +14 -0
  185. package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-state.js.map +1 -1
  186. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/store.d.ts +1 -1
  187. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/store.d.ts.map +1 -1
  188. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/store.js +8 -5
  189. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/store.js.map +1 -1
  190. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.d.ts +4 -0
  191. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.d.ts.map +1 -1
  192. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.js +8 -0
  193. package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.js.map +1 -1
  194. package/node_modules/@murphai/assistant-engine/dist/assistant/private-completion-continuity.js +1 -0
  195. package/node_modules/@murphai/assistant-engine/dist/assistant/private-completion-continuity.js.map +1 -1
  196. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.d.ts.map +1 -1
  197. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js +25 -2
  198. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/codex-cli.js.map +1 -1
  199. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/helpers.d.ts +11 -3
  200. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/helpers.d.ts.map +1 -1
  201. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/helpers.js +67 -176
  202. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/helpers.js.map +1 -1
  203. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts +17 -0
  204. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.d.ts.map +1 -1
  205. package/node_modules/@murphai/assistant-engine/dist/assistant/providers/types.js.map +1 -1
  206. package/node_modules/@murphai/assistant-engine/dist/assistant/reply-delivery-context.d.ts +1 -1
  207. package/node_modules/@murphai/assistant-engine/dist/assistant/reply-delivery-context.d.ts.map +1 -1
  208. package/node_modules/@murphai/assistant-engine/dist/assistant/reply-delivery-context.js +10 -0
  209. package/node_modules/@murphai/assistant-engine/dist/assistant/reply-delivery-context.js.map +1 -1
  210. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.d.ts +19 -4
  211. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.d.ts.map +1 -1
  212. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.js +76 -40
  213. package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.js.map +1 -1
  214. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts +3 -1
  215. package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts.map +1 -1
  216. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts +4 -2
  217. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts.map +1 -1
  218. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js +8 -7
  219. package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js.map +1 -1
  220. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts +1 -1
  221. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.d.ts.map +1 -1
  222. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js +1 -1
  223. package/node_modules/@murphai/assistant-engine/dist/assistant/shared.js.map +1 -1
  224. package/node_modules/@murphai/assistant-engine/dist/assistant/store/types.d.ts +1 -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.d.ts.map +1 -1
  227. package/node_modules/@murphai/assistant-engine/dist/assistant/store.js +6 -0
  228. package/node_modules/@murphai/assistant-engine/dist/assistant/store.js.map +1 -1
  229. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts +3 -0
  230. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.d.ts.map +1 -1
  231. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js +57 -29
  232. package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js.map +1 -1
  233. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-digest.d.ts +1 -0
  234. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-digest.d.ts.map +1 -1
  235. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-digest.js +17 -3
  236. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-digest.js.map +1 -1
  237. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-feedback.d.ts +4 -7
  238. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-feedback.d.ts.map +1 -1
  239. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-feedback.js +21 -6
  240. package/node_modules/@murphai/assistant-engine/dist/assistant/tool-validation-feedback.js.map +1 -1
  241. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts +1 -0
  242. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts.map +1 -1
  243. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js +6 -0
  244. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.js.map +1 -1
  245. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-input.d.ts +1 -1
  246. package/node_modules/@murphai/assistant-engine/dist/assistant/turn-input.d.ts.map +1 -1
  247. package/node_modules/@murphai/assistant-engine/dist/assistant/usage-attribution.d.ts +1 -1
  248. package/node_modules/@murphai/assistant-engine/dist/assistant/usage-attribution.d.ts.map +1 -1
  249. package/node_modules/@murphai/assistant-engine/dist/assistant/usage-attribution.js.map +1 -1
  250. package/node_modules/@murphai/assistant-engine/dist/assistant-ask.js +8 -0
  251. package/node_modules/@murphai/assistant-engine/dist/assistant-ask.js.map +1 -1
  252. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-access.d.ts.map +1 -1
  253. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-access.js +1 -0
  254. package/node_modules/@murphai/assistant-engine/dist/assistant-cli-access.js.map +1 -1
  255. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/analyze-video-tool.d.ts +49 -0
  256. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/analyze-video-tool.d.ts.map +1 -0
  257. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/analyze-video-tool.js +387 -0
  258. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/analyze-video-tool.js.map +1 -0
  259. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-protocol.d.ts +1 -1
  260. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-protocol.d.ts.map +1 -1
  261. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-protocol.js +12 -13
  262. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-protocol.js.map +1 -1
  263. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-requests.d.ts +1 -0
  264. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-requests.d.ts.map +1 -1
  265. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-requests.js +16 -5
  266. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-requests.js.map +1 -1
  267. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-rpc.d.ts +1 -1
  268. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-rpc.d.ts.map +1 -1
  269. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-rpc.js +2 -1
  270. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/app-server-rpc.js.map +1 -1
  271. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/command-family.d.ts +4 -0
  272. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/command-family.d.ts.map +1 -1
  273. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/command-family.js +26 -13
  274. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/command-family.js.map +1 -1
  275. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tool-catalog.d.ts +1024 -1091
  276. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tool-catalog.d.ts.map +1 -1
  277. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tool-catalog.js +354 -330
  278. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tool-catalog.js.map +1 -1
  279. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/analyze-video.d.ts +50 -0
  280. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/analyze-video.d.ts.map +1 -0
  281. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/analyze-video.js +79 -0
  282. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/analyze-video.js.map +1 -0
  283. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation-model-input-schema.d.ts +4 -0
  284. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation-model-input-schema.d.ts.map +1 -0
  285. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation-model-input-schema.js +153 -0
  286. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation-model-input-schema.js.map +1 -0
  287. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation.d.ts +4 -1
  288. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation.d.ts.map +1 -1
  289. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation.js +29 -35
  290. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/automation.js.map +1 -1
  291. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/device.d.ts +4 -1
  292. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/device.d.ts.map +1 -1
  293. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/device.js +43 -9
  294. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/device.js.map +1 -1
  295. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/dynamic-tool-wrapper.d.ts +6 -0
  296. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/dynamic-tool-wrapper.d.ts.map +1 -1
  297. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/dynamic-tool-wrapper.js.map +1 -1
  298. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/member-memory.d.ts +60 -0
  299. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/member-memory.d.ts.map +1 -0
  300. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/member-memory.js +91 -0
  301. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/member-memory.js.map +1 -0
  302. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/physical-notes.d.ts +41 -1
  303. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/physical-notes.d.ts.map +1 -1
  304. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/physical-notes.js +85 -9
  305. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/physical-notes.js.map +1 -1
  306. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools.d.ts +25 -2
  307. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools.d.ts.map +1 -1
  308. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools.js +280 -89
  309. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools.js.map +1 -1
  310. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/failures.js +1 -1
  311. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/response-card-validation-feedback.d.ts.map +1 -1
  312. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/response-card-validation-feedback.js +1 -3
  313. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/response-card-validation-feedback.js.map +1 -1
  314. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/workout-delivery-context.d.ts +19 -0
  315. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/workout-delivery-context.d.ts.map +1 -0
  316. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/workout-delivery-context.js +203 -0
  317. package/node_modules/@murphai/assistant-engine/dist/assistant-codex/workout-delivery-context.js.map +1 -0
  318. package/node_modules/@murphai/assistant-engine/dist/assistant-codex.d.ts +9 -1
  319. package/node_modules/@murphai/assistant-engine/dist/assistant-codex.d.ts.map +1 -1
  320. package/node_modules/@murphai/assistant-engine/dist/assistant-codex.js +220 -130
  321. package/node_modules/@murphai/assistant-engine/dist/assistant-codex.js.map +1 -1
  322. package/node_modules/@murphai/assistant-engine/dist/assistant-runtime-residue.d.ts +1 -1
  323. package/node_modules/@murphai/assistant-engine/dist/assistant-runtime-residue.d.ts.map +1 -1
  324. package/node_modules/@murphai/assistant-engine/dist/assistant-runtime-residue.js +1 -1
  325. package/node_modules/@murphai/assistant-engine/dist/assistant-runtime-residue.js.map +1 -1
  326. package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.d.ts +1 -1
  327. package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.d.ts.map +1 -1
  328. package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.js +1 -1
  329. package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.js.map +1 -1
  330. package/node_modules/@murphai/assistant-engine/dist/index.d.ts +2 -1
  331. package/node_modules/@murphai/assistant-engine/dist/index.d.ts.map +1 -1
  332. package/node_modules/@murphai/assistant-engine/dist/index.js +1 -0
  333. package/node_modules/@murphai/assistant-engine/dist/index.js.map +1 -1
  334. package/node_modules/@murphai/assistant-engine/skills/automatic-meal-capture/SKILL.md +111 -68
  335. package/node_modules/@murphai/assistant-engine/skills/behavior-followthrough/SKILL.md +0 -2
  336. package/node_modules/@murphai/assistant-engine/skills/daily-activity/SKILL.md +11 -4
  337. package/node_modules/@murphai/assistant-engine/skills/food-journal/SKILL.md +83 -22
  338. package/node_modules/@murphai/assistant-engine/skills/hosted-low-usage/SKILL.md +3 -3
  339. package/node_modules/@murphai/assistant-engine/skills/murph-family/SKILL.md +1 -1
  340. package/node_modules/@murphai/assistant-engine/skills/nutrition-strategy/SKILL.md +17 -11
  341. package/node_modules/@murphai/assistant-engine/skills/nutrition-strategy/references/daily-nutrition-card-goals.md +62 -34
  342. package/node_modules/@murphai/assistant-engine/skills/physical-notes/SKILL.md +47 -0
  343. package/node_modules/@murphai/assistant-engine/skills/shared/exercise-catalog-runtime.md +6 -0
  344. package/node_modules/@murphai/assistant-engine/skills/signup-link/SKILL.md +1 -1
  345. package/node_modules/@murphai/assistant-engine/skills/strength-training/SKILL.md +12 -5
  346. package/node_modules/@murphai/assistant-engine/skills/tracked-table/SKILL.md +156 -66
  347. package/node_modules/@murphai/core/dist/automation.d.ts.map +1 -1
  348. package/node_modules/@murphai/core/dist/automation.js +17 -9
  349. package/node_modules/@murphai/core/dist/automation.js.map +1 -1
  350. package/node_modules/@murphai/core/dist/bank/habitat.d.ts +2 -0
  351. package/node_modules/@murphai/core/dist/bank/habitat.d.ts.map +1 -1
  352. package/node_modules/@murphai/core/dist/bank/habitat.js +27 -0
  353. package/node_modules/@murphai/core/dist/bank/habitat.js.map +1 -1
  354. package/node_modules/@murphai/core/dist/bank/regimens.js +1 -1
  355. package/node_modules/@murphai/core/dist/bank/regimens.js.map +1 -1
  356. package/node_modules/@murphai/core/dist/domains/events/ledger.d.ts +21 -0
  357. package/node_modules/@murphai/core/dist/domains/events/ledger.d.ts.map +1 -1
  358. package/node_modules/@murphai/core/dist/domains/events/ledger.js +102 -8
  359. package/node_modules/@murphai/core/dist/domains/events/ledger.js.map +1 -1
  360. package/node_modules/@murphai/core/dist/domains/events.d.ts +2 -2
  361. package/node_modules/@murphai/core/dist/domains/events.d.ts.map +1 -1
  362. package/node_modules/@murphai/core/dist/domains/events.js +1 -1
  363. package/node_modules/@murphai/core/dist/domains/events.js.map +1 -1
  364. package/node_modules/@murphai/core/dist/history/api.d.ts.map +1 -1
  365. package/node_modules/@murphai/core/dist/history/api.js +18 -3
  366. package/node_modules/@murphai/core/dist/history/api.js.map +1 -1
  367. package/node_modules/@murphai/core/dist/index.d.ts +4 -2
  368. package/node_modules/@murphai/core/dist/index.d.ts.map +1 -1
  369. package/node_modules/@murphai/core/dist/index.js +3 -1
  370. package/node_modules/@murphai/core/dist/index.js.map +1 -1
  371. package/node_modules/@murphai/core/dist/mutations.d.ts +25 -2
  372. package/node_modules/@murphai/core/dist/mutations.d.ts.map +1 -1
  373. package/node_modules/@murphai/core/dist/mutations.js +1588 -78
  374. package/node_modules/@murphai/core/dist/mutations.js.map +1 -1
  375. package/node_modules/@murphai/core/dist/operations/index.d.ts +1 -1
  376. package/node_modules/@murphai/core/dist/operations/index.d.ts.map +1 -1
  377. package/node_modules/@murphai/core/dist/operations/index.js +1 -1
  378. package/node_modules/@murphai/core/dist/operations/index.js.map +1 -1
  379. package/node_modules/@murphai/core/dist/operations/write-batch.d.ts +2 -0
  380. package/node_modules/@murphai/core/dist/operations/write-batch.d.ts.map +1 -1
  381. package/node_modules/@murphai/core/dist/operations/write-batch.js +7 -0
  382. package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -1
  383. package/node_modules/@murphai/core/dist/protocols.d.ts.map +1 -1
  384. package/node_modules/@murphai/core/dist/protocols.js +52 -9
  385. package/node_modules/@murphai/core/dist/protocols.js.map +1 -1
  386. package/node_modules/@murphai/core/dist/public-mutations.d.ts +1 -1
  387. package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -1
  388. package/node_modules/@murphai/core/dist/public-mutations.js +2 -2
  389. package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -1
  390. package/node_modules/@murphai/core/dist/scheduled-logs.d.ts +3 -0
  391. package/node_modules/@murphai/core/dist/scheduled-logs.d.ts.map +1 -1
  392. package/node_modules/@murphai/core/dist/scheduled-logs.js +65 -29
  393. package/node_modules/@murphai/core/dist/scheduled-logs.js.map +1 -1
  394. package/node_modules/@murphai/device-syncd/README.md +140 -46
  395. package/node_modules/@murphai/device-syncd/dist/client.d.ts +14 -0
  396. package/node_modules/@murphai/device-syncd/dist/client.d.ts.map +1 -1
  397. package/node_modules/@murphai/device-syncd/dist/client.js.map +1 -1
  398. package/node_modules/@murphai/device-syncd/dist/config/connect-routes.d.ts +4 -1
  399. package/node_modules/@murphai/device-syncd/dist/config/connect-routes.d.ts.map +1 -1
  400. package/node_modules/@murphai/device-syncd/dist/config/connect-routes.js +24 -2
  401. package/node_modules/@murphai/device-syncd/dist/config/connect-routes.js.map +1 -1
  402. package/node_modules/@murphai/device-syncd/dist/config/junction-connect-sources.js +2 -2
  403. package/node_modules/@murphai/device-syncd/dist/config/junction-connect-sources.js.map +1 -1
  404. package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.d.ts +53 -0
  405. package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.d.ts.map +1 -1
  406. package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.js +13 -0
  407. package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.js.map +1 -1
  408. package/node_modules/@murphai/device-syncd/dist/connect-config.d.ts +1 -1
  409. package/node_modules/@murphai/device-syncd/dist/connect-config.d.ts.map +1 -1
  410. package/node_modules/@murphai/device-syncd/dist/connect-config.js +1 -1
  411. package/node_modules/@murphai/device-syncd/dist/connect-config.js.map +1 -1
  412. package/node_modules/@murphai/device-syncd/dist/fitbit-migration.d.ts +57 -0
  413. package/node_modules/@murphai/device-syncd/dist/fitbit-migration.d.ts.map +1 -0
  414. package/node_modules/@murphai/device-syncd/dist/fitbit-migration.js +166 -0
  415. package/node_modules/@murphai/device-syncd/dist/fitbit-migration.js.map +1 -0
  416. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +43 -0
  417. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts.map +1 -1
  418. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js +129 -5
  419. package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -1
  420. package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.d.ts +3 -0
  421. package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.d.ts.map +1 -1
  422. package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.js +36 -16
  423. package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.js.map +1 -1
  424. package/node_modules/@murphai/device-syncd/dist/junction-inline-authority.d.ts +17 -2
  425. package/node_modules/@murphai/device-syncd/dist/junction-inline-authority.d.ts.map +1 -1
  426. package/node_modules/@murphai/device-syncd/dist/junction-inline-authority.js +99 -40
  427. package/node_modules/@murphai/device-syncd/dist/junction-inline-authority.js.map +1 -1
  428. package/node_modules/@murphai/device-syncd/dist/junction-source-reconnect.d.ts +17 -0
  429. package/node_modules/@murphai/device-syncd/dist/junction-source-reconnect.d.ts.map +1 -0
  430. package/node_modules/@murphai/device-syncd/dist/junction-source-reconnect.js +45 -0
  431. package/node_modules/@murphai/device-syncd/dist/junction-source-reconnect.js.map +1 -0
  432. package/node_modules/@murphai/device-syncd/dist/junction-timeseries-progress.d.ts +8 -1
  433. package/node_modules/@murphai/device-syncd/dist/junction-timeseries-progress.d.ts.map +1 -1
  434. package/node_modules/@murphai/device-syncd/dist/junction-timeseries-progress.js +12 -1
  435. package/node_modules/@murphai/device-syncd/dist/junction-timeseries-progress.js.map +1 -1
  436. package/node_modules/@murphai/device-syncd/dist/providers/junction-client.d.ts +7 -0
  437. package/node_modules/@murphai/device-syncd/dist/providers/junction-client.d.ts.map +1 -1
  438. package/node_modules/@murphai/device-syncd/dist/providers/junction-client.js +285 -46
  439. package/node_modules/@murphai/device-syncd/dist/providers/junction-client.js.map +1 -1
  440. package/node_modules/@murphai/device-syncd/dist/providers/junction.d.ts +9 -0
  441. package/node_modules/@murphai/device-syncd/dist/providers/junction.d.ts.map +1 -1
  442. package/node_modules/@murphai/device-syncd/dist/providers/junction.js +2045 -367
  443. package/node_modules/@murphai/device-syncd/dist/providers/junction.js.map +1 -1
  444. package/node_modules/@murphai/device-syncd/dist/public-account.d.ts +2 -0
  445. package/node_modules/@murphai/device-syncd/dist/public-account.d.ts.map +1 -1
  446. package/node_modules/@murphai/device-syncd/dist/public-account.js +96 -0
  447. package/node_modules/@murphai/device-syncd/dist/public-account.js.map +1 -1
  448. package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -1
  449. package/node_modules/@murphai/device-syncd/dist/public-ingress.js +6 -4
  450. package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -1
  451. package/node_modules/@murphai/device-syncd/dist/service.d.ts +6 -2
  452. package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -1
  453. package/node_modules/@murphai/device-syncd/dist/service.js +385 -44
  454. package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -1
  455. package/node_modules/@murphai/device-syncd/dist/source-staleness.d.ts +15 -0
  456. package/node_modules/@murphai/device-syncd/dist/source-staleness.d.ts.map +1 -1
  457. package/node_modules/@murphai/device-syncd/dist/source-staleness.js +25 -1
  458. package/node_modules/@murphai/device-syncd/dist/source-staleness.js.map +1 -1
  459. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts +10 -1
  460. package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts.map +1 -1
  461. package/node_modules/@murphai/device-syncd/dist/store/jobs.js +95 -1
  462. package/node_modules/@murphai/device-syncd/dist/store/jobs.js.map +1 -1
  463. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts +1 -1
  464. package/node_modules/@murphai/device-syncd/dist/store/schema.d.ts.map +1 -1
  465. package/node_modules/@murphai/device-syncd/dist/store/schema.js +25 -3
  466. package/node_modules/@murphai/device-syncd/dist/store/schema.js.map +1 -1
  467. package/node_modules/@murphai/device-syncd/dist/store/sources.d.ts +24 -2
  468. package/node_modules/@murphai/device-syncd/dist/store/sources.d.ts.map +1 -1
  469. package/node_modules/@murphai/device-syncd/dist/store/sources.js +223 -14
  470. package/node_modules/@murphai/device-syncd/dist/store/sources.js.map +1 -1
  471. package/node_modules/@murphai/device-syncd/dist/store.d.ts +13 -3
  472. package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -1
  473. package/node_modules/@murphai/device-syncd/dist/store.js +104 -22
  474. package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -1
  475. package/node_modules/@murphai/device-syncd/dist/types.d.ts +96 -9
  476. package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -1
  477. package/node_modules/@murphai/device-syncd/dist/types.js +4 -0
  478. package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -1
  479. package/node_modules/@murphai/device-syncd/package.json +8 -0
  480. package/node_modules/@murphai/health-metrics/dist/definitions/activity.d.ts.map +1 -1
  481. package/node_modules/@murphai/health-metrics/dist/definitions/activity.js +66 -0
  482. package/node_modules/@murphai/health-metrics/dist/definitions/activity.js.map +1 -1
  483. package/node_modules/@murphai/health-metrics/dist/definitions/body.js +2 -2
  484. package/node_modules/@murphai/health-metrics/dist/definitions/body.js.map +1 -1
  485. package/node_modules/@murphai/health-metrics/dist/normalize.d.ts.map +1 -1
  486. package/node_modules/@murphai/health-metrics/dist/normalize.js +3 -0
  487. package/node_modules/@murphai/health-metrics/dist/normalize.js.map +1 -1
  488. package/node_modules/@murphai/health-metrics/dist/wearable-metric-catalog.d.ts +3 -1
  489. package/node_modules/@murphai/health-metrics/dist/wearable-metric-catalog.d.ts.map +1 -1
  490. package/node_modules/@murphai/health-metrics/dist/wearable-metric-catalog.js +5 -1
  491. package/node_modules/@murphai/health-metrics/dist/wearable-metric-catalog.js.map +1 -1
  492. package/node_modules/@murphai/health-metrics/dist/wearable-provider-catalog.d.ts +79 -0
  493. package/node_modules/@murphai/health-metrics/dist/wearable-provider-catalog.d.ts.map +1 -1
  494. package/node_modules/@murphai/health-metrics/dist/wearable-provider-catalog.js +19 -0
  495. package/node_modules/@murphai/health-metrics/dist/wearable-provider-catalog.js.map +1 -1
  496. package/node_modules/@murphai/importers/dist/core-port.d.ts +15 -1
  497. package/node_modules/@murphai/importers/dist/core-port.d.ts.map +1 -1
  498. package/node_modules/@murphai/importers/dist/core-port.js.map +1 -1
  499. package/node_modules/@murphai/importers/dist/create-importers.d.ts +9 -1
  500. package/node_modules/@murphai/importers/dist/create-importers.d.ts.map +1 -1
  501. package/node_modules/@murphai/importers/dist/create-importers.js +12 -2
  502. package/node_modules/@murphai/importers/dist/create-importers.js.map +1 -1
  503. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.d.ts +17 -3
  504. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.d.ts.map +1 -1
  505. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.js +102 -8
  506. package/node_modules/@murphai/importers/dist/device-providers/import-device-provider-snapshot.js.map +1 -1
  507. package/node_modules/@murphai/importers/dist/device-providers/index.d.ts +5 -4
  508. package/node_modules/@murphai/importers/dist/device-providers/index.d.ts.map +1 -1
  509. package/node_modules/@murphai/importers/dist/device-providers/index.js +4 -3
  510. package/node_modules/@murphai/importers/dist/device-providers/index.js.map +1 -1
  511. package/node_modules/@murphai/importers/dist/device-providers/junction-bounded-features.d.ts +11 -1
  512. package/node_modules/@murphai/importers/dist/device-providers/junction-bounded-features.d.ts.map +1 -1
  513. package/node_modules/@murphai/importers/dist/device-providers/junction-bounded-features.js +420 -27
  514. package/node_modules/@murphai/importers/dist/device-providers/junction-bounded-features.js.map +1 -1
  515. package/node_modules/@murphai/importers/dist/device-providers/junction-origin.d.ts +1 -0
  516. package/node_modules/@murphai/importers/dist/device-providers/junction-origin.d.ts.map +1 -1
  517. package/node_modules/@murphai/importers/dist/device-providers/junction-origin.js +7 -2
  518. package/node_modules/@murphai/importers/dist/device-providers/junction-origin.js.map +1 -1
  519. package/node_modules/@murphai/importers/dist/device-providers/junction-resources.d.ts +4 -1
  520. package/node_modules/@murphai/importers/dist/device-providers/junction-resources.d.ts.map +1 -1
  521. package/node_modules/@murphai/importers/dist/device-providers/junction-resources.js +42 -1
  522. package/node_modules/@murphai/importers/dist/device-providers/junction-resources.js.map +1 -1
  523. package/node_modules/@murphai/importers/dist/device-providers/junction-timeseries-features.d.ts +79 -0
  524. package/node_modules/@murphai/importers/dist/device-providers/junction-timeseries-features.d.ts.map +1 -0
  525. package/node_modules/@murphai/importers/dist/device-providers/junction-timeseries-features.js +356 -0
  526. package/node_modules/@murphai/importers/dist/device-providers/junction-timeseries-features.js.map +1 -0
  527. package/node_modules/@murphai/importers/dist/device-providers/junction.d.ts +76 -3
  528. package/node_modules/@murphai/importers/dist/device-providers/junction.d.ts.map +1 -1
  529. package/node_modules/@murphai/importers/dist/device-providers/junction.js +1676 -347
  530. package/node_modules/@murphai/importers/dist/device-providers/junction.js.map +1 -1
  531. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.d.ts.map +1 -1
  532. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js +1 -0
  533. package/node_modules/@murphai/importers/dist/device-providers/shared-normalization.js.map +1 -1
  534. package/node_modules/@murphai/importers/dist/device-providers/types.d.ts +9 -1
  535. package/node_modules/@murphai/importers/dist/device-providers/types.d.ts.map +1 -1
  536. package/node_modules/@murphai/importers/dist/index.d.ts +2 -2
  537. package/node_modules/@murphai/importers/dist/index.d.ts.map +1 -1
  538. package/node_modules/@murphai/importers/dist/index.js +1 -1
  539. package/node_modules/@murphai/importers/dist/index.js.map +1 -1
  540. package/node_modules/@murphai/inboxd/README.md +1 -1
  541. package/node_modules/@murphai/inboxd/dist/indexing/retention.d.ts +6 -0
  542. package/node_modules/@murphai/inboxd/dist/indexing/retention.d.ts.map +1 -1
  543. package/node_modules/@murphai/inboxd/dist/indexing/retention.js +64 -18
  544. package/node_modules/@murphai/inboxd/dist/indexing/retention.js.map +1 -1
  545. package/node_modules/@murphai/inboxd/dist/retention.d.ts +1 -1
  546. package/node_modules/@murphai/inboxd/dist/retention.d.ts.map +1 -1
  547. package/node_modules/@murphai/inboxd/dist/retention.js +1 -1
  548. package/node_modules/@murphai/inboxd/dist/retention.js.map +1 -1
  549. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts +1 -0
  550. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts.map +1 -1
  551. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js +5 -0
  552. package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js.map +1 -1
  553. package/node_modules/@murphai/operator-config/dist/assistant-response-cards.d.ts +175 -152
  554. package/node_modules/@murphai/operator-config/dist/assistant-response-cards.d.ts.map +1 -1
  555. package/node_modules/@murphai/operator-config/dist/assistant-response-cards.js +62 -41
  556. package/node_modules/@murphai/operator-config/dist/assistant-response-cards.js.map +1 -1
  557. package/node_modules/@murphai/operator-config/dist/device-sync-client.d.ts.map +1 -1
  558. package/node_modules/@murphai/operator-config/dist/device-sync-client.js +1 -5
  559. package/node_modules/@murphai/operator-config/dist/device-sync-client.js.map +1 -1
  560. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts +66 -0
  561. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts.map +1 -1
  562. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js +58 -0
  563. package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js.map +1 -1
  564. package/node_modules/@murphai/operator-config/dist/vault-cli-error-projection.d.ts +24 -0
  565. package/node_modules/@murphai/operator-config/dist/vault-cli-error-projection.d.ts.map +1 -0
  566. package/node_modules/@murphai/operator-config/dist/vault-cli-error-projection.js +219 -0
  567. package/node_modules/@murphai/operator-config/dist/vault-cli-error-projection.js.map +1 -0
  568. package/node_modules/@murphai/operator-config/dist/vault-cli-errors.d.ts.map +1 -1
  569. package/node_modules/@murphai/operator-config/dist/vault-cli-errors.js.map +1 -1
  570. package/node_modules/@murphai/operator-config/dist/workout-action-binding.d.ts +9 -0
  571. package/node_modules/@murphai/operator-config/dist/workout-action-binding.d.ts.map +1 -1
  572. package/node_modules/@murphai/operator-config/dist/workout-action-binding.js +48 -5
  573. package/node_modules/@murphai/operator-config/dist/workout-action-binding.js.map +1 -1
  574. package/node_modules/@murphai/operator-config/package.json +5 -0
  575. package/node_modules/@murphai/query/README.md +20 -5
  576. package/node_modules/@murphai/query/dist/browser-replica/build.d.ts +1 -1
  577. package/node_modules/@murphai/query/dist/browser-replica/build.d.ts.map +1 -1
  578. package/node_modules/@murphai/query/dist/browser-replica/build.js +25 -16
  579. package/node_modules/@murphai/query/dist/browser-replica/build.js.map +1 -1
  580. package/node_modules/@murphai/query/dist/browser-replica/json.d.ts +6 -0
  581. package/node_modules/@murphai/query/dist/browser-replica/json.d.ts.map +1 -0
  582. package/node_modules/@murphai/query/dist/browser-replica/json.js +103 -0
  583. package/node_modules/@murphai/query/dist/browser-replica/json.js.map +1 -0
  584. package/node_modules/@murphai/query/dist/browser-replica/shared.d.ts +1 -0
  585. package/node_modules/@murphai/query/dist/browser-replica/shared.d.ts.map +1 -1
  586. package/node_modules/@murphai/query/dist/browser-replica/source.d.ts +13 -0
  587. package/node_modules/@murphai/query/dist/browser-replica/source.d.ts.map +1 -0
  588. package/node_modules/@murphai/query/dist/browser-replica/source.js +45 -0
  589. package/node_modules/@murphai/query/dist/browser-replica/source.js.map +1 -0
  590. package/node_modules/@murphai/query/dist/browser-replica-server.d.ts +2 -0
  591. package/node_modules/@murphai/query/dist/browser-replica-server.d.ts.map +1 -1
  592. package/node_modules/@murphai/query/dist/browser-replica-server.js +2 -0
  593. package/node_modules/@murphai/query/dist/browser-replica-server.js.map +1 -1
  594. package/node_modules/@murphai/query/dist/health/blood-tests.d.ts.map +1 -1
  595. package/node_modules/@murphai/query/dist/health/blood-tests.js +3 -2
  596. package/node_modules/@murphai/query/dist/health/blood-tests.js.map +1 -1
  597. package/node_modules/@murphai/query/dist/health/canonical-collector.d.ts +11 -1
  598. package/node_modules/@murphai/query/dist/health/canonical-collector.d.ts.map +1 -1
  599. package/node_modules/@murphai/query/dist/health/canonical-collector.js +39 -16
  600. package/node_modules/@murphai/query/dist/health/canonical-collector.js.map +1 -1
  601. package/node_modules/@murphai/query/dist/health/entity-slices.d.ts +9 -3
  602. package/node_modules/@murphai/query/dist/health/entity-slices.d.ts.map +1 -1
  603. package/node_modules/@murphai/query/dist/health/entity-slices.js +6 -6
  604. package/node_modules/@murphai/query/dist/health/entity-slices.js.map +1 -1
  605. package/node_modules/@murphai/query/dist/health/immunizations.d.ts.map +1 -1
  606. package/node_modules/@murphai/query/dist/health/immunizations.js +14 -11
  607. package/node_modules/@murphai/query/dist/health/immunizations.js.map +1 -1
  608. package/node_modules/@murphai/query/dist/health/loaders.d.ts +21 -7
  609. package/node_modules/@murphai/query/dist/health/loaders.d.ts.map +1 -1
  610. package/node_modules/@murphai/query/dist/health/loaders.js +53 -15
  611. package/node_modules/@murphai/query/dist/health/loaders.js.map +1 -1
  612. package/node_modules/@murphai/query/dist/health/registries.d.ts +1 -0
  613. package/node_modules/@murphai/query/dist/health/registries.d.ts.map +1 -1
  614. package/node_modules/@murphai/query/dist/health/registries.js.map +1 -1
  615. package/node_modules/@murphai/query/dist/index.d.ts +4 -3
  616. package/node_modules/@murphai/query/dist/index.d.ts.map +1 -1
  617. package/node_modules/@murphai/query/dist/index.js +4 -3
  618. package/node_modules/@murphai/query/dist/index.js.map +1 -1
  619. package/node_modules/@murphai/query/dist/meal-nutrition.d.ts +1 -1
  620. package/node_modules/@murphai/query/dist/meal-nutrition.d.ts.map +1 -1
  621. package/node_modules/@murphai/query/dist/meal-nutrition.js +10 -3
  622. package/node_modules/@murphai/query/dist/meal-nutrition.js.map +1 -1
  623. package/node_modules/@murphai/query/dist/metrics/projection.d.ts.map +1 -1
  624. package/node_modules/@murphai/query/dist/metrics/projection.js +19 -6
  625. package/node_modules/@murphai/query/dist/metrics/projection.js.map +1 -1
  626. package/node_modules/@murphai/query/dist/murph-age.d.ts +5 -1
  627. package/node_modules/@murphai/query/dist/murph-age.d.ts.map +1 -1
  628. package/node_modules/@murphai/query/dist/murph-age.js +22 -8
  629. package/node_modules/@murphai/query/dist/murph-age.js.map +1 -1
  630. package/node_modules/@murphai/query/dist/projection/entity-store.js +4 -4
  631. package/node_modules/@murphai/query/dist/projection/entity-store.js.map +1 -1
  632. package/node_modules/@murphai/query/dist/projection/schema.d.ts +1 -1
  633. package/node_modules/@murphai/query/dist/projection/schema.d.ts.map +1 -1
  634. package/node_modules/@murphai/query/dist/projection/schema.js +3 -1
  635. package/node_modules/@murphai/query/dist/projection/schema.js.map +1 -1
  636. package/node_modules/@murphai/query/dist/projection/wearable-summary-compose.js +4 -0
  637. package/node_modules/@murphai/query/dist/projection/wearable-summary-compose.js.map +1 -1
  638. package/node_modules/@murphai/query/dist/projection/wearable-summary-projector.js +4 -0
  639. package/node_modules/@murphai/query/dist/projection/wearable-summary-projector.js.map +1 -1
  640. package/node_modules/@murphai/query/dist/query-visibility.d.ts +5 -0
  641. package/node_modules/@murphai/query/dist/query-visibility.d.ts.map +1 -1
  642. package/node_modules/@murphai/query/dist/query-visibility.js +11 -5
  643. package/node_modules/@murphai/query/dist/query-visibility.js.map +1 -1
  644. package/node_modules/@murphai/query/dist/read-model.d.ts +8 -0
  645. package/node_modules/@murphai/query/dist/read-model.d.ts.map +1 -1
  646. package/node_modules/@murphai/query/dist/read-model.js +11 -1
  647. package/node_modules/@murphai/query/dist/read-model.js.map +1 -1
  648. package/node_modules/@murphai/query/dist/scheduled-logs.d.ts.map +1 -1
  649. package/node_modules/@murphai/query/dist/scheduled-logs.js +55 -79
  650. package/node_modules/@murphai/query/dist/scheduled-logs.js.map +1 -1
  651. package/node_modules/@murphai/query/dist/vault-source.d.ts +22 -4
  652. package/node_modules/@murphai/query/dist/vault-source.d.ts.map +1 -1
  653. package/node_modules/@murphai/query/dist/vault-source.js +188 -59
  654. package/node_modules/@murphai/query/dist/vault-source.js.map +1 -1
  655. package/node_modules/@murphai/query/dist/wearables/candidates.d.ts.map +1 -1
  656. package/node_modules/@murphai/query/dist/wearables/candidates.js +26 -15
  657. package/node_modules/@murphai/query/dist/wearables/candidates.js.map +1 -1
  658. package/node_modules/@murphai/query/dist/wearables/public-output.d.ts.map +1 -1
  659. package/node_modules/@murphai/query/dist/wearables/public-output.js +6 -0
  660. package/node_modules/@murphai/query/dist/wearables/public-output.js.map +1 -1
  661. package/node_modules/@murphai/query/dist/wearables/source-health.d.ts.map +1 -1
  662. package/node_modules/@murphai/query/dist/wearables/source-health.js +4 -0
  663. package/node_modules/@murphai/query/dist/wearables/source-health.js.map +1 -1
  664. package/node_modules/@murphai/query/dist/wearables/types.d.ts +41 -4
  665. package/node_modules/@murphai/query/dist/wearables/types.d.ts.map +1 -1
  666. package/node_modules/@murphai/query/dist/wearables/types.js +2 -0
  667. package/node_modules/@murphai/query/dist/wearables/types.js.map +1 -1
  668. package/node_modules/@murphai/query/dist/wearables/workout-features.d.ts +5 -0
  669. package/node_modules/@murphai/query/dist/wearables/workout-features.d.ts.map +1 -0
  670. package/node_modules/@murphai/query/dist/wearables/workout-features.js +179 -0
  671. package/node_modules/@murphai/query/dist/wearables/workout-features.js.map +1 -0
  672. package/node_modules/@murphai/query/dist/wearables.d.ts.map +1 -1
  673. package/node_modules/@murphai/query/dist/wearables.js +23 -6
  674. package/node_modules/@murphai/query/dist/wearables.js.map +1 -1
  675. package/node_modules/@murphai/query/package.json +5 -0
  676. package/node_modules/@murphai/runtime-state/README.md +1 -1
  677. package/node_modules/@murphai/runtime-state/dist/assistant-runtime-issues.d.ts +4 -0
  678. package/node_modules/@murphai/runtime-state/dist/assistant-runtime-issues.d.ts.map +1 -1
  679. package/node_modules/@murphai/runtime-state/dist/assistant-runtime-issues.js +16 -3
  680. package/node_modules/@murphai/runtime-state/dist/assistant-runtime-issues.js.map +1 -1
  681. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.d.ts +1 -0
  682. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.d.ts.map +1 -1
  683. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.js +31 -0
  684. package/node_modules/@murphai/runtime-state/dist/hosted-bundles.js.map +1 -1
  685. package/node_modules/@murphai/runtime-state/dist/hosted-email.d.ts +5 -0
  686. package/node_modules/@murphai/runtime-state/dist/hosted-email.d.ts.map +1 -1
  687. package/node_modules/@murphai/runtime-state/dist/hosted-email.js +10 -0
  688. package/node_modules/@murphai/runtime-state/dist/hosted-email.js.map +1 -1
  689. package/node_modules/@murphai/setup-cli/dist/incur-error-bridge.d.ts.map +1 -1
  690. package/node_modules/@murphai/setup-cli/dist/incur-error-bridge.js +6 -15
  691. package/node_modules/@murphai/setup-cli/dist/incur-error-bridge.js.map +1 -1
  692. package/node_modules/@murphai/vault-usecases/README.md +9 -0
  693. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts +6 -0
  694. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.d.ts.map +1 -1
  695. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js +49 -1
  696. package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js.map +1 -1
  697. package/node_modules/@murphai/vault-usecases/dist/usecases/capture.d.ts.map +1 -1
  698. package/node_modules/@murphai/vault-usecases/dist/usecases/capture.js +22 -12
  699. package/node_modules/@murphai/vault-usecases/dist/usecases/capture.js.map +1 -1
  700. package/node_modules/@murphai/vault-usecases/dist/usecases/clinical-imports.d.ts.map +1 -1
  701. package/node_modules/@murphai/vault-usecases/dist/usecases/clinical-imports.js +1 -3
  702. package/node_modules/@murphai/vault-usecases/dist/usecases/clinical-imports.js.map +1 -1
  703. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.d.ts.map +1 -1
  704. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js +24 -18
  705. package/node_modules/@murphai/vault-usecases/dist/usecases/document-meal-read.js.map +1 -1
  706. package/node_modules/@murphai/vault-usecases/dist/usecases/encounter.d.ts.map +1 -1
  707. package/node_modules/@murphai/vault-usecases/dist/usecases/encounter.js +1 -3
  708. package/node_modules/@murphai/vault-usecases/dist/usecases/encounter.js.map +1 -1
  709. package/node_modules/@murphai/vault-usecases/dist/usecases/event-record-mutations.d.ts +8 -0
  710. package/node_modules/@murphai/vault-usecases/dist/usecases/event-record-mutations.d.ts.map +1 -1
  711. package/node_modules/@murphai/vault-usecases/dist/usecases/event-record-mutations.js +56 -5
  712. package/node_modules/@murphai/vault-usecases/dist/usecases/event-record-mutations.js.map +1 -1
  713. package/node_modules/@murphai/vault-usecases/dist/usecases/exact-event-record.d.ts +20 -0
  714. package/node_modules/@murphai/vault-usecases/dist/usecases/exact-event-record.d.ts.map +1 -0
  715. package/node_modules/@murphai/vault-usecases/dist/usecases/exact-event-record.js +72 -0
  716. package/node_modules/@murphai/vault-usecases/dist/usecases/exact-event-record.js.map +1 -0
  717. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts +1 -1
  718. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts.map +1 -1
  719. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js +42 -9
  720. package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.js.map +1 -1
  721. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.d.ts.map +1 -1
  722. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js +158 -24
  723. package/node_modules/@murphai/vault-usecases/dist/usecases/explicit-health-family-services.js.map +1 -1
  724. package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts.map +1 -1
  725. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js +98 -5
  726. package/node_modules/@murphai/vault-usecases/dist/usecases/food.js.map +1 -1
  727. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.d.ts.map +1 -1
  728. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.js +20 -4
  729. package/node_modules/@murphai/vault-usecases/dist/usecases/integrated-services.js.map +1 -1
  730. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention-experiment-link.d.ts.map +1 -1
  731. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention-experiment-link.js +49 -24
  732. package/node_modules/@murphai/vault-usecases/dist/usecases/intervention-experiment-link.js.map +1 -1
  733. package/node_modules/@murphai/vault-usecases/dist/usecases/measurement-read.d.ts.map +1 -1
  734. package/node_modules/@murphai/vault-usecases/dist/usecases/measurement-read.js +13 -11
  735. package/node_modules/@murphai/vault-usecases/dist/usecases/measurement-read.js.map +1 -1
  736. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts.map +1 -1
  737. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js +18 -11
  738. package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.js.map +1 -1
  739. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts.map +1 -1
  740. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js +43 -1
  741. package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.js.map +1 -1
  742. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts.map +1 -1
  743. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js +1 -3
  744. package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js.map +1 -1
  745. package/node_modules/@murphai/vault-usecases/dist/usecases/vault-usecase-helpers.d.ts +2 -0
  746. package/node_modules/@murphai/vault-usecases/dist/usecases/vault-usecase-helpers.d.ts.map +1 -1
  747. package/node_modules/@murphai/vault-usecases/dist/usecases/vault-usecase-helpers.js +24 -1
  748. package/node_modules/@murphai/vault-usecases/dist/usecases/vault-usecase-helpers.js.map +1 -1
  749. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts +2 -0
  750. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts.map +1 -1
  751. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-model.d.ts +36 -4
  752. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-model.d.ts.map +1 -1
  753. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-model.js +48 -12
  754. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-model.js.map +1 -1
  755. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-state.d.ts +14 -14
  756. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-state.d.ts.map +1 -1
  757. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-state.js +84 -82
  758. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live-state.js.map +1 -1
  759. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live.d.ts +16 -4
  760. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live.d.ts.map +1 -1
  761. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live.js +316 -79
  762. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-live.js.map +1 -1
  763. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts.map +1 -1
  764. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js +19 -17
  765. package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.js.map +1 -1
  766. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.d.ts +20 -7
  767. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.d.ts.map +1 -1
  768. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.js +56 -31
  769. package/node_modules/@murphai/vault-usecases/dist/usecases/workout.js.map +1 -1
  770. package/node_modules/incur/dist/Cli.js +7 -32
  771. package/node_modules/incur/dist/Errors.d.ts +17 -0
  772. package/node_modules/incur/dist/Errors.js +23 -0
  773. package/node_modules/incur/dist/internal/command.d.ts +2 -0
  774. package/node_modules/incur/dist/internal/command.js +2 -6
  775. package/node_modules/incur/src/Cli.ts +11 -32
  776. package/node_modules/incur/src/Errors.ts +36 -0
  777. package/node_modules/incur/src/internal/command.ts +4 -6
  778. package/package.json +4 -4
  779. package/node_modules/@murphai/assistant-engine/skills/nutrition-strategy/references/daily-nutrition-card-safety.md +0 -211
@@ -1,5 +1,5 @@
1
1
  import { Cli, z } from "incur";
2
- import { NUTRITION_CONFIDENCE_LEVELS, NUTRITION_PROVENANCE_SOURCES, executableScheduleIntentSchema, formatScheduleIntentIssues, scheduleIntentKindValues, scheduledLogActionSchema, scheduledLogScaffoldPayloadSchema, scheduledLogStatusValues, workoutSessionSchema, } from "@murphai/contracts";
2
+ import { NUTRITION_CONFIDENCE_LEVELS, NUTRITION_PROVENANCE_SOURCES, executableScheduleIntentSchema, formatScheduleIntentIssues, scheduleIntentKindValues, scheduledLogActionSchema, scheduledLogScaffoldPayloadSchema, scheduledLogStatusValues, } from "@murphai/contracts";
3
3
  import { buildScheduledLogMarkdownPreview, scaffoldScheduledLogPayload, setScheduledLogStatus, upsertScheduledLog, } from "@murphai/core";
4
4
  import { listScheduledLogs, showScheduledLog, } from "@murphai/query";
5
5
  import { withBaseOptions } from "@murphai/operator-config/command-helpers";
@@ -7,6 +7,8 @@ import { VaultCliError } from "@murphai/operator-config/vault-cli-errors";
7
7
  import { isoTimestampSchema, pathSchema, } from "@murphai/operator-config/vault-cli-contracts";
8
8
  import { loadJsonInputObject, normalizeRepeatableFlagOption, normalizeRepeatableTextFlagOption, textInputOptionSchema, } from "@murphai/vault-usecases";
9
9
  import { compactNumber, parseCompactFields, rejectUnsupportedCompactFields, requireCompactInteger, requireCompactString, } from "./compact-field-spec.js";
10
+ import { publicValidationIssue } from "./public-validation-issue.js";
11
+ import { buildWorkoutFromParsedOptions, } from "./workout-typed-options.js";
10
12
  const scheduledLogSlugPattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
11
13
  const scheduledLogActionKindValues = [
12
14
  "meal.add",
@@ -92,18 +94,24 @@ function toScheduledLogListItem(record) {
92
94
  actionKind: record.action.kind,
93
95
  };
94
96
  }
95
- function invalidScheduledLogOption(message) {
96
- throw new VaultCliError("invalid_option", message);
97
+ function invalidScheduledLogOption(message, paths) {
98
+ throw new VaultCliError("invalid_option", message, {
99
+ issues: paths.map((path) => publicValidationIssue({ code: "custom" }, [path])),
100
+ stage: "validation",
101
+ });
102
+ }
103
+ function invalidScheduledLogOptionFor(path) {
104
+ return (message) => invalidScheduledLogOption(message, [path]);
97
105
  }
98
- function requireStringOption(value, optionName) {
106
+ function requireStringOption(value, optionName, path) {
99
107
  if (typeof value === "string" && value.length > 0)
100
108
  return value;
101
- return invalidScheduledLogOption(`--${optionName} is required for this scheduled-log save mode.`);
109
+ return invalidScheduledLogOption(`--${optionName} is required for this scheduled-log save mode.`, [path]);
102
110
  }
103
- function requireNumberOption(value, optionName) {
111
+ function requireNumberOption(value, optionName, path) {
104
112
  if (typeof value === "number" && Number.isFinite(value))
105
113
  return value;
106
- return invalidScheduledLogOption(`--${optionName} is required for this scheduled-log save mode.`);
114
+ return invalidScheduledLogOption(`--${optionName} is required for this scheduled-log save mode.`, [path]);
107
115
  }
108
116
  function parseQualifierValue(rawValue) {
109
117
  const trimmed = rawValue.trim();
@@ -134,7 +142,7 @@ function parseMeasurementNoteEntries(value, measurementCount) {
134
142
  oneBasedIndex < 1 ||
135
143
  oneBasedIndex > measurementCount ||
136
144
  note.length === 0) {
137
- invalidScheduledLogOption("Each --measurement-note entry must use N:note form when multiple measurements are provided.");
145
+ invalidScheduledLogOption("Each --measurement-note entry must use N:note form when multiple measurements are provided.", ["measurementNote"]);
138
146
  }
139
147
  notes.set(oneBasedIndex - 1, note);
140
148
  }
@@ -161,11 +169,11 @@ function parseMeasurementQualifierEntries(value, measurementCount) {
161
169
  pairSeparatorIndex === pair.length - 1 ||
162
170
  key.length === 0 ||
163
171
  rawValue.length === 0) {
164
- invalidScheduledLogOption("Each --measurement-qualifier entry must use key=value form for one measurement or N:key=value form for multiple measurements.");
172
+ invalidScheduledLogOption("Each --measurement-qualifier entry must use key=value form for one measurement or N:key=value form for multiple measurements.", ["measurementQualifier"]);
165
173
  }
166
174
  const targetQualifiers = qualifiers[targetIndex];
167
175
  if (!targetQualifiers) {
168
- invalidScheduledLogOption("Each --measurement-qualifier entry must use key=value form for one measurement or N:key=value form for multiple measurements.");
176
+ invalidScheduledLogOption("Each --measurement-qualifier entry must use key=value form for one measurement or N:key=value form for multiple measurements.", ["measurementQualifier"]);
169
177
  }
170
178
  targetQualifiers[key] = parseQualifierValue(rawValue);
171
179
  }
@@ -176,31 +184,34 @@ function buildScheduleIntentFromOptions(options) {
176
184
  case "at":
177
185
  return parseScheduledLogScheduleIntent({
178
186
  kind: "at",
179
- at: requireStringOption(options.scheduleAt, "schedule-at"),
180
- });
187
+ at: requireStringOption(options.scheduleAt, "schedule-at", "scheduleAt"),
188
+ }, "scheduleAt");
181
189
  case "every":
182
190
  return parseScheduledLogScheduleIntent({
183
191
  kind: "every",
184
- everyMs: requireNumberOption(options.scheduleEveryMs, "schedule-every-ms"),
185
- });
192
+ everyMs: requireNumberOption(options.scheduleEveryMs, "schedule-every-ms", "scheduleEveryMs"),
193
+ }, "scheduleEveryMs");
186
194
  case "cron":
187
195
  return parseScheduledLogScheduleIntent({
188
196
  kind: "cron",
189
- expression: requireStringOption(options.scheduleCron, "schedule-cron"),
190
- });
197
+ expression: requireStringOption(options.scheduleCron, "schedule-cron", "scheduleCron"),
198
+ }, "scheduleCron");
191
199
  case "dailyLocal":
192
200
  return parseScheduledLogScheduleIntent({
193
201
  kind: "dailyLocal",
194
- localTime: requireStringOption(options.scheduleLocalTime, "schedule-local-time"),
195
- });
202
+ localTime: requireStringOption(options.scheduleLocalTime, "schedule-local-time", "scheduleLocalTime"),
203
+ }, "scheduleLocalTime");
196
204
  }
197
205
  }
198
- function parseScheduledLogScheduleIntent(value) {
206
+ function parseScheduledLogScheduleIntent(value, path) {
199
207
  const parsed = executableScheduleIntentSchema.safeParse(value);
200
208
  if (!parsed.success) {
201
209
  const message = formatScheduleIntentIssues(parsed.error) ||
202
210
  "schedule must match a supported scheduled-log schedule.";
203
- invalidScheduledLogOption(message);
211
+ throw new VaultCliError("invalid_option", message, {
212
+ issues: parsed.error.issues.map((issue) => publicValidationIssue(issue, [path])),
213
+ stage: "validation",
214
+ });
204
215
  }
205
216
  return parsed.data;
206
217
  }
@@ -223,7 +234,7 @@ function buildMealNutritionFromOptions(options) {
223
234
  if (!hasTotals && !hasProvenance)
224
235
  return undefined;
225
236
  if (hasProvenance && options.nutritionSource === undefined) {
226
- invalidScheduledLogOption("--nutrition-source is required when nutrition provenance fields are provided.");
237
+ invalidScheduledLogOption("--nutrition-source is required when nutrition provenance fields are provided.", ["nutritionSource"]);
227
238
  }
228
239
  const nutrition = {};
229
240
  if (hasTotals)
@@ -243,10 +254,10 @@ function buildMeasurementsFromOptions(options) {
243
254
  const values = options.measurementValue;
244
255
  const count = metrics?.length ?? 0;
245
256
  if (!metrics || !units || !values || count === 0) {
246
- invalidScheduledLogOption("measurement.add scheduled logs require repeated --measurement-metric, --measurement-value, and --measurement-unit fields.");
257
+ invalidScheduledLogOption("measurement.add scheduled logs require repeated --measurement-metric, --measurement-value, and --measurement-unit fields.", ["measurementMetric", "measurementValue", "measurementUnit"]);
247
258
  }
248
259
  if (values.length !== count || units.length !== count) {
249
- invalidScheduledLogOption("Repeated --measurement-metric, --measurement-value, and --measurement-unit fields must have the same count.");
260
+ invalidScheduledLogOption("Repeated --measurement-metric, --measurement-value, and --measurement-unit fields must have the same count.", ["measurementMetric", "measurementValue", "measurementUnit"]);
250
261
  }
251
262
  const notes = parseMeasurementNoteEntries(options.measurementNote, count);
252
263
  const qualifiers = parseMeasurementQualifierEntries(options.measurementQualifier, count);
@@ -274,13 +285,13 @@ const workoutOptionKeys = [
274
285
  "workoutExercise",
275
286
  "workoutSet",
276
287
  ];
277
- const workoutMediaFieldKeys = [
288
+ const workoutMediaFieldKeys = new Set([
278
289
  "kind",
279
290
  "relativePath",
280
291
  "mediaType",
281
292
  "caption",
282
- ];
283
- const workoutExerciseFieldKeys = [
293
+ ]);
294
+ const workoutExerciseFieldKeys = new Set([
284
295
  "order",
285
296
  "name",
286
297
  "sourceExerciseId",
@@ -288,8 +299,8 @@ const workoutExerciseFieldKeys = [
288
299
  "mode",
289
300
  "unitOverride",
290
301
  "note",
291
- ];
292
- const workoutSetFieldKeys = [
302
+ ]);
303
+ const workoutSetFieldKeys = new Set([
293
304
  "exercise",
294
305
  "order",
295
306
  "type",
@@ -302,23 +313,31 @@ const workoutSetFieldKeys = [
302
313
  "bodyweightKg",
303
314
  "assistanceKg",
304
315
  "addedWeightKg",
305
- ];
316
+ ]);
317
+ const workoutPublicFields = {
318
+ media: workoutMediaFieldKeys,
319
+ exercise: workoutExerciseFieldKeys,
320
+ set: workoutSetFieldKeys,
321
+ };
322
+ const invalidWorkoutMediaOption = invalidScheduledLogOptionFor("workoutMedia");
323
+ const invalidWorkoutExerciseOption = invalidScheduledLogOptionFor("workoutExercise");
324
+ const invalidWorkoutSetOption = invalidScheduledLogOptionFor("workoutSet");
306
325
  function parseWorkoutMediaEntry(entry) {
307
- const fields = parseCompactFields(entry, "workout-media", invalidScheduledLogOption);
308
- rejectUnsupportedCompactFields(fields, "workout-media", workoutMediaFieldKeys, invalidScheduledLogOption);
326
+ const fields = parseCompactFields(entry, "workout-media", invalidWorkoutMediaOption);
327
+ rejectUnsupportedCompactFields(fields, "workout-media", workoutMediaFieldKeys, invalidWorkoutMediaOption);
309
328
  return {
310
- kind: requireCompactString(fields, "kind", "workout-media", invalidScheduledLogOption),
311
- relativePath: requireCompactString(fields, "relativePath", "workout-media", invalidScheduledLogOption),
329
+ kind: requireCompactString(fields, "kind", "workout-media", invalidWorkoutMediaOption),
330
+ relativePath: requireCompactString(fields, "relativePath", "workout-media", invalidWorkoutMediaOption),
312
331
  ...(fields.has("mediaType") ? { mediaType: fields.get("mediaType") } : {}),
313
332
  ...(fields.has("caption") ? { caption: fields.get("caption") } : {}),
314
333
  };
315
334
  }
316
335
  function parseWorkoutExerciseEntry(entry) {
317
- const fields = parseCompactFields(entry, "workout-exercise", invalidScheduledLogOption);
318
- rejectUnsupportedCompactFields(fields, "workout-exercise", workoutExerciseFieldKeys, invalidScheduledLogOption);
336
+ const fields = parseCompactFields(entry, "workout-exercise", invalidWorkoutExerciseOption);
337
+ rejectUnsupportedCompactFields(fields, "workout-exercise", workoutExerciseFieldKeys, invalidWorkoutExerciseOption);
319
338
  return {
320
- name: requireCompactString(fields, "name", "workout-exercise", invalidScheduledLogOption),
321
- order: requireCompactInteger(fields, "order", "workout-exercise", invalidScheduledLogOption),
339
+ name: requireCompactString(fields, "name", "workout-exercise", invalidWorkoutExerciseOption),
340
+ order: requireCompactInteger(fields, "order", "workout-exercise", invalidWorkoutExerciseOption),
322
341
  sets: [],
323
342
  ...(fields.has("sourceExerciseId")
324
343
  ? { sourceExerciseId: fields.get("sourceExerciseId") }
@@ -330,11 +349,11 @@ function parseWorkoutExerciseEntry(entry) {
330
349
  };
331
350
  }
332
351
  function parseWorkoutSetEntry(entry) {
333
- const fields = parseCompactFields(entry, "workout-set", invalidScheduledLogOption);
334
- rejectUnsupportedCompactFields(fields, "workout-set", workoutSetFieldKeys, invalidScheduledLogOption);
335
- const exerciseOrder = requireCompactInteger(fields, "exercise", "workout-set", invalidScheduledLogOption);
352
+ const fields = parseCompactFields(entry, "workout-set", invalidWorkoutSetOption);
353
+ rejectUnsupportedCompactFields(fields, "workout-set", workoutSetFieldKeys, invalidWorkoutSetOption);
354
+ const exerciseOrder = requireCompactInteger(fields, "exercise", "workout-set", invalidWorkoutSetOption);
336
355
  const set = {
337
- order: requireCompactInteger(fields, "order", "workout-set", invalidScheduledLogOption),
356
+ order: requireCompactInteger(fields, "order", "workout-set", invalidWorkoutSetOption),
338
357
  };
339
358
  for (const key of [
340
359
  "type",
@@ -354,7 +373,7 @@ function parseWorkoutSetEntry(entry) {
354
373
  "assistanceKg",
355
374
  "addedWeightKg",
356
375
  ]) {
357
- const value = compactNumber(fields, key, "workout-set", invalidScheduledLogOption);
376
+ const value = compactNumber(fields, key, "workout-set", invalidWorkoutSetOption);
358
377
  if (value !== undefined) {
359
378
  set[key] = value;
360
379
  }
@@ -371,65 +390,396 @@ function buildWorkoutFromOptions(options) {
371
390
  if (!hasWorkoutOptions(options)) {
372
391
  return undefined;
373
392
  }
374
- const workout = {
375
- exercises: [],
376
- };
377
- if (options.workoutSourceApp !== undefined)
378
- workout.sourceApp = options.workoutSourceApp;
379
- if (options.workoutSourceWorkoutId !== undefined) {
380
- workout.sourceWorkoutId = options.workoutSourceWorkoutId;
381
- }
382
- if (options.workoutStartedAt !== undefined)
383
- workout.startedAt = options.workoutStartedAt;
384
- if (options.workoutEndedAt !== undefined)
385
- workout.endedAt = options.workoutEndedAt;
386
- if (options.workoutRoutineId !== undefined)
387
- workout.routineId = options.workoutRoutineId;
388
- if (options.workoutRoutineName !== undefined)
389
- workout.routineName = options.workoutRoutineName;
390
- if (options.workoutSessionNote !== undefined)
391
- workout.sessionNote = options.workoutSessionNote;
392
393
  const mediaEntries = normalizeRepeatableFlagOption(options.workoutMedia, "workout-media");
393
- if (mediaEntries) {
394
- workout.media = mediaEntries.map(parseWorkoutMediaEntry);
395
- }
396
- const exercisesByOrder = new Map();
397
394
  const exerciseEntries = normalizeRepeatableFlagOption(options.workoutExercise, "workout-exercise");
398
- for (const exercise of exerciseEntries?.map(parseWorkoutExerciseEntry) ?? []) {
399
- if (exercisesByOrder.has(exercise.order)) {
400
- invalidScheduledLogOption(`Duplicate --workout-exercise order ${exercise.order}.`);
401
- }
402
- exercisesByOrder.set(exercise.order, exercise);
403
- }
404
395
  const setEntries = normalizeRepeatableFlagOption(options.workoutSet, "workout-set");
405
- for (const { exerciseOrder, set } of setEntries?.map(parseWorkoutSetEntry) ?? []) {
406
- const exercise = exercisesByOrder.get(exerciseOrder);
407
- if (!exercise) {
408
- invalidScheduledLogOption(`--workout-set references exercise ${exerciseOrder}, but no matching --workout-exercise was provided.`);
409
- }
410
- exercise.sets.push(set);
396
+ return buildWorkoutFromParsedOptions({
397
+ scalarOptions: options,
398
+ media: mediaEntries?.map(parseWorkoutMediaEntry),
399
+ exercises: exerciseEntries?.map(parseWorkoutExerciseEntry),
400
+ sets: setEntries?.map(parseWorkoutSetEntry),
401
+ publicFields: workoutPublicFields,
402
+ validationMessage: "Invalid workout template fields.",
403
+ invalidExerciseOption: invalidWorkoutExerciseOption,
404
+ invalidSetOption: invalidWorkoutSetOption,
405
+ });
406
+ }
407
+ const mealActionOptionKeys = [
408
+ "foodId",
409
+ "ingredient",
410
+ "nutritionCalories",
411
+ "nutritionCarbsGrams",
412
+ "nutritionConfidence",
413
+ "nutritionFatGrams",
414
+ "nutritionFiberGrams",
415
+ "nutritionProteinGrams",
416
+ "nutritionSource",
417
+ "nutritionSourceDetail",
418
+ ];
419
+ const activityActionOptionKeys = [
420
+ "actionTitle",
421
+ "activityType",
422
+ "distanceKm",
423
+ "durationMinutes",
424
+ ...workoutOptionKeys,
425
+ ];
426
+ const interventionActionOptionKeys = [
427
+ "actionTitle",
428
+ "durationMinutes",
429
+ "interventionType",
430
+ "protocolId",
431
+ ];
432
+ const measurementActionOptionKeys = [
433
+ "actionTitle",
434
+ "measurementMetric",
435
+ "measurementNote",
436
+ "measurementQualifier",
437
+ "measurementUnit",
438
+ "measurementValue",
439
+ ];
440
+ export const scheduledLogActionOptionKeysByKind = {
441
+ "meal.add": mealActionOptionKeys,
442
+ "activity_session.add": activityActionOptionKeys,
443
+ "intervention_session.add": interventionActionOptionKeys,
444
+ "measurement.add": measurementActionOptionKeys,
445
+ };
446
+ const actionSpecificOptionKeys = [
447
+ ...scheduledLogActionOptionKeysByKind["meal.add"],
448
+ ...scheduledLogActionOptionKeysByKind["activity_session.add"],
449
+ ...scheduledLogActionOptionKeysByKind["intervention_session.add"],
450
+ ...scheduledLogActionOptionKeysByKind["measurement.add"],
451
+ ];
452
+ const allowedActionOptionKeys = {
453
+ "meal.add": new Set(scheduledLogActionOptionKeysByKind["meal.add"]),
454
+ "activity_session.add": new Set(scheduledLogActionOptionKeysByKind["activity_session.add"]),
455
+ "intervention_session.add": new Set(scheduledLogActionOptionKeysByKind["intervention_session.add"]),
456
+ "measurement.add": new Set(scheduledLogActionOptionKeysByKind["measurement.add"]),
457
+ };
458
+ function rejectIncompatibleScheduledLogActionOptions(options) {
459
+ const allowed = allowedActionOptionKeys[options.actionKind];
460
+ const incompatible = [...new Set(actionSpecificOptionKeys)].filter((key) => options[key] !== undefined && !allowed.has(key));
461
+ if (incompatible.length === 0) {
462
+ return;
463
+ }
464
+ throw new VaultCliError("invalid_option", "Some action fields are incompatible with the selected scheduled-log action kind.", {
465
+ issues: incompatible.map((key) => publicValidationIssue({ code: "custom" }, [key])),
466
+ stage: "validation",
467
+ });
468
+ }
469
+ function typedActionIssueOptionPath(path) {
470
+ switch (path[0]) {
471
+ case "foodId":
472
+ return "foodId";
473
+ case "ingredients":
474
+ return "ingredient";
475
+ case "note":
476
+ return "actionNote";
477
+ case "tags":
478
+ return "actionTag";
479
+ case "title":
480
+ return "actionTitle";
481
+ case "activityType":
482
+ return "activityType";
483
+ case "durationMinutes":
484
+ return "durationMinutes";
485
+ case "distanceKm":
486
+ return "distanceKm";
487
+ case "interventionType":
488
+ return "interventionType";
489
+ case "protocolId":
490
+ return "protocolId";
491
+ case "measurements":
492
+ if (path.includes("qualifiers")) {
493
+ return "measurementQualifier";
494
+ }
495
+ switch (path.at(-1)) {
496
+ case "value":
497
+ return "measurementValue";
498
+ case "unit":
499
+ return "measurementUnit";
500
+ case "note":
501
+ return "measurementNote";
502
+ default:
503
+ return "measurementMetric";
504
+ }
505
+ case "workout":
506
+ return path.includes("sets") ? "workoutSet" : "workoutExercise";
507
+ case "nutrition":
508
+ switch (path.at(-1)) {
509
+ case "calories":
510
+ return "nutritionCalories";
511
+ case "proteinGrams":
512
+ return "nutritionProteinGrams";
513
+ case "carbsGrams":
514
+ return "nutritionCarbsGrams";
515
+ case "fatGrams":
516
+ return "nutritionFatGrams";
517
+ case "fiberGrams":
518
+ return "nutritionFiberGrams";
519
+ case "source":
520
+ return "nutritionSource";
521
+ case "confidence":
522
+ return "nutritionConfidence";
523
+ case "sourceDetail":
524
+ return "nutritionSourceDetail";
525
+ default:
526
+ return "nutritionSource";
527
+ }
528
+ default:
529
+ return "actionKind";
411
530
  }
412
- workout.exercises = [...exercisesByOrder.values()].sort((left, right) => left.order - right.order);
413
- const parsed = workoutSessionSchema.safeParse(workout);
531
+ }
532
+ function parseScheduledLogAction(value) {
533
+ const parsed = scheduledLogActionSchema.safeParse(value);
414
534
  if (!parsed.success) {
415
- throw new VaultCliError("invalid_option", "Invalid workout template fields.", {
416
- issues: parsed.error.issues,
535
+ throw new VaultCliError("invalid_option", "Invalid scheduled-log action fields.", {
536
+ issues: parsed.error.issues.map((issue) => publicValidationIssue(issue, [typedActionIssueOptionPath(issue.path)])),
537
+ stage: "validation",
538
+ });
539
+ }
540
+ return parsed.data;
541
+ }
542
+ function parseScheduledLogPayload(value, code, surface) {
543
+ const parsed = scheduledLogScaffoldPayloadSchema.safeParse(value);
544
+ if (!parsed.success) {
545
+ throw new VaultCliError(code, "Invalid scheduled-log payload fields.", {
546
+ issues: parsed.error.issues.flatMap((issue) => {
547
+ const publicPath = scheduledLogPayloadIssuePath(issue.path, surface);
548
+ return publicPath === undefined
549
+ ? []
550
+ : [publicValidationIssue(issue, publicPath)];
551
+ }),
552
+ stage: "validation",
417
553
  });
418
554
  }
419
555
  return parsed.data;
420
556
  }
557
+ function scheduledLogPayloadIssuePath(path, surface) {
558
+ if (surface === "import_json") {
559
+ if (path[0] === "action" &&
560
+ path[1] === "measurements" &&
561
+ typeof path[2] === "number" &&
562
+ path[3] === "qualifiers") {
563
+ return ["action", "measurements", path[2], "qualifiers"];
564
+ }
565
+ return scheduledLogImportIssuePath(path);
566
+ }
567
+ switch (path[0]) {
568
+ case "scheduledLogId":
569
+ return ["id"];
570
+ case "tags":
571
+ return ["tag"];
572
+ case "action":
573
+ return [typedActionIssueOptionPath(path.slice(1))];
574
+ case "schedule":
575
+ switch (path[1]) {
576
+ case "at":
577
+ return ["scheduleAt"];
578
+ case "everyMs":
579
+ return ["scheduleEveryMs"];
580
+ case "expression":
581
+ return ["scheduleCron"];
582
+ case "localTime":
583
+ return ["scheduleLocalTime"];
584
+ default:
585
+ return ["scheduleKind"];
586
+ }
587
+ case "slug":
588
+ case "title":
589
+ case "status":
590
+ case "summary":
591
+ case "body":
592
+ return [path[0]];
593
+ default:
594
+ return undefined;
595
+ }
596
+ }
597
+ const scheduledLogImportPublicPathSegments = new Set([
598
+ "scheduledLogId",
599
+ "slug",
600
+ "title",
601
+ "status",
602
+ "summary",
603
+ "schedule",
604
+ "action",
605
+ "tags",
606
+ "body",
607
+ "kind",
608
+ "at",
609
+ "everyMs",
610
+ "expression",
611
+ "localTime",
612
+ "foodId",
613
+ "note",
614
+ "ingredients",
615
+ "nutrition",
616
+ "totals",
617
+ "provenance",
618
+ "calories",
619
+ "proteinGrams",
620
+ "carbsGrams",
621
+ "fatGrams",
622
+ "fiberGrams",
623
+ "source",
624
+ "confidence",
625
+ "sourceDetail",
626
+ "activityType",
627
+ "durationMinutes",
628
+ "distanceKm",
629
+ "workout",
630
+ "interventionType",
631
+ "protocolId",
632
+ "measurements",
633
+ "metric",
634
+ "value",
635
+ "unit",
636
+ "qualifiers",
637
+ "sourceApp",
638
+ "sourceWorkoutId",
639
+ "startedAt",
640
+ "endedAt",
641
+ "routineId",
642
+ "routineName",
643
+ "sessionNote",
644
+ "media",
645
+ "exercises",
646
+ "sets",
647
+ "order",
648
+ "name",
649
+ "sourceExerciseId",
650
+ "groupId",
651
+ "mode",
652
+ "unitOverride",
653
+ "type",
654
+ "reps",
655
+ "weight",
656
+ "weightUnit",
657
+ "durationSeconds",
658
+ "distanceMeters",
659
+ "rpe",
660
+ "bodyweightKg",
661
+ "assistanceKg",
662
+ "addedWeightKg",
663
+ "relativePath",
664
+ "mediaType",
665
+ "caption",
666
+ ]);
667
+ function scheduledLogImportIssuePath(path) {
668
+ if (path.length === 0)
669
+ return undefined;
670
+ const publicPath = [];
671
+ for (const segment of path) {
672
+ if (typeof segment === "number" && Number.isSafeInteger(segment) && segment >= 0) {
673
+ publicPath.push(segment);
674
+ continue;
675
+ }
676
+ if (typeof segment === "string" && scheduledLogImportPublicPathSegments.has(segment)) {
677
+ publicPath.push(segment);
678
+ continue;
679
+ }
680
+ return undefined;
681
+ }
682
+ return publicPath;
683
+ }
684
+ function isScheduledLogVaultError(error) {
685
+ return Boolean(error instanceof Error &&
686
+ error.name === "VaultError" &&
687
+ "code" in error &&
688
+ typeof error.code === "string");
689
+ }
690
+ function readScheduledLogValidationIssues(error) {
691
+ if (!error.details ||
692
+ typeof error.details !== "object" ||
693
+ !("issues" in error.details) ||
694
+ !Array.isArray(error.details.issues)) {
695
+ return [];
696
+ }
697
+ return error.details.issues.flatMap((issue) => {
698
+ if (!issue ||
699
+ typeof issue !== "object" ||
700
+ !("path" in issue) ||
701
+ !Array.isArray(issue.path) ||
702
+ !("code" in issue) ||
703
+ typeof issue.code !== "string") {
704
+ return [];
705
+ }
706
+ return [{
707
+ path: issue.path,
708
+ code: issue.code,
709
+ }];
710
+ });
711
+ }
712
+ function storedScheduledLogFailureMessage(issues) {
713
+ const recovery = "Stop without retrying or writing scheduled logs and report that operator repair is required.";
714
+ const issue = issues[0];
715
+ if (!issue) {
716
+ return `Stored scheduled-log registry data is invalid. ${recovery}`;
717
+ }
718
+ const publicPath = scheduledLogImportIssuePath(issue.path);
719
+ const code = /^[a-z][a-z0-9_]{0,63}$/u.test(issue.code)
720
+ ? issue.code
721
+ : "invalid_value";
722
+ const location = publicPath === undefined
723
+ ? `code ${code}`
724
+ : `path ${publicPath.join(".")}, code ${code}`;
725
+ return `Stored scheduled-log registry data is invalid (${location}). ${recovery}`;
726
+ }
727
+ function toScheduledLogCliError(error, options = {}) {
728
+ if (error instanceof VaultCliError || !isScheduledLogVaultError(error)) {
729
+ return error;
730
+ }
731
+ switch (error.code) {
732
+ case "VAULT_SCHEDULED_LOG_MISSING":
733
+ return new VaultCliError("not_found", "The requested scheduled log was not found; list scheduled logs and retry with an existing id or slug.");
734
+ case "VAULT_SCHEDULED_LOG_CONFLICT":
735
+ return new VaultCliError("conflict", "The scheduled-log id and slug resolve to different records; retry with identifiers from the same record.");
736
+ case "VAULT_INVALID_SCHEDULED_LOG": {
737
+ const issues = readScheduledLogValidationIssues(error);
738
+ return new VaultCliError("invalid_registry", storedScheduledLogFailureMessage(issues), {
739
+ hint: "Stop without retrying or writing scheduled logs and report that operator repair is required.",
740
+ stage: "read",
741
+ });
742
+ }
743
+ case "VAULT_INVALID_INPUT": {
744
+ const issues = readScheduledLogValidationIssues(error);
745
+ const inputSurface = options.inputSurface;
746
+ if (inputSurface) {
747
+ return new VaultCliError(inputSurface === "typed_save" ? "invalid_option" : "invalid_payload", "Invalid scheduled-log payload fields.", issues.length > 0
748
+ ? {
749
+ issues: issues.flatMap((issue) => {
750
+ const publicPath = scheduledLogPayloadIssuePath(issue.path, inputSurface);
751
+ return publicPath === undefined
752
+ ? []
753
+ : [publicValidationIssue(issue, publicPath)];
754
+ }),
755
+ stage: "validation",
756
+ }
757
+ : { stage: "validation" });
758
+ }
759
+ return new VaultCliError("contract_invalid", "Scheduled-log data failed canonical validation; correct the submitted inputs before retrying.");
760
+ }
761
+ default:
762
+ return error;
763
+ }
764
+ }
765
+ async function runScheduledLogOperation(operation, options = {}) {
766
+ try {
767
+ return await operation();
768
+ }
769
+ catch (error) {
770
+ throw toScheduledLogCliError(error, options);
771
+ }
772
+ }
421
773
  function buildScheduledLogActionFromOptions(options) {
774
+ rejectIncompatibleScheduledLogActionOptions(options);
422
775
  const actionTags = normalizeRepeatableFlagOption(options.actionTag, "action-tag");
423
776
  const commonFields = actionTags ? { tags: actionTags } : {};
424
777
  const workout = buildWorkoutFromOptions(options);
425
- if (workout && options.actionKind !== "activity_session.add") {
426
- invalidScheduledLogOption("Workout template fields are only valid with --action-kind=activity_session.add.");
427
- }
428
778
  switch (options.actionKind) {
429
779
  case "meal.add": {
430
780
  const ingredients = normalizeRepeatableFlagOption(options.ingredient, "ingredient");
431
781
  const nutrition = buildMealNutritionFromOptions(options);
432
- return scheduledLogActionSchema.parse({
782
+ return parseScheduledLogAction({
433
783
  kind: "meal.add",
434
784
  ...commonFields,
435
785
  ...(options.foodId ? { foodId: options.foodId } : {}),
@@ -439,22 +789,22 @@ function buildScheduledLogActionFromOptions(options) {
439
789
  });
440
790
  }
441
791
  case "activity_session.add":
442
- return scheduledLogActionSchema.parse({
792
+ return parseScheduledLogAction({
443
793
  kind: "activity_session.add",
444
794
  ...commonFields,
445
- title: requireStringOption(options.actionTitle, "action-title"),
446
- activityType: requireStringOption(options.activityType, "activity-type"),
447
- durationMinutes: requireNumberOption(options.durationMinutes, "duration-minutes"),
795
+ title: requireStringOption(options.actionTitle, "action-title", "actionTitle"),
796
+ activityType: requireStringOption(options.activityType, "activity-type", "activityType"),
797
+ durationMinutes: requireNumberOption(options.durationMinutes, "duration-minutes", "durationMinutes"),
448
798
  ...(options.distanceKm !== undefined ? { distanceKm: options.distanceKm } : {}),
449
799
  ...(options.actionNote ? { note: options.actionNote } : {}),
450
800
  ...(workout ? { workout } : {}),
451
801
  });
452
802
  case "intervention_session.add":
453
- return scheduledLogActionSchema.parse({
803
+ return parseScheduledLogAction({
454
804
  kind: "intervention_session.add",
455
805
  ...commonFields,
456
- title: requireStringOption(options.actionTitle, "action-title"),
457
- interventionType: requireStringOption(options.interventionType, "intervention-type"),
806
+ title: requireStringOption(options.actionTitle, "action-title", "actionTitle"),
807
+ interventionType: requireStringOption(options.interventionType, "intervention-type", "interventionType"),
458
808
  ...(options.durationMinutes !== undefined
459
809
  ? { durationMinutes: options.durationMinutes }
460
810
  : {}),
@@ -462,7 +812,7 @@ function buildScheduledLogActionFromOptions(options) {
462
812
  ...(options.actionNote ? { note: options.actionNote } : {}),
463
813
  });
464
814
  case "measurement.add":
465
- return scheduledLogActionSchema.parse({
815
+ return parseScheduledLogAction({
466
816
  kind: "measurement.add",
467
817
  ...commonFields,
468
818
  ...(options.actionTitle ? { title: options.actionTitle } : {}),
@@ -742,7 +1092,7 @@ export function registerScheduledLogCommands(cli) {
742
1092
  }),
743
1093
  output: scheduledLogWriteResultSchema,
744
1094
  async run(context) {
745
- const input = scheduledLogScaffoldPayloadSchema.parse({
1095
+ const input = parseScheduledLogPayload({
746
1096
  scheduledLogId: context.options.id,
747
1097
  slug: context.options.slug,
748
1098
  title: context.args.title,
@@ -752,11 +1102,11 @@ export function registerScheduledLogCommands(cli) {
752
1102
  summary: context.options.summary,
753
1103
  tags: normalizeRepeatableFlagOption(context.options.tag, "tag"),
754
1104
  body: context.options.body ?? defaultScheduledLogBody(context.args.title, context.options.summary),
755
- });
756
- const result = await upsertScheduledLog({
1105
+ }, "invalid_option", "typed_save");
1106
+ const result = await runScheduledLogOperation(() => upsertScheduledLog({
757
1107
  ...input,
758
1108
  vaultRoot: context.options.vault,
759
- });
1109
+ }), { inputSurface: "typed_save" });
760
1110
  return {
761
1111
  vault: context.options.vault,
762
1112
  scheduledLogId: result.record.scheduledLogId,
@@ -776,7 +1126,7 @@ export function registerScheduledLogCommands(cli) {
776
1126
  async run(context) {
777
1127
  return {
778
1128
  vault: context.options.vault,
779
- scheduledLog: await showScheduledLog(context.options.vault, context.args.lookup),
1129
+ scheduledLog: await runScheduledLogOperation(() => showScheduledLog(context.options.vault, context.args.lookup)),
780
1130
  };
781
1131
  },
782
1132
  });
@@ -797,11 +1147,11 @@ export function registerScheduledLogCommands(cli) {
797
1147
  }),
798
1148
  output: scheduledLogListResultSchema,
799
1149
  async run(context) {
800
- const items = await listScheduledLogs(context.options.vault, {
1150
+ const items = await runScheduledLogOperation(() => listScheduledLogs(context.options.vault, {
801
1151
  limit: context.options.limit,
802
1152
  status: context.options.status,
803
1153
  text: context.options.text,
804
- });
1154
+ }));
805
1155
  return {
806
1156
  vault: context.options.vault,
807
1157
  filters: {
@@ -824,11 +1174,11 @@ export function registerScheduledLogCommands(cli) {
824
1174
  output: scheduledLogWriteResultSchema,
825
1175
  async run(context) {
826
1176
  const rawInput = await loadJsonInputObject(context.options.input, "scheduled-log payload");
827
- const input = scheduledLogScaffoldPayloadSchema.parse(rawInput);
828
- const result = await upsertScheduledLog({
1177
+ const input = parseScheduledLogPayload(rawInput, "invalid_payload", "import_json");
1178
+ const result = await runScheduledLogOperation(() => upsertScheduledLog({
829
1179
  ...input,
830
1180
  vaultRoot: context.options.vault,
831
- });
1181
+ }), { inputSurface: "import_json" });
832
1182
  return {
833
1183
  vault: context.options.vault,
834
1184
  scheduledLogId: result.record.scheduledLogId,
@@ -851,15 +1201,15 @@ export function registerScheduledLogCommands(cli) {
851
1201
  options: withBaseOptions(),
852
1202
  output: scheduledLogStatusResultSchema,
853
1203
  async run(context) {
854
- const existing = await showScheduledLog(context.options.vault, context.args.lookup);
1204
+ const existing = await runScheduledLogOperation(() => showScheduledLog(context.options.vault, context.args.lookup));
855
1205
  if (!existing) {
856
- throw new Error(`Scheduled log "${context.args.lookup}" was not found.`);
1206
+ throw new VaultCliError("not_found", "The requested scheduled log was not found; list scheduled logs and retry with an existing id or slug.");
857
1207
  }
858
- const result = await setScheduledLogStatus({
1208
+ const result = await runScheduledLogOperation(() => setScheduledLogStatus({
859
1209
  vaultRoot: context.options.vault,
860
1210
  scheduledLogId: existing.scheduledLogId,
861
1211
  status,
862
- });
1212
+ }));
863
1213
  return {
864
1214
  vault: context.options.vault,
865
1215
  scheduledLogId: result.record.scheduledLogId,