@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
@@ -3,7 +3,7 @@ import { HOSTED_EXECUTION_MEMBER_REPORTED_DAILY_METRIC_KEYS, } from '@murphai/ho
3
3
  import { assistantBasePersonaIdValues, assistantBasePersonaOptions, assistantPersonaIdValues, assistantTonePreferenceValues, assistantVoiceOptionIdValues, assistantVoiceOptions, } from '@murphai/contracts';
4
4
  import { HOSTED_EXECUTION_ASSISTANT_ASK_QUESTION_MAX_CODE_POINTS, HOSTED_EXECUTION_ASSISTANT_ASK_TARGET_LABEL_MAX_CODE_POINTS, } from '@murphai/hosted-execution/contracts';
5
5
  import { HOSTED_RUNTIME_PENDING_GROUP_SETUP_ROOM_CONTEXT_MAX_CODE_POINTS, } from '@murphai/hosted-execution/pending-group-setup';
6
- import { HOSTED_FAMILY_PLAN_CODES, HOSTED_PRODUCT_FEEDBACK_KINDS, HOSTED_PRODUCT_FEEDBACK_SUMMARY_MAX_LENGTH, HOSTED_RUNTIME_ASSISTANT_ASK_REQUEST_ID_MAX_CODE_POINTS, HOSTED_RUNTIME_GROUP_DISCLOSURE_PERMISSION_TEXT_MAX_CODE_POINTS, HOSTED_RUNTIME_GROUP_DISPLAY_NAME_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_HTML_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_SUBJECT_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_TEXT_MAX_LENGTH, HOSTED_USAGE_REFERRAL_POLICY_CODES, } from '@murphai/hosted-execution/runtime-control';
6
+ import { HOSTED_FAMILY_PLAN_CODES, HOSTED_PRODUCT_FEEDBACK_KINDS, HOSTED_PRODUCT_FEEDBACK_SUMMARY_MAX_LENGTH, HOSTED_RUNTIME_ASSISTANT_ASK_REQUEST_ID_MAX_CODE_POINTS, HOSTED_RUNTIME_GROUP_CONTEXT_HANDOFF_MAX_CODE_POINTS, HOSTED_RUNTIME_GROUP_DISCLOSURE_PERMISSION_TEXT_MAX_CODE_POINTS, HOSTED_RUNTIME_GROUP_DISPLAY_NAME_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_HTML_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_SUBJECT_MAX_LENGTH, HOSTED_RUNTIME_GROUP_EMAIL_TEXT_MAX_LENGTH, HOSTED_USAGE_REFERRAL_POLICY_CODES, } from '@murphai/hosted-execution/runtime-control';
7
7
  import { HOSTED_ASSISTANT_PRODUCT_MODELS, HOSTED_ASSISTANT_PROVIDERS, HOSTED_ASSISTANT_REASONING_EFFORTS, } from '@murphai/hosted-execution/assistant-model';
8
8
  import { HOSTED_PLAN_USAGE_DIRECT_BILLING_PLAN_CODES } from '@murphai/hosted-execution/plan-usage';
9
9
  import { ASSISTANT_AUTHORED_RESPONSE_MEDIA_MAX_ITEMS } from '../assistant/response-media.js';
@@ -20,22 +20,26 @@ import { MURPH_DEVICE_TOOL, } from './dynamic-tools/device.js';
20
20
  import { MURPH_LABS_TOOL, } from './dynamic-tools/labs.js';
21
21
  import { MURPH_PENDING_VAULT_FILES_TOOL, } from './dynamic-tools/pending-vault-files.js';
22
22
  import { MURPH_GROUP_ROOM_MODEL_TOOL, } from './dynamic-tools/group-room-model.js';
23
+ import { MURPH_MEMBER_MEMORY_TOOL, } from './dynamic-tools/member-memory.js';
23
24
  import { MURPH_CREATE_CLINICAL_RECORDS_CONNECT_LINK_TOOL, } from './dynamic-tools/clinical-records.js';
24
25
  import { MURPH_CONNECTED_APPS_EXECUTE_TOOL, MURPH_CONNECTED_APPS_DYNAMIC_TOOLS, MURPH_CONNECTED_APPS_MANAGE_TOOL, MURPH_CONNECTED_APPS_SEARCH_TOOL, } from './dynamic-tools/connected-apps.js';
25
26
  import { MURPH_GENERATE_VOICE_MEMO_TOOL, } from './dynamic-tools/generate-voice-memo.js';
26
27
  import { MURPH_CREATE_PHONE_CALL_TOOL, MURPH_GET_PHONE_CALL_STATUS_TOOL, MURPH_STOP_PHONE_CALL_TOOL, } from './dynamic-tools/phone-calls.js';
27
- import { MURPH_SEND_PHYSICAL_NOTE_TOOL, } from './dynamic-tools/physical-notes.js';
28
+ import { MURPH_RESOLVE_PHYSICAL_NOTE_TOOL, MURPH_SEND_PHYSICAL_NOTE_TOOL, } from './dynamic-tools/physical-notes.js';
28
29
  import { MURPH_GENERATE_SONG_TOOL, } from './dynamic-tools/generate-song.js';
29
30
  import { MURPH_ASK_GROK_TOOL, } from './dynamic-tools/ask-grok.js';
31
+ import { MURPH_ANALYZE_VIDEO_TOOL, } from './dynamic-tools/analyze-video.js';
30
32
  export { MURPH_ASSISTANT_STYLE_TOOL } from './dynamic-tools/assistant-style.js';
31
33
  export { MURPH_AUTOMATION_TOOL } from './dynamic-tools/automation.js';
32
34
  export { MURPH_DEVICE_TOOL } from './dynamic-tools/device.js';
33
35
  export { MURPH_LABS_TOOL } from './dynamic-tools/labs.js';
34
36
  export { MURPH_PENDING_VAULT_FILES_TOOL, } from './dynamic-tools/pending-vault-files.js';
35
37
  export { MURPH_GROUP_ROOM_MODEL_TOOL, } from './dynamic-tools/group-room-model.js';
38
+ export { MURPH_MEMBER_MEMORY_TOOL, } from './dynamic-tools/member-memory.js';
36
39
  export { MURPH_CREATE_CLINICAL_RECORDS_CONNECT_LINK_TOOL, } from './dynamic-tools/clinical-records.js';
37
- export { MURPH_SEND_PHYSICAL_NOTE_TOOL } from './dynamic-tools/physical-notes.js';
40
+ export { MURPH_RESOLVE_PHYSICAL_NOTE_TOOL, MURPH_SEND_PHYSICAL_NOTE_TOOL, } from './dynamic-tools/physical-notes.js';
38
41
  export { MURPH_ASK_GROK_TOOL } from './dynamic-tools/ask-grok.js';
42
+ export { MURPH_ANALYZE_VIDEO_TOOL } from './dynamic-tools/analyze-video.js';
39
43
  const MURPH_CHARACTER_SHEET_REFERENCE_IMAGE_REF = 'skill-assets/murph-character-sheet-v1.png';
40
44
  export const GENERATE_IMAGE_REFERENCE_IMAGE_REFS_DESCRIPTION = `Optional ordered JPG/PNG/WebP refs (max 16): raw/inbox/**, raw/captures/**, or ${MURPH_CHARACTER_SHEET_REFERENCE_IMAGE_REF}. Explain roles; include the character sheet whenever Murph itself appears.`;
41
45
  const GROUP_GENERATED_AVATAR_REFERENCE_IMAGE_REFS_DESCRIPTION = `Optional ordered JPG/PNG/WebP refs for generated avatars: raw/inbox/**, raw/captures/**, or ${MURPH_CHARACTER_SHEET_REFERENCE_IMAGE_REF}. Explain roles; include the character sheet when Murph appears.`;
@@ -154,13 +158,14 @@ export const MURPH_ATTACH_RESPONSE_MEDIA_TOOL = {
154
158
  export const MURPH_ATTACH_RESPONSE_CARD_TOOL = {
155
159
  namespace: 'murph',
156
160
  name: 'attach_response_card',
157
- description: 'The daily-nutrition safety gate includes a lifetime vault-cli event list --kind encounter --limit 200 --format json read before numeric proposals, Goal activation, or cards. Inspect every returned item; use event show for every item whose list data reports nonzero diagnosesCount, and inspect all diagnosis entries without selecting by title, visit type, snapshot visibility, or the default prefix. A safety-relevant active diagnosis with documented or suspected certainty suppresses numeric output. Inactive, resolved, history, rule_out, ruled_out, and unrelated diagnoses do not prove a current exclusion; unresolved status or certainty on a safety-relevant diagnosis fails closed. A failed, unreadable, or exactly 200-record encounter read, or a failed required detail read, fails closed with no Goal or measurement mutation and no card; scheduled occurrences ask no question. ' +
158
- 'The daily-nutrition safety gate includes a lifetime vault-cli event list --kind procedure --limit 200 --format json read before numeric proposals, Goal activation, or cards. Inspect every returned item; use event show for an item whose procedure or status is missing or truncated. A completed gastric bypass, Roux-en-Y, sleeve gastrectomy, gastric sleeve, biliopancreatic diversion, duodenal switch, adjustable gastric band, lap band, or other explicit bariatric surgery suppresses numeric output. Planned, ordered, cancelled, ambiguous, or unrelated procedures do not prove post-bariatric context. A failed, unreadable, or exactly 200-record procedure read, or a failed required detail read, fails closed with no Goal or measurement mutation and no card; scheduled occurrences ask no question. ' +
159
- 'The daily-nutrition safety gate includes a separate vault-cli measurement entry list --metric pregnancy-test --from <300-days-before-today> --to <today> --limit 200 --format json read before numeric proposals, Goal activation, or cards. Require exact metric pregnancy-test, unit result, value 1, and a normalized positive qualifiers.result; any such positive wins over negative evidence from either pregnancy-evidence owner in the window and suppresses numeric output without diagnosing pregnancy. Missing, negative, stale, indeterminate, malformed, or conflicting rows are unavailable evidence rather than proof of non-pregnancy. A failed, unreadable, or exactly 200-record pregnancy-test read fails closed with no Goal or measurement mutation and no card; scheduled occurrences ask no question. ' +
160
- 'The same gate includes vault-cli event list --kind test --from <300-days-before-today> --to <today> --limit 200 --format json. A failed, unreadable, or exactly 200-record list fails closed before any numeric effect, with no test detail reads on saturation. Otherwise event show every returned test because list output compacts results and can truncate summaries; any failed or unreadable detail fails closed. Treat a pregnancy/hCG test or matching structured analyte with an explicit positive, detected, or pregnant textValue or unambiguous test-level summary as positive evidence unless resultStatus is pending. Canonical resultStatus unknown classifies the result rather than source lifecycle and may qualify only with that strict identity plus explicit text. Do not infer pregnancy from numeric hCG, reference ranges, abnormal or unknown status/flags alone, titles, notes, or ambiguous or negated text. An explicit positive wins over negative evidence from either canonical owner in the window and suppresses numeric output, Goal mutation or activation, and cards. Missing, negative, pending, numeric-only, stale, unrelated, and ambiguous test evidence is unavailable rather than a universal block. Scheduled occurrences ask no question, perform no mutation, and attach no card. ' +
161
+ description: 'For daily_nutrition cards and numeric nutrition targets, use the member request plus context already known in the conversation or vault. Do not run a universal medical-history or measurement checklist. A routine card with complete accepted goals needs no repeated screening unless new context raises a concern. Before treating suitability as unresolved, asking, or proposing or changing targets, inspect the current conversation and run vault-cli memory show --format json once for the canonical Identity, Preferences, Instructions, and Context record. Do not re-ask or recite established categories. Treat this known-context suitability check as workflow eligibility, not public health Q&A: never search Health Commons to decide or merely restate it. If suitability is clear, proceed and state only the request-relevant outcome. Otherwise ask one compact question covering every unresolved category: age under 18; pregnancy or breastfeeding; eating-disorder or number-sensitive tracking; underweight, frailty, or malnutrition; glucose-lowering or other nutrition-target-changing medication; kidney disease, advanced liver disease, significant heart disease, or relevant endocrine disease; post-bariatric care; or clinician-managed constraints that materially change calorie or macro targets. Apply safety at the narrowest relevant scope: a health-context fact blocks only the numeric target or advice it materially affects, not benign totals, logging, education, or unrelated low-risk work. An allergy, intolerance, dietary restriction, or clinician-directed diet is not by itself a reason to suppress the five totals or an accepted compatible target bundle. If known current context makes self-directed numeric guidance unsuitable—including underage, pregnancy or breastfeeding, eating-disorder or number-sensitive tracking context, underweight, frailty or malnutrition, glucose-lowering medication, kidney disease, advanced liver disease, significant heart disease, relevant endocrine disease, post-bariatric care, or documented clinician-managed constraints that materially change or conflict with the card targets—use helpful non-numeric text for the affected guidance, make no Goal mutation, and attach no card. Read another clinical record family only when the conversation or canonical memory raises one concrete concern. A missing unrelated fact or failed unrelated read does not block a routine card. A scheduled occurrence with unresolved suitability uses ordinary non-numeric closeout with no proposal, Goal mutation, question, or card. A scheduled occurrence never activates provisional targets. Treat a calorie target below 1,200 kcal/day as unsuitable; do not floor it upward. ' +
161
162
  'Workout footers span native and static cards; never promise native-only taps. ' +
162
163
  'For a tracked workout, attempt the complete verified card and let input validation decide whether its actual encoded envelope fits; never refuse from an estimated exercise or set count or ask the member to simplify saved workout data. If validation rejects the complete envelope, use the full deterministic text recovery. ' +
163
- 'Attach one private-direct response card when the current accepted member message or the saved instructions for the exact scheduled automation occurrence request a structured answer that the card alone can represent, during managed meal closeout, for the verified initial card after starting or resuming one canonical live workout, or for an unambiguous update to its established workout card. Occurrence authority alone is not card intent. The card replaces the entire final response: attach it only when the card alone completely satisfies the current request; answer compound requests with complete ordinary text and no card. Before every goal-aware daily_nutrition card, first run vault-cli goal list --status active --limit 200 --format json. If it returns 200 records, fail closed with ordinary text, no Goal or measurement mutation, and no card. Otherwise run vault-cli goal show <goal-id> --format json for every returned active Goal whose list item reports a nonzero data.metricTargetsCount; never select detail reads by title, slug, domain, context-snapshot visibility, or the default list prefix. Resolve metric identity, unit, comparator, effective date, conflicts, and the 1,200-kcal boundary only after inspecting that complete detail set. Keep this active-target authority read separate from any all-status lookup used to reuse or honor Murph\'s managed paused or abandoned proposal; neither read substitutes for the other. For daily_nutrition, immediately beforehand run vault-cli meal totals --from <date> --to <same-date> and copy its exact canonical metric { total, mealCount } values; never calculate or reuse totals. New authoring uses V2 with fiber and five required goal snapshots; nullable V2 goals and nutrition V1 remain legacy replay and rendering compatibility only. Before deriving, saving, or surfacing numeric nutrition goals, before activating a paused nutrition proposal, and before every daily_nutrition attachment, even with five active goals or on a scheduled closeout, follow nutrition-strategy/references/daily-nutrition-card-safety.md. First run vault-cli memory show --format json and inspect the complete canonical Identity, Preferences, Instructions, and Context memory document for explicit, unambiguous safety facts; the context snapshot does not inject it. A failed or unreadable memory read fails closed with ordinary non-numeric text, no Goal or measurement mutation, and no card; leave an existing paused proposal unchanged. A clearly current saved age under 18 or clearly current intuitive-eating or number-sensitive preference uses the same suppression path. Missing, stale, ambiguous, or conflicting age alone is unavailable evidence, not a universal block; scheduled occurrences never ask. Run both vault-cli condition list --status active --limit 200 --format json and vault-cli regimen list --status active --limit 200 --format json. If either read fails or returns exactly 200 records, run no condition or regimen detail reads and fail closed with ordinary non-numeric text, no Goal or measurement mutation, and no card. Otherwise run vault-cli condition show <condition-id> --format json for every returned active condition and vault-cli regimen show <regimen-id> --format json for every returned active regimen before applying the safety gate; never select by title, substance, severity, context-snapshot visibility, or the default list prefix. If any required detail read fails or is unreadable, use the same fail-closed behavior; otherwise reuse the complete current-turn reads. Then run vault-cli event list --kind procedure --limit 200 --format json and apply its complete procedure-item and conditional-detail contract before continuing; a completed bariatric procedure suppresses numeric output, and a failed, unreadable, or saturated read fails closed. As part of that same pre-numeric and pre-activation gate, also run its bounded lossless vault-cli measurement entry list read over the canonical 45-day window. A usable adult BMI below 18.5, including height and weight rows sharing one eventId, suppresses numeric proposal derivation or presentation, every Goal write or activation, and the card. A failed read, or a saturated read that cannot resolve usable BMI evidence, fails closed with ordinary non-numeric text, no Goal or measurement mutation, and no card; leave an existing paused proposal unchanged. The gate also blocks known underweight, frailty, malnutrition risk, glucose-lowering medication, safety-relevant disease or clinician-managed nutrition context, and calorie targets below 1,200 kcal/day without flooring them upward. Scheduled authority never permits questions or activation; only the first eligible managed meal closeout may create and explain one paused proposal after the complete safety gate and an all-status Goal read prove the stable managed slug has never existed. For the exact card localDate, require the containing active Goal window and each target\'s optional startAt/targetAt interval to include that date, with inclusive boundaries; use the selected capture date for a scheduled closeout, which may differ from the occurrence date for a historical catch-up, or the explicitly requested date, never wall-clock today. Ignore out-of-window targets for current authority and conflicts, and never expose, compare, copy, derive from, or mutate a Goal because of them. Require exactly one unambiguous applicable exact point target in each fixed card unit: dietary-calories in kcal, and protein-grams, carbs-grams, fat-grams, and fiber-grams in g, resolved across active canonical Goals. Each target must use selected-value comparator between with identical numeric value and highValue. A one-sided threshold, non-identical range, or other shape remains authoritative but makes the bundle comparator-incompatible: never expose, compare, copy, or derive from its bound or create, replace, or remove a managed target around it; use ordinary text with no card or managed Goal mutation, and ask no question on a scheduled closeout. A target in another unit likewise remains authoritative but makes the bundle incompatible: never compare, convert, copy, or derive from its raw value. An explicit numeric-card request or the one first eligible managed closeout authorizes only the goal-aware workflow\'s paused canonical proposal, not activation or use. When any target is missing, follow nutrition-strategy/references/daily-nutrition-card-goals.md: hold applicable, compatible exact point targets fixed, derive missing macros from residual calories, and require every AMDR plus a 50 kcal energy tolerance before any Goal write; an infeasible bundle means ordinary text and no mutation. Save one paused canonical proposal, explain its values, reasoning, and effective date in ordinary text with no card, and activate it only after member acceptance. On first creation, set Goal window.startAt explicitly: use a member-requested effective date when present, otherwise the selected card localDate for a dated card request, otherwise the engine-supplied current vault-local date; never rely on the write-day default. Preserve that window on every later edit, activation, or card request and never silently rebase it to another card date. Any derived target addition or change atomically pauses the complete managed bundle until acceptance. A scheduled closeout never asks for inputs or activates provisional targets. On the first eligible managed closeout only, if the complete all-status Goal read proves the stable managed slug has never existed and already-known inputs pass the complete safety and derivation contracts, create and explain one paused proposal in ordinary text with no card; once that Goal exists in any status, scheduled turns never create, change, or automatically repeat it. Without a complete accepted bundle or that one first-run proposal path, use ordinary closeout text and no card. When an explicit card request caused the proposal, its next unambiguous acceptance may complete that pending request only after the complete safety recheck passes, then activation and readback, and a fresh same-date totals read; corrections, declines, ambiguous replies, target-setting-only requests, and compound requests remain text-only. Explicit active targets win metric by metric; conflicts, thresholds, ranges, unsafe numbers, or missing responsible calorie inputs mean ordinary text or one consolidated question, never a goal-less card. Freeze each exact point target and Murph\'s context-aware status without a universal threshold. Use compact_table for an explicit table or structured-tracker request, a structured plan or schedule that the table alone can fully represent within its bounds, that verified initial live-workout card, or an unambiguous update to the same active workout; with multiple plausible workouts, do not infer authority and ask one narrow question. Never invent or silently truncate values. For tracked workouts, first update or resolve the canonical workout, re-read it successfully, and copy only that verified snapshot with its exact evt_<ULID> reference and canonical UTC snapshot instant. Use only when numerical output is permitted. Runtime renders durable text and fallbacks, so do not repeat card values in final send_message. This tool does not send and cannot combine with response media.',
164
+ 'Attach one private-direct response card when the current accepted member message or the saved instructions for the exact scheduled automation occurrence request a structured answer that the card alone can represent, during managed meal closeout, for the verified initial card after starting or exact-reading one canonical workout, or for an unambiguous update to its established workout card, including the just-completed final snapshot. Occurrence authority alone is not card intent. The card replaces the entire final response: attach it only when the card alone completely satisfies the current request; answer compound requests with complete ordinary text and no card. For routine daily_nutrition, including an authorized meal estimate, use one workflow and end with one card or concise fallback. Never narrate safety, totals, estimation, or target resolution. ' +
165
+ 'Before every goal-aware daily_nutrition card, first run vault-cli goal list --status active --limit 200 --format json. If it returns 200 records, fail closed with ordinary text, no Goal or measurement mutation, and no card. Otherwise run vault-cli goal show <goal-id> --format json for every returned active Goal whose list item reports a nonzero data.metricTargetsCount; never select detail reads by title, slug, domain, context-snapshot visibility, or the default list prefix. Resolve metric identity, unit, comparator, effective date, conflicts, and the 1,200-kcal boundary only after inspecting that complete detail set. Keep this active-target authority read separate from any all-status lookup used to reuse or honor Murph\'s managed paused or abandoned proposal; neither read substitutes for the other. For daily_nutrition, immediately beforehand run vault-cli meal totals --from <date> --to <same-date> and copy its exact canonical metric { total, mealCount } values; never calculate or reuse totals. Only on a member-explicit interactive daily-card or daily-summary request, if any metric mealCount is below the top-level mealCount, follow food-journal selected-date incomplete-meal recovery before attaching a card. Default attachment intent after a meal mutation does not authorize reading, editing, or asking about another meal; when fresh totals remain incomplete, use the short food-journal fallback with no card. Use accepted current equivalence or matching saved ingredient and portion evidence, not an informal name alone. If recovery still needs identity or amount, ask one compact question and stop without a card; after the answer, edit and read back the exact existing meal and rerun fresh totals. Do not ask merely to enable numbers when numeric presentation is suppressed. A partial card is only for an explicit request to see the currently available partial data after the limitation is clear, not the normal interactive closeout. Scheduled closeout keeps automatic-meal-capture\'s existing question authority. New authoring uses V2 with fiber and five required goal snapshots; nullable V2 goals and nutrition V1 remain legacy replay and rendering compatibility only. ' +
166
+ 'For the exact card localDate, require the containing active Goal window and each target\'s optional startAt/targetAt interval to include that date, with inclusive boundaries; use the selected capture date for a scheduled closeout, which may differ from the occurrence date for a historical catch-up, or the explicitly requested date, never wall-clock today. Ignore out-of-window targets for current authority and conflicts, and never expose, compare, copy, derive from, or mutate a Goal because of them. Require one unambiguous applicable exact-point target per card unit: canonical dietary-calories in kcal plus protein-grams, carbs-grams, fat-grams, and fiber-grams in g, across active Goals. Author only dietary-calories. When exactly one compatible canonical calorie owner exists, use it and ignore every globally ambiguous calories target. Only without a canonical owner may targetId daily-calories with metric calories and unit kcal substitute, and only when its same containing Goal owns the complete compatible historical set: daily-protein / protein-grams / g, daily-carbohydrates / carbs-grams / g, daily-fat / fat-grams / g, and daily-fiber / fiber-grams / g. Any other calories target is not dietary authority even when co-located with all four nutrition metrics. Never combine the historical set with another Goal or managed proposal, and never infer ownership from title, slug, domain, or description. Multiple qualifying historical sets or ambiguity inside one means no card. Never mutate a Goal to repair its key. Apply the 1,200-kcal boundary and residual math to resolved calories. ' +
167
+ 'Each target must be an exact card point with comparator between and identical numeric value and highValue. Accept selected-value evaluation normally. The complete same-Goal historical daily-* nutrition set above has one read-only display-compatibility path when every target instead uses rolling-window evaluation with statistic mean plus selectionPolicyOverride kind daily-aggregate with statistic mean: copy each unchanged point bound into the card for the selected localDate, preserve the Goal, and never extend this exception to another identity or workflow. A mixed evaluation bundle or any other rolling-window statistic or daily-aggregate statistic is incompatible. A one-sided threshold, non-identical range, or other shape remains authoritative but makes the bundle comparator-incompatible: never expose, compare, copy, or derive from its bound or create, replace, or remove a managed target around it; use ordinary text with no card or managed Goal mutation, and ask no question on a scheduled closeout. A target in another unit likewise remains authoritative but makes the bundle incompatible: never compare, convert, copy, or derive from its raw value. If a daily_nutrition call is rejected for malformed arguments, use the returned validation paths to correct only invalid fields and retry this tool once with the same verified totals and targets; if that retry fails, use the truthful text fallback without narrating tool or schema mechanics. An explicit numeric-card request or the one first eligible managed closeout authorizes only the goal-aware workflow\'s paused canonical proposal, not activation or use. When any target is missing, follow nutrition-strategy/references/daily-nutrition-card-goals.md: hold applicable, compatible exact point targets fixed, derive missing macros from residual calories, and require every AMDR plus a 50 kcal energy tolerance before any Goal write; an infeasible bundle means ordinary text and no mutation. Save one paused canonical proposal, explain its values, reasoning, and effective date in ordinary text with no card, and activate it only after member acceptance. On first creation, set Goal window.startAt explicitly: use a member-requested effective date when present, otherwise the selected card localDate for a dated card request, otherwise the engine-supplied current vault-local date; never rely on the write-day default. Preserve that window on every later edit, activation, or card request and never silently rebase it to another card date. Any derived target addition or change atomically pauses the complete managed bundle until acceptance. A scheduled closeout never asks for inputs or activates provisional targets. ' +
168
+ 'On the first eligible managed closeout only, if the complete all-status Goal read proves the stable managed slug has never existed and already-known inputs pass the known-context suitability and derivation rules, create and explain one paused proposal in ordinary text with no card; once that Goal exists in any status, scheduled turns never create, change, or automatically repeat it. Without a complete accepted bundle or that one first-run proposal path, use ordinary closeout text and no card. When an explicit card request caused the proposal, its next unambiguous acceptance may complete that pending request only after reapplying the known-context suitability rule, then activation and readback, and a fresh same-date totals read; corrections, declines, ambiguous replies, target-setting-only requests, and compound requests remain text-only. Explicit active targets win metric by metric; conflicts, thresholds, ranges, unsafe numbers, or missing responsible calorie inputs mean ordinary text or one consolidated question, never a goal-less card. Freeze each exact point target and Murph\'s context-aware status without a universal threshold. Use compact_table for an explicit table or structured-tracker request, a structured plan or schedule that the table alone can fully represent within its bounds, that verified initial live-workout card, or an unambiguous update to the same exact open or just-finished workout; with multiple plausible workouts, do not infer authority and ask one narrow question. Never invent or silently truncate values. For tracked workouts, first update or resolve the canonical workout and re-read it successfully. A structured workout card has exactly kind compact_table, version 1, title, subtitle null, footer, tracking with kind workout plus the exact evt_<ULID> entityId, and workout; never add rowHeader, columns, or rows. The runtime records tracking snapshotAt. Use only when numerical output is permitted. Runtime renders durable text and fallbacks, so do not repeat card values in final send_message. This tool does not send and cannot combine with response media.',
164
169
  inputSchema: {
165
170
  type: 'object',
166
171
  additionalProperties: false,
@@ -257,11 +262,10 @@ export const MURPH_GENERATE_IMAGE_TOOL = {
257
262
  required: ['prompt'],
258
263
  },
259
264
  };
260
- export const MURPH_PRODUCT_FEEDBACK_DEFERRED_DISCOVERY_RULE = 'Before classifying a Murph path as missing or filing missing-capability feedback, use the provided deferred-tool discovery surface; absence from eager tools is not proof.';
261
265
  export const MURPH_SUBMIT_PRODUCT_FEEDBACK_TOOL = {
262
266
  namespace: 'murph',
263
267
  name: 'submit_product_feedback',
264
- description: `Submit one structured Murph product-feedback candidate for the current accepted request. Provide the feedback kind, one concise product-only summary, and optional related changelog item ids. ${MURPH_PRODUCT_FEEDBACK_DEFERRED_DISCOVERY_RULE} When feedback describes a failure or workflow issue, put the general feedback first and append a privacy-safe reproduction recipe in the same summary field. Ordinary feedback is best-effort after the reply. Explicit verified-private human support uses kind "frustration", empty changelog ids, and a concise de-identified explanation beginning exactly "Support escalation:"; that mode waits for the durable callback. The result reports accepted, already accepted, or unavailable; do not retry after any result.`,
268
+ description: `Submit one structured Murph product-feedback candidate for the current accepted request. Provide the feedback kind, one concise product-only summary, and optional related changelog item ids. When feedback describes a failure or workflow issue, put the general feedback first and append a privacy-safe reproduction recipe in the same summary field. Ordinary feedback is best-effort after the reply. Explicit verified-private human support uses kind "frustration", empty changelog ids, and a concise de-identified explanation beginning exactly "Support escalation:"; that mode waits for the durable callback. The result reports an input-schema rejection, accepted, already accepted, unavailable, or callback failure. An input-schema rejection includes value-free validation issues. Accepted, already accepted, unavailable, and callback-failure results are terminal.`,
265
269
  inputSchema: {
266
270
  type: 'object',
267
271
  additionalProperties: false,
@@ -709,355 +713,371 @@ export const ASSISTANT_ACCEPTED_MESSAGE_REF_PATTERN = '^ain_[0-9a-f]{32}$';
709
713
  const ASSISTANT_ACCEPTED_MESSAGE_REF_SCHEMA = {
710
714
  type: 'string',
711
715
  pattern: ASSISTANT_ACCEPTED_MESSAGE_REF_PATTERN,
712
- description: 'Opaque Message ref shown beside an accepted inbound message in the current prompt. Required for current-sender actions, record_current_sender_daily_metric, and revoke_own_email_share; optional only for create_signup_referral_link and read_usage_referral. Use the exact ref beside the relevant request or clarification answer; this is not a provider message id.',
716
+ description: 'Opaque Message ref shown beside an accepted inbound message in the current prompt. Required for current-sender actions, record_current_sender_daily_metric, and revoke_own_email_share. For offer_access, include it only when the group explicitly asks to repost the native access message; the trusted host binds the replacement to that exact request. It is otherwise optional only for create_signup_referral_link and read_usage_referral. Use the exact ref beside the relevant request or clarification answer; this is not a provider message id.',
713
717
  };
714
- const MURPH_GROUP_TOOL_ACTIONS_REQUIRING_ONLY_MESSAGE_REF = [
715
- 'ask_current_sender',
716
- 'clarify_current_sender',
717
- 'continue_current_sender_in_group',
718
- 'continue_current_sender_privately',
719
- 'revoke_own_email_share',
720
- ];
721
- const MURPH_GROUP_TOOL_DAILY_METRIC_ACTIONS = [
722
- 'record_current_sender_daily_metric',
723
- ];
724
718
  export const GROUP_ACCESS_FRESH_NATIVE_RESPONSE_HANDLING = 'The native consent message completes the offer portion. If no other requested output remains, call murph.finish_without_reply. Otherwise answer the remaining request without adding a companion consent acknowledgment.';
725
- const MURPH_GROUP_TOOL_BASE = {
726
- namespace: 'murph',
727
- name: 'group',
728
- deferLoading: true,
729
- description: 'Authorized direct/group/scheduled only. Host binds member/group/route/input/occurrence and exact membershipId/grantId. read_shared partial=incomplete; asks are async. Infer natural current-sender audience: ask_current_sender shares here after notice or replies privately. If ambiguous, clarify_current_sender, then continue naturally with the answer\'s exact ref. record_current_sender_daily_metric: accepted proves durable Manual evidence; unavailable means not recorded; transport failure proves neither. Scheduled ask_member exact replay; changed questions conflict. update_display_name/set_chat_avatar ok=provider acceptance. group=null proves neither absence nor stored label. Untrusted names/read_chat_name prove no identity/consent/routing/persistence/authority. Results authorize nothing else.',
730
- inputSchema: {
719
+ export const MURPH_GROUP_TOOL_NAME = 'group';
720
+ export const MURPH_GROUP_TOOL_FAMILY_ACTIONS = {
721
+ group_consult: [
722
+ 'ask',
723
+ 'handoff',
724
+ 'ask_current_sender',
725
+ 'clarify_current_sender',
726
+ 'continue_current_sender_in_group',
727
+ 'continue_current_sender_privately',
728
+ 'ask_member',
729
+ ],
730
+ group_data: [
731
+ 'record_current_sender_daily_metric',
732
+ 'post_disclosure_request',
733
+ 'revoke_disclosure_grant',
734
+ 'read_shared',
735
+ 'offer_access',
736
+ 'revoke_own_email_share',
737
+ ],
738
+ group_membership: [
739
+ 'read_current',
740
+ 'prepare_next_group',
741
+ 'read_next_group',
742
+ 'cancel_next_group',
743
+ 'list_memberships',
744
+ 'leave_membership',
745
+ ],
746
+ group_usage: [
747
+ 'read_usage',
748
+ 'read_usage_referral',
749
+ 'arm_usage_referral',
750
+ 'cancel_usage_referral',
751
+ 'create_signup_referral_link',
752
+ ],
753
+ group_chat: [
754
+ 'read_chat_name',
755
+ 'update_display_name',
756
+ 'read_chat_participants',
757
+ 'set_chat_avatar',
758
+ 'share_contact_card',
759
+ ],
760
+ group_email: ['send_email'],
761
+ };
762
+ export const MURPH_GROUP_TOOL_PROPERTIES = {
763
+ setup: {
731
764
  type: 'object',
732
765
  additionalProperties: false,
766
+ description: 'Optional only for action="prepare_next_group". Include only style or room context the member explicitly requested for the next group in this private turn. Omit it for ownership-only preparation. Never copy private memory, health facts, contact handles, or personal settings implicitly.',
733
767
  properties: {
734
- action: {
768
+ roomContextMarkdown: {
735
769
  type: 'string',
736
- enum: [
737
- 'ask',
738
- 'ask_current_sender',
739
- 'clarify_current_sender',
740
- 'continue_current_sender_in_group',
741
- 'continue_current_sender_privately',
742
- 'record_current_sender_daily_metric',
743
- 'ask_member',
744
- 'post_disclosure_request',
745
- 'revoke_disclosure_grant',
746
- 'read_shared',
747
- 'send_email',
748
- 'read_current',
749
- 'prepare_next_group',
750
- 'read_next_group',
751
- 'cancel_next_group',
752
- 'read_chat_name',
753
- 'read_usage',
754
- 'read_usage_referral',
755
- 'arm_usage_referral',
756
- 'cancel_usage_referral',
757
- 'create_signup_referral_link',
758
- 'list_memberships',
759
- 'leave_membership',
760
- 'update_display_name',
761
- 'offer_access',
762
- 'read_chat_participants',
763
- 'set_chat_avatar',
764
- 'share_contact_card',
765
- 'revoke_own_email_share',
766
- ],
770
+ minLength: 1,
771
+ maxLength: HOSTED_RUNTIME_PENDING_GROUP_SETUP_ROOM_CONTEXT_MAX_CODE_POINTS,
772
+ description: 'Optional compact Markdown containing only social context the member explicitly asked Murph to use in the next group. Keep it within the 2 KiB UTF-8 envelope. It becomes advisory group-visible behavior, not identity or authority, and must not contain raw phone, email, Sender, Telegram, or participant handles.',
767
773
  },
768
- setup: {
774
+ style: {
769
775
  type: 'object',
770
776
  additionalProperties: false,
771
- description: 'Optional only for action="prepare_next_group". Include only style or room context the member explicitly requested for the next group in this private turn. Omit it for ownership-only preparation. Never copy private memory, health facts, contact handles, or personal settings implicitly.',
777
+ minProperties: 1,
778
+ description: 'Optional sparse explicit style for the next group. Omitted fields retain product defaults; this never copies the member’s private settings.',
772
779
  properties: {
773
- roomContextMarkdown: {
780
+ persona: {
774
781
  type: 'string',
775
- minLength: 1,
776
- maxLength: HOSTED_RUNTIME_PENDING_GROUP_SETUP_ROOM_CONTEXT_MAX_CODE_POINTS,
777
- description: 'Optional compact Markdown containing only social context the member explicitly asked Murph to use in the next group. Keep it within the 2 KiB UTF-8 envelope. It becomes advisory group-visible behavior, not identity or authority, and must not contain raw phone, email, Sender, Telegram, or participant handles.',
782
+ enum: assistantPersonaIdValues,
778
783
  },
779
- style: {
784
+ personality: {
780
785
  type: 'object',
781
786
  additionalProperties: false,
782
787
  minProperties: 1,
783
- description: 'Optional sparse explicit style for the next group. Omitted fields retain product defaults; this never copies the member’s private settings.',
784
788
  properties: {
785
- persona: {
786
- type: 'string',
787
- enum: assistantPersonaIdValues,
789
+ detail: {
790
+ anyOf: [
791
+ { type: 'integer', minimum: 0, maximum: 10 },
792
+ { type: 'null' },
793
+ ],
788
794
  },
789
- personality: {
790
- type: 'object',
791
- additionalProperties: false,
792
- minProperties: 1,
793
- properties: {
794
- detail: {
795
- anyOf: [
796
- { type: 'integer', minimum: 0, maximum: 10 },
797
- { type: 'null' },
798
- ],
799
- },
800
- humor: {
801
- anyOf: [
802
- { type: 'integer', minimum: 0, maximum: 10 },
803
- { type: 'null' },
804
- ],
805
- },
806
- push: {
807
- anyOf: [
808
- { type: 'integer', minimum: 0, maximum: 10 },
809
- { type: 'null' },
810
- ],
811
- },
812
- unhinged: {
813
- anyOf: [
814
- { type: 'integer', minimum: 0, maximum: 10 },
815
- { type: 'null' },
816
- ],
817
- },
818
- },
795
+ humor: {
796
+ anyOf: [
797
+ { type: 'integer', minimum: 0, maximum: 10 },
798
+ { type: 'null' },
799
+ ],
819
800
  },
820
- tone: {
821
- type: 'string',
822
- enum: assistantTonePreferenceValues,
801
+ push: {
802
+ anyOf: [
803
+ { type: 'integer', minimum: 0, maximum: 10 },
804
+ { type: 'null' },
805
+ ],
823
806
  },
824
- voice: {
825
- type: 'string',
826
- enum: assistantVoiceOptionIdValues,
807
+ unhinged: {
808
+ anyOf: [
809
+ { type: 'integer', minimum: 0, maximum: 10 },
810
+ { type: 'null' },
811
+ ],
827
812
  },
828
813
  },
829
814
  },
830
- },
831
- },
832
- question: {
833
- type: 'string',
834
- minLength: 1,
835
- maxLength: HOSTED_EXECUTION_ASSISTANT_ASK_QUESTION_MAX_CODE_POINTS,
836
- description: 'Required only for action="ask" or action="ask_member". Ask one self-contained natural-language question. ask may use a joined group\'s read-only context; ask_member produces a proposed answer whose outgoing information is checked against the selected disclosure grant before sharing.',
837
- },
838
- permissionText: {
839
- type: 'string',
840
- minLength: 1,
841
- maxLength: HOSTED_RUNTIME_GROUP_DISCLOSURE_PERMISSION_TEXT_MAX_CODE_POINTS,
842
- description: 'Required only for action="post_disclosure_request". The exact concise natural-language description of the type of information a member may allow their private Murph to read and disclose to this group. The server shows this text in the consent request and reviews only each proposed outgoing answer against it before sharing.',
843
- },
844
- grantId: {
845
- type: 'string',
846
- minLength: 1,
847
- maxLength: HOSTED_RUNTIME_ASSISTANT_ASK_REQUEST_ID_MAX_CODE_POINTS,
848
- description: 'Required for action="ask_member" or action="revoke_disclosure_grant". For ask_member, use the exact server-issued grantId from read_current. For revoke_disclosure_grant, use the exact grantId from the immediately preceding list_memberships result. Never guess it or take it from the user.',
849
- },
850
- policyCode: {
851
- type: 'string',
852
- enum: [...HOSTED_USAGE_REFERRAL_POLICY_CODES],
853
- description: 'Required only for action="cancel_usage_referral". Cancel only one exact referral option with state="armed" from the legacy internal activeMissions field. Never call it a mission in member-facing copy.',
854
- },
855
- policyCodes: {
856
- type: 'array',
857
- items: {
858
- type: 'string',
859
- enum: [...HOSTED_USAGE_REFERRAL_POLICY_CODES],
860
- },
861
- minItems: 1,
862
- maxItems: HOSTED_USAGE_REFERRAL_POLICY_CODES.length,
863
- uniqueItems: true,
864
- description: 'Required only for action="arm_usage_referral". Send one exact set containing only available policies the current sender explicitly selected.',
865
- },
866
- groupLabel: {
867
- type: 'string',
868
- minLength: 1,
869
- maxLength: HOSTED_EXECUTION_ASSISTANT_ASK_TARGET_LABEL_MAX_CODE_POINTS,
870
- description: 'Optional only for action="ask". A visible group name the member would recognize, used only to disambiguate among joined groups; never an internal identifier.',
871
- },
872
- displayName: {
873
- type: 'string',
874
- minLength: 1,
875
- maxLength: HOSTED_RUNTIME_GROUP_DISPLAY_NAME_MAX_LENGTH,
876
- description: 'Group display name. Required for action="update_display_name"; optional for action="offer_access" only when it is the name the group chose or the exact name from the immediately preceding read_chat_name result.',
877
- },
878
- membershipId: {
879
- type: 'string',
880
- minLength: 1,
881
- description: 'Required only for action="leave_membership". Use the exact opaque membershipId from the immediately preceding list_memberships result; never guess it or take it from the user.',
882
- },
883
- avatarPrompt: {
884
- type: 'string',
885
- minLength: 1,
886
- maxLength: 4000,
887
- description: 'Optional only for action="share_contact_card" after an explicit request in a personal iMessage conversation. Generates a square Murph contact photo and sends a saveable vCard to that current conversation; omit it to share the canonical group card. status="unconfirmed" means the card may already have arrived: say so, ask the member to look, and only make another one if they say it is not there.',
888
- },
889
- avatarSource: {
890
- type: 'string',
891
- enum: ['generate', 'image_ref'],
892
- description: 'Required for action="set_chat_avatar". Generate a new square avatar or reuse an exact existing private image ref.',
893
- },
894
- prompt: {
895
- type: 'string',
896
- minLength: 1,
897
- maxLength: 4000,
898
- description: 'Required for action="set_chat_avatar" with avatarSource="generate". Prompt for one square group chat avatar.',
899
- },
900
- imageRef: {
901
- type: 'string',
902
- minLength: 1,
903
- maxLength: 1024,
904
- description: 'Required for action="set_chat_avatar" with avatarSource="image_ref". Use the exact JPG/PNG/WebP ref under raw/inbox/** (user-sent) or raw/captures/** (including generated captures); never invent or modify it.',
905
- },
906
- size: {
907
- type: 'string',
908
- enum: ['1024x1024'],
909
- default: '1024x1024',
910
- },
911
- quality: {
912
- type: 'string',
913
- enum: ['low', 'medium', 'high'],
914
- default: 'medium',
915
- },
916
- outputFormat: {
917
- type: 'string',
918
- enum: ['webp', 'png', 'jpeg'],
919
- default: 'webp',
920
- },
921
- alt: {
922
- anyOf: [
923
- { type: 'string', minLength: 1, maxLength: 500 },
924
- { type: 'null' },
925
- ],
926
- default: null,
927
- },
928
- referenceImageRefs: {
929
- type: 'array',
930
- maxItems: 16,
931
- default: [],
932
- description: GROUP_GENERATED_AVATAR_REFERENCE_IMAGE_REFS_DESCRIPTION,
933
- items: {
934
- type: 'string',
935
- minLength: 1,
936
- maxLength: 1024,
937
- },
938
- },
939
- projectionScopes: {
940
- type: 'array',
941
- maxItems: HOSTED_VAULT_SHARE_SELECTABLE_PROJECTION_SCOPES.length,
942
- items: GROUP_VAULT_SHARE_PROJECTION_SCOPE_SCHEMA,
943
- description: 'For ordinary read_shared, one to three exact consent-aware group projections, including additive exact-grant activation time when available. For read_shared with audience="group_email", the exact bounded projections allowed into this email composition; the trusted host intersects them with live recipient grants. For offer_access, omit projectionScopes to request every selectable permission by default, or supply the exact narrower set requested. Existing membership and other grants remain unchanged. The trusted host owns the exact consent copy and actual scope snapshot and uses a handled native consent path or a first-party link. Fresh native results include exact responseHandling; follow it.',
944
- },
945
- audience: {
946
- type: 'string',
947
- enum: ['group_email'],
948
- description: 'Optional only for read_shared in a scheduled group automation. group_email prepares the generic email effect, filters members and facts to currently eligible email recipients, and returns recipientCount, missingVerifiedEmailCount, and referenceAt without exposing addresses or authorization metadata.',
949
- },
950
- subject: {
951
- type: 'string',
952
- minLength: 1,
953
- maxLength: HOSTED_RUNTIME_GROUP_EMAIL_SUBJECT_MAX_LENGTH,
954
- description: 'Required only for send_email.',
955
- },
956
- html: {
957
- type: 'string',
958
- minLength: 1,
959
- maxLength: HOSTED_RUNTIME_GROUP_EMAIL_HTML_MAX_LENGTH,
960
- description: 'Required only for send_email.',
961
- },
962
- text: {
963
- anyOf: [
964
- {
815
+ tone: {
965
816
  type: 'string',
966
- maxLength: HOSTED_RUNTIME_GROUP_EMAIL_TEXT_MAX_LENGTH,
817
+ enum: assistantTonePreferenceValues,
967
818
  },
968
- { type: 'null' },
969
- ],
970
- default: null,
971
- description: 'Optional plain-text equivalent for send_email.',
972
- },
973
- standaloneLink: {
974
- type: 'boolean',
975
- description: 'For action="offer_access" only. Set true only when the room explicitly asks for a standalone link; otherwise omit it and let the trusted host choose the best presentation for this channel.',
976
- },
977
- message_ref: ASSISTANT_ACCEPTED_MESSAGE_REF_SCHEMA,
978
- date: {
979
- type: 'string',
980
- pattern: '^\\d{4}-\\d{2}-\\d{2}$',
981
- description: 'Required only for record_current_sender_daily_metric. Exact member-reported civil date in YYYY-MM-DD form. Do not infer a date when the sender did not provide enough context.',
982
- },
983
- metric: {
984
- type: 'string',
985
- enum: HOSTED_EXECUTION_MEMBER_REPORTED_DAILY_METRIC_KEYS,
986
- description: 'Required only for record_current_sender_daily_metric. Canonical daily metric slug already represented by the relevant group projection, such as steps.',
987
- },
988
- value: {
989
- type: 'number',
990
- description: 'Required only for record_current_sender_daily_metric. Exact numeric value explicitly supplied by the current sender or clearly legible in their supplied evidence.',
991
- },
992
- unit: {
993
- type: 'string',
994
- minLength: 1,
995
- maxLength: 80,
996
- pattern: '^[A-Za-z0-9._/%-]+$',
997
- description: 'Required only for record_current_sender_daily_metric. Canonical compact unit for the metric, such as count for steps.',
819
+ voice: {
820
+ type: 'string',
821
+ enum: assistantVoiceOptionIdValues,
822
+ },
823
+ },
998
824
  },
999
825
  },
1000
- required: ['action'],
1001
826
  },
1002
- };
1003
- const MURPH_GROUP_TOOL_ACTIONS_WITHOUT_REQUIRED_MESSAGE_REF = MURPH_GROUP_TOOL_BASE.inputSchema.properties.action.enum.filter((action) => !MURPH_GROUP_TOOL_ACTIONS_REQUIRING_ONLY_MESSAGE_REF.includes(action)
1004
- && !MURPH_GROUP_TOOL_DAILY_METRIC_ACTIONS.includes(action));
1005
- export const MURPH_GROUP_TOOL = {
1006
- ...MURPH_GROUP_TOOL_BASE,
1007
- inputSchema: {
1008
- allOf: [
1009
- MURPH_GROUP_TOOL_BASE.inputSchema,
827
+ context: {
828
+ type: 'string',
829
+ minLength: 1,
830
+ maxLength: HOSTED_RUNTIME_GROUP_CONTEXT_HANDOFF_MAX_CODE_POINTS,
831
+ description: 'Required only for action="handoff" after the member explicitly asks to post, share, or tell a joined group. Supply only bounded verified facts the group needs. Attribute member actions, claims, and experiences in third person to their memory-backed preferred display name, which joined groups already receive. If the name is not established in the current conversation, run `vault-cli memory show`; use "a member" only when canonical memory has no preferred name. Never write them as if Murph did, said, or experienced them. This is untrusted context, not final copy; the joined group Murph authors the message using its own conversation context.',
832
+ },
833
+ question: {
834
+ type: 'string',
835
+ minLength: 1,
836
+ maxLength: HOSTED_EXECUTION_ASSISTANT_ASK_QUESTION_MAX_CODE_POINTS,
837
+ description: 'Required only for action="ask" or action="ask_member". Ask one self-contained natural-language question. ask may use a joined group\'s read-only context; ask_member produces a proposed answer whose outgoing information is checked against the selected disclosure grant before sharing.',
838
+ },
839
+ permissionText: {
840
+ type: 'string',
841
+ minLength: 1,
842
+ maxLength: HOSTED_RUNTIME_GROUP_DISCLOSURE_PERMISSION_TEXT_MAX_CODE_POINTS,
843
+ description: 'Required only for action="post_disclosure_request". The exact concise natural-language description of the type of information a member may allow their private Murph to read and disclose to this group. The server shows this text in the consent request and reviews only each proposed outgoing answer against it before sharing.',
844
+ },
845
+ grantId: {
846
+ type: 'string',
847
+ minLength: 1,
848
+ maxLength: HOSTED_RUNTIME_ASSISTANT_ASK_REQUEST_ID_MAX_CODE_POINTS,
849
+ description: 'Required for action="ask_member" or action="revoke_disclosure_grant". For ask_member, use the exact server-issued grantId from read_current. For revoke_disclosure_grant, use the exact grantId from the immediately preceding list_memberships result. Never guess it or take it from the user.',
850
+ },
851
+ policyCode: {
852
+ type: 'string',
853
+ enum: [...HOSTED_USAGE_REFERRAL_POLICY_CODES],
854
+ description: 'Required only for action="cancel_usage_referral". Cancel only one exact referral option with state="armed" from the legacy internal activeMissions field. Never call it a mission in member-facing copy.',
855
+ },
856
+ policyCodes: {
857
+ type: 'array',
858
+ items: {
859
+ type: 'string',
860
+ enum: [...HOSTED_USAGE_REFERRAL_POLICY_CODES],
861
+ },
862
+ minItems: 1,
863
+ maxItems: HOSTED_USAGE_REFERRAL_POLICY_CODES.length,
864
+ uniqueItems: true,
865
+ description: 'Required only for action="arm_usage_referral". Send one exact set containing only available policies the current sender explicitly selected.',
866
+ },
867
+ groupLabel: {
868
+ type: 'string',
869
+ minLength: 1,
870
+ maxLength: HOSTED_EXECUTION_ASSISTANT_ASK_TARGET_LABEL_MAX_CODE_POINTS,
871
+ description: 'Optional only for action="ask" or action="handoff". A visible group name the member would recognize, used only to disambiguate among joined groups; never an internal identifier.',
872
+ },
873
+ displayName: {
874
+ type: 'string',
875
+ minLength: 1,
876
+ maxLength: HOSTED_RUNTIME_GROUP_DISPLAY_NAME_MAX_LENGTH,
877
+ description: 'Group display name. Required for action="update_display_name"; optional for action="offer_access" only when it is the name the group chose or the exact name from the immediately preceding read_chat_name result.',
878
+ },
879
+ membershipId: {
880
+ type: 'string',
881
+ minLength: 1,
882
+ description: 'Required only for action="leave_membership". Use the exact opaque membershipId from the immediately preceding list_memberships result; never guess it or take it from the user.',
883
+ },
884
+ avatarPrompt: {
885
+ type: 'string',
886
+ minLength: 1,
887
+ maxLength: 4000,
888
+ description: 'Optional only for action="share_contact_card" after an explicit request in a personal iMessage conversation. Generates a square Murph contact photo and sends a saveable vCard to that current conversation; omit it to share the canonical group card. status="unconfirmed" means the card may already have arrived: say so, ask the member to look, and only make another one if they say it is not there.',
889
+ },
890
+ avatarSource: {
891
+ type: 'string',
892
+ enum: ['generate', 'image_ref'],
893
+ description: 'Required for action="set_chat_avatar". Generate a new square avatar or reuse an exact existing private image ref.',
894
+ },
895
+ prompt: {
896
+ type: 'string',
897
+ minLength: 1,
898
+ maxLength: 4000,
899
+ description: 'Required for action="set_chat_avatar" with avatarSource="generate". Prompt for one square group chat avatar.',
900
+ },
901
+ imageRef: {
902
+ type: 'string',
903
+ minLength: 1,
904
+ maxLength: 1024,
905
+ description: 'Required for action="set_chat_avatar" with avatarSource="image_ref". Use the exact JPG/PNG/WebP ref under raw/inbox/** (user-sent) or raw/captures/** (including generated captures); never invent or modify it.',
906
+ },
907
+ size: {
908
+ type: 'string',
909
+ enum: ['1024x1024'],
910
+ default: '1024x1024',
911
+ },
912
+ quality: {
913
+ type: 'string',
914
+ enum: ['low', 'medium', 'high'],
915
+ default: 'medium',
916
+ },
917
+ outputFormat: {
918
+ type: 'string',
919
+ enum: ['webp', 'png', 'jpeg'],
920
+ default: 'webp',
921
+ },
922
+ alt: {
923
+ anyOf: [
924
+ { type: 'string', minLength: 1, maxLength: 500 },
925
+ { type: 'null' },
926
+ ],
927
+ default: null,
928
+ },
929
+ referenceImageRefs: {
930
+ type: 'array',
931
+ maxItems: 16,
932
+ default: [],
933
+ description: GROUP_GENERATED_AVATAR_REFERENCE_IMAGE_REFS_DESCRIPTION,
934
+ items: {
935
+ type: 'string',
936
+ minLength: 1,
937
+ maxLength: 1024,
938
+ },
939
+ },
940
+ projectionScopes: {
941
+ type: 'array',
942
+ maxItems: HOSTED_VAULT_SHARE_SELECTABLE_PROJECTION_SCOPES.length,
943
+ items: GROUP_VAULT_SHARE_PROJECTION_SCOPE_SCHEMA,
944
+ description: 'For ordinary read_shared, one to three exact consent-aware group projections, including additive exact-grant activation time when available. For read_shared with audience="group_email", the exact bounded projections allowed into this email composition; the trusted host intersects them with live recipient grants. For offer_access, omit projectionScopes to request every selectable permission by default, or supply the exact narrower set requested. Existing membership and other grants remain unchanged. The trusted host owns the exact consent copy and actual scope snapshot and uses a handled native consent path or a first-party link. Fresh native results include exact responseHandling; follow it.',
945
+ },
946
+ audience: {
947
+ type: 'string',
948
+ enum: ['group_email'],
949
+ description: 'Optional only for read_shared in a scheduled group automation. group_email prepares the generic email effect, filters members and facts to currently eligible email recipients, and returns recipientCount, missingVerifiedEmailCount, and referenceAt without exposing addresses or authorization metadata.',
950
+ },
951
+ subject: {
952
+ type: 'string',
953
+ minLength: 1,
954
+ maxLength: HOSTED_RUNTIME_GROUP_EMAIL_SUBJECT_MAX_LENGTH,
955
+ description: 'Required only for send_email.',
956
+ },
957
+ html: {
958
+ type: 'string',
959
+ minLength: 1,
960
+ maxLength: HOSTED_RUNTIME_GROUP_EMAIL_HTML_MAX_LENGTH,
961
+ description: 'Required only for send_email.',
962
+ },
963
+ text: {
964
+ anyOf: [
1010
965
  {
1011
- oneOf: [
1012
- {
1013
- type: 'object',
1014
- maxProperties: 6,
1015
- properties: {
1016
- action: {
1017
- type: 'string',
1018
- enum: MURPH_GROUP_TOOL_DAILY_METRIC_ACTIONS,
1019
- },
1020
- date: MURPH_GROUP_TOOL_BASE.inputSchema.properties.date,
1021
- message_ref: ASSISTANT_ACCEPTED_MESSAGE_REF_SCHEMA,
1022
- metric: MURPH_GROUP_TOOL_BASE.inputSchema.properties.metric,
1023
- unit: MURPH_GROUP_TOOL_BASE.inputSchema.properties.unit,
1024
- value: MURPH_GROUP_TOOL_BASE.inputSchema.properties.value,
1025
- },
1026
- required: [
1027
- 'action',
1028
- 'date',
1029
- 'message_ref',
1030
- 'metric',
1031
- 'unit',
1032
- 'value',
1033
- ],
1034
- },
1035
- {
1036
- type: 'object',
1037
- maxProperties: 2,
1038
- properties: {
1039
- action: {
1040
- type: 'string',
1041
- enum: MURPH_GROUP_TOOL_ACTIONS_REQUIRING_ONLY_MESSAGE_REF,
1042
- },
1043
- message_ref: ASSISTANT_ACCEPTED_MESSAGE_REF_SCHEMA,
1044
- },
1045
- required: ['action', 'message_ref'],
1046
- },
1047
- {
1048
- type: 'object',
1049
- properties: {
1050
- action: {
1051
- type: 'string',
1052
- enum: MURPH_GROUP_TOOL_ACTIONS_WITHOUT_REQUIRED_MESSAGE_REF,
1053
- },
1054
- },
1055
- required: ['action'],
1056
- },
1057
- ],
966
+ type: 'string',
967
+ maxLength: HOSTED_RUNTIME_GROUP_EMAIL_TEXT_MAX_LENGTH,
1058
968
  },
969
+ { type: 'null' },
1059
970
  ],
971
+ default: null,
972
+ description: 'Optional plain-text equivalent for send_email.',
973
+ },
974
+ standaloneLink: {
975
+ type: 'boolean',
976
+ description: 'For action="offer_access" only. Set true only when the room explicitly asks for a standalone link; otherwise omit it and let the trusted host choose the best presentation for this channel.',
977
+ },
978
+ message_ref: ASSISTANT_ACCEPTED_MESSAGE_REF_SCHEMA,
979
+ date: {
980
+ type: 'string',
981
+ pattern: '^\\d{4}-\\d{2}-\\d{2}$',
982
+ description: 'Required only for record_current_sender_daily_metric. Exact member-reported civil date in YYYY-MM-DD form. Do not infer a date when the sender did not provide enough context.',
1060
983
  },
984
+ metric: {
985
+ type: 'string',
986
+ enum: HOSTED_EXECUTION_MEMBER_REPORTED_DAILY_METRIC_KEYS,
987
+ description: 'Required only for record_current_sender_daily_metric. Canonical daily metric slug already represented by the relevant group projection, such as steps.',
988
+ },
989
+ value: {
990
+ type: 'number',
991
+ description: 'Required only for record_current_sender_daily_metric. Exact numeric value explicitly supplied by the current sender or clearly legible in their supplied evidence.',
992
+ },
993
+ unit: {
994
+ type: 'string',
995
+ minLength: 1,
996
+ maxLength: 80,
997
+ pattern: '^[A-Za-z0-9._/%-]+$',
998
+ description: 'Required only for record_current_sender_daily_metric. Canonical compact unit for the metric, such as count for steps.',
999
+ },
1000
+ };
1001
+ const MURPH_GROUP_TOOL_FAMILY_PROPERTIES = {
1002
+ group_consult: [
1003
+ 'context', 'grantId', 'groupLabel', 'message_ref', 'question',
1004
+ ],
1005
+ group_data: [
1006
+ 'audience', 'date', 'displayName', 'grantId', 'message_ref', 'metric',
1007
+ 'permissionText', 'projectionScopes', 'standaloneLink', 'unit', 'value',
1008
+ ],
1009
+ group_membership: ['membershipId', 'setup'],
1010
+ group_usage: ['message_ref', 'policyCode', 'policyCodes'],
1011
+ group_chat: [
1012
+ 'alt', 'avatarPrompt', 'avatarSource', 'displayName', 'imageRef',
1013
+ 'outputFormat', 'prompt', 'quality', 'referenceImageRefs', 'size',
1014
+ ],
1015
+ group_email: ['html', 'subject', 'text'],
1016
+ };
1017
+ function buildMurphGroupFamilyInputSchema(name) {
1018
+ const actions = MURPH_GROUP_TOOL_FAMILY_ACTIONS[name];
1019
+ return {
1020
+ type: 'object',
1021
+ additionalProperties: false,
1022
+ properties: {
1023
+ action: { type: 'string', enum: actions },
1024
+ ...Object.fromEntries(MURPH_GROUP_TOOL_FAMILY_PROPERTIES[name].map((propertyName) => [
1025
+ propertyName,
1026
+ MURPH_GROUP_TOOL_PROPERTIES[propertyName],
1027
+ ])),
1028
+ },
1029
+ required: ['action'],
1030
+ };
1031
+ }
1032
+ function buildMurphGroupFamilyTool(input) {
1033
+ return {
1034
+ namespace: 'murph',
1035
+ name: input.name,
1036
+ deferLoading: true,
1037
+ description: input.description,
1038
+ inputSchema: buildMurphGroupFamilyInputSchema(input.name),
1039
+ };
1040
+ }
1041
+ export const MURPH_GROUP_CONSULT_TOOL = buildMurphGroupFamilyTool({
1042
+ name: 'group_consult',
1043
+ description: 'Ask or hand off; the host binds group/member/sender authority. Use message_current_sender for a complete private current-sender request. Call clarify_current_sender before a needed follow-up. Use continue_current_sender_privately or continue_current_sender_in_group only for a later reply to that clarification, never a fresh request. Accepted handoff is queued, not sent; never say told, shared, or posted.',
1044
+ });
1045
+ export const MURPH_GROUP_DATA_TOOL = buildMurphGroupFamilyTool({
1046
+ name: 'group_data',
1047
+ description: 'Read shared data, record sender metrics, or manage disclosure/access.',
1048
+ });
1049
+ export const MURPH_GROUP_MEMBERSHIP_TOOL = buildMurphGroupFamilyTool({
1050
+ name: 'group_membership',
1051
+ description: 'Read/change membership or next-group setup.',
1052
+ });
1053
+ export const MURPH_GROUP_USAGE_TOOL = buildMurphGroupFamilyTool({
1054
+ name: 'group_usage',
1055
+ description: 'Read usage/referrals or set one referral choice.',
1056
+ });
1057
+ export const MURPH_GROUP_CHAT_TOOL = buildMurphGroupFamilyTool({
1058
+ name: 'group_chat',
1059
+ description: 'Read/update chat, avatar, participants, or contact card.',
1060
+ });
1061
+ export const MURPH_GROUP_EMAIL_TOOL = buildMurphGroupFamilyTool({
1062
+ name: 'group_email',
1063
+ description: 'Queue email after a consent-aware group_data read.',
1064
+ });
1065
+ export const MURPH_GROUP_FAMILY_TOOLS = [
1066
+ MURPH_GROUP_CONSULT_TOOL,
1067
+ MURPH_GROUP_DATA_TOOL,
1068
+ MURPH_GROUP_MEMBERSHIP_TOOL,
1069
+ MURPH_GROUP_USAGE_TOOL,
1070
+ MURPH_GROUP_CHAT_TOOL,
1071
+ MURPH_GROUP_EMAIL_TOOL,
1072
+ ];
1073
+ export const MURPH_GROUP_TOOL_ROOT_KEYS_BY_NAME = {
1074
+ group: ['action', ...Object.keys(MURPH_GROUP_TOOL_PROPERTIES)],
1075
+ group_consult: Object.keys(MURPH_GROUP_CONSULT_TOOL.inputSchema.properties),
1076
+ group_data: Object.keys(MURPH_GROUP_DATA_TOOL.inputSchema.properties),
1077
+ group_membership: Object.keys(MURPH_GROUP_MEMBERSHIP_TOOL.inputSchema.properties),
1078
+ group_usage: Object.keys(MURPH_GROUP_USAGE_TOOL.inputSchema.properties),
1079
+ group_chat: Object.keys(MURPH_GROUP_CHAT_TOOL.inputSchema.properties),
1080
+ group_email: Object.keys(MURPH_GROUP_EMAIL_TOOL.inputSchema.properties),
1061
1081
  };
1062
1082
  export const MURPH_SEND_VAULT_FILE_TOOL = {
1063
1083
  namespace: 'murph',
@@ -1272,9 +1292,10 @@ const MURPH_BASE_DYNAMIC_TOOLS = [
1272
1292
  MURPH_PLAN_USAGE_TOOL,
1273
1293
  MURPH_IMESSAGE_CONTACT_TOOL,
1274
1294
  MURPH_SUBSCRIPTION_TOOL,
1275
- MURPH_GROUP_TOOL,
1295
+ ...MURPH_GROUP_FAMILY_TOOLS,
1276
1296
  MURPH_GROUP_ROOM_MODEL_TOOL,
1277
1297
  MURPH_GENERATE_SONG_TOOL,
1298
+ MURPH_ANALYZE_VIDEO_TOOL,
1278
1299
  MURPH_ASK_GROK_TOOL,
1279
1300
  MURPH_SUBMIT_PRODUCT_FEEDBACK_TOOL,
1280
1301
  MURPH_SEND_VAULT_FILE_TOOL,
@@ -1286,6 +1307,7 @@ const MURPH_BASE_DYNAMIC_TOOLS = [
1286
1307
  MURPH_CREATE_PHONE_CALL_TOOL,
1287
1308
  MURPH_GET_PHONE_CALL_STATUS_TOOL,
1288
1309
  MURPH_STOP_PHONE_CALL_TOOL,
1310
+ MURPH_RESOLVE_PHYSICAL_NOTE_TOOL,
1289
1311
  MURPH_SEND_PHYSICAL_NOTE_TOOL,
1290
1312
  MURPH_LABS_TOOL,
1291
1313
  ];
@@ -1325,18 +1347,20 @@ const TOOL_AVAILABILITY = new Map([
1325
1347
  [MURPH_PLAN_USAGE_TOOL, defaultOff((a) => a.planUsageAvailable)],
1326
1348
  [MURPH_IMESSAGE_CONTACT_TOOL, defaultOff((a) => a.imessageContactAvailable)],
1327
1349
  [MURPH_SUBSCRIPTION_TOOL, defaultOff((a) => a.subscriptionAvailable)],
1328
- [MURPH_GROUP_TOOL, defaultOff((a) => a.groupAvailable)],
1350
+ ...MURPH_GROUP_FAMILY_TOOLS.map((tool) => [tool, defaultOff((a) => a.groupAvailable)]),
1329
1351
  [MURPH_GROUP_ROOM_MODEL_TOOL, defaultOff((a) => a.groupRoomModelAvailable)],
1330
1352
  [MURPH_PERSONALIZATION_TOOL, defaultOff((a) => a.personalizationAvailable)],
1331
1353
  [MURPH_GENERATE_VOICE_MEMO_TOOL, defaultOff((a) => a.voiceMemoGenerationAvailable)],
1332
1354
  [MURPH_GENERATE_SONG_TOOL, defaultOff((a) => a.voiceMemoGenerationAvailable)],
1333
1355
  [MURPH_GENERATE_IMAGE_TOOL, defaultOn((a) => a.imageGenerationAvailable)],
1356
+ [MURPH_ANALYZE_VIDEO_TOOL, defaultOff((a) => a.analyzeVideoAvailable)],
1334
1357
  [MURPH_ASK_GROK_TOOL, defaultOff((a) => a.askGrokAvailable)],
1335
1358
  [MURPH_SEND_VAULT_FILE_TOOL, defaultOff((a) => a.vaultFileSendAvailable)],
1336
1359
  [MURPH_PENDING_VAULT_FILES_TOOL, defaultOff((a) => a.pendingVaultFilesAvailable)],
1337
1360
  [MURPH_CREATE_PHONE_CALL_TOOL, defaultOff((a) => a.phoneCallsAvailable)],
1338
1361
  [MURPH_GET_PHONE_CALL_STATUS_TOOL, defaultOff((a) => a.phoneCallStatusAvailable)],
1339
1362
  [MURPH_STOP_PHONE_CALL_TOOL, defaultOff((a) => a.phoneCallStopAvailable)],
1363
+ [MURPH_RESOLVE_PHYSICAL_NOTE_TOOL, defaultOff((a) => a.physicalNoteRecoveryAvailable)],
1340
1364
  [MURPH_SEND_PHYSICAL_NOTE_TOOL, defaultOff((a) => a.physicalNotesAvailable)],
1341
1365
  ...MURPH_COMPUTER_DYNAMIC_TOOLS.map((tool) => [tool, defaultOff((a) => a.computerToolsAvailable)]),
1342
1366
  [MURPH_CONNECTED_APPS_MANAGE_TOOL, defaultOff((a) => a.connectedAppsAvailable && a.connectedAppsManageAvailable !== false)],