@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
|
-
import { type WorkoutSessionDetailV1 } from '@murphai/contracts';
|
|
2
|
-
import { type ApplyLiveWorkoutMemberActionInput, type ApplyLiveWorkoutMemberActionResult, type AddLiveWorkoutExerciseInput, type ClearLiveWorkoutSetInput, type FinishLiveWorkoutInput, type
|
|
1
|
+
import { type WorkoutLiveSnapshotMemberActionResultV1, type WorkoutLiveSnapshotMemberActionV1, type WorkoutSessionDetailV1 } from '@murphai/contracts';
|
|
2
|
+
import { type ApplyLiveWorkoutMemberActionInput, type ApplyLiveWorkoutMemberActionResult, type AddLiveWorkoutExerciseInput, type ClearLiveWorkoutSetInput, type FinishLiveWorkoutInput, type LogLiveWorkoutSetInput, type SetLiveWorkoutExerciseRepsInput, type StartLiveWorkoutInput } from './workout-live-model.js';
|
|
3
3
|
export * from './workout-live-model.js';
|
|
4
4
|
export declare function readLiveWorkoutCardEditor(input: {
|
|
5
5
|
presentation: WorkoutSessionDetailV1;
|
|
@@ -9,6 +9,16 @@ export declare function readLiveWorkoutCardEditor(input: {
|
|
|
9
9
|
editor: import("@murphai/contracts").WorkoutSessionEditorProjectionV1;
|
|
10
10
|
workout: WorkoutSessionDetailV1;
|
|
11
11
|
} | null>;
|
|
12
|
+
export declare function readLiveWorkoutCardSnapshot(input: {
|
|
13
|
+
action: WorkoutLiveSnapshotMemberActionV1;
|
|
14
|
+
vault: string;
|
|
15
|
+
}): Promise<{
|
|
16
|
+
result: WorkoutLiveSnapshotMemberActionResultV1;
|
|
17
|
+
status: 'unchanged';
|
|
18
|
+
} | {
|
|
19
|
+
reason: 'workout_changed';
|
|
20
|
+
status: 'rejected';
|
|
21
|
+
}>;
|
|
12
22
|
export declare function applyLiveWorkoutMemberAction(input: ApplyLiveWorkoutMemberActionInput): Promise<ApplyLiveWorkoutMemberActionResult>;
|
|
13
23
|
export declare function startLiveWorkout(input: StartLiveWorkoutInput): Promise<{
|
|
14
24
|
vault: string;
|
|
@@ -80,6 +90,8 @@ export declare function startLiveWorkout(input: StartLiveWorkoutInput): Promise<
|
|
|
80
90
|
mode?: "assisted_bodyweight" | "bodyweight" | "cardio" | "duration" | "weight_reps" | "weighted_bodyweight" | undefined;
|
|
81
91
|
unitOverride?: "kg" | "lb" | undefined;
|
|
82
92
|
note?: string | undefined;
|
|
93
|
+
memberRepsPerSet?: number | undefined;
|
|
94
|
+
setPlanIsFinite?: boolean | undefined;
|
|
83
95
|
sets: {
|
|
84
96
|
order: number;
|
|
85
97
|
type?: "dropset" | "failure" | "normal" | "warmup" | undefined;
|
|
@@ -99,11 +111,11 @@ export declare function startLiveWorkout(input: StartLiveWorkoutInput): Promise<
|
|
|
99
111
|
manifestFile: string | null;
|
|
100
112
|
note: string;
|
|
101
113
|
}>;
|
|
102
|
-
export declare function
|
|
114
|
+
export declare function addLiveWorkoutExercise(input: AddLiveWorkoutExerciseInput): Promise<{
|
|
103
115
|
vault: string;
|
|
104
116
|
entity: import("../helpers.ts").CommandShowEntity;
|
|
105
117
|
}>;
|
|
106
|
-
export declare function
|
|
118
|
+
export declare function setLiveWorkoutExerciseReps(input: SetLiveWorkoutExerciseRepsInput): Promise<{
|
|
107
119
|
vault: string;
|
|
108
120
|
entity: import("../helpers.ts").CommandShowEntity;
|
|
109
121
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workout-live.d.ts","sourceRoot":"","sources":["../../src/usecases/workout-live.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"workout-live.d.ts","sourceRoot":"","sources":["../../src/usecases/workout-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uCAAuC,EAC5C,KAAK,iCAAiC,EAMtC,KAAK,sBAAsB,EAQ5B,MAAM,oBAAoB,CAAA;AAc3B,OAAO,EAEL,KAAK,iCAAiC,EACtC,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAE3B,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAQ3B,MAAM,yBAAyB,CAAA;AAqBhC,cAAc,yBAAyB,CAAA;AAEvC,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,YAAY,EAAE,sBAAsB,CAAA;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;;;UAYA;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,MAAM,EAAE,iCAAiC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,OAAO,CACP;IACE,MAAM,EAAE,uCAAuC,CAAA;IAC/C,MAAM,EAAE,WAAW,CAAA;CACpB,GACD;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CACpD,CAsBA;AA+CD,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,kCAAkC,CAAC,CA+B7C;AAmhBD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFlE;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B;;;GAMnC;AA+DD,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,+BAA+B;;;GAMvC;AAoDD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB;;;GAKpE;AAiGD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB;;;GAKxE;AAkCD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB;;;GAIpE"}
|
|
@@ -1,24 +1,79 @@
|
|
|
1
|
-
import { memberActionIdV1Schema, workoutLiveApplyMemberActionV1Schema, workoutSessionSchema, workoutTemplateSchema, } from '@murphai/contracts';
|
|
1
|
+
import { memberActionIdV1Schema, workoutLiveApplyMemberActionV1Schema, workoutLiveSnapshotMemberActionV1Schema, workoutSessionSchema, workoutTemplateSchema, } from '@murphai/contracts';
|
|
2
2
|
import { VaultCliError } from '@murphai/operator-config/vault-cli-errors';
|
|
3
|
-
import {
|
|
3
|
+
import { deriveWorkoutSetRemovalBinding, hasAmbiguousWorkoutActionExerciseCoordinates, workoutActionBindingMatchesCurrentState, } from '@murphai/operator-config/workout-action-binding';
|
|
4
|
+
import { encodeWorkoutSessionSnapshotAppCardUrl } from '@murphai/operator-config/assistant-response-cards';
|
|
4
5
|
import { showWorkoutFormat } from './workout-format.js';
|
|
5
|
-
import { addStructuredWorkoutRecord, editWorkoutRecord } from './workout.js';
|
|
6
|
-
import { LIVE_WORKOUT_SOURCE_APP, buildLiveWorkoutCardEditor, buildLiveWorkoutSessionFromTemplate, elapsedDurationMinutes, hasLoggedWorkoutSet, } from './workout-live-model.js';
|
|
7
|
-
import { assertTargetableLiveWorkout, compactSetPatch,
|
|
6
|
+
import { addStructuredWorkoutRecord, editWorkoutRecord, } from './workout.js';
|
|
7
|
+
import { LIVE_WORKOUT_SOURCE_APP, buildLiveWorkoutCardEditor, buildLiveWorkoutCardSnapshot, buildLiveWorkoutSessionFromTemplate, elapsedDurationMinutes, hasCompletedFiniteLiveWorkoutPlan, hasLoggedWorkoutSet, isOpenLiveWorkout, } from './workout-live-model.js';
|
|
8
|
+
import { assertTargetableLiveWorkout, compactSetPatch, findLiveWorkoutActionTargets, findLiveWorkoutRefreshTargets, normalizeLiveWorkoutActivityType, normalizeOptionalText, normalizeWorkoutTimestamp, optionalString, parseShownWorkout, requireLiveWorkoutSetOrder, requireNonEmptyText, requireString, resolveExerciseIndex, resolveLiveWorkout, updateLiveWorkoutExercises, withLiveWorkoutMutationLock, } from './workout-live-state.js';
|
|
8
9
|
export * from './workout-live-model.js';
|
|
9
10
|
export async function readLiveWorkoutCardEditor(input) {
|
|
10
11
|
const shown = await resolveLiveWorkout({
|
|
11
12
|
vault: input.vault,
|
|
12
13
|
workoutId: input.workoutId,
|
|
13
|
-
}, {
|
|
14
|
+
}, { requireOpen: true });
|
|
14
15
|
const workout = parseShownWorkout(shown);
|
|
15
|
-
assertTargetableLiveWorkout(workout
|
|
16
|
+
assertTargetableLiveWorkout(workout);
|
|
16
17
|
return buildLiveWorkoutCardEditor({
|
|
17
18
|
presentation: input.presentation,
|
|
18
19
|
workout,
|
|
19
20
|
workoutId: shown.entity.id,
|
|
20
21
|
});
|
|
21
22
|
}
|
|
23
|
+
export async function readLiveWorkoutCardSnapshot(input) {
|
|
24
|
+
if (!workoutLiveSnapshotMemberActionV1Schema.safeParse(input.action).success) {
|
|
25
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
26
|
+
}
|
|
27
|
+
const targets = await findLiveWorkoutRefreshTargets(input.vault, input.action.workoutBinding);
|
|
28
|
+
if (targets.length !== 1) {
|
|
29
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
30
|
+
}
|
|
31
|
+
const cardUrl = buildLiveWorkoutMemberActionCardUrl({
|
|
32
|
+
presentation: input.action.presentation,
|
|
33
|
+
shown: targets[0],
|
|
34
|
+
});
|
|
35
|
+
if (cardUrl === null) {
|
|
36
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
result: { cardUrl, kind: 'workout.live.snapshot', version: 1 },
|
|
40
|
+
status: 'unchanged',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function buildLiveWorkoutMemberActionCardUrl(input) {
|
|
44
|
+
try {
|
|
45
|
+
const snapshot = buildLiveWorkoutCardSnapshot({
|
|
46
|
+
presentation: input.presentation.workout,
|
|
47
|
+
workout: parseShownWorkout(input.shown),
|
|
48
|
+
workoutId: input.shown.entity.id,
|
|
49
|
+
});
|
|
50
|
+
if (snapshot === null)
|
|
51
|
+
return null;
|
|
52
|
+
return encodeWorkoutSessionSnapshotAppCardUrl({
|
|
53
|
+
...input.presentation,
|
|
54
|
+
...(snapshot.editor === null ? {} : { editor: snapshot.editor }),
|
|
55
|
+
workout: snapshot.workout,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function buildLiveWorkoutApplySuccess(input) {
|
|
63
|
+
if (input.action.presentation === undefined) {
|
|
64
|
+
return { status: input.status };
|
|
65
|
+
}
|
|
66
|
+
const cardUrl = buildLiveWorkoutMemberActionCardUrl({
|
|
67
|
+
presentation: input.action.presentation,
|
|
68
|
+
shown: input.shown,
|
|
69
|
+
});
|
|
70
|
+
return cardUrl === null
|
|
71
|
+
? { status: input.status }
|
|
72
|
+
: {
|
|
73
|
+
result: { cardUrl, kind: 'workout.live.apply', version: 1 },
|
|
74
|
+
status: input.status,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
22
77
|
const MAX_LIVE_WORKOUT_EXERCISES = 100;
|
|
23
78
|
const MAX_LIVE_WORKOUT_SETS_PER_EXERCISE = 150;
|
|
24
79
|
export async function applyLiveWorkoutMemberAction(input) {
|
|
@@ -26,28 +81,45 @@ export async function applyLiveWorkoutMemberAction(input) {
|
|
|
26
81
|
|| !memberActionIdV1Schema.safeParse(input.actionId).success) {
|
|
27
82
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
28
83
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const candidates = await findLiveWorkoutsForMemberAction(input.vault, input.actionId);
|
|
33
|
-
if (candidates.exactReplays.length > 0) {
|
|
34
|
-
if (candidates.exactReplays.length !== 1) {
|
|
84
|
+
const targets = await findLiveWorkoutActionTargets(input.vault, input.actionId, input.action.expectedWorkout.actionBinding);
|
|
85
|
+
if (targets.exactReplays.length > 0) {
|
|
86
|
+
if (targets.exactReplays.length !== 1) {
|
|
35
87
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
36
88
|
}
|
|
37
|
-
return {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
89
|
+
return buildLiveWorkoutApplySuccess({
|
|
90
|
+
action: input.action,
|
|
91
|
+
shown: targets.exactReplays[0],
|
|
92
|
+
status: 'unchanged',
|
|
93
|
+
});
|
|
42
94
|
}
|
|
43
|
-
if (
|
|
44
|
-
return { reason: '
|
|
95
|
+
if (targets.bindingMatches.length !== 1) {
|
|
96
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
45
97
|
}
|
|
46
|
-
const
|
|
98
|
+
const workoutId = targets.bindingMatches[0].entity.id;
|
|
99
|
+
return withLiveWorkoutMutationLock(input.vault, workoutId, () => applyLiveWorkoutMemberActionWithLockHeld(input, workoutId));
|
|
100
|
+
}
|
|
101
|
+
async function applyLiveWorkoutMemberActionWithLockHeld(input, workoutId) {
|
|
102
|
+
let shown;
|
|
47
103
|
let workout;
|
|
104
|
+
let acceptedAt;
|
|
48
105
|
try {
|
|
106
|
+
shown = await resolveLiveWorkout({
|
|
107
|
+
vault: input.vault,
|
|
108
|
+
workoutId,
|
|
109
|
+
});
|
|
49
110
|
workout = parseShownWorkout(shown);
|
|
50
|
-
|
|
111
|
+
if (workout.lastMemberActionId === input.actionId) {
|
|
112
|
+
return buildLiveWorkoutApplySuccess({
|
|
113
|
+
action: input.action,
|
|
114
|
+
shown,
|
|
115
|
+
status: 'unchanged',
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
if (!isOpenLiveWorkout(workout)) {
|
|
119
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
120
|
+
}
|
|
121
|
+
assertTargetableLiveWorkout(workout);
|
|
122
|
+
acceptedAt = normalizeWorkoutTimestamp(input.acceptedAt, 'acceptedAt');
|
|
51
123
|
}
|
|
52
124
|
catch {
|
|
53
125
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
@@ -55,18 +127,16 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
55
127
|
if (hasAmbiguousWorkoutActionExerciseCoordinates(workout)) {
|
|
56
128
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
57
129
|
}
|
|
58
|
-
if (input.action.expectedWorkout.actionBinding
|
|
59
|
-
!== deriveWorkoutActionBinding(shown.entity.id, workout)) {
|
|
130
|
+
if (!workoutActionBindingMatchesCurrentState(shown.entity.id, workout, input.action.expectedWorkout.actionBinding)) {
|
|
60
131
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
61
132
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|| typeof workout.startedAt !== 'string'
|
|
65
|
-
|| Date.parse(workout.startedAt) > acceptedAtMs) {
|
|
133
|
+
if (typeof workout.startedAt !== 'string'
|
|
134
|
+
|| Date.parse(workout.startedAt) > Date.parse(acceptedAt)) {
|
|
66
135
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
67
136
|
}
|
|
68
|
-
const
|
|
137
|
+
const beforeExercises = structuredClone(workout.exercises)
|
|
69
138
|
.sort((left, right) => left.order - right.order);
|
|
139
|
+
const exercises = structuredClone(beforeExercises);
|
|
70
140
|
if (input.action.mutations.some((mutation) => mutation.kind === 'set.remove')
|
|
71
141
|
&& input.action.expectedWorkout.setRemovalBinding
|
|
72
142
|
!== deriveWorkoutSetRemovalBinding(shown.entity.id, exercises)) {
|
|
@@ -76,6 +146,7 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
76
146
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
77
147
|
}
|
|
78
148
|
const appendMutations = input.action.mutations.filter((mutation) => mutation.kind === 'exercise.append');
|
|
149
|
+
const renameMutations = input.action.mutations.filter((mutation) => mutation.kind === 'exercise.rename');
|
|
79
150
|
const removeMutations = input.action.mutations.filter((mutation) => mutation.kind === 'set.remove').sort((left, right) => left.exercisePosition === right.exercisePosition
|
|
80
151
|
? right.setPosition - left.setPosition
|
|
81
152
|
: left.exercisePosition - right.exercisePosition);
|
|
@@ -107,11 +178,13 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
107
178
|
...(mutation.unitOverride
|
|
108
179
|
? { unitOverride: mutation.unitOverride }
|
|
109
180
|
: {}),
|
|
181
|
+
setPlanIsFinite: true,
|
|
110
182
|
sets: Array.from({ length: mutation.setCount }, (_, index) => ({
|
|
111
183
|
order: index + 1,
|
|
112
184
|
})),
|
|
113
185
|
});
|
|
114
186
|
}
|
|
187
|
+
const completedPendingSet = memberActionCompletesPendingSet(exercises, input.action);
|
|
115
188
|
if (!applyMemberActionSetPuts(exercises, existingSetMutations)) {
|
|
116
189
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
117
190
|
}
|
|
@@ -122,8 +195,7 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
122
195
|
}
|
|
123
196
|
exercise.sets.sort((left, right) => left.order - right.order);
|
|
124
197
|
const existing = exercise.sets[mutation.setPosition - 1];
|
|
125
|
-
if (!existing
|
|
126
|
-
|| exercise.sets.length <= 1) {
|
|
198
|
+
if (!existing || exercise.sets.length <= 1) {
|
|
127
199
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
128
200
|
}
|
|
129
201
|
exercise.sets.splice(mutation.setPosition - 1, 1);
|
|
@@ -134,6 +206,13 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
134
206
|
if (!applyMemberActionSetAppends(exercises, newSetMutations)) {
|
|
135
207
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
136
208
|
}
|
|
209
|
+
if (!applyMemberActionExerciseRenames(exercises, renameMutations, input.action.expectedWorkout.exercises)) {
|
|
210
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
211
|
+
}
|
|
212
|
+
if (renameMutations.length > 0
|
|
213
|
+
&& hasAmbiguousWorkoutActionExerciseCoordinates({ exercises })) {
|
|
214
|
+
return { reason: 'workout_changed', status: 'rejected' };
|
|
215
|
+
}
|
|
137
216
|
const parsed = workoutSessionSchema.safeParse({
|
|
138
217
|
...workout,
|
|
139
218
|
exercises,
|
|
@@ -141,13 +220,59 @@ async function applyLiveWorkoutMemberActionWithLockHeld(input) {
|
|
|
141
220
|
if (!parsed.success) {
|
|
142
221
|
return { reason: 'workout_changed', status: 'rejected' };
|
|
143
222
|
}
|
|
223
|
+
const endedAt = resolveObservedWorkoutEndBoundary({
|
|
224
|
+
afterExercises: parsed.data.exercises,
|
|
225
|
+
appendedExtraSet: newSetMutations.some((mutation) => mutation.result !== null),
|
|
226
|
+
beforeExercises,
|
|
227
|
+
completedPendingSet,
|
|
228
|
+
observedAt: acceptedAt,
|
|
229
|
+
workout,
|
|
230
|
+
});
|
|
144
231
|
const changed = JSON.stringify(parsed.data.exercises)
|
|
145
|
-
!== JSON.stringify(workout.exercises)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
:
|
|
149
|
-
|
|
150
|
-
|
|
232
|
+
!== JSON.stringify(workout.exercises)
|
|
233
|
+
|| endedAt !== undefined;
|
|
234
|
+
const updated = await updateLiveWorkoutExercises(shown, workout, parsed.data.exercises, {
|
|
235
|
+
...(endedAt === undefined ? {} : { endedAt }),
|
|
236
|
+
lastMemberActionId: input.actionId,
|
|
237
|
+
observedAt: acceptedAt,
|
|
238
|
+
});
|
|
239
|
+
return buildLiveWorkoutApplySuccess({
|
|
240
|
+
action: input.action,
|
|
241
|
+
shown: updated,
|
|
242
|
+
status: changed ? 'applied' : 'unchanged',
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
function memberActionCompletesPendingSet(exercises, action) {
|
|
246
|
+
return action.mutations.some((mutation) => {
|
|
247
|
+
if (mutation.kind === 'set.append') {
|
|
248
|
+
return mutation.result !== null;
|
|
249
|
+
}
|
|
250
|
+
if (mutation.kind !== 'set.put') {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
const exercise = exercises[mutation.exercisePosition - 1];
|
|
254
|
+
const set = exercise?.sets
|
|
255
|
+
.slice()
|
|
256
|
+
.sort((left, right) => left.order - right.order)[mutation.setPosition - 1];
|
|
257
|
+
return set !== undefined && !hasLoggedWorkoutSet(set);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
function resolveObservedWorkoutEndBoundary(input) {
|
|
261
|
+
if (input.workout.endedAt !== undefined) {
|
|
262
|
+
return input.appendedExtraSet ? input.observedAt : undefined;
|
|
263
|
+
}
|
|
264
|
+
if (!input.completedPendingSet) {
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
const beforeComplete = hasCompletedFiniteLiveWorkoutPlan({
|
|
268
|
+
...input.workout,
|
|
269
|
+
exercises: input.beforeExercises,
|
|
270
|
+
});
|
|
271
|
+
const afterComplete = hasCompletedFiniteLiveWorkoutPlan({
|
|
272
|
+
...input.workout,
|
|
273
|
+
exercises: input.afterExercises,
|
|
274
|
+
});
|
|
275
|
+
return !beforeComplete && afterComplete ? input.observedAt : undefined;
|
|
151
276
|
}
|
|
152
277
|
function applyMemberActionSetPuts(exercises, mutations) {
|
|
153
278
|
for (const mutation of mutations) {
|
|
@@ -177,6 +302,20 @@ function applyMemberActionSetPuts(exercises, mutations) {
|
|
|
177
302
|
}
|
|
178
303
|
return true;
|
|
179
304
|
}
|
|
305
|
+
function applyMemberActionExerciseRenames(exercises, mutations, expectedExercises) {
|
|
306
|
+
for (const mutation of mutations) {
|
|
307
|
+
const exercise = exercises[mutation.exercisePosition - 1];
|
|
308
|
+
const expectedExercise = expectedExercises[mutation.exercisePosition - 1];
|
|
309
|
+
if (!exercise
|
|
310
|
+
|| !expectedExercise
|
|
311
|
+
|| exercise.name !== expectedExercise.name
|
|
312
|
+
|| mutation.name === expectedExercise.name) {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
exercise.name = mutation.name;
|
|
316
|
+
}
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
180
319
|
function applyMemberActionSetAppends(exercises, mutations) {
|
|
181
320
|
for (const mutation of mutations) {
|
|
182
321
|
const exercise = exercises[mutation.exercisePosition - 1];
|
|
@@ -284,22 +423,58 @@ function projectMemberActionWorkoutSetResult(set, kind) {
|
|
|
284
423
|
weightUnit: set.weightUnit ?? null,
|
|
285
424
|
};
|
|
286
425
|
}
|
|
287
|
-
|
|
288
|
-
|
|
426
|
+
function buildInitialLiveWorkoutExercises(exercises) {
|
|
427
|
+
if (exercises.length > MAX_LIVE_WORKOUT_EXERCISES) {
|
|
428
|
+
throw new VaultCliError('invalid_option', `Live workouts support at most ${MAX_LIVE_WORKOUT_EXERCISES} exercises.`);
|
|
429
|
+
}
|
|
430
|
+
return exercises.map((exercise, index) => {
|
|
431
|
+
const setCount = exercise.setCount ?? 1;
|
|
432
|
+
if (!Number.isInteger(setCount)
|
|
433
|
+
|| setCount < 1
|
|
434
|
+
|| setCount > MAX_LIVE_WORKOUT_SETS_PER_EXERCISE) {
|
|
435
|
+
throw new VaultCliError('invalid_option', `Exercise set count must be between 1 and ${MAX_LIVE_WORKOUT_SETS_PER_EXERCISE}.`);
|
|
436
|
+
}
|
|
437
|
+
if (exercise.reps !== undefined
|
|
438
|
+
&& (!Number.isInteger(exercise.reps)
|
|
439
|
+
|| exercise.reps < 1
|
|
440
|
+
|| exercise.reps > 999)) {
|
|
441
|
+
throw new VaultCliError('invalid_option', 'Exercise repetitions per set must be an integer between 1 and 999.');
|
|
442
|
+
}
|
|
443
|
+
const sourceExerciseId = normalizeOptionalText(exercise.sourceExerciseId);
|
|
444
|
+
const groupId = normalizeOptionalText(exercise.groupId);
|
|
445
|
+
const note = normalizeOptionalText(exercise.note);
|
|
446
|
+
return {
|
|
447
|
+
name: requireNonEmptyText(exercise.name, 'Exercise name is required.'),
|
|
448
|
+
order: index + 1,
|
|
449
|
+
...(sourceExerciseId ? { sourceExerciseId } : {}),
|
|
450
|
+
...(groupId ? { groupId } : {}),
|
|
451
|
+
...(exercise.mode ? { mode: exercise.mode } : {}),
|
|
452
|
+
...(exercise.unitOverride ? { unitOverride: exercise.unitOverride } : {}),
|
|
453
|
+
...(note ? { note } : {}),
|
|
454
|
+
...(exercise.reps === undefined
|
|
455
|
+
? {}
|
|
456
|
+
: { memberRepsPerSet: exercise.reps }),
|
|
457
|
+
setPlanIsFinite: exercise.setCount !== undefined,
|
|
458
|
+
sets: Array.from({ length: setCount }, (_, setIndex) => ({
|
|
459
|
+
order: setIndex + 1,
|
|
460
|
+
})),
|
|
461
|
+
};
|
|
462
|
+
});
|
|
289
463
|
}
|
|
290
|
-
async function
|
|
464
|
+
export async function startLiveWorkout(input) {
|
|
291
465
|
const routineLookup = input.routine === undefined
|
|
292
466
|
? undefined
|
|
293
467
|
: requireNonEmptyText(input.routine, 'Workout routine lookup is required.');
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
throw new VaultCliError('command_failed', `Workout ${active[0]?.entity.id ?? ''} is already active. Finish or delete it before starting another live workout.`, { activeWorkoutIds: active.map((entry) => entry.entity.id) });
|
|
297
|
-
}
|
|
298
|
-
const startedAt = normalizeWorkoutTimestamp(input.startedAt ?? new Date().toISOString(), 'startedAt');
|
|
468
|
+
const observedAt = new Date().toISOString();
|
|
469
|
+
const startedAt = normalizeWorkoutTimestamp(input.startedAt ?? observedAt, 'startedAt');
|
|
299
470
|
const name = normalizeOptionalText(input.name);
|
|
300
471
|
const note = normalizeOptionalText(input.note);
|
|
301
472
|
const activityTypeOverride = normalizeOptionalText(input.activityType);
|
|
302
|
-
const
|
|
473
|
+
const initialExercises = input.exercises ?? [];
|
|
474
|
+
const durationMinutes = elapsedDurationMinutes(startedAt, observedAt);
|
|
475
|
+
if (routineLookup !== undefined && initialExercises.length > 0) {
|
|
476
|
+
throw new VaultCliError('invalid_option', '--exercise cannot be combined with --routine.');
|
|
477
|
+
}
|
|
303
478
|
if (routineLookup !== undefined) {
|
|
304
479
|
const routine = await showWorkoutFormat(input.vault, routineLookup);
|
|
305
480
|
const routineTitle = requireString(routine.entity.title, 'Workout routine title is missing.');
|
|
@@ -310,7 +485,7 @@ async function startLiveWorkoutWithLockHeld(input) {
|
|
|
310
485
|
startedAt,
|
|
311
486
|
sessionNote: note,
|
|
312
487
|
});
|
|
313
|
-
assertTargetableLiveWorkout(workout
|
|
488
|
+
assertTargetableLiveWorkout(workout);
|
|
314
489
|
return addStructuredWorkoutRecord({
|
|
315
490
|
vault: input.vault,
|
|
316
491
|
draft: {
|
|
@@ -332,7 +507,7 @@ async function startLiveWorkoutWithLockHeld(input) {
|
|
|
332
507
|
sourceApp: LIVE_WORKOUT_SOURCE_APP,
|
|
333
508
|
startedAt,
|
|
334
509
|
...(note ? { sessionNote: note } : {}),
|
|
335
|
-
exercises:
|
|
510
|
+
exercises: buildInitialLiveWorkoutExercises(initialExercises),
|
|
336
511
|
});
|
|
337
512
|
return addStructuredWorkoutRecord({
|
|
338
513
|
vault: input.vault,
|
|
@@ -349,24 +524,22 @@ async function startLiveWorkoutWithLockHeld(input) {
|
|
|
349
524
|
},
|
|
350
525
|
});
|
|
351
526
|
}
|
|
352
|
-
export async function showActiveLiveWorkout(input) {
|
|
353
|
-
return resolveLiveWorkout(input, { requireActive: true });
|
|
354
|
-
}
|
|
355
527
|
export async function addLiveWorkoutExercise(input) {
|
|
356
|
-
|
|
528
|
+
const observedAt = new Date().toISOString();
|
|
529
|
+
return withLiveWorkoutMutationLock(input.vault, input.workoutId, () => addLiveWorkoutExerciseWithLockHeld(input, observedAt));
|
|
357
530
|
}
|
|
358
|
-
async function addLiveWorkoutExerciseWithLockHeld(input) {
|
|
359
|
-
const shown = await resolveLiveWorkout(input, {
|
|
531
|
+
async function addLiveWorkoutExerciseWithLockHeld(input, observedAt) {
|
|
532
|
+
const shown = await resolveLiveWorkout(input, { requireOpen: true });
|
|
360
533
|
const workout = parseShownWorkout(shown);
|
|
361
|
-
assertTargetableLiveWorkout(workout
|
|
534
|
+
assertTargetableLiveWorkout(workout);
|
|
362
535
|
const exercises = structuredClone(workout.exercises);
|
|
363
536
|
const order = input.order;
|
|
364
537
|
const setCount = input.setCount ?? 1;
|
|
365
538
|
if (!Number.isInteger(order) || order < 1) {
|
|
366
539
|
throw new VaultCliError('invalid_option', 'Exercise order must be a positive integer.');
|
|
367
540
|
}
|
|
368
|
-
if (!Number.isInteger(setCount) || setCount < 1 || setCount >
|
|
369
|
-
throw new VaultCliError('invalid_option',
|
|
541
|
+
if (!Number.isInteger(setCount) || setCount < 1 || setCount > MAX_LIVE_WORKOUT_SETS_PER_EXERCISE) {
|
|
542
|
+
throw new VaultCliError('invalid_option', `Exercise set count must be between 1 and ${MAX_LIVE_WORKOUT_SETS_PER_EXERCISE}.`);
|
|
370
543
|
}
|
|
371
544
|
const name = requireNonEmptyText(input.name, 'Exercise name is required.');
|
|
372
545
|
const sourceExerciseId = normalizeOptionalText(input.sourceExerciseId);
|
|
@@ -380,6 +553,7 @@ async function addLiveWorkoutExerciseWithLockHeld(input) {
|
|
|
380
553
|
...(input.mode ? { mode: input.mode } : {}),
|
|
381
554
|
...(input.unitOverride ? { unitOverride: input.unitOverride } : {}),
|
|
382
555
|
...(note ? { note } : {}),
|
|
556
|
+
setPlanIsFinite: input.setCount !== undefined,
|
|
383
557
|
sets: Array.from({ length: setCount }, (_, index) => ({ order: index + 1 })),
|
|
384
558
|
};
|
|
385
559
|
const parsedProposed = workoutSessionSchema.parse({
|
|
@@ -397,30 +571,80 @@ async function addLiveWorkoutExerciseWithLockHeld(input) {
|
|
|
397
571
|
}
|
|
398
572
|
exercises.push(parsedProposed);
|
|
399
573
|
exercises.sort((left, right) => left.order - right.order);
|
|
400
|
-
return updateLiveWorkoutExercises(shown, workout, exercises);
|
|
574
|
+
return updateLiveWorkoutExercises(shown, workout, exercises, { observedAt });
|
|
575
|
+
}
|
|
576
|
+
export async function setLiveWorkoutExerciseReps(input) {
|
|
577
|
+
const observedAt = new Date().toISOString();
|
|
578
|
+
return withLiveWorkoutMutationLock(input.vault, input.workoutId, () => setLiveWorkoutExerciseRepsWithLockHeld(input, observedAt));
|
|
579
|
+
}
|
|
580
|
+
async function setLiveWorkoutExerciseRepsWithLockHeld(input, observedAt) {
|
|
581
|
+
const clear = input.clear === true;
|
|
582
|
+
const reps = input.reps;
|
|
583
|
+
const hasReps = reps !== undefined;
|
|
584
|
+
if (clear === hasReps) {
|
|
585
|
+
throw new VaultCliError('invalid_option', 'Pass exactly one of --reps or --clear.');
|
|
586
|
+
}
|
|
587
|
+
if (reps !== undefined
|
|
588
|
+
&& (!Number.isInteger(reps) || reps < 1 || reps > 999)) {
|
|
589
|
+
throw new VaultCliError('invalid_option', 'Exercise repetitions per set must be an integer between 1 and 999.');
|
|
590
|
+
}
|
|
591
|
+
const shown = await resolveLiveWorkout(input);
|
|
592
|
+
const workout = parseShownWorkout(shown);
|
|
593
|
+
assertTargetableLiveWorkout(workout);
|
|
594
|
+
const exercises = structuredClone(workout.exercises);
|
|
595
|
+
const exerciseIndex = resolveExerciseIndex(exercises, input);
|
|
596
|
+
const exercise = exercises[exerciseIndex];
|
|
597
|
+
if ((clear && exercise.memberRepsPerSet === undefined)
|
|
598
|
+
|| (!clear && exercise.memberRepsPerSet === reps)) {
|
|
599
|
+
return shown;
|
|
600
|
+
}
|
|
601
|
+
if (clear) {
|
|
602
|
+
return editWorkoutRecord({
|
|
603
|
+
vault: shown.vault,
|
|
604
|
+
lookup: shown.entity.id,
|
|
605
|
+
clear: [`workout.exercises.${exerciseIndex}.memberRepsPerSet`],
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
if (reps !== undefined) {
|
|
609
|
+
exercise.memberRepsPerSet = reps;
|
|
610
|
+
}
|
|
611
|
+
exercises[exerciseIndex] = exercise;
|
|
612
|
+
return updateLiveWorkoutExercises(shown, workout, exercises, { observedAt });
|
|
401
613
|
}
|
|
402
614
|
export async function logLiveWorkoutSet(input) {
|
|
403
|
-
|
|
615
|
+
const observedAt = new Date().toISOString();
|
|
616
|
+
return withLiveWorkoutMutationLock(input.vault, input.workoutId, () => logLiveWorkoutSetWithLockHeld(input, observedAt));
|
|
404
617
|
}
|
|
405
|
-
async function logLiveWorkoutSetWithLockHeld(input) {
|
|
618
|
+
async function logLiveWorkoutSetWithLockHeld(input, observedAt) {
|
|
406
619
|
const setOrder = requireLiveWorkoutSetOrder(input.setOrder);
|
|
407
|
-
const shown = await resolveLiveWorkout(input
|
|
620
|
+
const shown = await resolveLiveWorkout(input);
|
|
408
621
|
const workout = parseShownWorkout(shown);
|
|
409
|
-
assertTargetableLiveWorkout(workout
|
|
410
|
-
const
|
|
622
|
+
assertTargetableLiveWorkout(workout);
|
|
623
|
+
const beforeExercises = structuredClone(workout.exercises);
|
|
624
|
+
const exercises = structuredClone(beforeExercises);
|
|
411
625
|
const exerciseIndex = resolveExerciseIndex(exercises, input);
|
|
412
626
|
const exercise = exercises[exerciseIndex];
|
|
627
|
+
const setIndex = exercise.sets.findIndex((set) => set.order === setOrder);
|
|
628
|
+
const currentSet = setIndex >= 0 ? exercise.sets[setIndex] : undefined;
|
|
413
629
|
const patch = compactSetPatch(input);
|
|
630
|
+
if (input.reps === undefined
|
|
631
|
+
&& exercise.memberRepsPerSet !== undefined
|
|
632
|
+
&& (currentSet === undefined || !hasLoggedWorkoutSet(currentSet))) {
|
|
633
|
+
patch.reps = exercise.memberRepsPerSet;
|
|
634
|
+
}
|
|
414
635
|
if (Object.keys(patch).length === 0) {
|
|
415
|
-
|
|
636
|
+
if (currentSet !== undefined
|
|
637
|
+
&& hasLoggedWorkoutSet(currentSet)
|
|
638
|
+
&& exercise.memberRepsPerSet !== undefined) {
|
|
639
|
+
return shown;
|
|
640
|
+
}
|
|
641
|
+
throw new VaultCliError('invalid_option', 'Log at least one set value or establish --reps for every set of this exercise first.');
|
|
416
642
|
}
|
|
417
|
-
const setIndex = exercise.sets.findIndex((set) => set.order === setOrder);
|
|
418
|
-
const currentSet = setIndex >= 0 ? exercise.sets[setIndex] : undefined;
|
|
419
643
|
if (currentSet === undefined && input.requireExistingSet) {
|
|
420
644
|
throw new VaultCliError('not_found', `No set ${setOrder} exists for ${exercise.name}.`);
|
|
421
645
|
}
|
|
422
|
-
if (currentSet === undefined
|
|
423
|
-
exercise.sets.length >= MAX_LIVE_WORKOUT_SETS_PER_EXERCISE) {
|
|
646
|
+
if (currentSet === undefined
|
|
647
|
+
&& exercise.sets.length >= MAX_LIVE_WORKOUT_SETS_PER_EXERCISE) {
|
|
424
648
|
throw new VaultCliError('invalid_operation', `Each exercise supports at most ${MAX_LIVE_WORKOUT_SETS_PER_EXERCISE} sets.`);
|
|
425
649
|
}
|
|
426
650
|
const parsedSet = workoutSessionSchema.parse({
|
|
@@ -438,6 +662,10 @@ async function logLiveWorkoutSetWithLockHeld(input) {
|
|
|
438
662
|
if (currentSet && JSON.stringify(currentSet) === JSON.stringify(parsedSet)) {
|
|
439
663
|
return shown;
|
|
440
664
|
}
|
|
665
|
+
const appendedExtraSet = currentSet === undefined
|
|
666
|
+
&& setOrder > exercise.sets.reduce((maximum, set) => Math.max(maximum, set.order), 0);
|
|
667
|
+
const completedPendingSet = currentSet === undefined
|
|
668
|
+
|| !hasLoggedWorkoutSet(currentSet);
|
|
441
669
|
if (setIndex >= 0) {
|
|
442
670
|
exercise.sets[setIndex] = parsedSet;
|
|
443
671
|
}
|
|
@@ -446,16 +674,28 @@ async function logLiveWorkoutSetWithLockHeld(input) {
|
|
|
446
674
|
exercise.sets.sort((left, right) => left.order - right.order);
|
|
447
675
|
}
|
|
448
676
|
exercises[exerciseIndex] = exercise;
|
|
449
|
-
|
|
677
|
+
const endedAt = resolveObservedWorkoutEndBoundary({
|
|
678
|
+
afterExercises: exercises,
|
|
679
|
+
appendedExtraSet,
|
|
680
|
+
beforeExercises,
|
|
681
|
+
completedPendingSet,
|
|
682
|
+
observedAt,
|
|
683
|
+
workout,
|
|
684
|
+
});
|
|
685
|
+
return updateLiveWorkoutExercises(shown, workout, exercises, {
|
|
686
|
+
...(endedAt === undefined ? {} : { endedAt }),
|
|
687
|
+
observedAt,
|
|
688
|
+
});
|
|
450
689
|
}
|
|
451
690
|
export async function clearLiveWorkoutSet(input) {
|
|
452
|
-
|
|
691
|
+
const observedAt = new Date().toISOString();
|
|
692
|
+
return withLiveWorkoutMutationLock(input.vault, input.workoutId, () => clearLiveWorkoutSetWithLockHeld(input, observedAt));
|
|
453
693
|
}
|
|
454
|
-
async function clearLiveWorkoutSetWithLockHeld(input) {
|
|
694
|
+
async function clearLiveWorkoutSetWithLockHeld(input, observedAt) {
|
|
455
695
|
const setOrder = requireLiveWorkoutSetOrder(input.setOrder);
|
|
456
|
-
const shown = await resolveLiveWorkout(input
|
|
696
|
+
const shown = await resolveLiveWorkout(input);
|
|
457
697
|
const workout = parseShownWorkout(shown);
|
|
458
|
-
assertTargetableLiveWorkout(workout
|
|
698
|
+
assertTargetableLiveWorkout(workout);
|
|
459
699
|
const exercises = structuredClone(workout.exercises);
|
|
460
700
|
const exerciseIndex = resolveExerciseIndex(exercises, input);
|
|
461
701
|
const exercise = exercises[exerciseIndex];
|
|
@@ -473,16 +713,13 @@ async function clearLiveWorkoutSetWithLockHeld(input) {
|
|
|
473
713
|
}
|
|
474
714
|
exercise.sets[setIndex] = clearedSet;
|
|
475
715
|
exercises[exerciseIndex] = exercise;
|
|
476
|
-
return updateLiveWorkoutExercises(shown, workout, exercises);
|
|
716
|
+
return updateLiveWorkoutExercises(shown, workout, exercises, { observedAt });
|
|
477
717
|
}
|
|
478
718
|
export async function finishLiveWorkout(input) {
|
|
479
|
-
return withLiveWorkoutMutationLock(input.vault, () => finishLiveWorkoutWithLockHeld(input));
|
|
719
|
+
return withLiveWorkoutMutationLock(input.vault, input.workoutId, () => finishLiveWorkoutWithLockHeld(input));
|
|
480
720
|
}
|
|
481
721
|
async function finishLiveWorkoutWithLockHeld(input) {
|
|
482
|
-
const shown = await resolveLiveWorkout(input
|
|
483
|
-
requireActive: input.workoutId === undefined,
|
|
484
|
-
allowCompleted: input.workoutId !== undefined,
|
|
485
|
-
});
|
|
722
|
+
const shown = await resolveLiveWorkout(input);
|
|
486
723
|
const workout = parseShownWorkout(shown);
|
|
487
724
|
if (workout.endedAt) {
|
|
488
725
|
return shown;
|