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