@murphai/murph 1.2.0 → 1.2.3
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 +1298 -0
- package/config.schema.json +412 -50
- package/dist/cli-entry.d.ts.map +1 -1
- package/dist/cli-entry.js +13 -20
- package/dist/cli-entry.js.map +1 -1
- package/dist/commands/audit-command-helpers.js.map +1 -1
- package/dist/commands/audit.js +2 -2
- package/dist/commands/automation.d.ts +118 -7
- package/dist/commands/automation.d.ts.map +1 -1
- package/dist/commands/automation.js +140 -54
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/batch.d.ts.map +1 -1
- package/dist/commands/batch.js +12 -4
- package/dist/commands/batch.js.map +1 -1
- package/dist/commands/capture.d.ts +9 -9
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/clinical-imports.d.ts +101 -101
- package/dist/commands/command-factory-primitives.d.ts +3 -3
- package/dist/commands/command-factory-primitives.d.ts.map +1 -1
- package/dist/commands/command-factory-primitives.js +1 -1
- package/dist/commands/commons.d.ts +9 -9
- package/dist/commands/document.d.ts.map +1 -1
- package/dist/commands/document.js +3 -0
- package/dist/commands/document.js.map +1 -1
- package/dist/commands/encounter.d.ts +42 -42
- package/dist/commands/encounter.d.ts.map +1 -1
- package/dist/commands/event.js +1 -1
- package/dist/commands/exercise.js.map +1 -1
- package/dist/commands/experiment.d.ts.map +1 -1
- package/dist/commands/experiment.js +1 -0
- package/dist/commands/experiment.js.map +1 -1
- package/dist/commands/export-intake-read-helpers.d.ts +4 -4
- package/dist/commands/export-intake-read-helpers.d.ts.map +1 -1
- package/dist/commands/export-intake-read-helpers.js +1 -1
- package/dist/commands/export-intake-read-helpers.js.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/food.d.ts +4 -4
- package/dist/commands/food.js +1 -1
- package/dist/commands/group.d.ts +81 -0
- package/dist/commands/group.d.ts.map +1 -0
- package/dist/commands/group.js +242 -0
- package/dist/commands/group.js.map +1 -0
- package/dist/commands/habitat.d.ts +3 -0
- package/dist/commands/habitat.d.ts.map +1 -0
- package/dist/commands/habitat.js +282 -0
- package/dist/commands/habitat.js.map +1 -0
- package/dist/commands/health-allergy-save.d.ts.map +1 -1
- package/dist/commands/health-allergy-save.js +1 -1
- package/dist/commands/health-allergy-save.js.map +1 -1
- package/dist/commands/health-condition-save.d.ts.map +1 -1
- package/dist/commands/health-condition-save.js +1 -1
- package/dist/commands/health-condition-save.js.map +1 -1
- package/dist/commands/health-goal-save.d.ts.map +1 -1
- package/dist/commands/health-goal-save.js +1 -1
- package/dist/commands/health-goal-save.js.map +1 -1
- package/dist/commands/intake.js +1 -1
- package/dist/commands/intervention.d.ts.map +1 -1
- package/dist/commands/intervention.js +10 -0
- package/dist/commands/intervention.js.map +1 -1
- package/dist/commands/knowledge.js +2 -2
- package/dist/commands/measurement.d.ts +7 -7
- package/dist/commands/measurement.d.ts.map +1 -1
- package/dist/commands/medication.d.ts +3 -3
- package/dist/commands/memory.d.ts.map +1 -1
- package/dist/commands/memory.js +26 -2
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/murph-age.d.ts +499 -498
- package/dist/commands/murph-age.d.ts.map +1 -1
- package/dist/commands/murph-age.js +3 -2
- package/dist/commands/murph-age.js.map +1 -1
- package/dist/commands/payload-schema-command.d.ts +1 -1
- package/dist/commands/protocol.js +2 -2
- package/dist/commands/provider.js +1 -1
- package/dist/commands/recipe.js +1 -1
- package/dist/commands/record-mutation-command-helpers.d.ts +3 -3
- package/dist/commands/record-mutation-command-helpers.d.ts.map +1 -1
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/sample-batch-command-helpers.js.map +1 -1
- package/dist/commands/sample-import-command-helpers.d.ts.map +1 -1
- package/dist/commands/sample-query-command-helpers.d.ts +1 -1
- package/dist/commands/sample-query-command-helpers.d.ts.map +1 -1
- package/dist/commands/sample-query-command-helpers.js.map +1 -1
- package/dist/commands/samples.js +2 -2
- package/dist/commands/scheduled-log.d.ts +127 -275
- package/dist/commands/scheduled-log.d.ts.map +1 -1
- package/dist/commands/scheduled-log.js +28 -3
- package/dist/commands/scheduled-log.js.map +1 -1
- package/dist/commands/search.js +1 -1
- package/dist/commands/supplement.js +1 -1
- package/dist/commands/vault.d.ts +2 -1
- package/dist/commands/vault.d.ts.map +1 -1
- package/dist/commands/vault.js +111 -1
- package/dist/commands/vault.js.map +1 -1
- package/dist/commands/wearables.d.ts +695 -667
- package/dist/commands/wearables.d.ts.map +1 -1
- package/dist/commands/wearables.js +10 -3
- package/dist/commands/wearables.js.map +1 -1
- package/dist/commands/workout.d.ts.map +1 -1
- package/dist/commands/workout.js +9 -2
- package/dist/commands/workout.js.map +1 -1
- package/dist/device-services.d.ts.map +1 -1
- package/dist/device-services.js +33 -8
- package/dist/device-services.js.map +1 -1
- package/dist/food-labels.d.ts +39 -39
- package/dist/food-labels.js.map +1 -1
- package/dist/foreground-terminal-logging.js.map +1 -1
- package/dist/hosted-data-api-labels.d.ts +117 -117
- package/dist/hosted-data-api-labels.js.map +1 -1
- package/dist/incur.generated.d.ts +93 -0
- package/dist/incur.generated.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/mapbox-route-contracts.d.ts +13 -13
- package/dist/mapbox-route-contracts.d.ts.map +1 -1
- package/dist/mapbox-route.js.map +1 -1
- package/dist/research-scout-client.js.map +1 -1
- package/dist/supplement-labels.d.ts +39 -39
- package/dist/supplement-labels.js.map +1 -1
- package/dist/vault-cli-command-manifest.d.ts +1451 -1478
- package/dist/vault-cli-command-manifest.d.ts.map +1 -1
- package/dist/vault-cli-command-manifest.js +80 -2
- package/dist/vault-cli-command-manifest.js.map +1 -1
- package/dist/vault-cli-command-routing.d.ts.map +1 -1
- package/dist/vault-cli-command-routing.js +79 -2
- package/dist/vault-cli-command-routing.js.map +1 -1
- package/dist/vault-cli-package.d.ts +1 -1
- package/dist/vault-cli-package.d.ts.map +1 -1
- package/dist/vault-cli-package.js.map +1 -1
- package/dist/vault-cli-routing.d.ts +4 -1
- package/dist/vault-cli-routing.d.ts.map +1 -1
- package/dist/vault-cli-routing.js +45 -5
- package/dist/vault-cli-routing.js.map +1 -1
- package/dist/vault-cli-shell.d.ts +3 -1
- package/dist/vault-cli-shell.d.ts.map +1 -1
- package/dist/vault-cli-shell.js +4 -1
- package/dist/vault-cli-shell.js.map +1 -1
- package/dist/vault-cli-skill-hash.generated.d.ts +2 -0
- package/dist/vault-cli-skill-hash.generated.d.ts.map +1 -0
- package/dist/vault-cli-skill-hash.generated.js +3 -0
- package/dist/vault-cli-skill-hash.generated.js.map +1 -0
- package/dist/vault-cli-vault-context.js.map +1 -1
- package/dist/vault-cli.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/automation/run-loop.d.ts +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/doctor-security.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/doctor.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts +24 -22
- package/node_modules/@murphai/assistant-cli/dist/assistant/service.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/stop.d.ts +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/store.d.ts +3 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/store.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/store.js +5 -2
- package/node_modules/@murphai/assistant-cli/dist/assistant/store.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-composer-panel.d.ts +4 -4
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-composer-panel.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-layout.d.ts +9 -9
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-layout.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-message-text.d.ts +4 -4
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-message-text.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-message-text.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-transcript.d.ts +4 -4
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink-transcript.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/ink.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/theme.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/view-model.d.ts +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant/ui/view-model.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant-daemon-client.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/assistant-daemon-client.js +2 -2
- package/node_modules/@murphai/assistant-cli/dist/assistant-daemon-client.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/commands/assistant.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js +52 -7
- package/node_modules/@murphai/assistant-cli/dist/commands/assistant.js.map +1 -1
- package/node_modules/@murphai/assistant-cli/dist/run-terminal-logging.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/README.md +55 -7
- package/node_modules/@murphai/assistant-engine/dist/assistant/active-experiment-context.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/active-experiment-context.js +36 -24
- package/node_modules/@murphai/assistant-engine/dist/assistant/active-experiment-context.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-controller.d.ts +10 -0
- 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 +89 -7
- 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.d.ts +36 -36
- package/node_modules/@murphai/assistant-engine/dist/assistant/active-turn-input-journal.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.d.ts +32 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.js +347 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/ask-continuation.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-artifact-paths.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-artifact-paths.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-evidence-model.d.ts +5 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-evidence-model.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-evidence-model.js +163 -42
- package/node_modules/@murphai/assistant-engine/dist/assistant/attachment-evidence-model.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/evidence.d.ts +3 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/evidence.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/evidence.js +8 -7
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/evidence.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts +2 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js +11 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/grouping.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/input-summary.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/input-summary.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/input-summary.js +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/input-summary.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/operation-scope.d.ts +11 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/operation-scope.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/operation-scope.js +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/operation-scope.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/prompt-builder.d.ts +18 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/prompt-builder.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/prompt-builder.js +66 -16
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/prompt-builder.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/reply.d.ts +26 -8
- 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 +644 -158
- 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 +15 -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 +90 -29
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/run-loop.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/scanner.d.ts +6 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/scanner.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/scanner.js +18 -6
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/scanner.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/shared.d.ts +9 -1
- 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/automation/target-override.d.ts +5 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/target-override.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/target-override.js +30 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/target-override.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/turn-envelope.d.ts +4 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/turn-envelope.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/turn-envelope.js +4 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation/turn-envelope.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation.d.ts +5 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation.js +3 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/automation.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/bindings.d.ts +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/bindings.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/bindings.js +22 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/bindings.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-adapters.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-adapters.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-adapters.js +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-adapters.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-typing.d.ts +4 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-typing.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-typing.js +51 -18
- package/node_modules/@murphai/assistant-engine/dist/assistant/channel-typing.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.js +87 -49
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/descriptors.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.js +5 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/helpers.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/runtime.d.ts +2 -10
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/runtime.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/runtime.js +80 -61
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/runtime.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/types.d.ts +31 -20
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/types.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/channels/types.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.d.ts +5 -24
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js +95 -228
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-bootstrap.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-contract.generated.json +4 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/cli-surface-manifest.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-contract-fingerprint.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-resume-binding.d.ts +4 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-resume-binding.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-resume-binding.js +24 -5
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-resume-binding.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-thread-route.d.ts +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-thread-route.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-thread-route.js +26 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-thread-route.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/attempt-observability.d.ts +0 -29
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/attempt-observability.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/attempt-observability.js +50 -129
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/attempt-observability.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/codex-turn/planning.d.ts +22 -19
- 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 +186 -109
- 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 +9 -8
- 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 +42 -73
- 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.d.ts +3 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/context-snapshot.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/context-snapshot.js +83 -91
- package/node_modules/@murphai/assistant-engine/dist/assistant/context-snapshot.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-policy.d.ts +4 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-policy.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-policy.js +48 -11
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-policy.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-ref.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/conversation-ref.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/canonical-jobs.d.ts +3 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/canonical-jobs.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/canonical-jobs.js +33 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/canonical-jobs.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/delivery-reconciliation.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/delivery-reconciliation.js +38 -31
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/delivery-reconciliation.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/execution.d.ts +47 -6
- 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 +881 -117
- 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.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.js +84 -19
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/schedule.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/scheduled-log.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/scheduled-log.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/scheduled-log.js +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/scheduled-log.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.d.ts +4 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.js +3 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/store.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/targets.d.ts +7 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/targets.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/targets.js +27 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron/targets.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron.d.ts +9 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron.js +134 -65
- package/node_modules/@murphai/assistant-engine/dist/assistant/cron.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 +131 -22
- package/node_modules/@murphai/assistant-engine/dist/assistant/delivery-service.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-automations.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-automations.js +58 -90
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-automations.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-cron-tags.d.ts +4 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-cron-tags.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-cron-tags.js +9 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant/device-activity-cron-tags.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/diagnostics.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/diagnostics.js +6 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/diagnostics.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/execution-context.d.ts +43 -3
- 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 +79 -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 +5 -3
- 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 +73 -6
- package/node_modules/@murphai/assistant-engine/dist/assistant/experiment-support-automations.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/fault-injection.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/first-contact-welcome.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/first-contact-welcome.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/generate-cli-surface-contract.js +1 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/generate-cli-surface-contract.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-context-diagnostics.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-context-diagnostics.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-context-diagnostics.js +0 -27
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-context-diagnostics.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-mailbox-input-items.d.ts +22 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-mailbox-input-items.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-mailbox-input-items.js +78 -4
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-mailbox-input-items.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.d.ts +46 -3
- 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 +47 -5
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-tool-context.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-turn-timing.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-turn-timing.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-turn-timing.js +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/hosted-turn-timing.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/inbox-attachment-evidence.js +23 -12
- package/node_modules/@murphai/assistant-engine/dist/assistant/inbox-attachment-evidence.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-source.d.ts +8 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-source.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-source.js +37 -6
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-source.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-store.d.ts +109 -44
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-store.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-store.js +46 -10
- package/node_modules/@murphai/assistant-engine/dist/assistant/input-store.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 +335 -120
- package/node_modules/@murphai/assistant-engine/dist/assistant/local-service.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/maintenance-evidence.d.ts +7 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/maintenance-evidence.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/maintenance-evidence.js +101 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/maintenance-evidence.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/managed-automations.d.ts +69 -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 +234 -49
- 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 +1 -1
- 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 +3 -4
- package/node_modules/@murphai/assistant-engine/dist/assistant/model-behavior.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/newsletter-outbox.d.ts +12 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/newsletter-outbox.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/newsletter-outbox.js +294 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/newsletter-outbox.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.d.ts +20 -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 +556 -113
- package/node_modules/@murphai/assistant-engine/dist/assistant/notification-turn.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-automation.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-automation.js +11 -9
- package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-followup-automation.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/onboarding-state.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/operator-authority.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/operator-authority.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.d.ts +3 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.js +132 -21
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/dispatch-state.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/ordering.d.ts +7 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/ordering.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/ordering.js +140 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/ordering.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.d.ts +3 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.js +79 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox/retry-policy.js.map +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 +28 -2
- 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 +20 -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 +154 -19
- package/node_modules/@murphai/assistant-engine/dist/assistant/outbox.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/progress-constants.d.ts +7 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/progress-constants.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/progress-constants.js +16 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/progress-constants.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/provider-progress.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/provider-progress.d.ts.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 +55 -173
- 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.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/providers/helpers.js +5 -3
- 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 +24 -25
- 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/receipts.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/receipts.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/reply-bubbles.d.ts +6 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/reply-bubbles.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/reply-bubbles.js +47 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/reply-bubbles.js.map +1 -0
- 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 +8 -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-budget-policy.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-budgets.d.ts +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-budgets.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-budgets.js +92 -40
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-budgets.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.d.ts +3 -0
- 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 +107 -37
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-residue.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/runtime-write-lock.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts +15 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-contracts.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js +11 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-turn-routes.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.d.ts +2 -0
- 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 +9 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service-usage.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts +29 -24
- package/node_modules/@murphai/assistant-engine/dist/assistant/service.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/service.js +5 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/service.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js +81 -13
- package/node_modules/@murphai/assistant-engine/dist/assistant/session-resolution.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js +35 -5
- package/node_modules/@murphai/assistant-engine/dist/assistant/state-write-lock.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/status.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/status.js +36 -4
- package/node_modules/@murphai/assistant-engine/dist/assistant/status.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.js +23 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/paths.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.d.ts +6 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.js +137 -16
- package/node_modules/@murphai/assistant-engine/dist/assistant/store/persistence.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 +6 -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 +94 -22
- 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 +16 -6
- 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 +546 -230
- package/node_modules/@murphai/assistant-engine/dist/assistant/system-prompt.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/transcript-audit.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-finalizer.d.ts +16 -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 +58 -10
- 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 +2 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-input.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-input.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-plan.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-plan.js +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-plan.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-progress.d.ts +3 -6
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-progress.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-progress.js +29 -22
- package/node_modules/@murphai/assistant-engine/dist/assistant/turn-progress.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turns.d.ts +7 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turns.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/turns.js +33 -5
- package/node_modules/@murphai/assistant-engine/dist/assistant/turns.js.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/vault-file-send.d.ts +12 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/vault-file-send.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/vault-file-send.js +53 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant/vault-file-send.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-ask.d.ts +70 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-ask.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-ask.js +218 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-ask.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-adapters.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-adapters.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-adapters.js +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-adapters.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-runtime.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-runtime.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-runtime.js +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-channel-runtime.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 +4 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-cli-access.js.map +1 -1
- 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 +25 -1
- 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 +5 -0
- 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 +12 -5
- 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/dynamic-tools/assistant-style.d.ts +82 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/assistant-style.d.ts.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/assistant-style.js +190 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/assistant-style.js.map +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/connected-apps.d.ts +18 -18
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/connected-apps.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/connected-apps.js +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/connected-apps.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-song.d.ts +8 -8
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-song.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-song.js +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-song.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-voice-memo.d.ts +10 -10
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/generate-voice-memo.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/phone-calls.d.ts +4 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/phone-calls.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/phone-calls.js +17 -8
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools/phone-calls.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/dynamic-tools.d.ts +1273 -268
- 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 +1724 -34
- 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.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/failures.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/failures.js +4 -13
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/failures.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-image-tool.d.ts +3 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-image-tool.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-image-tool.js +352 -74
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-image-tool.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-voice-memo-tool.d.ts +1 -0
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-voice-memo-tool.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-voice-memo-tool.js +6 -12
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/generate-voice-memo-tool.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/image-reference-resolver.d.ts +2 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/image-reference-resolver.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/image-reference-resolver.js +89 -39
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/image-reference-resolver.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/openai-image-generation.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/openai-image-generation.js +4 -4
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/openai-image-generation.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex-events.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex-events.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex-events.js +1 -6
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex-events.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex.d.ts +23 -15
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex.js +868 -533
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-service.d.ts +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-service.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-service.js +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-service.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.d.ts +140 -48
- 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 +118 -3
- package/node_modules/@murphai/assistant-engine/dist/assistant-skill-assets.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-skill-env.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/attachment-prompt-contracts.d.ts +17 -17
- package/node_modules/@murphai/assistant-engine/dist/attachment-prompt-contracts.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/codex-lifecycle.d.ts +3 -1
- package/node_modules/@murphai/assistant-engine/dist/codex-lifecycle.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/codex-lifecycle.js +7 -1
- package/node_modules/@murphai/assistant-engine/dist/codex-lifecycle.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/inbox-routing-vision.d.ts +2 -2
- package/node_modules/@murphai/assistant-engine/dist/inbox-routing-vision.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/index.d.ts +2 -0
- 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/dist/knowledge/service.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/outbound-channel.d.ts +3 -2
- package/node_modules/@murphai/assistant-engine/dist/outbound-channel.d.ts.map +1 -1
- package/node_modules/@murphai/assistant-engine/dist/outbound-channel.js +4 -2
- package/node_modules/@murphai/assistant-engine/dist/outbound-channel.js.map +1 -1
- package/node_modules/@murphai/assistant-engine/package.json +4 -0
- package/node_modules/@murphai/assistant-engine/skills/aerobic-fitness/SKILL.md +56 -0
- package/node_modules/@murphai/assistant-engine/skills/appointment-scheduling/SKILL.md +249 -0
- package/node_modules/@murphai/assistant-engine/skills/behavior-followthrough/SKILL.md +18 -9
- package/node_modules/@murphai/assistant-engine/skills/body-composition/SKILL.md +56 -0
- package/node_modules/@murphai/assistant-engine/skills/cardiometabolic-health/SKILL.md +56 -0
- package/node_modules/@murphai/assistant-engine/skills/circadian-rhythm/SKILL.md +57 -0
- package/node_modules/@murphai/assistant-engine/skills/cognitive-focus/SKILL.md +55 -0
- package/node_modules/@murphai/assistant-engine/skills/computer-use/SKILL.md +163 -121
- package/node_modules/@murphai/assistant-engine/skills/computer-use/references/health-browser-playbook.md +16 -9
- package/node_modules/@murphai/assistant-engine/skills/cycle-hormonal-health/SKILL.md +55 -0
- package/node_modules/@murphai/assistant-engine/skills/daily-activity/SKILL.md +55 -0
- package/node_modules/@murphai/assistant-engine/skills/energy-fatigue/SKILL.md +57 -0
- package/node_modules/@murphai/assistant-engine/skills/experiment-onboarding/SKILL.md +24 -10
- package/node_modules/@murphai/assistant-engine/skills/food-journal/SKILL.md +26 -0
- package/node_modules/@murphai/assistant-engine/skills/general-eye-health/SKILL.md +77 -0
- package/node_modules/@murphai/assistant-engine/skills/general-eye-health/references/evidence-register.md +34 -0
- package/node_modules/@murphai/assistant-engine/skills/general-eye-health/references/triage-and-contact-lenses.md +103 -0
- package/node_modules/@murphai/assistant-engine/skills/group-challenge/SKILL.md +346 -0
- package/node_modules/@murphai/assistant-engine/skills/group-chat/SKILL.md +296 -0
- package/node_modules/@murphai/assistant-engine/skills/group-newsletter/SKILL.md +210 -0
- package/node_modules/@murphai/assistant-engine/skills/groupchat-comedy/SKILL.md +182 -0
- package/node_modules/@murphai/assistant-engine/skills/gut-digestion/SKILL.md +57 -0
- package/node_modules/@murphai/assistant-engine/skills/hrv-resting-heart-rate/SKILL.md +55 -0
- package/node_modules/@murphai/assistant-engine/skills/micronutrients-supplements/SKILL.md +80 -0
- package/node_modules/@murphai/assistant-engine/skills/mobility-posture/SKILL.md +56 -0
- package/node_modules/@murphai/assistant-engine/skills/murph-onboarding/SKILL.md +358 -124
- package/node_modules/@murphai/assistant-engine/skills/music-generation/SKILL.md +162 -0
- package/node_modules/@murphai/assistant-engine/skills/nutrition-strategy/SKILL.md +73 -109
- package/node_modules/@murphai/assistant-engine/skills/physical-therapy/SKILL.md +3 -1
- package/node_modules/@murphai/assistant-engine/skills/recovery-modalities/SKILL.md +57 -0
- package/node_modules/@murphai/assistant-engine/skills/red-light-therapy/SKILL.md +145 -0
- package/node_modules/@murphai/assistant-engine/skills/red-light-therapy/device-seeds.json +259 -0
- package/node_modules/@murphai/assistant-engine/skills/shared/exercise-catalog-runtime.md +29 -0
- package/node_modules/@murphai/assistant-engine/skills/shared/murph-character-sheet-v1.png +0 -0
- package/node_modules/@murphai/assistant-engine/skills/sleep-improvement/SKILL.md +60 -0
- package/node_modules/@murphai/assistant-engine/skills/sleep-recovery-readiness/SKILL.md +68 -178
- package/node_modules/@murphai/assistant-engine/skills/strength-training/SKILL.md +1 -1
- package/node_modules/@murphai/assistant-engine/skills/substance-load/SKILL.md +56 -0
- package/node_modules/@murphai/assistantd/dist/client.js.map +1 -1
- package/node_modules/@murphai/assistantd/dist/config.js.map +1 -1
- package/node_modules/@murphai/assistantd/dist/http-protocol.d.ts.map +1 -1
- package/node_modules/@murphai/assistantd/dist/http-protocol.js.map +1 -1
- package/node_modules/@murphai/clinical-records/README.md +82 -0
- package/node_modules/@murphai/clinical-records/dist/index.d.ts +1865 -0
- package/node_modules/@murphai/clinical-records/dist/index.d.ts.map +1 -0
- package/node_modules/@murphai/clinical-records/dist/index.js +488 -0
- package/node_modules/@murphai/clinical-records/dist/index.js.map +1 -0
- package/node_modules/@murphai/clinical-records/package.json +27 -0
- package/node_modules/@murphai/core/dist/atomic-write.d.ts +4 -0
- package/node_modules/@murphai/core/dist/atomic-write.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/atomic-write.js +26 -0
- package/node_modules/@murphai/core/dist/atomic-write.js.map +1 -1
- package/node_modules/@murphai/core/dist/automation.d.ts +8 -2
- package/node_modules/@murphai/core/dist/automation.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/automation.js +66 -2
- package/node_modules/@murphai/core/dist/automation.js.map +1 -1
- package/node_modules/@murphai/core/dist/bank/goals.js.map +1 -1
- package/node_modules/@murphai/core/dist/bank/habitat.d.ts +36 -0
- package/node_modules/@murphai/core/dist/bank/habitat.d.ts.map +1 -0
- package/node_modules/@murphai/core/dist/bank/habitat.js +179 -0
- package/node_modules/@murphai/core/dist/bank/habitat.js.map +1 -0
- package/node_modules/@murphai/core/dist/bank/regimens.js.map +1 -1
- package/node_modules/@murphai/core/dist/constants.d.ts +4 -0
- package/node_modules/@murphai/core/dist/constants.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/domains/events/attachment-backed.d.ts +41 -1
- package/node_modules/@murphai/core/dist/domains/events/attachment-backed.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/domains/events/attachment-backed.js +311 -5
- package/node_modules/@murphai/core/dist/domains/events/attachment-backed.js.map +1 -1
- package/node_modules/@murphai/core/dist/domains/events/capture-lookup.d.ts +6 -0
- package/node_modules/@murphai/core/dist/domains/events/capture-lookup.d.ts.map +1 -0
- package/node_modules/@murphai/core/dist/domains/events/capture-lookup.js +7 -0
- package/node_modules/@murphai/core/dist/domains/events/capture-lookup.js.map +1 -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 +4 -0
- 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/domains/experiments.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/domains/experiments.js +9 -3
- package/node_modules/@murphai/core/dist/domains/experiments.js.map +1 -1
- package/node_modules/@murphai/core/dist/domains/shared.js.map +1 -1
- package/node_modules/@murphai/core/dist/errors.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/errors.js.map +1 -1
- package/node_modules/@murphai/core/dist/event-attachments.d.ts +2 -1
- package/node_modules/@murphai/core/dist/event-attachments.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/event-attachments.js +1 -0
- package/node_modules/@murphai/core/dist/event-attachments.js.map +1 -1
- package/node_modules/@murphai/core/dist/experiment-media-repair.d.ts +33 -0
- package/node_modules/@murphai/core/dist/experiment-media-repair.d.ts.map +1 -0
- package/node_modules/@murphai/core/dist/experiment-media-repair.js +685 -0
- package/node_modules/@murphai/core/dist/experiment-media-repair.js.map +1 -0
- package/node_modules/@murphai/core/dist/experiment-storage.d.ts +12 -0
- package/node_modules/@murphai/core/dist/experiment-storage.d.ts.map +1 -0
- package/node_modules/@murphai/core/dist/experiment-storage.js +70 -0
- package/node_modules/@murphai/core/dist/experiment-storage.js.map +1 -0
- package/node_modules/@murphai/core/dist/frontmatter.js.map +1 -1
- package/node_modules/@murphai/core/dist/fs.d.ts +1 -0
- package/node_modules/@murphai/core/dist/fs.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/fs.js +3 -0
- package/node_modules/@murphai/core/dist/fs.js.map +1 -1
- package/node_modules/@murphai/core/dist/history/api.d.ts +11 -0
- package/node_modules/@murphai/core/dist/history/api.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/history/api.js +60 -3
- package/node_modules/@murphai/core/dist/history/api.js.map +1 -1
- package/node_modules/@murphai/core/dist/history/types.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/ids.js.map +1 -1
- package/node_modules/@murphai/core/dist/index.d.ts +12 -6
- package/node_modules/@murphai/core/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/index.js +6 -4
- package/node_modules/@murphai/core/dist/index.js.map +1 -1
- package/node_modules/@murphai/core/dist/integration-ingest-migration.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/integration-ingest-migration.js +1 -1
- package/node_modules/@murphai/core/dist/integration-ingest-migration.js.map +1 -1
- package/node_modules/@murphai/core/dist/integration-ingests.d.ts +73 -2
- package/node_modules/@murphai/core/dist/integration-ingests.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/integration-ingests.js +1196 -77
- package/node_modules/@murphai/core/dist/integration-ingests.js.map +1 -1
- package/node_modules/@murphai/core/dist/jsonl.d.ts +10 -0
- package/node_modules/@murphai/core/dist/jsonl.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/jsonl.js +63 -12
- package/node_modules/@murphai/core/dist/jsonl.js.map +1 -1
- package/node_modules/@murphai/core/dist/markdown-documents.js.map +1 -1
- package/node_modules/@murphai/core/dist/memory.d.ts +7 -2
- package/node_modules/@murphai/core/dist/memory.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/memory.js +36 -1
- package/node_modules/@murphai/core/dist/memory.js.map +1 -1
- package/node_modules/@murphai/core/dist/mutations.d.ts +33 -5
- package/node_modules/@murphai/core/dist/mutations.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/mutations.js +1684 -205
- package/node_modules/@murphai/core/dist/mutations.js.map +1 -1
- package/node_modules/@murphai/core/dist/operations/canonical-resource-lock.js.map +1 -1
- package/node_modules/@murphai/core/dist/operations/canonical-write-lock.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 +34 -1
- package/node_modules/@murphai/core/dist/operations/write-batch.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/operations/write-batch.js +684 -39
- package/node_modules/@murphai/core/dist/operations/write-batch.js.map +1 -1
- package/node_modules/@murphai/core/dist/path-safety.js.map +1 -1
- package/node_modules/@murphai/core/dist/preferences.d.ts +21 -2
- package/node_modules/@murphai/core/dist/preferences.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/preferences.js +249 -12
- package/node_modules/@murphai/core/dist/preferences.js.map +1 -1
- package/node_modules/@murphai/core/dist/public-mutations.d.ts +13 -2
- package/node_modules/@murphai/core/dist/public-mutations.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/public-mutations.js +20 -3
- package/node_modules/@murphai/core/dist/public-mutations.js.map +1 -1
- package/node_modules/@murphai/core/dist/raw-artifact-integrity.js.map +1 -1
- package/node_modules/@murphai/core/dist/registry/api.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/scheduled-logs.d.ts +1 -0
- package/node_modules/@murphai/core/dist/scheduled-logs.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/scheduled-logs.js +1 -0
- package/node_modules/@murphai/core/dist/scheduled-logs.js.map +1 -1
- package/node_modules/@murphai/core/dist/vault.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/vault.js +174 -11
- package/node_modules/@murphai/core/dist/vault.js.map +1 -1
- package/node_modules/@murphai/core/dist/wearable-receipts.js.map +1 -1
- package/node_modules/@murphai/core/dist/wearable-storage-migration.js.map +1 -1
- package/node_modules/@murphai/core/dist/write-policy.d.ts +3 -0
- package/node_modules/@murphai/core/dist/write-policy.d.ts.map +1 -1
- package/node_modules/@murphai/core/dist/write-policy.js +54 -3
- package/node_modules/@murphai/core/dist/write-policy.js.map +1 -1
- package/node_modules/@murphai/device-syncd/README.md +45 -5
- package/node_modules/@murphai/device-syncd/dist/callback-redirect.d.ts +7 -0
- package/node_modules/@murphai/device-syncd/dist/callback-redirect.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/callback-redirect.js +9 -0
- package/node_modules/@murphai/device-syncd/dist/callback-redirect.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/client.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata-parser.d.ts +30 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata-parser.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata-parser.js +130 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata-parser.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata.d.ts +18 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata.js +18 -0
- package/node_modules/@murphai/device-syncd/dist/companion-health-metadata.js.map +1 -0
- 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 +39 -4
- package/node_modules/@murphai/device-syncd/dist/config/connect-routes.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/env-keys.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/junction-client-config.d.ts +9 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-client-config.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-client-config.js +56 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-client-config.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-config.d.ts +3 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-config.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-config.js +46 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-config.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/config/junction-connect-sources.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/{providers → config}/junction-connect-sources.js +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/junction-connect-sources.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/config/provider-configs.d.ts +3 -5
- package/node_modules/@murphai/device-syncd/dist/config/provider-configs.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-configs.js +69 -14
- package/node_modules/@murphai/device-syncd/dist/config/provider-configs.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-env.d.ts +2 -3
- package/node_modules/@murphai/device-syncd/dist/config/provider-env.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-env.js +0 -3
- package/node_modules/@murphai/device-syncd/dist/config/provider-env.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-factory.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-factory.js +9 -5
- package/node_modules/@murphai/device-syncd/dist/config/provider-factory.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.d.ts +26 -16
- 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 +236 -339
- package/node_modules/@murphai/device-syncd/dist/config/provider-manifests.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/provider-types.d.ts +62 -5
- package/node_modules/@murphai/device-syncd/dist/config/provider-types.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/runtime-config.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/runtime-config.js +7 -361
- package/node_modules/@murphai/device-syncd/dist/config/runtime-config.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/serializable-provider-configs.d.ts +17 -1
- package/node_modules/@murphai/device-syncd/dist/config/serializable-provider-configs.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config/serializable-provider-configs.js +104 -11
- package/node_modules/@murphai/device-syncd/dist/config/serializable-provider-configs.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config.d.ts +5 -3
- package/node_modules/@murphai/device-syncd/dist/config.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/config.js +4 -2
- package/node_modules/@murphai/device-syncd/dist/config.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/configured-provider-descriptors.d.ts +6 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-descriptors.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-descriptors.js +7 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-descriptors.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-runtime-descriptors.d.ts +3 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-runtime-descriptors.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-runtime-descriptors.js +2 -0
- package/node_modules/@murphai/device-syncd/dist/configured-provider-runtime-descriptors.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/connect-config.d.ts +2 -2
- package/node_modules/@murphai/device-syncd/dist/connect-config.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/connect-config.js +4 -11
- package/node_modules/@murphai/device-syncd/dist/connect-config.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/errors.d.ts +8 -0
- package/node_modules/@murphai/device-syncd/dist/errors.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/errors.js +26 -0
- package/node_modules/@murphai/device-syncd/dist/errors.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/hosted-hints.js +1 -1
- package/node_modules/@murphai/device-syncd/dist/hosted-hints.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/hosted-runtime.d.ts +24 -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 +187 -28
- package/node_modules/@murphai/device-syncd/dist/hosted-runtime.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/http.d.ts +2 -9
- package/node_modules/@murphai/device-syncd/dist/http.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/http.js +26 -29
- package/node_modules/@murphai/device-syncd/dist/http.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/index.d.ts +7 -7
- package/node_modules/@murphai/device-syncd/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/index.js +1 -1
- package/node_modules/@murphai/device-syncd/dist/index.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.d.ts +60 -0
- package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.js +382 -0
- package/node_modules/@murphai/device-syncd/dist/junction-historical-backfill-progress.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/junction-resources.d.ts +17 -0
- package/node_modules/@murphai/device-syncd/dist/junction-resources.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/junction-resources.js +28 -0
- package/node_modules/@murphai/device-syncd/dist/junction-resources.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/metadata.d.ts +1 -0
- package/node_modules/@murphai/device-syncd/dist/metadata.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/metadata.js +1 -1
- package/node_modules/@murphai/device-syncd/dist/metadata.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/provider-configs.d.ts +3 -0
- package/node_modules/@murphai/device-syncd/dist/provider-configs.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-configs.js +2 -0
- package/node_modules/@murphai/device-syncd/dist/provider-configs.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-credential-policy.d.ts +6 -0
- package/node_modules/@murphai/device-syncd/dist/provider-credential-policy.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-credential-policy.js +22 -0
- package/node_modules/@murphai/device-syncd/dist/provider-credential-policy.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-job-definitions.d.ts +7 -0
- package/node_modules/@murphai/device-syncd/dist/provider-job-definitions.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-job-definitions.js +116 -0
- package/node_modules/@murphai/device-syncd/dist/provider-job-definitions.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/provider-label.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/provider-label.js +5 -5
- package/node_modules/@murphai/device-syncd/dist/provider-label.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/junction-client.d.ts +22 -5
- 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 +93 -58
- package/node_modules/@murphai/device-syncd/dist/providers/junction-client.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/junction-config.d.ts +3 -0
- package/node_modules/@murphai/device-syncd/dist/providers/junction-config.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/providers/junction-config.js +2 -0
- package/node_modules/@murphai/device-syncd/dist/providers/junction-config.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/providers/junction.d.ts +5 -28
- package/node_modules/@murphai/device-syncd/dist/providers/junction.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/junction.js +927 -719
- package/node_modules/@murphai/device-syncd/dist/providers/junction.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/oura-webhooks.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts +2 -14
- package/node_modules/@murphai/device-syncd/dist/providers/oura.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/oura.js +3 -26
- package/node_modules/@murphai/device-syncd/dist/providers/oura.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/provider-diagnostics.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/provider-diagnostics.js +34 -30
- package/node_modules/@murphai/device-syncd/dist/providers/provider-diagnostics.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/shared-oauth.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/strava-webhooks.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/strava.d.ts +2 -15
- package/node_modules/@murphai/device-syncd/dist/providers/strava.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/strava.js +8 -43
- package/node_modules/@murphai/device-syncd/dist/providers/strava.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts +2 -12
- package/node_modules/@murphai/device-syncd/dist/providers/whoop.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/providers/whoop.js +3 -22
- package/node_modules/@murphai/device-syncd/dist/providers/whoop.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/public-account.d.ts +25 -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 +32 -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 +9 -4
- package/node_modules/@murphai/device-syncd/dist/public-ingress.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/public-ingress.js +125 -40
- package/node_modules/@murphai/device-syncd/dist/public-ingress.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptor-shared.d.ts +3 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptor-shared.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptor-shared.js +4 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptor-shared.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptors.d.ts +10 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptors.d.ts.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptors.js +41 -0
- package/node_modules/@murphai/device-syncd/dist/public-provider-descriptors.js.map +1 -0
- package/node_modules/@murphai/device-syncd/dist/registry.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/service.d.ts +1 -1
- package/node_modules/@murphai/device-syncd/dist/service.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/service.js +219 -61
- package/node_modules/@murphai/device-syncd/dist/service.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/shared.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/accounts.d.ts +6 -0
- package/node_modules/@murphai/device-syncd/dist/store/accounts.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/accounts.js +129 -40
- package/node_modules/@murphai/device-syncd/dist/store/accounts.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/hosted-account-hydration.d.ts +2 -0
- package/node_modules/@murphai/device-syncd/dist/store/hosted-account-hydration.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/hosted-account-hydration.js +80 -6
- package/node_modules/@murphai/device-syncd/dist/store/hosted-account-hydration.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts +15 -0
- package/node_modules/@murphai/device-syncd/dist/store/jobs.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/jobs.js +119 -39
- package/node_modules/@murphai/device-syncd/dist/store/jobs.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/oauth-states.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/oauth-states.js +14 -8
- package/node_modules/@murphai/device-syncd/dist/store/oauth-states.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 +22 -4
- package/node_modules/@murphai/device-syncd/dist/store/schema.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/sync-state.d.ts +9 -1
- package/node_modules/@murphai/device-syncd/dist/store/sync-state.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store/sync-state.js +57 -52
- package/node_modules/@murphai/device-syncd/dist/store/sync-state.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store.d.ts +46 -2
- package/node_modules/@murphai/device-syncd/dist/store.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/store.js +103 -6
- package/node_modules/@murphai/device-syncd/dist/store.js.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/types.d.ts +24 -1
- package/node_modules/@murphai/device-syncd/dist/types.d.ts.map +1 -1
- package/node_modules/@murphai/device-syncd/dist/types.js.map +1 -1
- package/node_modules/@murphai/device-syncd/package.json +28 -0
- package/node_modules/@murphai/exercise-library/content/seed/at-home-exercise-strength-addon-250.csv +251 -251
- package/node_modules/@murphai/exercise-library/content/seed/at-home-exercise-stretch-addon-500.csv +359 -359
- package/node_modules/@murphai/exercise-library/content/seed/at-home-exercise-stretch.csv +154 -154
- package/node_modules/@murphai/exercise-library/dist/build.js.map +1 -1
- package/node_modules/@murphai/exercise-library/dist/runtime.js.map +1 -1
- package/node_modules/@murphai/exercise-library/dist/schema.d.ts.map +1 -1
- package/node_modules/@murphai/exercise-library/generated/catalog.hash +1 -1
- package/node_modules/@murphai/exercise-library/generated/exercise-details.json +12082 -764
- package/node_modules/@murphai/exercise-library/generated/exercise-facets.json +1 -1
- package/node_modules/@murphai/exercise-library/generated/exercise-index.json +1 -1
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-11776448.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-18306161.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-19817517.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-19913903.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-19995444.md +62 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-20662037.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-24568233.md +62 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-26914684.md +60 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-27141153.md +62 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-28186867.md +62 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-36495670.md +62 -0
- package/node_modules/@murphai/health-commons/content/sources/photobiomodulation-intake/pmid-37760145.md +62 -0
- package/node_modules/@murphai/health-commons/dist/build.js.map +1 -1
- package/node_modules/@murphai/health-commons/dist/catalog.d.ts +4 -4
- package/node_modules/@murphai/health-commons/dist/hash-artifact.js.map +1 -1
- package/node_modules/@murphai/health-commons/dist/runtime.d.ts +3 -7
- package/node_modules/@murphai/health-commons/dist/runtime.d.ts.map +1 -1
- package/node_modules/@murphai/health-commons/dist/runtime.js +59 -47
- package/node_modules/@murphai/health-commons/dist/runtime.js.map +1 -1
- package/node_modules/@murphai/health-commons/dist/sync-cloudflare-r2.js.map +1 -1
- package/node_modules/@murphai/health-commons/generated/catalog.hash +1 -1
- package/node_modules/@murphai/health-commons/generated/protocol-family-graph.json +1 -1
- package/node_modules/@murphai/health-commons/generated/protocol-index.json +1 -1
- package/node_modules/@murphai/health-commons/generated/protocol-run-specs.json +1 -1
- package/node_modules/@murphai/health-commons/generated/source-artifact-index.json +1 -1
- package/node_modules/@murphai/health-commons/generated/source-identities.ndjson +54 -0
- package/node_modules/@murphai/health-commons/generated/source-index.json +727 -1
- package/node_modules/@murphai/health-commons/generated/web/browse/biomarkers.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/browse/experiments.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/added-sugar-intake.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/adherence.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/adverse-symptoms.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/alanine-aminotransferase.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/alcohol-craving.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/alcohol-free-days.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/alcohol-intake.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/alcohol-withdrawal-symptoms.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/ankle-knee-to-wall-distance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/apolipoprotein-b.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/aspartate-aminotransferase.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/bilirubin.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/blood-glucose.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/blood-ketones-beta-hydroxybutyrate.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/blood-oxygen-spo2.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/blood-pressure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/blood-urea-nitrogen.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/body-fat-percent.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/body-weight.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/chosen-primary-outcome-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/continuous-glucose.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/creatine-kinase.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/daily-energy-intake-kcal.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/daily-protein-g-per-kg.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/daily-protein-grams.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/daily-step-count.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/daytime-sleepiness.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/deep-sleep-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/dietary-fiber-g-day.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/digestive-comfort.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/egfr.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/estimated-gfr.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/estimated-vo2max.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/fasting-triglycerides.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/gi-symptom-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/gi-tolerance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/hbot-session-tolerability.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/hdl-c.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/hrv-rmssd.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/lateral-knee-pain.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/ldl-c.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/ldl-cholesterol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/lean-body-mass.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/lean-mass.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/leg-heaviness-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/liver-enzyme-panel.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/macular-health-safety.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/moderate-to-vigorous-activity-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/mood-affect.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/morning-blood-pressure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/muscle-soreness-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/musculoskeletal-pain.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/non-hdl-c.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/non-hdl-cholesterol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/omega-3-index.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/perceived-recovery-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/perceived-recovery.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/perceived-stiffness.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/perceived-stress.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/periocular-wrinkle-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/postprandial-glucose-excursion.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/pre-sleep-arousal.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/rem-sleep-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/resting-heart-rate.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/running-tolerance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/saturated-fat-g-day.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/sedentary-time.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/self-reported-mood.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/serum-25-hydroxyvitamin-d.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/serum-creatinine.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/serum-uric-acid.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/shoulder-reach-distance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/sit-and-reach-distance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/skin-texture-roughness-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/skin-tolerability-symptoms.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/sleep-efficiency.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/sleep-onset-latency.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/sleep-quality.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/standardized-skin-photo-score.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/step-floor-days.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/stretching-adherence-sessions.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/stretching-session-burden.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/stretching-symptoms.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/subjective-eye-strain.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/subjective-satiety.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/supplement-adherence.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/task-performance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/toe-touch-distance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/total-cholesterol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/total-sleep-time.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/training-performance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/training-volume.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/triglycerides.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/urine-albumin-creatinine-ratio.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/visual-fatigue.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/visual-performance.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/waist-circumference.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/wake-time-variability.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/walking-bout-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/walking-cadence.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/biomarker/walking-safety-events.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/measurement_method/clinic-imaging-upgrade.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/measurement_method/home-standardized-photo-roi-analysis.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/measurement_method/standardized-photo-score-workflow.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/at-home-static-stretching-for-flexibility.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/bryan-johnson-blueprint.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/caffeine-curfew-dose-reset.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/cold-plunge.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/consistent-wake-time.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/creatine-monohydrate.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/daily-step-floor.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/daily-vitamin-d3-supplementation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/digital-sunset.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/finnish-sauna.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/hydrolyzed-collagen-peptides.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/hyperbaric-oxygen-therapy.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/it-band-syndrome-rehab-and-return-to-run.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/morning-outdoor-light-exposure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/no-added-sugar-diet.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/norwegian-4x4.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/oral-epa-dha-supplementation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/pneumatic-compression-pants.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/pre-sleep-resonance-breathing-and-meditation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/pre-sleep-silent-meditation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/prolonged-fasting-24-72-hours.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/protein-floor-high-protein-intake.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/psyllium-husk-for-cholesterol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/red-light-glasses-before-bed.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/red-near-infrared-skin-texture-photoaging.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/red-yeast-rice-for-cholesterol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/short-term-alcohol-abstinence.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/social-media-fast.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/tabata-20-10-interval-training.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/time-restricted-eating-18-6.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/walking-after-every-meal.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/whole-body-red-and-near-infrared-light-exposure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/bundles/protocol_variant/zone-2-aerobic-base-block.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/blood-oxygen-spo2/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/blood-oxygen-spo2/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/deep-sleep-minutes/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/deep-sleep-minutes/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/estimated-vo2max/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/estimated-vo2max/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/hrv-rmssd/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/hrv-rmssd/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/rem-sleep-minutes/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/rem-sleep-minutes/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/resting-heart-rate/overview.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/pages/biomarkers/resting-heart-rate/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/routes/index.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/blood-oxygen-spo2.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/deep-sleep-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/estimated-vo2max.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/hrv-rmssd.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/rem-sleep-minutes.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/biomarkers/resting-heart-rate.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/at-home-static-stretching-for-flexibility.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/bryan-johnson-blueprint.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/caffeine-curfew-dose-reset.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/cold-plunge.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/consistent-wake-time.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/daily-step-floor.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/digital-sunset.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/finnish-sauna.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/hyperbaric-oxygen-therapy.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/morning-outdoor-light-exposure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/no-added-sugar-diet.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/norwegian-4x4.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/pneumatic-compression-pants.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/pre-sleep-resonance-breathing-and-meditation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/pre-sleep-silent-meditation.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/prolonged-fasting-24-72-hours.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/protein-floor-high-protein-intake.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/red-light-glasses-before-bed.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/red-near-infrared-skin-texture-photoaging.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/short-term-alcohol-abstinence.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/tabata-20-10-interval-training.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/time-restricted-eating-18-6.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/walking-after-every-meal.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/whole-body-red-and-near-infrared-light-exposure.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/shell/experiments/zone-2-aerobic-base-block.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/at-home-static-stretching-for-flexibility/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/at-home-static-stretching-for-flexibility/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/at-home-static-stretching-for-flexibility/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/bryan-johnson-blueprint/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/bryan-johnson-blueprint/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/bryan-johnson-blueprint/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/caffeine-curfew-dose-reset/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/caffeine-curfew-dose-reset/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/caffeine-curfew-dose-reset/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/cold-plunge/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/cold-plunge/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/cold-plunge/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/consistent-wake-time/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/consistent-wake-time/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/consistent-wake-time/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/daily-step-floor/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/daily-step-floor/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/daily-step-floor/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/digital-sunset/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/digital-sunset/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/digital-sunset/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/finnish-sauna/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/finnish-sauna/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/finnish-sauna/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/hyperbaric-oxygen-therapy/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/hyperbaric-oxygen-therapy/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/hyperbaric-oxygen-therapy/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/morning-outdoor-light-exposure/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/morning-outdoor-light-exposure/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/morning-outdoor-light-exposure/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/no-added-sugar-diet/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/no-added-sugar-diet/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/no-added-sugar-diet/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/norwegian-4x4/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/norwegian-4x4/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/norwegian-4x4/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pneumatic-compression-pants/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pneumatic-compression-pants/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pneumatic-compression-pants/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-resonance-breathing-and-meditation/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-resonance-breathing-and-meditation/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-resonance-breathing-and-meditation/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-silent-meditation/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-silent-meditation/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/pre-sleep-silent-meditation/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/prolonged-fasting-24-72-hours/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/prolonged-fasting-24-72-hours/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/prolonged-fasting-24-72-hours/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/protein-floor-high-protein-intake/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/protein-floor-high-protein-intake/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/protein-floor-high-protein-intake/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-light-glasses-before-bed/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-light-glasses-before-bed/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-light-glasses-before-bed/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-near-infrared-skin-texture-photoaging/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-near-infrared-skin-texture-photoaging/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/red-near-infrared-skin-texture-photoaging/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/short-term-alcohol-abstinence/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/short-term-alcohol-abstinence/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/short-term-alcohol-abstinence/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/tabata-20-10-interval-training/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/tabata-20-10-interval-training/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/tabata-20-10-interval-training/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/time-restricted-eating-18-6/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/time-restricted-eating-18-6/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/time-restricted-eating-18-6/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/walking-after-every-meal/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/walking-after-every-meal/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/walking-after-every-meal/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/whole-body-red-and-near-infrared-light-exposure/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/whole-body-red-and-near-infrared-light-exposure/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/whole-body-red-and-near-infrared-light-exposure/results-public.json +2 -2
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/zone-2-aerobic-base-block/protocol.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/zone-2-aerobic-base-block/research.json +1 -1
- package/node_modules/@murphai/health-commons/generated/web/tabs/experiments/zone-2-aerobic-base-block/results-public.json +2 -2
- package/node_modules/@murphai/health-metrics/README.md +4 -0
- package/node_modules/@murphai/health-metrics/dist/catalog.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/activity.d.ts +15 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/activity.d.ts.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/activity.js +99 -0
- package/node_modules/@murphai/health-metrics/dist/definitions/activity.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/labs.d.ts +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/recovery.d.ts +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/recovery.d.ts.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/recovery.js +12 -0
- package/node_modules/@murphai/health-metrics/dist/definitions/recovery.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/definitions/sleep.d.ts +1 -1
- package/node_modules/@murphai/health-metrics/dist/format.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/goals.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/index.d.ts +0 -2
- package/node_modules/@murphai/health-metrics/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/index.js +0 -2
- package/node_modules/@murphai/health-metrics/dist/index.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/murph-age-source-routes.d.ts.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/murph-age-source-routes.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/murph-age.d.ts.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/murph-age.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/normalize.js.map +1 -1
- package/node_modules/@murphai/health-metrics/dist/selectors.js.map +1 -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.map +1 -1
- 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.map +1 -1
- package/node_modules/@murphai/health-metrics/package.json +10 -0
- package/node_modules/@murphai/importers/README.md +13 -0
- package/node_modules/@murphai/importers/dist/assessment/import-assessment-response.js.map +1 -1
- package/node_modules/@murphai/importers/dist/clinical-records/index.d.ts +19 -0
- package/node_modules/@murphai/importers/dist/clinical-records/index.d.ts.map +1 -0
- package/node_modules/@murphai/importers/dist/clinical-records/index.js +1523 -0
- package/node_modules/@murphai/importers/dist/clinical-records/index.js.map +1 -0
- package/node_modules/@murphai/importers/dist/core-port.d.ts +1 -0
- 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.map +1 -1
- package/node_modules/@murphai/importers/dist/create-importers.js.map +1 -1
- package/node_modules/@murphai/importers/dist/csv-sample-import-planner.js.map +1 -1
- package/node_modules/@murphai/importers/dist/csv-sample-importer.js.map +1 -1
- 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 +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/index.d.ts.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/index.js +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/index.js.map +1 -1
- 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 +3 -2
- 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 +12 -20
- package/node_modules/@murphai/importers/dist/device-providers/junction-resources.js.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/junction.d.ts +18 -0
- package/node_modules/@murphai/importers/dist/device-providers/junction.d.ts.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/junction.js +1026 -123
- package/node_modules/@murphai/importers/dist/device-providers/junction.js.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.d.ts +132 -132
- package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.d.ts.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/provider-descriptors.js.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/registry.js.map +1 -1
- package/node_modules/@murphai/importers/dist/device-providers/whoop.js.map +1 -1
- package/node_modules/@murphai/importers/dist/document-importer.js.map +1 -1
- package/node_modules/@murphai/importers/dist/meal-importer.js.map +1 -1
- package/node_modules/@murphai/importers/dist/preset-registry.js.map +1 -1
- package/node_modules/@murphai/importers/package.json +5 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/bootstrap-doctor.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/environment.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/reads.js +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/reads.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/service.d.ts.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/service.js +2 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/service.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-app/storage-repair.d.ts +3 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/storage-repair.d.ts.map +1 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/storage-repair.js +37 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/storage-repair.js.map +1 -0
- package/node_modules/@murphai/inbox-services/dist/inbox-app/types.d.ts +22 -2
- package/node_modules/@murphai/inbox-services/dist/inbox-app/types.d.ts.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/connectors.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/daemon.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/parser.d.ts +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/parser.js +2 -2
- package/node_modules/@murphai/inbox-services/dist/inbox-services/parser.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/promotions.d.ts +2 -2
- package/node_modules/@murphai/inbox-services/dist/inbox-services/promotions.d.ts.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/promotions.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/query.d.ts +27 -27
- package/node_modules/@murphai/inbox-services/dist/inbox-services/query.d.ts.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/query.js +2 -2
- package/node_modules/@murphai/inbox-services/dist/inbox-services/query.js.map +1 -1
- package/node_modules/@murphai/inbox-services/dist/inbox-services/state.js.map +1 -1
- package/node_modules/@murphai/inboxd/README.md +3 -2
- package/node_modules/@murphai/inboxd/dist/checkpoint.d.ts +2 -0
- package/node_modules/@murphai/inboxd/dist/checkpoint.d.ts.map +1 -0
- package/node_modules/@murphai/inboxd/dist/checkpoint.js +2 -0
- package/node_modules/@murphai/inboxd/dist/checkpoint.js.map +1 -0
- package/node_modules/@murphai/inboxd/dist/connectors/email/directness.d.ts +11 -0
- package/node_modules/@murphai/inboxd/dist/connectors/email/directness.d.ts.map +1 -0
- package/node_modules/@murphai/inboxd/dist/connectors/email/directness.js +67 -0
- package/node_modules/@murphai/inboxd/dist/connectors/email/directness.js.map +1 -0
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize-parsed.d.ts +3 -1
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize-parsed.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize-parsed.js +18 -9
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize-parsed.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize.d.ts +1 -10
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize.js +2 -65
- package/node_modules/@murphai/inboxd/dist/connectors/email/normalize.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/hosted-conversation.d.ts +0 -15
- package/node_modules/@murphai/inboxd/dist/connectors/hosted-conversation.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/hosted-conversation.js +0 -33
- package/node_modules/@murphai/inboxd/dist/connectors/hosted-conversation.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/connectors/telegram/connector.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/contracts/capture.d.ts +1 -2
- package/node_modules/@murphai/inboxd/dist/contracts/capture.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/contracts/search.d.ts +2 -2
- package/node_modules/@murphai/inboxd/dist/contracts/search.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/index.d.ts +1 -0
- package/node_modules/@murphai/inboxd/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/index.js +1 -0
- package/node_modules/@murphai/inboxd/dist/index.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/envelope-migration.d.ts +21 -0
- package/node_modules/@murphai/inboxd/dist/indexing/envelope-migration.d.ts.map +1 -0
- package/node_modules/@murphai/inboxd/dist/indexing/envelope-migration.js +259 -0
- package/node_modules/@murphai/inboxd/dist/indexing/envelope-migration.js.map +1 -0
- package/node_modules/@murphai/inboxd/dist/indexing/parser-derivatives.d.ts +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/parser-derivatives.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/parser-derivatives.js +7 -4
- package/node_modules/@murphai/inboxd/dist/indexing/parser-derivatives.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/persist/canonical-records.d.ts +13 -1
- package/node_modules/@murphai/inboxd/dist/indexing/persist/canonical-records.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/persist/canonical-records.js +68 -13
- package/node_modules/@murphai/inboxd/dist/indexing/persist/canonical-records.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts +12 -6
- package/node_modules/@murphai/inboxd/dist/indexing/persist.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/persist.js +226 -73
- package/node_modules/@murphai/inboxd/dist/indexing/persist.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/indexing/retention.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/pipeline.js +4 -4
- package/node_modules/@murphai/inboxd/dist/kernel/pipeline.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/registry.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite/rows.d.ts +2 -2
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite/rows.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite/rows.js +3 -3
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite/rows.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite.js +42 -12
- package/node_modules/@murphai/inboxd/dist/kernel/sqlite.js.map +1 -1
- package/node_modules/@murphai/inboxd/dist/retention.d.ts +2 -0
- package/node_modules/@murphai/inboxd/dist/retention.d.ts.map +1 -0
- package/node_modules/@murphai/inboxd/dist/retention.js +2 -0
- package/node_modules/@murphai/inboxd/dist/retention.js.map +1 -0
- package/node_modules/@murphai/inboxd/dist/runtime.d.ts +2 -1
- package/node_modules/@murphai/inboxd/dist/runtime.d.ts.map +1 -1
- package/node_modules/@murphai/inboxd/dist/runtime.js +1 -0
- package/node_modules/@murphai/inboxd/dist/runtime.js.map +1 -1
- package/node_modules/@murphai/inboxd/package.json +12 -0
- package/node_modules/@murphai/messaging-ingress/README.md +1 -5
- package/node_modules/@murphai/messaging-ingress/dist/internal.d.ts.map +1 -1
- package/node_modules/@murphai/messaging-ingress/dist/internal.js +4 -0
- package/node_modules/@murphai/messaging-ingress/dist/internal.js.map +1 -1
- package/node_modules/@murphai/messaging-ingress/dist/linq-webhook.d.ts.map +1 -1
- package/node_modules/@murphai/messaging-ingress/dist/linq-webhook.js.map +1 -1
- package/node_modules/@murphai/messaging-ingress/package.json +0 -4
- package/node_modules/@murphai/operator-config/dist/agentmail-runtime.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/codex-resume-state.d.ts +2 -0
- package/node_modules/@murphai/operator-config/dist/assistant/codex-resume-state.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/codex-resume-state.js +5 -0
- package/node_modules/@murphai/operator-config/dist/assistant/codex-resume-state.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/current-delivery-route.d.ts +5 -0
- package/node_modules/@murphai/operator-config/dist/assistant/current-delivery-route.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/current-delivery-route.js +58 -0
- package/node_modules/@murphai/operator-config/dist/assistant/current-delivery-route.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/delivery-failure.d.ts +2 -2
- package/node_modules/@murphai/operator-config/dist/assistant/delivery-failure.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/delivery-failure.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts +5 -5
- package/node_modules/@murphai/operator-config/dist/assistant/hosted-config.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts +32 -31
- package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js +4 -2
- package/node_modules/@murphai/operator-config/dist/assistant/target-runtime.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/assistant-backend.d.ts +2 -2
- package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.d.ts +488 -317
- 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 +171 -22
- package/node_modules/@murphai/operator-config/dist/assistant-cli-contracts.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-cli-contracts.d.ts +32 -27
- package/node_modules/@murphai/operator-config/dist/device-cli-contracts.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-cli-contracts.js +11 -1
- package/node_modules/@murphai/operator-config/dist/device-cli-contracts.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-daemon/paths.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-daemon.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-sync-browser-opener.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/device-sync-client.d.ts +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 +6 -2
- package/node_modules/@murphai/operator-config/dist/device-sync-client.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/hosted-assistant-config-constants.d.ts +1 -1
- package/node_modules/@murphai/operator-config/dist/hosted-assistant-config-constants.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/hosted-assistant-config.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/inbox-cli-contracts.d.ts +138 -93
- package/node_modules/@murphai/operator-config/dist/inbox-cli-contracts.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/inbox-cli-contracts.js +40 -3
- package/node_modules/@murphai/operator-config/dist/inbox-cli-contracts.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/linq-runtime.d.ts +7 -11
- package/node_modules/@murphai/operator-config/dist/linq-runtime.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/linq-runtime.js +25 -10
- package/node_modules/@murphai/operator-config/dist/linq-runtime.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/message-formatting.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/message-formatting.js +14 -3
- package/node_modules/@murphai/operator-config/dist/message-formatting.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/operator-config/self-delivery-targets.d.ts +4 -2
- package/node_modules/@murphai/operator-config/dist/operator-config/self-delivery-targets.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/operator-config/storage.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/operator-config.d.ts +7 -5
- package/node_modules/@murphai/operator-config/dist/operator-config.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/operator-config.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts +54 -54
- package/node_modules/@murphai/operator-config/dist/setup-cli-contracts.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/setup-runtime-env.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/telegram-runtime.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/dist/telegram-runtime.js +11 -1
- package/node_modules/@murphai/operator-config/dist/telegram-runtime.js.map +1 -1
- package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.d.ts +85 -85
- package/node_modules/@murphai/operator-config/dist/vault-cli-contracts.js +1 -1
- package/node_modules/@murphai/operator-config/dist/vault-cli-errors.d.ts.map +1 -1
- package/node_modules/@murphai/operator-config/package.json +0 -5
- package/node_modules/@murphai/parsers/README.md +4 -2
- package/node_modules/@murphai/parsers/dist/adapters/ffmpeg.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/adapters/poppler-pdf.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/adapters/text-file.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/adapters/whisper-cpp.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/adapters/zxing-wasm.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/contracts/parser-output.d.ts +15 -0
- package/node_modules/@murphai/parsers/dist/contracts/parser-output.d.ts.map +1 -0
- package/node_modules/@murphai/parsers/dist/contracts/parser-output.js +368 -0
- package/node_modules/@murphai/parsers/dist/contracts/parser-output.js.map +1 -0
- package/node_modules/@murphai/parsers/dist/index.d.ts +5 -2
- package/node_modules/@murphai/parsers/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/parsers/dist/index.js +3 -1
- package/node_modules/@murphai/parsers/dist/index.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/parser-result.d.ts +2 -0
- package/node_modules/@murphai/parsers/dist/parser-result.d.ts.map +1 -0
- package/node_modules/@murphai/parsers/dist/parser-result.js +2 -0
- package/node_modules/@murphai/parsers/dist/parser-result.js.map +1 -0
- package/node_modules/@murphai/parsers/dist/pipelines/parse-attachment.d.ts.map +1 -1
- package/node_modules/@murphai/parsers/dist/pipelines/parse-attachment.js +2 -245
- package/node_modules/@murphai/parsers/dist/pipelines/parse-attachment.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/pipelines/worker.d.ts +1 -1
- package/node_modules/@murphai/parsers/dist/pipelines/worker.d.ts.map +1 -1
- package/node_modules/@murphai/parsers/dist/pipelines/worker.js +12 -4
- package/node_modules/@murphai/parsers/dist/pipelines/worker.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/publish/legacy-attempt-compactor.d.ts +18 -0
- package/node_modules/@murphai/parsers/dist/publish/legacy-attempt-compactor.d.ts.map +1 -0
- package/node_modules/@murphai/parsers/dist/publish/legacy-attempt-compactor.js +480 -0
- package/node_modules/@murphai/parsers/dist/publish/legacy-attempt-compactor.js.map +1 -0
- package/node_modules/@murphai/parsers/dist/publish/writer.d.ts +26 -8
- package/node_modules/@murphai/parsers/dist/publish/writer.d.ts.map +1 -1
- package/node_modules/@murphai/parsers/dist/publish/writer.js +168 -57
- package/node_modules/@murphai/parsers/dist/publish/writer.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/registry/policy.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/registry/registry.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/shared.js.map +1 -1
- package/node_modules/@murphai/parsers/dist/toolchain/discover.js.map +1 -1
- package/node_modules/@murphai/parsers/package.json +4 -0
- package/node_modules/@murphai/query/dist/automation.d.ts +3 -2
- package/node_modules/@murphai/query/dist/automation.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/automation.js +68 -5
- package/node_modules/@murphai/query/dist/automation.js.map +1 -1
- package/node_modules/@murphai/query/dist/biomarker-change-sentiment.d.ts +10 -0
- package/node_modules/@murphai/query/dist/biomarker-change-sentiment.d.ts.map +1 -0
- package/node_modules/@murphai/query/dist/biomarker-change-sentiment.js +24 -0
- package/node_modules/@murphai/query/dist/biomarker-change-sentiment.js.map +1 -0
- package/node_modules/@murphai/query/dist/browser-experiments.d.ts +4 -0
- package/node_modules/@murphai/query/dist/browser-experiments.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser-experiments.js +3 -0
- package/node_modules/@murphai/query/dist/browser-experiments.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/biomarker-panel.js +3 -3
- package/node_modules/@murphai/query/dist/browser-replica/biomarker-panel.js.map +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 +20 -0
- package/node_modules/@murphai/query/dist/browser-replica/build.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/experiments.d.ts +8 -2
- package/node_modules/@murphai/query/dist/browser-replica/experiments.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/experiments.js +128 -26
- package/node_modules/@murphai/query/dist/browser-replica/experiments.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/murph-age.d.ts +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/murph-age.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/murph-age.js +2 -1
- package/node_modules/@murphai/query/dist/browser-replica/murph-age.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/query.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/shared.d.ts +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/shared.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/shared.js +1 -0
- package/node_modules/@murphai/query/dist/browser-replica/shared.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica/views.js +1 -0
- package/node_modules/@murphai/query/dist/browser-replica/views.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica.d.ts +1 -3
- package/node_modules/@murphai/query/dist/browser-replica.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser-replica.js +0 -1
- package/node_modules/@murphai/query/dist/browser-replica.js.map +1 -1
- package/node_modules/@murphai/query/dist/browser.d.ts +2 -2
- package/node_modules/@murphai/query/dist/browser.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/browser.js +1 -1
- package/node_modules/@murphai/query/dist/browser.js.map +1 -1
- package/node_modules/@murphai/query/dist/canonical-entities.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/canonical-entities.js +1 -0
- package/node_modules/@murphai/query/dist/canonical-entities.js.map +1 -1
- package/node_modules/@murphai/query/dist/entity-families.d.ts +1 -1
- package/node_modules/@murphai/query/dist/entity-families.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/entity-families.js +1 -0
- package/node_modules/@murphai/query/dist/entity-families.js.map +1 -1
- package/node_modules/@murphai/query/dist/experiment-adherence.d.ts +55 -2
- package/node_modules/@murphai/query/dist/experiment-adherence.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/experiment-adherence.js +367 -13
- package/node_modules/@murphai/query/dist/experiment-adherence.js.map +1 -1
- package/node_modules/@murphai/query/dist/experiment-progress-card.d.ts +6 -1
- package/node_modules/@murphai/query/dist/experiment-progress-card.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/experiment-progress-card.js +48 -13
- package/node_modules/@murphai/query/dist/experiment-progress-card.js.map +1 -1
- package/node_modules/@murphai/query/dist/experiments.d.ts +11 -1
- package/node_modules/@murphai/query/dist/experiments.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/experiments.js +265 -36
- package/node_modules/@murphai/query/dist/experiments.js.map +1 -1
- package/node_modules/@murphai/query/dist/export-pack.js.map +1 -1
- package/node_modules/@murphai/query/dist/group-weekly.d.ts +32 -0
- package/node_modules/@murphai/query/dist/group-weekly.d.ts.map +1 -0
- package/node_modules/@murphai/query/dist/group-weekly.js +166 -0
- package/node_modules/@murphai/query/dist/group-weekly.js.map +1 -0
- package/node_modules/@murphai/query/dist/health/assessments.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/blood-tests.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/canonical-collector.d.ts +1 -0
- package/node_modules/@murphai/query/dist/health/canonical-collector.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/health/canonical-collector.js +4 -1
- package/node_modules/@murphai/query/dist/health/canonical-collector.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/foods.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/habitat.d.ts +6 -0
- package/node_modules/@murphai/query/dist/health/habitat.d.ts.map +1 -0
- package/node_modules/@murphai/query/dist/health/habitat.js +12 -0
- package/node_modules/@murphai/query/dist/health/habitat.js.map +1 -0
- package/node_modules/@murphai/query/dist/health/immunizations.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/index.d.ts +1 -0
- package/node_modules/@murphai/query/dist/health/index.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/health/index.js +1 -0
- package/node_modules/@murphai/query/dist/health/index.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/projections.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/projectors/history.d.ts +1 -1
- package/node_modules/@murphai/query/dist/health/providers.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/recipes.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/registries.d.ts +11 -0
- package/node_modules/@murphai/query/dist/health/registries.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/health/registries.js +18 -2
- package/node_modules/@murphai/query/dist/health/registries.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/supplements.js.map +1 -1
- package/node_modules/@murphai/query/dist/health/workout-formats.js.map +1 -1
- package/node_modules/@murphai/query/dist/id-families.d.ts +1 -13
- package/node_modules/@murphai/query/dist/id-families.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/id-families.js +1 -119
- package/node_modules/@murphai/query/dist/id-families.js.map +1 -1
- package/node_modules/@murphai/query/dist/index.d.ts +10 -15
- package/node_modules/@murphai/query/dist/index.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/index.js +7 -31
- package/node_modules/@murphai/query/dist/index.js.map +1 -1
- package/node_modules/@murphai/query/dist/knowledge-format.js +1 -1
- package/node_modules/@murphai/query/dist/knowledge-graph.js +4 -4
- package/node_modules/@murphai/query/dist/knowledge-model.d.ts +1 -1
- package/node_modules/@murphai/query/dist/knowledge-search.js +2 -2
- package/node_modules/@murphai/query/dist/knowledge-search.js.map +1 -1
- package/node_modules/@murphai/query/dist/meal-nutrition.js.map +1 -1
- package/node_modules/@murphai/query/dist/memory.d.ts +3 -2
- package/node_modules/@murphai/query/dist/memory.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/memory.js +4 -1
- package/node_modules/@murphai/query/dist/memory.js.map +1 -1
- package/node_modules/@murphai/query/dist/metrics/index.js +23 -1
- package/node_modules/@murphai/query/dist/metrics/index.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 +101 -7
- package/node_modules/@murphai/query/dist/metrics/projection.js.map +1 -1
- package/node_modules/@murphai/query/dist/murph-age.d.ts +1 -1
- package/node_modules/@murphai/query/dist/murph-age.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/murph-age.js +2 -1
- package/node_modules/@murphai/query/dist/murph-age.js.map +1 -1
- package/node_modules/@murphai/query/dist/overview-weekly-stats.js.map +1 -1
- package/node_modules/@murphai/query/dist/overview.js.map +1 -1
- package/node_modules/@murphai/query/dist/projection/entity-store.d.ts +2 -0
- package/node_modules/@murphai/query/dist/projection/entity-store.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/projection/entity-store.js +56 -0
- package/node_modules/@murphai/query/dist/projection/entity-store.js.map +1 -1
- package/node_modules/@murphai/query/dist/projection/rebuild.js.map +1 -1
- package/node_modules/@murphai/query/dist/projection/schema.d.ts +1 -1
- package/node_modules/@murphai/query/dist/projection/schema.js +2 -2
- package/node_modules/@murphai/query/dist/projection/schema.js.map +1 -1
- package/node_modules/@murphai/query/dist/projection/wearable-summary-compose.js +25 -2
- 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 +1 -0
- package/node_modules/@murphai/query/dist/projection/wearable-summary-projector.js.map +1 -1
- package/node_modules/@murphai/query/dist/projection/wearable-summary-store.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/protocols.js.map +1 -1
- package/node_modules/@murphai/query/dist/query-projection-types.d.ts +7 -0
- package/node_modules/@murphai/query/dist/query-projection-types.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/query-projection.d.ts +3 -2
- package/node_modules/@murphai/query/dist/query-projection.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/query-projection.js +5 -1
- package/node_modules/@murphai/query/dist/query-projection.js.map +1 -1
- package/node_modules/@murphai/query/dist/read-model.d.ts +4 -0
- package/node_modules/@murphai/query/dist/read-model.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/read-model.js +1 -0
- package/node_modules/@murphai/query/dist/read-model.js.map +1 -1
- package/node_modules/@murphai/query/dist/scheduled-logs.js.map +1 -1
- package/node_modules/@murphai/query/dist/search-shared.js.map +1 -1
- package/node_modules/@murphai/query/dist/search.js.map +1 -1
- package/node_modules/@murphai/query/dist/summaries.js.map +1 -1
- package/node_modules/@murphai/query/dist/timeline.js.map +1 -1
- package/node_modules/@murphai/query/dist/vault-source.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/vault-source.js +39 -3
- package/node_modules/@murphai/query/dist/vault-source.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/candidates.d.ts +5 -2
- package/node_modules/@murphai/query/dist/wearables/candidates.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/candidates.js +305 -7
- package/node_modules/@murphai/query/dist/wearables/candidates.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/dedupe.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/dedupe.js +3 -1
- package/node_modules/@murphai/query/dist/wearables/dedupe.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/observation.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/origin.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/provider-policy.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 -79
- package/node_modules/@murphai/query/dist/wearables/public-output.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/selection.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/selection.js +5 -1
- package/node_modules/@murphai/query/dist/wearables/selection.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/sleep-association.d.ts +9 -0
- package/node_modules/@murphai/query/dist/wearables/sleep-association.d.ts.map +1 -0
- package/node_modules/@murphai/query/dist/wearables/sleep-association.js +81 -0
- package/node_modules/@murphai/query/dist/wearables/sleep-association.js.map +1 -0
- package/node_modules/@murphai/query/dist/wearables/types.d.ts +29 -4
- package/node_modules/@murphai/query/dist/wearables/types.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/wearables/types.js.map +1 -1
- package/node_modules/@murphai/query/dist/wearables.d.ts.map +1 -1
- package/node_modules/@murphai/query/dist/wearables.js +50 -50
- 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-state-fs.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/assistant-state-security.js +1 -1
- package/node_modules/@murphai/runtime-state/dist/assistant-state-security.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/atomic-write.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/clinical-records-local-state-descriptors.d.ts +3 -0
- package/node_modules/@murphai/runtime-state/dist/clinical-records-local-state-descriptors.d.ts.map +1 -0
- package/node_modules/@murphai/runtime-state/dist/clinical-records-local-state-descriptors.js +12 -0
- package/node_modules/@murphai/runtime-state/dist/clinical-records-local-state-descriptors.js.map +1 -0
- 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 +65 -31
- package/node_modules/@murphai/runtime-state/dist/hosted-bundles.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-domain-crypto.d.ts +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-domain-crypto.d.ts.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-domain-crypto.js +10 -0
- package/node_modules/@murphai/runtime-state/dist/hosted-domain-crypto.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-email.d.ts +11 -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 +56 -3
- package/node_modules/@murphai/runtime-state/dist/hosted-email.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-storage.d.ts +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-storage.d.ts.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/hosted-storage.js +12 -2
- package/node_modules/@murphai/runtime-state/dist/hosted-storage.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-helpers.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.d.ts.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.js +2 -0
- package/node_modules/@murphai/runtime-state/dist/local-state-descriptor-manifests.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/locks.d.ts.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/loopback-control-plane.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/process-env.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/process-identity.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/runtime-paths.d.ts +2 -0
- package/node_modules/@murphai/runtime-state/dist/runtime-paths.d.ts.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/runtime-paths.js +2 -0
- package/node_modules/@murphai/runtime-state/dist/runtime-paths.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/shared.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/sqlite-warning-filter.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/sqlite.js.map +1 -1
- package/node_modules/@murphai/runtime-state/dist/ulid.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-agentmail.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-assistant-account.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-assistant-defaults.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-assistant-wizard.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-assistant.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-cli.d.ts.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-cli.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-services/toolchain.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-services.js.map +1 -1
- package/node_modules/@murphai/setup-cli/dist/setup-wizard-options.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/README.md +11 -0
- package/node_modules/@murphai/vault-usecases/dist/assistant-vault-paths.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/clinical-records.d.ts +102 -0
- package/node_modules/@murphai/vault-usecases/dist/clinical-records.d.ts.map +1 -0
- package/node_modules/@murphai/vault-usecases/dist/clinical-records.js +374 -0
- package/node_modules/@murphai/vault-usecases/dist/clinical-records.js.map +1 -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 +13 -4
- package/node_modules/@murphai/vault-usecases/dist/commands/query-record-command-helpers.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/experiment-onboarding-options.d.ts +2 -2
- package/node_modules/@murphai/vault-usecases/dist/health-cli-descriptors.d.ts +3 -3
- package/node_modules/@murphai/vault-usecases/dist/health-cli-descriptors.js +1 -1
- package/node_modules/@murphai/vault-usecases/dist/preferences.d.ts +34 -3
- package/node_modules/@murphai/vault-usecases/dist/preferences.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/preferences.js +84 -1
- package/node_modules/@murphai/vault-usecases/dist/preferences.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/testing/junction-wearable-fixture.d.ts +16 -2
- package/node_modules/@murphai/vault-usecases/dist/testing/junction-wearable-fixture.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/testing/junction-wearable-fixture.js +20 -1
- package/node_modules/@murphai/vault-usecases/dist/testing/junction-wearable-fixture.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/testing.d.ts +2 -2
- package/node_modules/@murphai/vault-usecases/dist/testing.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/testing.js +1 -1
- package/node_modules/@murphai/vault-usecases/dist/testing.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/capture.d.ts +18 -18
- package/node_modules/@murphai/vault-usecases/dist/usecases/capture.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/clinical-imports.d.ts +154 -154
- 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 +3 -1
- 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 +10 -9
- 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 +2 -1
- 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 +35 -35
- package/node_modules/@murphai/vault-usecases/dist/usecases/experiment-journal-vault.d.ts +38 -37
- 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 +37 -5
- 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.js +7 -7
- package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts +2 -2
- package/node_modules/@murphai/vault-usecases/dist/usecases/food.d.ts.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 +57 -20
- 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 +20 -10
- 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 +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/intervention-experiment-link.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/intervention.d.ts +6 -6
- package/node_modules/@murphai/vault-usecases/dist/usecases/intervention.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/measurement-read.d.ts +9 -9
- package/node_modules/@murphai/vault-usecases/dist/usecases/measurement-read.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/measurement.d.ts +4 -4
- package/node_modules/@murphai/vault-usecases/dist/usecases/measurement.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts +13 -13
- package/node_modules/@murphai/vault-usecases/dist/usecases/provider-event.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/recipe.d.ts +3 -3
- package/node_modules/@murphai/vault-usecases/dist/usecases/runtime.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/runtime.js +1 -0
- package/node_modules/@murphai/vault-usecases/dist/usecases/runtime.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts +1 -0
- package/node_modules/@murphai/vault-usecases/dist/usecases/shared.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js +101 -8
- package/node_modules/@murphai/vault-usecases/dist/usecases/shared.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts +34 -0
- package/node_modules/@murphai/vault-usecases/dist/usecases/types.d.ts.map +1 -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 +33 -33
- package/node_modules/@murphai/vault-usecases/dist/usecases/workout-format.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/workout-measurement.d.ts +4 -4
- package/node_modules/@murphai/vault-usecases/dist/usecases/workout-model.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/usecases/workout-read.d.ts +8 -8
- 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 +1 -1
- 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 +48 -48
- package/node_modules/@murphai/vault-usecases/dist/usecases/workout.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/vault-services.d.ts.map +1 -1
- package/node_modules/@murphai/vault-usecases/dist/vault-services.js +1 -0
- package/node_modules/@murphai/vault-usecases/dist/vault-services.js.map +1 -1
- package/node_modules/@murphai/vault-usecases/package.json +8 -0
- package/node_modules/incur/dist/Cli.d.ts +4 -0
- package/node_modules/incur/dist/Cli.js +10 -3
- package/node_modules/incur/dist/SyncSkills.d.ts +2 -0
- package/node_modules/incur/dist/SyncSkills.js +5 -2
- package/node_modules/incur/src/Cli.ts +14 -3
- package/node_modules/incur/src/SyncSkills.ts +9 -2
- package/package.json +6 -4
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/turn-attachment-image-refs.d.ts +0 -15
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/turn-attachment-image-refs.d.ts.map +0 -1
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/turn-attachment-image-refs.js +0 -79
- package/node_modules/@murphai/assistant-engine/dist/assistant-codex/turn-attachment-image-refs.js.map +0 -1
- package/node_modules/@murphai/device-syncd/dist/providers/junction-connect-sources.d.ts.map +0 -1
- package/node_modules/@murphai/device-syncd/dist/providers/junction-connect-sources.js.map +0 -1
- package/node_modules/@murphai/messaging-ingress/dist/whatsapp-webhook.d.ts +0 -73
- package/node_modules/@murphai/messaging-ingress/dist/whatsapp-webhook.d.ts.map +0 -1
- package/node_modules/@murphai/messaging-ingress/dist/whatsapp-webhook.js +0 -212
- package/node_modules/@murphai/messaging-ingress/dist/whatsapp-webhook.js.map +0 -1
- package/node_modules/@murphai/operator-config/dist/runtime-errors.d.ts +0 -4
- package/node_modules/@murphai/operator-config/dist/runtime-errors.d.ts.map +0 -1
- package/node_modules/@murphai/operator-config/dist/runtime-errors.js +0 -19
- package/node_modules/@murphai/operator-config/dist/runtime-errors.js.map +0 -1
- package/node_modules/@murphai/operator-config/dist/whatsapp-runtime.d.ts +0 -34
- package/node_modules/@murphai/operator-config/dist/whatsapp-runtime.d.ts.map +0 -1
- package/node_modules/@murphai/operator-config/dist/whatsapp-runtime.js +0 -208
- package/node_modules/@murphai/operator-config/dist/whatsapp-runtime.js.map +0 -1
- package/node_modules/@murphai/vault-usecases/dist/query-id-families.d.ts +0 -4
- package/node_modules/@murphai/vault-usecases/dist/query-id-families.d.ts.map +0 -1
- package/node_modules/@murphai/vault-usecases/dist/query-id-families.js +0 -104
- package/node_modules/@murphai/vault-usecases/dist/query-id-families.js.map +0 -1
- /package/node_modules/@murphai/device-syncd/dist/{providers → config}/junction-connect-sources.d.ts +0 -0
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
|
-
import { mkdtemp,
|
|
3
|
+
import { mkdtemp, rm, stat } from 'node:fs/promises';
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
|
+
import { HOSTED_CLI_BRIDGE_TOKEN_ENV } from '@murphai/hosted-execution/cli-runtime-bridge';
|
|
6
7
|
import { normalizeNullableString } from '@murphai/operator-config/text/shared';
|
|
7
8
|
import { VaultCliError } from '@murphai/operator-config/vault-cli-errors';
|
|
8
|
-
import {
|
|
9
|
+
import { readHostedCanonicalWritePort, withHostedCanonicalWritePort, } from '@murphai/core';
|
|
10
|
+
import { registerStopWarmCodexAppServer } from './codex-lifecycle.js';
|
|
11
|
+
import { extractAssistantMessageFallback, extractCodexErrorInfo, extractCodexErrorMessage, extractCodexCompletedFinalAgentMessageTextFromNormalized, extractCodexProgressEventFromNormalized, isCodexCompletedUserMessageItemFromNormalized, extractCodexStatusEventFromStderrLine, extractCodexTraceUpdatesFromNormalized, extractCodexContextCompactionProgressTextFromNormalized, normalizeCodexEvent, normalizeStreamingText, } from './assistant-codex-events.js';
|
|
9
12
|
import { buildCodexTurnInterruptParams, buildCodexThreadResumeParams, buildCodexThreadStartParams, buildCodexTurnSteerParams, buildCodexTurnStartParams, mapCodexAppServerApprovalPolicy, mapCodexAppServerSandboxMode, resolveSupportedCodexAppServerApprovalPolicy, } from './assistant-codex/app-server-requests.js';
|
|
10
13
|
import { buildRuntimeIssueInputForFailedCodexAction, createCodexActionDiagnosticsReducer, } from './assistant-codex/action-diagnostics.js';
|
|
11
|
-
import { executeMurphDynamicToolRequest, isComputerDynamicToolRequest, readMurphDynamicToolRequest, } from './assistant-codex/dynamic-tools.js';
|
|
12
|
-
import { attachCodexAppServerProcessExitCleanup, attachCodexAbortListener, consumeCompleteLines, denyUnsupportedCodexServerRequest, readCodexRpcResponseId, readCodexRpcServerRequestId, rejectPendingCodexRpcRequests, resolvePendingCodexRpcRequest, signalCodexAppServerChild, stopCodexAppServerChild, stripUndefinedRpcParams, tryParseJsonLine, waitForCodexSpawn, withCodexRpcTimeout, writeCodexRpcMessage, } from './assistant-codex/app-server-rpc.js';
|
|
14
|
+
import { executeMurphDynamicToolRequest, isComputerDynamicToolRequest, MURPH_ASSISTANT_STYLE_TOOL, readMurphDynamicToolRequest, } from './assistant-codex/dynamic-tools.js';
|
|
15
|
+
import { attachCodexAppServerProcessExitCleanup, attachCodexAbortListener, consumeCompleteLines, denyUnsupportedCodexServerRequest, rejectCodexServerRequest, readCodexRpcResponseId, readCodexRpcServerRequestId, rejectPendingCodexRpcRequests, resolvePendingCodexRpcRequest, signalCodexAppServerChild, stopCodexAppServerChild, stripUndefinedRpcParams, tryParseJsonLine, waitForCodexSpawn, withCodexRpcTimeout, writeCodexRpcMessage, } from './assistant-codex/app-server-rpc.js';
|
|
13
16
|
import { resolveCodexChildEnv, withHostedCodexModelCatalogConfigOverride, } from './assistant-codex/config.js';
|
|
14
17
|
import { buildCodexProcessExitError, buildCodexStdinFailureFallback, buildCodexTurnFailedError, extractCodexThreadIdFromMessage, extractCodexThreadIdFromResult, extractCodexThreadPathFromResult, extractCodexTurnErrorMessage, extractCodexTurnIdFromMessage, extractCodexTurnIdFromResult, extractCodexTurnStatus, isFailedCodexTurnStatus, readNodeErrorCode, } from './assistant-codex/failures.js';
|
|
15
18
|
import { extractCodexSubagentUsageDrafts, isAssistantCodexTokenUsageEventType, readCodexCollabReceiverThreadIds, } from './assistant/providers/helpers.js';
|
|
@@ -22,6 +25,7 @@ const CODEX_RPC_CLIENT_NAME = 'murph';
|
|
|
22
25
|
const CODEX_RPC_CLIENT_TITLE = 'Murph';
|
|
23
26
|
const CODEX_RPC_CLIENT_VERSION = '1.0.0';
|
|
24
27
|
const CODEX_RPC_DEFAULT_TIMEOUT_MS = 120_000;
|
|
28
|
+
const HOSTED_CODEX_BACKGROUND_TERMINAL_CLEANUP_TIMEOUT_MS = 5_000;
|
|
25
29
|
const CODEX_RPC_STEER_TIMEOUT_MS = 15_000;
|
|
26
30
|
const CODEX_APP_SERVER_INTERRUPT_CLEANUP_TIMEOUT_MS = 15_000;
|
|
27
31
|
const CODEX_MANAGED_ACCOUNT_LOGIN_TIMEOUT_MS = 10 * 60 * 1000;
|
|
@@ -32,6 +36,8 @@ const CODEX_MANAGED_ACCOUNT_CONFIG_OVERRIDES = [
|
|
|
32
36
|
const CODEX_APP_SERVER_COMMAND = 'app-server';
|
|
33
37
|
const CODEX_APP_SERVER_TIMING_TRACE_SCHEMA = 'murph.assistant-codex-app-server-timing.v1';
|
|
34
38
|
const CODEX_APP_SERVER_TIMING_TRACE_TYPE = 'assistant.codex.app_server_timing';
|
|
39
|
+
const CODEX_TRANSPORT_DIAGNOSTICS_TRACE_SCHEMA = 'murph.assistant-codex-transport-diagnostics.v1';
|
|
40
|
+
const CODEX_TRANSPORT_DIAGNOSTICS_TRACE_TYPE = 'assistant.codex.transport_diagnostics';
|
|
35
41
|
const CODEX_APP_SERVER_STARTUP_STDERR_MAX_LENGTH = 16_384;
|
|
36
42
|
// Bound on distinct subagent threads whose token usage is tracked per parent
|
|
37
43
|
// turn. Far above any sane spawn fan-out; threads past the cap are counted
|
|
@@ -46,9 +52,9 @@ function prepareCodexRpcParams(method, params) {
|
|
|
46
52
|
}
|
|
47
53
|
return stripped;
|
|
48
54
|
}
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
//
|
|
55
|
+
// Modern app-server clients receive compaction lifecycle as contextCompaction
|
|
56
|
+
// items; `thread/compacted` is the legacy fan-out kept for protocol drift
|
|
57
|
+
// tolerance.
|
|
52
58
|
function isCodexContextCompactionStarted(message) {
|
|
53
59
|
const method = typeof message.method === 'string' ? message.method : null;
|
|
54
60
|
if (method !== 'item/started' && method !== 'item.started') {
|
|
@@ -136,19 +142,6 @@ async function waitForCodexProgressDrain(pending) {
|
|
|
136
142
|
}
|
|
137
143
|
await Promise.allSettled(pending);
|
|
138
144
|
}
|
|
139
|
-
function resolveCodexCurrentChannelProgressSource(normalizedEvent) {
|
|
140
|
-
if (normalizedEvent.kind === 'assistant_message' &&
|
|
141
|
-
normalizedEvent.itemState === 'completed' &&
|
|
142
|
-
normalizedEvent.messagePhase === 'commentary') {
|
|
143
|
-
return 'model';
|
|
144
|
-
}
|
|
145
|
-
if (normalizedEvent.kind === 'status_item' &&
|
|
146
|
-
normalizedEvent.itemType === 'context.compaction' &&
|
|
147
|
-
normalizedEvent.itemState === 'running') {
|
|
148
|
-
return 'system';
|
|
149
|
-
}
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
145
|
const CODEX_APP_SERVER_TURN_FAILURE_CONTEXT = Symbol('codexAppServerTurnFailureContext');
|
|
153
146
|
const codexAppServerTurnFailureContexts = new WeakMap();
|
|
154
147
|
export function readCodexAppServerTurnFailureContext(error) {
|
|
@@ -169,9 +162,9 @@ export function readCodexAppServerTurnFailureContext(error) {
|
|
|
169
162
|
...context.acceptedNoReplyDeliveryContextOrdinals,
|
|
170
163
|
],
|
|
171
164
|
reactions: (context.reactions ?? []).map((entry) => ({ ...entry })),
|
|
172
|
-
codexThreadHistoryUnsafe: context.codexThreadHistoryUnsafe,
|
|
173
165
|
codexThreadId: context.codexThreadId,
|
|
174
166
|
providerTurnId: context.providerTurnId,
|
|
167
|
+
rolloutRelativePath: context.rolloutRelativePath,
|
|
175
168
|
};
|
|
176
169
|
}
|
|
177
170
|
export function buildCodexAppServerSteerRequest(input) {
|
|
@@ -180,7 +173,14 @@ export function buildCodexAppServerSteerRequest(input) {
|
|
|
180
173
|
params: buildCodexTurnSteerParams(input),
|
|
181
174
|
};
|
|
182
175
|
}
|
|
176
|
+
function appendRequiredVaultFileApprovalUrls(message, approvalUrls) {
|
|
177
|
+
return [
|
|
178
|
+
normalizeNullableString(message),
|
|
179
|
+
...approvalUrls,
|
|
180
|
+
].filter((part) => part !== null).join('\n\n');
|
|
181
|
+
}
|
|
183
182
|
export async function executeCodexAppServerTurn(input) {
|
|
183
|
+
assertCodexAppServerPermissionRequest(input);
|
|
184
184
|
const approvalPolicy = resolveSupportedCodexAppServerApprovalPolicy(input.approvalPolicy);
|
|
185
185
|
const workingDirectory = path.resolve(input.workingDirectory);
|
|
186
186
|
await assertCodexAppServerWorkingDirectory(workingDirectory);
|
|
@@ -201,6 +201,7 @@ export async function executeCodexAppServerTurn(input) {
|
|
|
201
201
|
configOverrides: input.configOverrides,
|
|
202
202
|
env: input.env,
|
|
203
203
|
}),
|
|
204
|
+
runtimeWorkspaceRoots: input.runtimeWorkspaceRoots?.map((root) => path.resolve(root)),
|
|
204
205
|
};
|
|
205
206
|
const args = buildCodexAppServerArgs(normalizedInput);
|
|
206
207
|
const launchKey = buildCodexAppServerLaunchKey({
|
|
@@ -212,7 +213,6 @@ export async function executeCodexAppServerTurn(input) {
|
|
|
212
213
|
const preparedInput = {
|
|
213
214
|
...normalizedInput,
|
|
214
215
|
args,
|
|
215
|
-
loadAuthorizedReferenceImageRefs: input.loadAuthorizedReferenceImageRefs ?? null,
|
|
216
216
|
codexCommand,
|
|
217
217
|
env: childEnv,
|
|
218
218
|
fetchImpl: input.fetchImpl ?? fetch,
|
|
@@ -225,19 +225,55 @@ export async function executeCodexAppServerTurn(input) {
|
|
|
225
225
|
voiceMemoRuntime: input.voiceMemoRuntime ?? null,
|
|
226
226
|
workingDirectory,
|
|
227
227
|
};
|
|
228
|
+
let oneShotProcess = null;
|
|
228
229
|
try {
|
|
230
|
+
if (preparedInput.processLifetime === 'one-shot') {
|
|
231
|
+
oneShotProcess = new CodexAppServerProcess({
|
|
232
|
+
args: preparedInput.args,
|
|
233
|
+
codexCommand: preparedInput.codexCommand,
|
|
234
|
+
coldStartReason: 'node-process-first-use',
|
|
235
|
+
env: preparedInput.env,
|
|
236
|
+
launchKey: preparedInput.launchKey,
|
|
237
|
+
});
|
|
238
|
+
oneShotProcess.reserveTurn();
|
|
239
|
+
return await runCodexAppServerTurnOnProcess(oneShotProcess, preparedInput);
|
|
240
|
+
}
|
|
229
241
|
const processInstance = await getOrStartWarmCodexProcess(preparedInput);
|
|
242
|
+
return await runCodexAppServerTurnOnProcess(processInstance, preparedInput);
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
230
245
|
try {
|
|
231
|
-
|
|
246
|
+
await oneShotProcess?.stop('one-shot-complete');
|
|
232
247
|
}
|
|
233
248
|
finally {
|
|
234
|
-
|
|
249
|
+
await rm(tempRoot, {
|
|
250
|
+
recursive: true,
|
|
251
|
+
force: true,
|
|
252
|
+
});
|
|
235
253
|
}
|
|
236
254
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
255
|
+
}
|
|
256
|
+
function assertCodexAppServerPermissionRequest(input) {
|
|
257
|
+
const permissions = normalizeNullableString(input.permissions);
|
|
258
|
+
if (!permissions) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const invalidFields = [
|
|
262
|
+
...(input.sandbox ? ['sandbox'] : []),
|
|
263
|
+
...(normalizeNullableString(input.resumeSessionId) ? ['resumeSessionId'] : []),
|
|
264
|
+
...(input.ephemeral === true ? [] : ['ephemeral']),
|
|
265
|
+
...(input.processLifetime === 'one-shot' ? [] : ['processLifetime']),
|
|
266
|
+
];
|
|
267
|
+
if (invalidFields.length > 0) {
|
|
268
|
+
throw new VaultCliError('ASSISTANT_CODEX_APP_SERVER_REQUEST_INVALID', 'Named Codex permissions require a fresh ephemeral thread in a one-shot process without a legacy sandbox.', {
|
|
269
|
+
invalidFields,
|
|
270
|
+
retryable: false,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
if (!input.runtimeWorkspaceRoots || input.runtimeWorkspaceRoots.length === 0) {
|
|
274
|
+
throw new VaultCliError('ASSISTANT_CODEX_APP_SERVER_REQUEST_INVALID', 'Named Codex permissions require at least one explicit runtime workspace root.', {
|
|
275
|
+
invalidFields: ['runtimeWorkspaceRoots'],
|
|
276
|
+
retryable: false,
|
|
241
277
|
});
|
|
242
278
|
}
|
|
243
279
|
}
|
|
@@ -289,19 +325,21 @@ export function buildCodexAppServerArgs(input) {
|
|
|
289
325
|
}
|
|
290
326
|
class CodexAppServerProcess {
|
|
291
327
|
child;
|
|
328
|
+
coldStartReason;
|
|
292
329
|
launchKey;
|
|
293
330
|
pendingRequests = new Map();
|
|
294
331
|
processGroupPid;
|
|
295
332
|
startedAt = Date.now();
|
|
296
333
|
activeTurn = null;
|
|
297
334
|
boundThreadId = null;
|
|
335
|
+
boundThreadModel = null;
|
|
298
336
|
boundThreadServiceTier = null;
|
|
299
337
|
cleanupProcessExitListener;
|
|
300
|
-
completedTurnCount = 0;
|
|
301
338
|
lastThreadTokenUsage = null;
|
|
302
339
|
codexCommand;
|
|
303
340
|
ignoredResponseIds = new Set();
|
|
304
341
|
initialized = false;
|
|
342
|
+
endReason = null;
|
|
305
343
|
nextRequestId = 1;
|
|
306
344
|
normalShutdown = false;
|
|
307
345
|
poisoned = false;
|
|
@@ -313,12 +351,19 @@ class CodexAppServerProcess {
|
|
|
313
351
|
stdinFailure = null;
|
|
314
352
|
stdoutBuffer = '';
|
|
315
353
|
stopPromise = null;
|
|
354
|
+
postTurnCleanupPromise = null;
|
|
316
355
|
constructor(input) {
|
|
317
356
|
this.codexCommand = input.codexCommand;
|
|
357
|
+
this.coldStartReason = input.coldStartReason;
|
|
318
358
|
this.launchKey = input.launchKey;
|
|
319
359
|
const useProcessGroup = process.platform !== 'win32';
|
|
360
|
+
// The warm app-server outlives hosted workspace restores, which delete and
|
|
361
|
+
// recreate the workspace path between invocations. A process anchored to
|
|
362
|
+
// that directory keeps a dead cwd inode, and Codex config loading then
|
|
363
|
+
// fails with ENOENT on the next thread/start. Threads receive the real
|
|
364
|
+
// workspace via the explicit per-thread `cwd` param instead.
|
|
320
365
|
this.child = spawn(input.codexCommand, [...input.args], {
|
|
321
|
-
cwd:
|
|
366
|
+
cwd: tmpdir(),
|
|
322
367
|
detached: useProcessGroup,
|
|
323
368
|
env: input.env,
|
|
324
369
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
@@ -339,6 +384,14 @@ class CodexAppServerProcess {
|
|
|
339
384
|
this.child.stderr.on('data', (chunk) => {
|
|
340
385
|
this.handleStderrData(String(chunk));
|
|
341
386
|
});
|
|
387
|
+
this.child.on('exit', () => {
|
|
388
|
+
// `exit` precedes `close`; claim the cause and sweep the exact owned
|
|
389
|
+
// group before a descendant can keep an inherited stream open forever.
|
|
390
|
+
if (!this.normalShutdown) {
|
|
391
|
+
this.endReason ??= 'previous-process-exit';
|
|
392
|
+
this.signal('SIGKILL');
|
|
393
|
+
}
|
|
394
|
+
});
|
|
342
395
|
this.child.on('close', (code, signal) => {
|
|
343
396
|
this.handleClose(code, signal);
|
|
344
397
|
});
|
|
@@ -349,12 +402,21 @@ class CodexAppServerProcess {
|
|
|
349
402
|
get processLifetimeMs() {
|
|
350
403
|
return Math.max(0, Date.now() - this.startedAt);
|
|
351
404
|
}
|
|
352
|
-
get
|
|
353
|
-
return this.
|
|
405
|
+
get nextColdStartReason() {
|
|
406
|
+
return this.endReason ?? 'previous-process-unhealthy';
|
|
407
|
+
}
|
|
408
|
+
get recordedEndReason() {
|
|
409
|
+
return this.endReason;
|
|
410
|
+
}
|
|
411
|
+
noteTurnAbort() {
|
|
412
|
+
this.endReason ??= 'previous-turn-abort';
|
|
354
413
|
}
|
|
355
414
|
get hasInFlightTurn() {
|
|
356
415
|
return this.state === 'reserved' || this.state === 'running';
|
|
357
416
|
}
|
|
417
|
+
get pendingPostTurnCleanup() {
|
|
418
|
+
return this.postTurnCleanupPromise;
|
|
419
|
+
}
|
|
358
420
|
reserveTurn() {
|
|
359
421
|
if (this.state !== 'idle' ||
|
|
360
422
|
this.activeTurn ||
|
|
@@ -384,7 +446,6 @@ class CodexAppServerProcess {
|
|
|
384
446
|
this.activeTurn = null;
|
|
385
447
|
if (this.state === 'running') {
|
|
386
448
|
this.state = 'idle';
|
|
387
|
-
this.completedTurnCount += 1;
|
|
388
449
|
}
|
|
389
450
|
}
|
|
390
451
|
releaseReservation() {
|
|
@@ -392,6 +453,33 @@ class CodexAppServerProcess {
|
|
|
392
453
|
this.state = 'idle';
|
|
393
454
|
}
|
|
394
455
|
}
|
|
456
|
+
beginHostedBackgroundTerminalCleanup(input) {
|
|
457
|
+
if (this.activeTurn !== input.binding || this.state !== 'running') {
|
|
458
|
+
throw this.buildBusyError('Codex app-server cannot start post-turn cleanup outside its completed turn.');
|
|
459
|
+
}
|
|
460
|
+
// Keep the process unavailable while cleanup runs, but detach the completed
|
|
461
|
+
// turn so its provider result can proceed to durable reply delivery.
|
|
462
|
+
this.activeTurn = null;
|
|
463
|
+
this.state = 'cleanup';
|
|
464
|
+
const cleanup = withCodexRpcTimeout(this.sendRequest('thread/backgroundTerminals/clean', {
|
|
465
|
+
threadId: input.threadId,
|
|
466
|
+
}), HOSTED_CODEX_BACKGROUND_TERMINAL_CLEANUP_TIMEOUT_MS, 'thread/backgroundTerminals/clean').then(() => undefined, async (error) => {
|
|
467
|
+
// Clear the timed-out RPC before stopping the exact owned process
|
|
468
|
+
// group. A cleanup failure never turns a completed reply into a
|
|
469
|
+
// provider failure, but the process must not become reusable.
|
|
470
|
+
this.rejectPending(error);
|
|
471
|
+
await this.poison('background-terminal-cleanup-failed');
|
|
472
|
+
}).finally(() => {
|
|
473
|
+
if (this.state === 'cleanup') {
|
|
474
|
+
this.state = 'idle';
|
|
475
|
+
}
|
|
476
|
+
if (this.postTurnCleanupPromise === cleanup) {
|
|
477
|
+
this.postTurnCleanupPromise = null;
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
this.postTurnCleanupPromise = cleanup;
|
|
481
|
+
return cleanup;
|
|
482
|
+
}
|
|
395
483
|
buildBusyError(message = 'Codex app-server process is not idle.') {
|
|
396
484
|
return new VaultCliError('ASSISTANT_CODEX_APP_SERVER_BUSY', message, {
|
|
397
485
|
retryable: true,
|
|
@@ -483,21 +571,27 @@ class CodexAppServerProcess {
|
|
|
483
571
|
});
|
|
484
572
|
}
|
|
485
573
|
async stop(reason) {
|
|
486
|
-
if (this.
|
|
574
|
+
if (this.stopPromise) {
|
|
575
|
+
await this.stopPromise;
|
|
487
576
|
return;
|
|
488
577
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
//
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
578
|
+
if (this.stopCompleted || this.state === 'stopped') {
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
// Memoized while in flight so concurrent callers (a failed compaction's
|
|
582
|
+
// poison and a racing turn's replacement stop) share one teardown instead
|
|
583
|
+
// of double-signaling. Once settled, later calls either observe the stopped
|
|
584
|
+
// state or retry an unsuccessful teardown.
|
|
585
|
+
this.stopPromise = this.runStop(reason).finally(() => {
|
|
586
|
+
this.stopPromise = null;
|
|
497
587
|
});
|
|
498
588
|
await this.stopPromise;
|
|
499
589
|
}
|
|
500
|
-
async runStop(
|
|
590
|
+
async runStop(reason) {
|
|
591
|
+
this.endReason ??= resolveCodexAppServerEndReason(reason);
|
|
592
|
+
if (this.state === 'cleanup') {
|
|
593
|
+
this.rejectPending(new VaultCliError('ASSISTANT_CODEX_APP_SERVER_STOPPED_DURING_CLEANUP', 'Codex app-server stopped during post-turn cleanup.', { retryable: true }));
|
|
594
|
+
}
|
|
501
595
|
this.normalShutdown = true;
|
|
502
596
|
this.state = 'stopping';
|
|
503
597
|
let stopped = false;
|
|
@@ -539,29 +633,6 @@ class CodexAppServerProcess {
|
|
|
539
633
|
this.child.exitCode === null &&
|
|
540
634
|
this.child.signalCode === null);
|
|
541
635
|
}
|
|
542
|
-
async snapshotExpectedRootProcess() {
|
|
543
|
-
const pid = this.child.pid;
|
|
544
|
-
if (typeof pid !== 'number' ||
|
|
545
|
-
!Number.isSafeInteger(pid) ||
|
|
546
|
-
pid <= 0 ||
|
|
547
|
-
this.child.exitCode !== null ||
|
|
548
|
-
this.child.signalCode !== null) {
|
|
549
|
-
return null;
|
|
550
|
-
}
|
|
551
|
-
const procState = await readCodexProcState(pid);
|
|
552
|
-
if (!procState?.commandLineDigest ||
|
|
553
|
-
!procState?.startTimeTicksFromProcStat) {
|
|
554
|
-
return null;
|
|
555
|
-
}
|
|
556
|
-
return {
|
|
557
|
-
commandLineDigest: procState.commandLineDigest,
|
|
558
|
-
owner: 'codex-app-server',
|
|
559
|
-
pid,
|
|
560
|
-
processGroupId: this.processGroupPid,
|
|
561
|
-
startTimeTicksFromProcStat: procState.startTimeTicksFromProcStat,
|
|
562
|
-
uid: procState.uid,
|
|
563
|
-
};
|
|
564
|
-
}
|
|
565
636
|
closeStdin() {
|
|
566
637
|
if (this.stdinFailure) {
|
|
567
638
|
return this.stdinFailure;
|
|
@@ -593,7 +664,7 @@ class CodexAppServerProcess {
|
|
|
593
664
|
const failure = this.stdinFailure ??
|
|
594
665
|
this.activeTurn?.onStdinError(error) ??
|
|
595
666
|
buildCodexProcessExitError({
|
|
596
|
-
|
|
667
|
+
abortOwnsTermination: false,
|
|
597
668
|
code: this.child.exitCode,
|
|
598
669
|
diagnostics: this.buildStartupProcessDiagnostics(),
|
|
599
670
|
errorInfo: null,
|
|
@@ -678,13 +749,13 @@ class CodexAppServerProcess {
|
|
|
678
749
|
}
|
|
679
750
|
this.lastThreadTokenUsage = {
|
|
680
751
|
lastInputTokens,
|
|
752
|
+
model: this.boundThreadModel,
|
|
681
753
|
serviceTier: this.boundThreadServiceTier,
|
|
682
754
|
threadId: update.threadId,
|
|
683
755
|
};
|
|
684
756
|
}
|
|
685
|
-
// The most recent thread this process ran
|
|
686
|
-
// to
|
|
687
|
-
// contamination, which must still poison the warm process.
|
|
757
|
+
// The most recent parent thread this process ran. A freshly bound turn can
|
|
758
|
+
// use it to route late child-thread traffic before thread/start returns.
|
|
688
759
|
noteBoundThreadId(threadId) {
|
|
689
760
|
if (threadId) {
|
|
690
761
|
this.boundThreadId = threadId;
|
|
@@ -693,34 +764,36 @@ class CodexAppServerProcess {
|
|
|
693
764
|
noteBoundThreadServiceTier(serviceTier) {
|
|
694
765
|
this.boundThreadServiceTier = serviceTier;
|
|
695
766
|
}
|
|
767
|
+
noteBoundThreadModel(model) {
|
|
768
|
+
this.boundThreadModel = normalizeNullableString(model);
|
|
769
|
+
}
|
|
696
770
|
// Exposed so a freshly bound turn can route foreign-thread events before
|
|
697
771
|
// its own thread/start response has produced the new thread id.
|
|
698
772
|
get lastBoundThreadId() {
|
|
699
773
|
return this.boundThreadId;
|
|
700
774
|
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
775
|
+
handleIdleServerMessage(message) {
|
|
776
|
+
const responseId = readCodexRpcResponseId(message);
|
|
777
|
+
if (responseId !== null) {
|
|
778
|
+
const resolved = resolvePendingCodexRpcRequest({
|
|
779
|
+
message,
|
|
780
|
+
pendingRequests: this.pendingRequests,
|
|
781
|
+
responseId,
|
|
782
|
+
});
|
|
783
|
+
if (resolved === 'unknown_response_id') {
|
|
784
|
+
this.consumeIgnoredResponseId(responseId);
|
|
785
|
+
}
|
|
786
|
+
return;
|
|
712
787
|
}
|
|
713
788
|
const requestId = readCodexRpcServerRequestId(message);
|
|
714
|
-
if (requestId
|
|
715
|
-
|
|
716
|
-
id: requestId,
|
|
717
|
-
error: {
|
|
718
|
-
code: -32000,
|
|
719
|
-
message: 'Server requests from codex subagent threads are not supported.',
|
|
720
|
-
},
|
|
721
|
-
});
|
|
789
|
+
if (requestId === null) {
|
|
790
|
+
return;
|
|
722
791
|
}
|
|
723
|
-
|
|
792
|
+
rejectCodexServerRequest({
|
|
793
|
+
message: 'Server requests outside an active Codex turn are not supported.',
|
|
794
|
+
requestId,
|
|
795
|
+
writeRpcMessage: (payload) => void this.writeRpcMessage(payload),
|
|
796
|
+
});
|
|
724
797
|
}
|
|
725
798
|
handleStdoutLine(line) {
|
|
726
799
|
const parsed = tryParseJsonLine(line);
|
|
@@ -729,9 +802,8 @@ class CodexAppServerProcess {
|
|
|
729
802
|
if (this.activeTurn) {
|
|
730
803
|
this.activeTurn.onParsedMessage(parsed.value);
|
|
731
804
|
}
|
|
732
|
-
else
|
|
733
|
-
|
|
734
|
-
void this.poison('off-turn-output');
|
|
805
|
+
else {
|
|
806
|
+
this.handleIdleServerMessage(parsed.value);
|
|
735
807
|
}
|
|
736
808
|
return;
|
|
737
809
|
}
|
|
@@ -743,7 +815,8 @@ class CodexAppServerProcess {
|
|
|
743
815
|
this.activeTurn.onFramingError(line);
|
|
744
816
|
return;
|
|
745
817
|
}
|
|
746
|
-
|
|
818
|
+
// Codex may emit lifecycle text while no Murph turn is bound. Do not kill
|
|
819
|
+
// the resident app-server for output that cannot affect the current user.
|
|
747
820
|
}
|
|
748
821
|
handleClose(code, signal) {
|
|
749
822
|
if (this.stderrBuffer.trim().length > 0) {
|
|
@@ -756,6 +829,10 @@ class CodexAppServerProcess {
|
|
|
756
829
|
this.stdoutBuffer = '';
|
|
757
830
|
if (!this.normalShutdown) {
|
|
758
831
|
this.poisoned = true;
|
|
832
|
+
this.endReason ??= 'previous-process-exit';
|
|
833
|
+
// Retain the exact-group signal as an idempotent fallback before
|
|
834
|
+
// releasing parent-exit cleanup.
|
|
835
|
+
this.signal('SIGKILL');
|
|
759
836
|
}
|
|
760
837
|
this.state = 'stopped';
|
|
761
838
|
this.cleanupProcessExitListener();
|
|
@@ -767,7 +844,7 @@ class CodexAppServerProcess {
|
|
|
767
844
|
return;
|
|
768
845
|
}
|
|
769
846
|
const failure = buildCodexProcessExitError({
|
|
770
|
-
|
|
847
|
+
abortOwnsTermination: false,
|
|
771
848
|
code,
|
|
772
849
|
diagnostics: this.buildStartupProcessDiagnostics(),
|
|
773
850
|
errorInfo: null,
|
|
@@ -806,7 +883,7 @@ class CodexAppServerProcess {
|
|
|
806
883
|
if (spawnClosedBeforeReady &&
|
|
807
884
|
(this.child.exitCode !== null || this.child.signalCode !== null)) {
|
|
808
885
|
return buildCodexProcessExitError({
|
|
809
|
-
|
|
886
|
+
abortOwnsTermination: false,
|
|
810
887
|
code: this.child.exitCode,
|
|
811
888
|
diagnostics: this.buildStartupProcessDiagnostics(),
|
|
812
889
|
errorInfo: null,
|
|
@@ -825,8 +902,36 @@ class CodexAppServerProcess {
|
|
|
825
902
|
}
|
|
826
903
|
}
|
|
827
904
|
}
|
|
905
|
+
function resolveCodexAppServerEndReason(reason) {
|
|
906
|
+
switch (reason) {
|
|
907
|
+
case 'idle-compaction-failed':
|
|
908
|
+
return 'previous-idle-compaction-failure';
|
|
909
|
+
case 'launch-identity-changed':
|
|
910
|
+
return 'previous-launch-identity-change';
|
|
911
|
+
case 'process-exited':
|
|
912
|
+
return 'previous-process-exit';
|
|
913
|
+
case 'process-unhealthy':
|
|
914
|
+
return 'previous-process-unhealthy';
|
|
915
|
+
case 'turn-completed-after-abort':
|
|
916
|
+
return 'previous-turn-abort';
|
|
917
|
+
case 'turn-failure':
|
|
918
|
+
return 'previous-turn-failure';
|
|
919
|
+
default:
|
|
920
|
+
return 'previous-explicit-stop';
|
|
921
|
+
}
|
|
922
|
+
}
|
|
828
923
|
let warmCodexProcess = null;
|
|
829
924
|
let warmCodexSlotLock = Promise.resolve();
|
|
925
|
+
const hostedCodexPostTurnCleanupBarriers = new Set();
|
|
926
|
+
function trackHostedCodexPostTurnCleanup(cleanup) {
|
|
927
|
+
hostedCodexPostTurnCleanupBarriers.add(cleanup);
|
|
928
|
+
void cleanup.finally(() => {
|
|
929
|
+
hostedCodexPostTurnCleanupBarriers.delete(cleanup);
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
export async function drainHostedCodexPostTurnCleanups() {
|
|
933
|
+
await Promise.all([...hostedCodexPostTurnCleanupBarriers]);
|
|
934
|
+
}
|
|
830
935
|
async function withWarmCodexSlotLock(operation) {
|
|
831
936
|
const previous = warmCodexSlotLock;
|
|
832
937
|
let release;
|
|
@@ -844,30 +949,36 @@ async function withWarmCodexSlotLock(operation) {
|
|
|
844
949
|
async function getOrStartWarmCodexProcess(input) {
|
|
845
950
|
const launchKey = input.launchKey;
|
|
846
951
|
return await withWarmCodexSlotLock(async () => {
|
|
952
|
+
await warmCodexProcess?.pendingPostTurnCleanup;
|
|
847
953
|
if (warmCodexProcess?.isReusableFor(launchKey)) {
|
|
848
954
|
warmCodexProcess.reserveTurn();
|
|
849
955
|
return warmCodexProcess;
|
|
850
956
|
}
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
957
|
+
const previousProcess = warmCodexProcess;
|
|
958
|
+
let coldStartReason = 'node-process-first-use';
|
|
959
|
+
if (previousProcess) {
|
|
960
|
+
if (previousProcess.hasInFlightTurn) {
|
|
961
|
+
throw previousProcess.buildBusyError('Codex app-server process is already serving a turn.');
|
|
854
962
|
}
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
963
|
+
const processExited = previousProcess.child.exitCode !== null ||
|
|
964
|
+
previousProcess.child.signalCode !== null;
|
|
965
|
+
const stopReason = processExited
|
|
966
|
+
? 'process-exited'
|
|
967
|
+
: previousProcess.launchKey !== launchKey
|
|
968
|
+
? 'launch-identity-changed'
|
|
969
|
+
: 'process-unhealthy';
|
|
970
|
+
await previousProcess.stop(stopReason);
|
|
971
|
+
coldStartReason = previousProcess.nextColdStartReason;
|
|
972
|
+
}
|
|
973
|
+
const processInstance = new CodexAppServerProcess({
|
|
974
|
+
...input,
|
|
975
|
+
coldStartReason,
|
|
976
|
+
});
|
|
977
|
+
warmCodexProcess = processInstance;
|
|
859
978
|
warmCodexProcess.reserveTurn();
|
|
860
979
|
return warmCodexProcess;
|
|
861
980
|
});
|
|
862
981
|
}
|
|
863
|
-
function clearWarmCodexProcessIfUnusable(processInstance) {
|
|
864
|
-
const launchKey = processInstance.launchKey;
|
|
865
|
-
if (warmCodexProcess === processInstance &&
|
|
866
|
-
!processInstance.isReusableFor(launchKey) &&
|
|
867
|
-
(processInstance.child.exitCode !== null || processInstance.child.signalCode !== null)) {
|
|
868
|
-
warmCodexProcess = null;
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
982
|
export async function stopWarmCodexAppServer(reason = 'external-stop') {
|
|
872
983
|
await withWarmCodexSlotLock(async () => {
|
|
873
984
|
const processInstance = warmCodexProcess;
|
|
@@ -878,11 +989,9 @@ export async function stopWarmCodexAppServer(reason = 'external-stop') {
|
|
|
878
989
|
throw processInstance.buildBusyError('Codex app-server process is serving a turn and cannot be stopped directly.');
|
|
879
990
|
}
|
|
880
991
|
await processInstance.stop(reason);
|
|
881
|
-
if (warmCodexProcess === processInstance) {
|
|
882
|
-
warmCodexProcess = null;
|
|
883
|
-
}
|
|
884
992
|
});
|
|
885
993
|
}
|
|
994
|
+
registerStopWarmCodexAppServer(stopWarmCodexAppServer);
|
|
886
995
|
/**
|
|
887
996
|
* Runs one managed ChatGPT account operation through the same app-server
|
|
888
997
|
* transport used by turns. The child is intentionally short lived: account
|
|
@@ -912,7 +1021,6 @@ export async function executeCodexManagedAccountOperation(input) {
|
|
|
912
1021
|
codexCommand,
|
|
913
1022
|
env,
|
|
914
1023
|
launchKey,
|
|
915
|
-
workingDirectory,
|
|
916
1024
|
});
|
|
917
1025
|
let settleAccountUpdate;
|
|
918
1026
|
let rejectAccountUpdate;
|
|
@@ -1081,11 +1189,6 @@ export async function executeCodexManagedAccountOperation(input) {
|
|
|
1081
1189
|
processInstance.releaseTurn(binding);
|
|
1082
1190
|
processInstance.releaseReservation();
|
|
1083
1191
|
await processInstance.stop('managed-account-operation-complete').catch(() => undefined);
|
|
1084
|
-
await withWarmCodexSlotLock(async () => {
|
|
1085
|
-
if (warmCodexProcess === processInstance) {
|
|
1086
|
-
warmCodexProcess = null;
|
|
1087
|
-
}
|
|
1088
|
-
});
|
|
1089
1192
|
}
|
|
1090
1193
|
}
|
|
1091
1194
|
async function readCodexManagedAccount(processInstance) {
|
|
@@ -1102,7 +1205,7 @@ function normalizeCodexManagedAccountTimeout(value) {
|
|
|
1102
1205
|
: CODEX_MANAGED_ACCOUNT_LOGIN_TIMEOUT_MS;
|
|
1103
1206
|
}
|
|
1104
1207
|
function estimateCodexWarmThreadCompactionUsage(threadContextTokensBefore) {
|
|
1105
|
-
// Codex
|
|
1208
|
+
// Codex idle compaction consumes the provider response without
|
|
1106
1209
|
// surfacing ResponseEvent::Completed.token_usage, then emits a recomputed
|
|
1107
1210
|
// post-compact context-size update whose request input/output buckets are
|
|
1108
1211
|
// zero. Until Codex surfaces real compact request usage, store the
|
|
@@ -1178,11 +1281,9 @@ function readCodexUsageNumber(value, camelKey, snakeKey) {
|
|
|
1178
1281
|
// deliberately blunt: any non-success poisons (kills) the warm process, which
|
|
1179
1282
|
// is always safe because rollouts only contain completed entries — an aborted
|
|
1180
1283
|
// compact leaves the thread uncompacted and the next turn spawns a fresh
|
|
1181
|
-
// process and resumes natively.
|
|
1182
|
-
//
|
|
1183
|
-
//
|
|
1184
|
-
// milliseconds), which the next turn must join via the memoized stop because
|
|
1185
|
-
// two app-server processes must never write the same rollout concurrently.
|
|
1284
|
+
// process and resumes natively. Teardown is awaited on every failure path
|
|
1285
|
+
// because the idle checkpoint that follows snapshots the Codex home,
|
|
1286
|
+
// including rollout files, and must never capture a rollout mid-teardown.
|
|
1186
1287
|
export async function compactWarmCodexThread(input) {
|
|
1187
1288
|
const reservation = await withWarmCodexSlotLock(async () => {
|
|
1188
1289
|
const processInstance = warmCodexProcess;
|
|
@@ -1195,6 +1296,14 @@ export async function compactWarmCodexThread(input) {
|
|
|
1195
1296
|
if (!vitals) {
|
|
1196
1297
|
return { kind: 'skipped', reason: 'no_thread_vitals', threadContextTokensBefore: null };
|
|
1197
1298
|
}
|
|
1299
|
+
if (input.canAccountForModel && !input.canAccountForModel(vitals.model)) {
|
|
1300
|
+
return {
|
|
1301
|
+
kind: 'skipped',
|
|
1302
|
+
model: vitals.model,
|
|
1303
|
+
reason: 'model_not_accountable',
|
|
1304
|
+
threadContextTokensBefore: vitals.lastInputTokens,
|
|
1305
|
+
};
|
|
1306
|
+
}
|
|
1198
1307
|
if (vitals.lastInputTokens < input.minThreadTokens) {
|
|
1199
1308
|
return {
|
|
1200
1309
|
kind: 'skipped',
|
|
@@ -1253,7 +1362,17 @@ export async function compactWarmCodexThread(input) {
|
|
|
1253
1362
|
}
|
|
1254
1363
|
return;
|
|
1255
1364
|
}
|
|
1256
|
-
|
|
1365
|
+
const requestId = readCodexRpcServerRequestId(message);
|
|
1366
|
+
if (requestId !== null) {
|
|
1367
|
+
rejectCodexServerRequest({
|
|
1368
|
+
message: 'Server requests during idle Codex compaction are not supported.',
|
|
1369
|
+
requestId,
|
|
1370
|
+
writeRpcMessage: (payload) => void processInstance.writeRpcMessage(payload),
|
|
1371
|
+
});
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
const messageThreadId = extractCodexThreadIdFromMessage(message);
|
|
1375
|
+
if (messageThreadId !== null && messageThreadId !== vitals.threadId) {
|
|
1257
1376
|
return;
|
|
1258
1377
|
}
|
|
1259
1378
|
const update = readCodexThreadTokenUsageUpdate(message);
|
|
@@ -1338,6 +1457,7 @@ export async function compactWarmCodexThread(input) {
|
|
|
1338
1457
|
return {
|
|
1339
1458
|
kind: 'compacted',
|
|
1340
1459
|
durationMs: Date.now() - startedAt,
|
|
1460
|
+
model: vitals.model,
|
|
1341
1461
|
threadContextTokensBefore: vitals.lastInputTokens,
|
|
1342
1462
|
threadId: vitals.threadId,
|
|
1343
1463
|
serviceTier: vitals.serviceTier,
|
|
@@ -1345,19 +1465,7 @@ export async function compactWarmCodexThread(input) {
|
|
|
1345
1465
|
?? estimateCodexWarmThreadCompactionUsage(vitals.lastInputTokens),
|
|
1346
1466
|
};
|
|
1347
1467
|
}
|
|
1348
|
-
|
|
1349
|
-
// process unusable synchronously and SIGTERM->SIGKILL completes out of
|
|
1350
|
-
// band; a racing turn joins it via the memoized stop (3s ceiling,
|
|
1351
|
-
// typically milliseconds) and never waits on the provider call or the
|
|
1352
|
-
// compact timeout. Non-abort failures (timeout/rpc_error/process_exit)
|
|
1353
|
-
// have no wake racing and an idle checkpoint next, so they await
|
|
1354
|
-
// teardown — the snapshot must never capture a rollout mid-teardown.
|
|
1355
|
-
if (settledReason === 'aborted') {
|
|
1356
|
-
void processInstance.poison('idle-compaction-failed');
|
|
1357
|
-
}
|
|
1358
|
-
else {
|
|
1359
|
-
await processInstance.poison('idle-compaction-failed');
|
|
1360
|
-
}
|
|
1468
|
+
await processInstance.poison('idle-compaction-failed');
|
|
1361
1469
|
return {
|
|
1362
1470
|
kind: 'failed',
|
|
1363
1471
|
reason: settledReason,
|
|
@@ -1381,20 +1489,8 @@ export async function compactWarmCodexThread(input) {
|
|
|
1381
1489
|
input.signal?.removeEventListener('abort', onAbort);
|
|
1382
1490
|
processInstance.releaseTurn(binding);
|
|
1383
1491
|
processInstance.releaseReservation();
|
|
1384
|
-
await withWarmCodexSlotLock(async () => {
|
|
1385
|
-
clearWarmCodexProcessIfUnusable(processInstance);
|
|
1386
|
-
});
|
|
1387
1492
|
}
|
|
1388
1493
|
}
|
|
1389
|
-
export async function snapshotExpectedCodexRootProcess() {
|
|
1390
|
-
return await withWarmCodexSlotLock(async () => {
|
|
1391
|
-
const processInstance = warmCodexProcess;
|
|
1392
|
-
if (!processInstance?.isReusableFor(processInstance.launchKey)) {
|
|
1393
|
-
return null;
|
|
1394
|
-
}
|
|
1395
|
-
return await processInstance.snapshotExpectedRootProcess();
|
|
1396
|
-
});
|
|
1397
|
-
}
|
|
1398
1494
|
function hashCodexRawString(value) {
|
|
1399
1495
|
return createHash('sha256')
|
|
1400
1496
|
.update(value)
|
|
@@ -1409,70 +1505,138 @@ function readCodexEventMethod(message) {
|
|
|
1409
1505
|
? message.event
|
|
1410
1506
|
: null;
|
|
1411
1507
|
}
|
|
1412
|
-
function codexEventMethodRequiresTurnCorrelation(method) {
|
|
1413
|
-
const normalizedMethod = normalizeNullableString(method);
|
|
1414
|
-
if (!normalizedMethod) {
|
|
1415
|
-
return true;
|
|
1416
|
-
}
|
|
1417
|
-
return (normalizedMethod === 'error' ||
|
|
1418
|
-
normalizedMethod === 'thread/compacted' ||
|
|
1419
|
-
isCodexThreadTokenUsageUpdatedMethod(normalizedMethod) ||
|
|
1420
|
-
normalizedMethod.startsWith('turn/') ||
|
|
1421
|
-
normalizedMethod.startsWith('item/') ||
|
|
1422
|
-
normalizedMethod.startsWith('rawResponseItem/') ||
|
|
1423
|
-
normalizedMethod.startsWith('command/exec/') ||
|
|
1424
|
-
normalizedMethod.startsWith('process/') ||
|
|
1425
|
-
normalizedMethod.startsWith('model/') ||
|
|
1426
|
-
normalizedMethod.startsWith('turn.') ||
|
|
1427
|
-
normalizedMethod.startsWith('item.') ||
|
|
1428
|
-
normalizedMethod.startsWith('rawResponseItem.') ||
|
|
1429
|
-
normalizedMethod.startsWith('command.exec.') ||
|
|
1430
|
-
normalizedMethod.startsWith('process.') ||
|
|
1431
|
-
normalizedMethod.startsWith('model.') ||
|
|
1432
|
-
normalizedMethod.includes('assistant.message.delta') ||
|
|
1433
|
-
normalizedMethod.includes('agent.message.delta'));
|
|
1434
|
-
}
|
|
1435
1508
|
function isCodexTurnStartedMethod(method) {
|
|
1436
1509
|
return method === 'turn/started' || method === 'turn.started';
|
|
1437
1510
|
}
|
|
1438
1511
|
function isCodexTurnCompletedMethod(method) {
|
|
1439
1512
|
return method === 'turn/completed' || method === 'turn.completed';
|
|
1440
1513
|
}
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1514
|
+
function buildCodexTransportDiagnosticsTraceEvent(input) {
|
|
1515
|
+
const source = readCodexTransportDiagnosticSource(input.message, input.method);
|
|
1516
|
+
if (!source) {
|
|
1517
|
+
return null;
|
|
1518
|
+
}
|
|
1519
|
+
const diagnosticText = [source.message, source.additionalDetails]
|
|
1520
|
+
.filter((value) => typeof value === 'string')
|
|
1521
|
+
.join('\n')
|
|
1522
|
+
.slice(0, 4096);
|
|
1523
|
+
const normalizedText = diagnosticText.toLowerCase();
|
|
1524
|
+
const retryProgress = readCodexTransportRetryProgress(diagnosticText);
|
|
1525
|
+
const fallbackActivated = normalizedText.includes('falling back from websockets to https transport');
|
|
1526
|
+
const idleTimeout = normalizedText.includes('idle timeout waiting for websocket') ||
|
|
1527
|
+
normalizedText.includes('idle timeout waiting for sse');
|
|
1528
|
+
const streamDisconnected = normalizedText.includes('stream disconnected') ||
|
|
1529
|
+
normalizedText.includes('response stream disconnected');
|
|
1530
|
+
if (!fallbackActivated && !idleTimeout && !streamDisconnected && !retryProgress) {
|
|
1531
|
+
return null;
|
|
1532
|
+
}
|
|
1533
|
+
const transport = normalizedText.includes('websocket')
|
|
1534
|
+
? 'websocket'
|
|
1535
|
+
: normalizedText.includes('https') ||
|
|
1536
|
+
normalizedText.includes('http') ||
|
|
1537
|
+
normalizedText.includes('sse')
|
|
1538
|
+
? 'http'
|
|
1539
|
+
: 'unknown';
|
|
1540
|
+
const eventKind = fallbackActivated
|
|
1541
|
+
? 'transport-fallback'
|
|
1542
|
+
: idleTimeout
|
|
1543
|
+
? 'stream-idle-timeout'
|
|
1544
|
+
: retryProgress
|
|
1545
|
+
? 'stream-retry'
|
|
1546
|
+
: 'stream-disconnected';
|
|
1547
|
+
const terminalStreamFailure = source.willRetry === false && (idleTimeout || streamDisconnected);
|
|
1548
|
+
return {
|
|
1549
|
+
schema: CODEX_TRANSPORT_DIAGNOSTICS_TRACE_SCHEMA,
|
|
1550
|
+
type: CODEX_TRANSPORT_DIAGNOSTICS_TRACE_TYPE,
|
|
1551
|
+
codexTransportAdditionalDetailsPresent: source.additionalDetails !== null,
|
|
1552
|
+
codexTransportErrorMessageLength: diagnosticText.length,
|
|
1553
|
+
codexTransportErrorMessagePresent: source.message.length > 0,
|
|
1554
|
+
codexTransportEventKind: eventKind,
|
|
1555
|
+
codexTransportFallbackActivated: fallbackActivated,
|
|
1556
|
+
codexTransportIdleTimeout: idleTimeout,
|
|
1557
|
+
codexTransportProviderActionCount: input.providerActionCount,
|
|
1558
|
+
codexTransportRetryCount: retryProgress?.retryCount ?? null,
|
|
1559
|
+
codexTransportRetryMax: retryProgress?.retryMax ?? null,
|
|
1560
|
+
codexTransportRetryExhausted: terminalStreamFailure,
|
|
1561
|
+
codexTransportSourceMethod: source.sourceMethod,
|
|
1562
|
+
codexTransportStreamDisconnected: streamDisconnected,
|
|
1563
|
+
codexTransportTerminalAfterProviderAction: terminalStreamFailure && input.providerActionCount > 0,
|
|
1564
|
+
codexTransportThreadIdPresent: source.threadIdPresent || input.codexThreadId !== null,
|
|
1565
|
+
codexTransportTransport: transport,
|
|
1566
|
+
codexTransportTurnIdPresent: source.turnIdPresent || input.turnId !== null,
|
|
1567
|
+
codexTransportWillRetry: source.willRetry,
|
|
1568
|
+
};
|
|
1569
|
+
}
|
|
1570
|
+
function readCodexTransportDiagnosticSource(message, method) {
|
|
1571
|
+
const params = readCodexRecordField(message, 'params');
|
|
1572
|
+
if (method === 'warning') {
|
|
1573
|
+
const warningMessage = readCodexStringField(params, 'message');
|
|
1574
|
+
if (!warningMessage) {
|
|
1575
|
+
return null;
|
|
1576
|
+
}
|
|
1448
1577
|
return {
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1578
|
+
additionalDetails: null,
|
|
1579
|
+
message: warningMessage,
|
|
1580
|
+
sourceMethod: 'warning',
|
|
1581
|
+
threadIdPresent: readCodexStringField(params, 'threadId') !== null,
|
|
1582
|
+
turnIdPresent: false,
|
|
1583
|
+
willRetry: null,
|
|
1452
1584
|
};
|
|
1453
1585
|
}
|
|
1454
|
-
|
|
1586
|
+
if (method !== 'error') {
|
|
1587
|
+
return null;
|
|
1588
|
+
}
|
|
1589
|
+
const error = readCodexRecordField(params, 'error');
|
|
1590
|
+
const errorMessage = readCodexStringField(error, 'message');
|
|
1591
|
+
if (!errorMessage) {
|
|
1592
|
+
return null;
|
|
1593
|
+
}
|
|
1594
|
+
return {
|
|
1595
|
+
additionalDetails: readCodexStringField(error, 'additionalDetails'),
|
|
1596
|
+
message: errorMessage,
|
|
1597
|
+
sourceMethod: 'error',
|
|
1598
|
+
threadIdPresent: readCodexStringField(params, 'threadId') !== null,
|
|
1599
|
+
turnIdPresent: readCodexStringField(params, 'turnId') !== null,
|
|
1600
|
+
willRetry: readCodexBooleanField(params, 'willRetry'),
|
|
1601
|
+
};
|
|
1602
|
+
}
|
|
1603
|
+
function readCodexTransportRetryProgress(value) {
|
|
1604
|
+
const match = /\bReconnecting\.\.\.\s+(\d+)\/(\d+)\b/iu.exec(value);
|
|
1605
|
+
if (!match) {
|
|
1455
1606
|
return null;
|
|
1456
1607
|
}
|
|
1608
|
+
const retryCount = Number(match[1]);
|
|
1609
|
+
const retryMax = Number(match[2]);
|
|
1610
|
+
return Number.isSafeInteger(retryCount) &&
|
|
1611
|
+
retryCount >= 0 &&
|
|
1612
|
+
Number.isSafeInteger(retryMax) &&
|
|
1613
|
+
retryMax >= 0
|
|
1614
|
+
? { retryCount, retryMax }
|
|
1615
|
+
: null;
|
|
1457
1616
|
}
|
|
1458
|
-
function
|
|
1459
|
-
|
|
1460
|
-
if (commandEnd === -1 || commandEnd + 2 >= stat.length) {
|
|
1617
|
+
function readCodexRecordField(value, key) {
|
|
1618
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
1461
1619
|
return null;
|
|
1462
1620
|
}
|
|
1463
|
-
const
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
? startTime
|
|
1621
|
+
const fieldValue = value[key];
|
|
1622
|
+
return fieldValue && typeof fieldValue === 'object' && !Array.isArray(fieldValue)
|
|
1623
|
+
? fieldValue
|
|
1467
1624
|
: null;
|
|
1468
1625
|
}
|
|
1469
|
-
function
|
|
1470
|
-
const
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1626
|
+
function readCodexStringField(value, key) {
|
|
1627
|
+
const fieldValue = value?.[key];
|
|
1628
|
+
if (typeof fieldValue !== 'string') {
|
|
1629
|
+
return null;
|
|
1630
|
+
}
|
|
1631
|
+
const normalized = fieldValue.trim();
|
|
1632
|
+
return normalized.length > 0 ? normalized : null;
|
|
1633
|
+
}
|
|
1634
|
+
function readCodexBooleanField(value, key) {
|
|
1635
|
+
const fieldValue = value?.[key];
|
|
1636
|
+
return typeof fieldValue === 'boolean' ? fieldValue : null;
|
|
1474
1637
|
}
|
|
1475
1638
|
async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
1639
|
+
const hostedCanonicalWritePort = readHostedCanonicalWritePort();
|
|
1476
1640
|
let stdout = '';
|
|
1477
1641
|
let stderr = '';
|
|
1478
1642
|
let settled = false;
|
|
@@ -1480,25 +1644,28 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1480
1644
|
let abortRequested = false;
|
|
1481
1645
|
let lifecycleStage = 'spawn_start';
|
|
1482
1646
|
let terminationSignalSent = null;
|
|
1483
|
-
|
|
1647
|
+
const requestedResumeThreadId = normalizeNullableString(input.resumeSessionId) ?? null;
|
|
1648
|
+
let codexThreadId = null;
|
|
1484
1649
|
let turnId = null;
|
|
1485
|
-
|
|
1486
|
-
let lastAgentMessage = null;
|
|
1650
|
+
const isReusedWarmProcess = codexProcess.initializedForRpc;
|
|
1487
1651
|
// Completed final-phase agent messages that were followed by a steered
|
|
1488
|
-
// user-message item and then superseded by a newer
|
|
1489
|
-
// same turn. A closed segment is held as a candidate until
|
|
1490
|
-
// appears; if the turn ends at the steer boundary, that segment remains
|
|
1491
|
-
// final reply rather than a preceding duplicate.
|
|
1652
|
+
// user-message item and then superseded by a newer response segment in the
|
|
1653
|
+
// same turn. A closed segment is held as a candidate until newer text or
|
|
1654
|
+
// media appears; if the turn ends at the steer boundary, that segment remains
|
|
1655
|
+
// the final reply rather than a preceding duplicate.
|
|
1492
1656
|
const precedingAgentMessageSegments = [];
|
|
1493
1657
|
let completedFinalAgentMessage = null;
|
|
1494
1658
|
let trailingSteerCandidate = null;
|
|
1495
|
-
let trailingSteerCandidateDeliveryContextOrdinal = null;
|
|
1496
|
-
let trailingSteerCandidateMedia = null;
|
|
1497
1659
|
let completedUserMessageOrdinal = -1;
|
|
1498
1660
|
let lastEventError = null;
|
|
1499
1661
|
let lastEventErrorInfo = null;
|
|
1500
1662
|
let responseMedia = [];
|
|
1663
|
+
const assistantStyleSettingsOverlay = {
|
|
1664
|
+
settings: {},
|
|
1665
|
+
};
|
|
1501
1666
|
let finalActionPatches = [];
|
|
1667
|
+
const acceptedNoReplyDeliveryContextOrdinals = [];
|
|
1668
|
+
let noReplySettlementStarted = false;
|
|
1502
1669
|
let reactionPatches = [];
|
|
1503
1670
|
const reservedNoReplyDeliveryContextOrdinals = new Set();
|
|
1504
1671
|
const additionalUsages = [];
|
|
@@ -1515,6 +1682,7 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1515
1682
|
const jsonEvents = [];
|
|
1516
1683
|
const runtimeIssueInputs = [];
|
|
1517
1684
|
let computerToolsLockedAfterUserPause = false;
|
|
1685
|
+
const requiredVaultFileApprovalUrls = [];
|
|
1518
1686
|
const actionDiagnostics = input.onTraceEvent
|
|
1519
1687
|
? createCodexActionDiagnosticsReducer()
|
|
1520
1688
|
: null;
|
|
@@ -1525,6 +1693,8 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1525
1693
|
const pendingExternallyVisibleAssistantOutputDeliveryContextCounts = new Map();
|
|
1526
1694
|
let stdinFailure = null;
|
|
1527
1695
|
let lastTimingAt = Date.now();
|
|
1696
|
+
const codexAppServerTurnStartedAt = lastTimingAt;
|
|
1697
|
+
const codexAppServerProviderStartTiming = {};
|
|
1528
1698
|
let liveInterruptRequested = false;
|
|
1529
1699
|
let completeTurn = null;
|
|
1530
1700
|
let failTurn = null;
|
|
@@ -1537,7 +1707,6 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1537
1707
|
const pendingProgressDeliveries = new Set();
|
|
1538
1708
|
let dynamicToolExecutionChain = Promise.resolve();
|
|
1539
1709
|
const dynamicToolAbortController = new AbortController();
|
|
1540
|
-
const pendingPreStartMessages = [];
|
|
1541
1710
|
const turnCompleted = new Promise((resolve, reject) => {
|
|
1542
1711
|
completeTurn = resolve;
|
|
1543
1712
|
failTurn = reject;
|
|
@@ -1562,6 +1731,24 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1562
1731
|
stderrBytes: Buffer.byteLength(stderr, 'utf8'),
|
|
1563
1732
|
terminationSignalSent,
|
|
1564
1733
|
});
|
|
1734
|
+
const buildRecordedTerminationError = (fallback) => {
|
|
1735
|
+
const recordedEndReason = codexProcess.recordedEndReason;
|
|
1736
|
+
if (recordedEndReason !== 'previous-process-exit' &&
|
|
1737
|
+
recordedEndReason !== 'previous-turn-abort') {
|
|
1738
|
+
return null;
|
|
1739
|
+
}
|
|
1740
|
+
return buildCodexProcessExitError({
|
|
1741
|
+
abortOwnsTermination: recordedEndReason === 'previous-turn-abort',
|
|
1742
|
+
code: codexProcess.child.exitCode,
|
|
1743
|
+
diagnostics: buildProcessExitDiagnostics(),
|
|
1744
|
+
errorInfo: lastEventErrorInfo,
|
|
1745
|
+
fallback,
|
|
1746
|
+
providerActionCount,
|
|
1747
|
+
codexThreadId,
|
|
1748
|
+
signal: codexProcess.child.signalCode ?? null,
|
|
1749
|
+
stderr,
|
|
1750
|
+
});
|
|
1751
|
+
};
|
|
1565
1752
|
// Subagent usage drafts are derived lazily from the buffered per-thread
|
|
1566
1753
|
// samples so both the success result and the failure context can include
|
|
1567
1754
|
// whatever child usage was observed before the turn settled.
|
|
@@ -1577,6 +1764,22 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1577
1764
|
const listNoReplyFinalActionPatchOrdinals = () => [...new Set(finalActionPatches
|
|
1578
1765
|
.filter((entry) => entry.patch.kind === 'none')
|
|
1579
1766
|
.map((entry) => entry.deliveryContextOrdinal))].sort((left, right) => left - right);
|
|
1767
|
+
const hasRequiredUserVisibleOutput = () => computerToolsLockedAfterUserPause || requiredVaultFileApprovalUrls.length > 0;
|
|
1768
|
+
const settleNoReplyFinalActions = async () => {
|
|
1769
|
+
if (hasRequiredUserVisibleOutput() || noReplySettlementStarted) {
|
|
1770
|
+
return;
|
|
1771
|
+
}
|
|
1772
|
+
noReplySettlementStarted = true;
|
|
1773
|
+
for (const deliveryContextOrdinal of listNoReplyFinalActionPatchOrdinals()) {
|
|
1774
|
+
await input.onFinishWithoutReplyAccepted?.({
|
|
1775
|
+
deliveryContextOrdinal,
|
|
1776
|
+
});
|
|
1777
|
+
acceptedNoReplyDeliveryContextOrdinals.push(deliveryContextOrdinal);
|
|
1778
|
+
await input.onFinishWithoutReplyRecorded?.({
|
|
1779
|
+
deliveryContextOrdinal,
|
|
1780
|
+
});
|
|
1781
|
+
}
|
|
1782
|
+
};
|
|
1580
1783
|
const annotateTurnFailureContext = (error) => {
|
|
1581
1784
|
if (!error || typeof error !== 'object') {
|
|
1582
1785
|
return;
|
|
@@ -1586,14 +1789,14 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1586
1789
|
additionalUsages: [...additionalUsages, ...buildSubagentUsageDrafts()],
|
|
1587
1790
|
providerActionCount,
|
|
1588
1791
|
runtimeIssueInputs: [...runtimeIssueInputs],
|
|
1589
|
-
acceptedNoReplyDeliveryContextOrdinals:
|
|
1792
|
+
acceptedNoReplyDeliveryContextOrdinals: [...acceptedNoReplyDeliveryContextOrdinals],
|
|
1590
1793
|
reactions: reactionPatches.map((entry) => ({
|
|
1591
1794
|
deliveryContextOrdinal: entry.deliveryContextOrdinal,
|
|
1592
1795
|
reaction: entry.patch.reaction,
|
|
1593
1796
|
})),
|
|
1594
|
-
codexThreadHistoryUnsafe: hasNoReplyFinalActionPatch(),
|
|
1595
1797
|
codexThreadId,
|
|
1596
1798
|
providerTurnId: turnId,
|
|
1799
|
+
rolloutRelativePath,
|
|
1597
1800
|
};
|
|
1598
1801
|
codexAppServerTurnFailureContexts.set(error, context);
|
|
1599
1802
|
try {
|
|
@@ -1627,23 +1830,47 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1627
1830
|
interruptCleanupTimer = setTimeout(() => {
|
|
1628
1831
|
interruptCleanupTimer = null;
|
|
1629
1832
|
lifecycleStage = 'interrupt_timeout_cleanup';
|
|
1630
|
-
|
|
1833
|
+
if (codexProcess.recordedEndReason !== 'previous-process-exit') {
|
|
1834
|
+
normalShutdown = true;
|
|
1835
|
+
}
|
|
1631
1836
|
rejectOnce(buildInterruptCleanupTimeoutError());
|
|
1632
1837
|
}, CODEX_APP_SERVER_INTERRUPT_CLEANUP_TIMEOUT_MS);
|
|
1633
1838
|
interruptCleanupTimer.unref?.();
|
|
1634
1839
|
};
|
|
1635
1840
|
const emitAppServerTimingTrace = (stage) => {
|
|
1841
|
+
const now = Date.now();
|
|
1842
|
+
const elapsedMs = Math.max(0, now - lastTimingAt);
|
|
1843
|
+
if (stage === 'spawn-ready') {
|
|
1844
|
+
codexAppServerProviderStartTiming.codexAppServerSpawnReadyMs = elapsedMs;
|
|
1845
|
+
}
|
|
1846
|
+
else if (stage === 'initialized') {
|
|
1847
|
+
codexAppServerProviderStartTiming.codexAppServerInitializeMs = elapsedMs;
|
|
1848
|
+
}
|
|
1849
|
+
else if (stage === 'warm-reused') {
|
|
1850
|
+
codexAppServerProviderStartTiming.codexAppServerWarmReuseMs = elapsedMs;
|
|
1851
|
+
}
|
|
1852
|
+
else if (stage === 'thread-resumed') {
|
|
1853
|
+
codexAppServerProviderStartTiming.codexAppServerThreadResumeMs = elapsedMs;
|
|
1854
|
+
}
|
|
1855
|
+
else if (stage === 'thread-started') {
|
|
1856
|
+
codexAppServerProviderStartTiming.codexAppServerThreadStartMs = elapsedMs;
|
|
1857
|
+
}
|
|
1858
|
+
lastTimingAt = now;
|
|
1636
1859
|
if (!input.onTraceEvent) {
|
|
1637
1860
|
return;
|
|
1638
1861
|
}
|
|
1639
|
-
const now = Date.now();
|
|
1640
1862
|
try {
|
|
1641
1863
|
input.onTraceEvent({
|
|
1642
1864
|
codexThreadId,
|
|
1643
1865
|
rawEvent: {
|
|
1644
1866
|
schema: CODEX_APP_SERVER_TIMING_TRACE_SCHEMA,
|
|
1645
1867
|
type: CODEX_APP_SERVER_TIMING_TRACE_TYPE,
|
|
1646
|
-
|
|
1868
|
+
...(stage === 'initialized'
|
|
1869
|
+
? {
|
|
1870
|
+
codexTimingColdStartReason: codexProcess.coldStartReason,
|
|
1871
|
+
}
|
|
1872
|
+
: {}),
|
|
1873
|
+
codexTimingElapsedMs: elapsedMs,
|
|
1647
1874
|
codexTimingProviderActionCount: providerActionCount,
|
|
1648
1875
|
codexTimingThreadIdPresent: codexThreadId !== null,
|
|
1649
1876
|
codexTimingStage: stage,
|
|
@@ -1652,7 +1879,6 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1652
1879
|
},
|
|
1653
1880
|
updates: [],
|
|
1654
1881
|
});
|
|
1655
|
-
lastTimingAt = now;
|
|
1656
1882
|
}
|
|
1657
1883
|
catch {
|
|
1658
1884
|
// Timing traces are diagnostic-only and must not block assistant turns.
|
|
@@ -1695,17 +1921,18 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1695
1921
|
if (normalShutdown && readNodeErrorCode(error) === 'EPIPE') {
|
|
1696
1922
|
return null;
|
|
1697
1923
|
}
|
|
1924
|
+
const fallback = buildCodexStdinFailureFallback({
|
|
1925
|
+
error,
|
|
1926
|
+
lastEventError,
|
|
1927
|
+
stderr,
|
|
1928
|
+
});
|
|
1698
1929
|
const failure = stdinFailure ??
|
|
1699
1930
|
buildCodexProcessExitError({
|
|
1700
|
-
|
|
1931
|
+
abortOwnsTermination: false,
|
|
1701
1932
|
code: codexProcess.child.exitCode,
|
|
1702
1933
|
diagnostics: buildProcessExitDiagnostics(),
|
|
1703
1934
|
errorInfo: lastEventErrorInfo,
|
|
1704
|
-
fallback
|
|
1705
|
-
error,
|
|
1706
|
-
lastEventError,
|
|
1707
|
-
stderr,
|
|
1708
|
-
}),
|
|
1935
|
+
fallback,
|
|
1709
1936
|
providerActionCount,
|
|
1710
1937
|
codexThreadId,
|
|
1711
1938
|
signal: codexProcess.child.signalCode ?? null,
|
|
@@ -1728,6 +1955,7 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1728
1955
|
abortSignal: input.abortSignal,
|
|
1729
1956
|
onAbort: () => {
|
|
1730
1957
|
abortRequested = true;
|
|
1958
|
+
codexProcess.noteTurnAbort();
|
|
1731
1959
|
if (codexThreadId && turnId) {
|
|
1732
1960
|
codexProcess.sendUntrackedRequest('turn/interrupt', buildCodexTurnInterruptParams({
|
|
1733
1961
|
threadId: codexThreadId,
|
|
@@ -1780,14 +2008,40 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1780
2008
|
? `${previousText}${normalizedText}`
|
|
1781
2009
|
: normalizedText);
|
|
1782
2010
|
};
|
|
2011
|
+
const removeAssistantTraceUpdateFromFinalFallback = (update) => {
|
|
2012
|
+
if (update.kind !== 'assistant') {
|
|
2013
|
+
return;
|
|
2014
|
+
}
|
|
2015
|
+
const streamKey = normalizeAssistantTraceStreamKey(update);
|
|
2016
|
+
assistantStreams.delete(streamKey);
|
|
2017
|
+
const streamOrderIndex = assistantStreamOrder.indexOf(streamKey);
|
|
2018
|
+
if (streamOrderIndex >= 0) {
|
|
2019
|
+
assistantStreamOrder.splice(streamOrderIndex, 1);
|
|
2020
|
+
}
|
|
2021
|
+
};
|
|
2022
|
+
// App-server events mutate this state inside the asynchronous message
|
|
2023
|
+
// handler, so finalization reads it through an explicitly typed boundary.
|
|
2024
|
+
const readTrailingSteerCandidate = () => trailingSteerCandidate;
|
|
2025
|
+
const promoteTrailingSteerCandidate = () => {
|
|
2026
|
+
if (!trailingSteerCandidate) {
|
|
2027
|
+
return;
|
|
2028
|
+
}
|
|
2029
|
+
precedingAgentMessageSegments.push(trailingSteerCandidate);
|
|
2030
|
+
trailingSteerCandidate = null;
|
|
2031
|
+
};
|
|
1783
2032
|
const notifyProviderRequestStarted = () => {
|
|
1784
2033
|
if (providerRequestStartedNotified) {
|
|
1785
2034
|
return;
|
|
1786
2035
|
}
|
|
1787
2036
|
providerRequestStartedNotified = true;
|
|
2037
|
+
const startedAtMs = Date.now();
|
|
1788
2038
|
notifyCodexAppServerProviderRequestStartedBestEffort({
|
|
1789
2039
|
hook: input.onProviderRequestStarted ?? null,
|
|
1790
|
-
startedAt: new Date().toISOString(),
|
|
2040
|
+
startedAt: new Date(startedAtMs).toISOString(),
|
|
2041
|
+
timing: {
|
|
2042
|
+
...codexAppServerProviderStartTiming,
|
|
2043
|
+
codexAppServerPreProviderMs: Math.max(0, startedAtMs - codexAppServerTurnStartedAt),
|
|
2044
|
+
},
|
|
1791
2045
|
});
|
|
1792
2046
|
};
|
|
1793
2047
|
const trackExternallyVisibleProgressDelivery = (input) => {
|
|
@@ -1803,43 +2057,37 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1803
2057
|
releasePending();
|
|
1804
2058
|
});
|
|
1805
2059
|
};
|
|
1806
|
-
const
|
|
2060
|
+
const notifyContextCompactionProgress = (deliveryContextOrdinal, text) => {
|
|
1807
2061
|
const progressDelivery = resolveCodexAppServerProgressDelivery(input);
|
|
1808
2062
|
if (!progressDelivery ||
|
|
1809
|
-
|
|
1810
|
-
|
|
2063
|
+
contextCompactionProgressNotified ||
|
|
2064
|
+
contextCompactionProgressPending) {
|
|
1811
2065
|
return false;
|
|
1812
2066
|
}
|
|
1813
2067
|
let progressPromise;
|
|
1814
2068
|
try {
|
|
1815
|
-
|
|
1816
|
-
contextCompactionProgressPending = true;
|
|
1817
|
-
}
|
|
2069
|
+
contextCompactionProgressPending = true;
|
|
1818
2070
|
progressPromise = progressDelivery.send(text, {
|
|
1819
|
-
|
|
1820
|
-
source,
|
|
2071
|
+
required: true,
|
|
2072
|
+
source: 'system',
|
|
1821
2073
|
});
|
|
1822
2074
|
}
|
|
1823
2075
|
catch {
|
|
1824
|
-
|
|
1825
|
-
contextCompactionProgressPending = false;
|
|
1826
|
-
}
|
|
2076
|
+
contextCompactionProgressPending = false;
|
|
1827
2077
|
return false;
|
|
1828
2078
|
}
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
else {
|
|
1835
|
-
contextCompactionProgressPending = false;
|
|
1836
|
-
}
|
|
1837
|
-
return result;
|
|
1838
|
-
}, (error) => {
|
|
2079
|
+
progressPromise = progressPromise.then((result) => {
|
|
2080
|
+
if (result.kind === 'sent') {
|
|
2081
|
+
contextCompactionProgressNotified = true;
|
|
2082
|
+
}
|
|
2083
|
+
else {
|
|
1839
2084
|
contextCompactionProgressPending = false;
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
}
|
|
2085
|
+
}
|
|
2086
|
+
return result;
|
|
2087
|
+
}, (error) => {
|
|
2088
|
+
contextCompactionProgressPending = false;
|
|
2089
|
+
throw error;
|
|
2090
|
+
});
|
|
1843
2091
|
trackProgressDelivery(trackExternallyVisibleProgressDelivery({
|
|
1844
2092
|
deliveryContextOrdinal,
|
|
1845
2093
|
promise: progressPromise,
|
|
@@ -1862,8 +2110,8 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1862
2110
|
}
|
|
1863
2111
|
};
|
|
1864
2112
|
// Stateful dynamic tools run serialized in request order so response media,
|
|
1865
|
-
// final-action patches, and computer
|
|
1866
|
-
// even if Codex
|
|
2113
|
+
// preference and configuration writes, final-action patches, and computer
|
|
2114
|
+
// pause barriers apply deterministically even if Codex overlaps tool requests.
|
|
1867
2115
|
const trackDynamicToolExecution = (run) => {
|
|
1868
2116
|
dynamicToolExecutionChain = dynamicToolExecutionChain
|
|
1869
2117
|
.then(run)
|
|
@@ -1889,20 +2137,19 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1889
2137
|
: normalizeAssistantResponseMediaList([...responseMedia, ...patch.media]);
|
|
1890
2138
|
};
|
|
1891
2139
|
const canApplyNoReplyPatch = (deliveryContextOrdinal) => {
|
|
2140
|
+
const trailingSteerCandidateOrdinal = trailingSteerCandidate?.deliveryContextOrdinal;
|
|
1892
2141
|
if (externallyVisibleAssistantOutputDeliveryContexts.has(deliveryContextOrdinal) ||
|
|
1893
2142
|
hasPendingExternallyVisibleAssistantOutput(deliveryContextOrdinal)) {
|
|
1894
2143
|
return false;
|
|
1895
2144
|
}
|
|
1896
|
-
if (
|
|
1897
|
-
|
|
1898
|
-
trailingSteerCandidateDeliveryContextOrdinal < deliveryContextOrdinal) {
|
|
2145
|
+
if (typeof trailingSteerCandidateOrdinal === 'number' &&
|
|
2146
|
+
trailingSteerCandidateOrdinal < deliveryContextOrdinal) {
|
|
1899
2147
|
return false;
|
|
1900
2148
|
}
|
|
1901
2149
|
if (responseMedia.length > 0) {
|
|
1902
2150
|
return false;
|
|
1903
2151
|
}
|
|
1904
|
-
if (precedingAgentMessageSegments.some((segment) =>
|
|
1905
|
-
segment.deliveryContextOrdinal < deliveryContextOrdinal)) {
|
|
2152
|
+
if (precedingAgentMessageSegments.some((segment) => segment.deliveryContextOrdinal < deliveryContextOrdinal)) {
|
|
1906
2153
|
return false;
|
|
1907
2154
|
}
|
|
1908
2155
|
return true;
|
|
@@ -1922,113 +2169,34 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
1922
2169
|
};
|
|
1923
2170
|
};
|
|
1924
2171
|
const applyFinalActionPatch = async (patch, deliveryContextOrdinal) => {
|
|
1925
|
-
if (patch.kind === 'none' &&
|
|
2172
|
+
if (patch.kind === 'none' &&
|
|
2173
|
+
(computerToolsLockedAfterUserPause ||
|
|
2174
|
+
!canApplyNoReplyPatch(deliveryContextOrdinal))) {
|
|
1926
2175
|
return false;
|
|
1927
2176
|
}
|
|
1928
2177
|
if (finalActionPatches.some((action) => action.deliveryContextOrdinal === deliveryContextOrdinal)) {
|
|
1929
2178
|
return true;
|
|
1930
2179
|
}
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
finalActionPatches = [
|
|
1941
|
-
...finalActionPatches,
|
|
1942
|
-
{
|
|
1943
|
-
deliveryContextOrdinal,
|
|
1944
|
-
patch,
|
|
1945
|
-
},
|
|
1946
|
-
];
|
|
1947
|
-
if (patch.kind === 'none') {
|
|
1948
|
-
reservedNoReplyDeliveryContextOrdinals.delete(deliveryContextOrdinal);
|
|
1949
|
-
await input.onCodexThreadHistoryUnsafe?.({
|
|
1950
|
-
deliveryContextOrdinal,
|
|
1951
|
-
});
|
|
1952
|
-
}
|
|
1953
|
-
return true;
|
|
1954
|
-
}
|
|
1955
|
-
catch (error) {
|
|
1956
|
-
if (reservedNoReply &&
|
|
1957
|
-
!finalActionPatches.some((action) => action.deliveryContextOrdinal === deliveryContextOrdinal)) {
|
|
1958
|
-
reservedNoReplyDeliveryContextOrdinals.delete(deliveryContextOrdinal);
|
|
1959
|
-
}
|
|
1960
|
-
throw error;
|
|
2180
|
+
finalActionPatches = [
|
|
2181
|
+
...finalActionPatches,
|
|
2182
|
+
{
|
|
2183
|
+
deliveryContextOrdinal,
|
|
2184
|
+
patch,
|
|
2185
|
+
},
|
|
2186
|
+
];
|
|
2187
|
+
if (patch.kind === 'none') {
|
|
2188
|
+
reservedNoReplyDeliveryContextOrdinals.delete(deliveryContextOrdinal);
|
|
1961
2189
|
}
|
|
2190
|
+
return true;
|
|
1962
2191
|
};
|
|
1963
2192
|
const resolveFinalActionPatch = (deliveryContextOrdinal) => finalActionPatches.find((action) => action.deliveryContextOrdinal === deliveryContextOrdinal)?.patch ?? null;
|
|
1964
2193
|
const shouldSuppressDeliveryContext = (deliveryContextOrdinal) => {
|
|
1965
|
-
if (reservedNoReplyDeliveryContextOrdinals.has(deliveryContextOrdinal
|
|
2194
|
+
if (reservedNoReplyDeliveryContextOrdinals.has(deliveryContextOrdinal)) {
|
|
1966
2195
|
return true;
|
|
1967
2196
|
}
|
|
1968
|
-
const patch = resolveFinalActionPatch(deliveryContextOrdinal
|
|
2197
|
+
const patch = resolveFinalActionPatch(deliveryContextOrdinal);
|
|
1969
2198
|
return patch?.kind === 'none';
|
|
1970
2199
|
};
|
|
1971
|
-
const buildUnknownRpcResponseError = () => new VaultCliError('ASSISTANT_CODEX_APP_SERVER_LATE_RESPONSE', 'Codex app-server emitted a response for an unknown request id.', {
|
|
1972
|
-
retryable: true,
|
|
1973
|
-
});
|
|
1974
|
-
const buildStaleTurnEventError = (input) => new VaultCliError('ASSISTANT_CODEX_APP_SERVER_STALE_TURN_EVENT', 'Codex app-server emitted an event that does not match the active turn.', {
|
|
1975
|
-
eventMethod: input.eventMethod,
|
|
1976
|
-
eventTurnIdPresent: input.eventTurnId !== null,
|
|
1977
|
-
expectedTurnIdPresent: expectedTurnId !== null,
|
|
1978
|
-
retryable: true,
|
|
1979
|
-
});
|
|
1980
|
-
const buildMissingReusedTurnIdError = () => new VaultCliError('ASSISTANT_CODEX_APP_SERVER_TURN_ID_MISSING', 'Codex app-server turn/start response is missing a turn id on a reused warm process.', {
|
|
1981
|
-
retryable: true,
|
|
1982
|
-
});
|
|
1983
|
-
const bindExpectedTurnId = (candidateTurnId, eventMethod) => {
|
|
1984
|
-
if (!candidateTurnId) {
|
|
1985
|
-
return null;
|
|
1986
|
-
}
|
|
1987
|
-
if (expectedTurnId === null) {
|
|
1988
|
-
expectedTurnId = candidateTurnId;
|
|
1989
|
-
return null;
|
|
1990
|
-
}
|
|
1991
|
-
if (candidateTurnId === expectedTurnId) {
|
|
1992
|
-
return null;
|
|
1993
|
-
}
|
|
1994
|
-
return buildStaleTurnEventError({
|
|
1995
|
-
eventMethod,
|
|
1996
|
-
eventTurnId: candidateTurnId,
|
|
1997
|
-
});
|
|
1998
|
-
};
|
|
1999
|
-
const validateWarmTurnEventCorrelation = (message, eventMethod) => {
|
|
2000
|
-
const eventTurnId = extractCodexTurnIdFromMessage(message);
|
|
2001
|
-
if (codexProcess.requiresCompleteTurnCorrelation &&
|
|
2002
|
-
expectedTurnId === null &&
|
|
2003
|
-
codexEventMethodRequiresTurnCorrelation(eventMethod)) {
|
|
2004
|
-
if (eventTurnId) {
|
|
2005
|
-
return null;
|
|
2006
|
-
}
|
|
2007
|
-
return buildStaleTurnEventError({
|
|
2008
|
-
eventMethod,
|
|
2009
|
-
eventTurnId,
|
|
2010
|
-
});
|
|
2011
|
-
}
|
|
2012
|
-
if (eventTurnId) {
|
|
2013
|
-
return bindExpectedTurnId(eventTurnId, eventMethod);
|
|
2014
|
-
}
|
|
2015
|
-
return codexProcess.requiresCompleteTurnCorrelation &&
|
|
2016
|
-
codexEventMethodRequiresTurnCorrelation(eventMethod)
|
|
2017
|
-
? buildStaleTurnEventError({
|
|
2018
|
-
eventMethod,
|
|
2019
|
-
eventTurnId: null,
|
|
2020
|
-
})
|
|
2021
|
-
: null;
|
|
2022
|
-
};
|
|
2023
|
-
const shouldBufferPreStartWarmMessage = (message, eventMethod) => {
|
|
2024
|
-
return (codexProcess.requiresCompleteTurnCorrelation &&
|
|
2025
|
-
expectedTurnId === null &&
|
|
2026
|
-
codexEventMethodRequiresTurnCorrelation(eventMethod) &&
|
|
2027
|
-
extractCodexTurnIdFromMessage(message) !== null) || (codexProcess.requiresCompleteTurnCorrelation &&
|
|
2028
|
-
expectedTurnId === null &&
|
|
2029
|
-
readCodexRpcServerRequestId(message) !== null &&
|
|
2030
|
-
extractCodexTurnIdFromMessage(message) !== null);
|
|
2031
|
-
};
|
|
2032
2200
|
const acceptJsonEvent = (message) => {
|
|
2033
2201
|
jsonEvents.push(message);
|
|
2034
2202
|
};
|
|
@@ -2097,6 +2265,38 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2097
2265
|
});
|
|
2098
2266
|
return;
|
|
2099
2267
|
}
|
|
2268
|
+
if (computerToolsLockedAfterUserPause &&
|
|
2269
|
+
dynamicToolRequest.kind === 'finish-without-reply') {
|
|
2270
|
+
void tryWriteRpcMessage({
|
|
2271
|
+
id: requestId,
|
|
2272
|
+
result: {
|
|
2273
|
+
success: false,
|
|
2274
|
+
contentItems: [
|
|
2275
|
+
{
|
|
2276
|
+
type: 'inputText',
|
|
2277
|
+
text: 'finish_without_reply is unavailable after pausing a computer run for the user',
|
|
2278
|
+
},
|
|
2279
|
+
],
|
|
2280
|
+
},
|
|
2281
|
+
});
|
|
2282
|
+
return;
|
|
2283
|
+
}
|
|
2284
|
+
if (requiredVaultFileApprovalUrls.length > 0 &&
|
|
2285
|
+
dynamicToolRequest.kind === 'finish-without-reply') {
|
|
2286
|
+
void tryWriteRpcMessage({
|
|
2287
|
+
id: requestId,
|
|
2288
|
+
result: {
|
|
2289
|
+
success: false,
|
|
2290
|
+
contentItems: [
|
|
2291
|
+
{
|
|
2292
|
+
type: 'inputText',
|
|
2293
|
+
text: 'finish_without_reply is unavailable while a vault-file approval link must be delivered',
|
|
2294
|
+
},
|
|
2295
|
+
],
|
|
2296
|
+
},
|
|
2297
|
+
});
|
|
2298
|
+
return;
|
|
2299
|
+
}
|
|
2100
2300
|
if (computerToolsLockedAfterUserPause &&
|
|
2101
2301
|
isComputerDynamicToolRequest(dynamicToolRequest)) {
|
|
2102
2302
|
void tryWriteRpcMessage({
|
|
@@ -2149,34 +2349,44 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2149
2349
|
? addPendingExternallyVisibleAssistantOutput(dynamicToolDeliveryContextOrdinal ?? 0)
|
|
2150
2350
|
: null;
|
|
2151
2351
|
if (dynamicToolRequest.kind === 'computer-pause-for-user') {
|
|
2352
|
+
finalActionPatches = finalActionPatches.filter((entry) => entry.patch.kind !== 'none' ||
|
|
2353
|
+
entry.deliveryContextOrdinal !==
|
|
2354
|
+
dynamicToolRequestDeliveryContextOrdinal);
|
|
2355
|
+
reservedNoReplyDeliveryContextOrdinals.delete(dynamicToolRequestDeliveryContextOrdinal);
|
|
2152
2356
|
computerToolsLockedAfterUserPause = true;
|
|
2153
2357
|
closeLiveTurn();
|
|
2154
2358
|
}
|
|
2155
|
-
const runDynamicTool = () =>
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
:
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
:
|
|
2359
|
+
const runDynamicTool = () => withHostedCanonicalWritePort(hostedCanonicalWritePort, async () => {
|
|
2360
|
+
const hostedToolContext = resolveCodexAppServerHostedToolContext(input);
|
|
2361
|
+
await hostedToolContext?.beforeToolExecution?.();
|
|
2362
|
+
return await executeMurphDynamicToolRequest({
|
|
2363
|
+
assistantStyleSettingsOverlay,
|
|
2364
|
+
assistantStyleSettingsAvailable: input.dynamicTools.some((tool) => tool.namespace === MURPH_ASSISTANT_STYLE_TOOL.namespace &&
|
|
2365
|
+
tool.name === MURPH_ASSISTANT_STYLE_TOOL.name),
|
|
2366
|
+
abortSignal: input.abortSignal
|
|
2367
|
+
? AbortSignal.any([input.abortSignal, dynamicToolAbortController.signal])
|
|
2368
|
+
: dynamicToolAbortController.signal,
|
|
2369
|
+
codexHome: input.codexHome ?? input.env.CODEX_HOME ?? null,
|
|
2370
|
+
env: input.env,
|
|
2371
|
+
fetchImpl: input.fetchImpl,
|
|
2372
|
+
hostedGeneratedImageUploader: input.hostedGeneratedImageUploader,
|
|
2373
|
+
hostedToolContext,
|
|
2374
|
+
materializeWorkspaceArtifacts: input.materializeWorkspaceArtifacts ?? null,
|
|
2375
|
+
currentResponseMedia: responseMedia,
|
|
2376
|
+
nextUsageOrdinal: () => nextDynamicToolUsageOrdinal++,
|
|
2377
|
+
productFeedbackRecorder: input.productFeedbackRecorder ?? null,
|
|
2378
|
+
progressDelivery: dynamicToolRequest.kind === 'send-progress-update'
|
|
2379
|
+
? dynamicToolProgressDelivery
|
|
2380
|
+
: null,
|
|
2381
|
+
publicFetchImpl: input.publicInternetFetch ?? null,
|
|
2382
|
+
request: dynamicToolRequest,
|
|
2383
|
+
requireHostedGeneratedImageUploader: input.requireHostedGeneratedImageUploader ?? false,
|
|
2384
|
+
vaultRoot: input.vaultRoot ?? null,
|
|
2385
|
+
voiceMemoRuntime: dynamicToolRequest.kind === 'generate-voice-memo' ||
|
|
2386
|
+
dynamicToolRequest.kind === 'generate-song'
|
|
2387
|
+
? input.voiceMemoRuntime ?? null
|
|
2388
|
+
: null,
|
|
2389
|
+
});
|
|
2180
2390
|
}).then(async (result) => {
|
|
2181
2391
|
if (dynamicToolRequest.kind === 'send-progress-update') {
|
|
2182
2392
|
releaseDynamicProgressPending?.();
|
|
@@ -2184,8 +2394,9 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2184
2394
|
if (result.usageDraft) {
|
|
2185
2395
|
additionalUsages.push(result.usageDraft);
|
|
2186
2396
|
}
|
|
2187
|
-
if (result.
|
|
2188
|
-
|
|
2397
|
+
if (result.requiredVaultFileApprovalUrl &&
|
|
2398
|
+
!requiredVaultFileApprovalUrls.includes(result.requiredVaultFileApprovalUrl)) {
|
|
2399
|
+
requiredVaultFileApprovalUrls.push(result.requiredVaultFileApprovalUrl);
|
|
2189
2400
|
}
|
|
2190
2401
|
if (result.responseMediaPatch) {
|
|
2191
2402
|
try {
|
|
@@ -2284,15 +2495,11 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2284
2495
|
};
|
|
2285
2496
|
const handleAcceptedEvent = (message, method) => {
|
|
2286
2497
|
acceptJsonEvent(message);
|
|
2287
|
-
codexThreadId = codexThreadId ?? extractCodexSessionId(message);
|
|
2288
2498
|
for (const receiverThreadId of readCodexCollabReceiverThreadIds(message)) {
|
|
2289
2499
|
collabReceiverThreadIds.add(receiverThreadId);
|
|
2290
2500
|
}
|
|
2291
2501
|
lastEventError = extractCodexErrorMessage(message) ?? lastEventError;
|
|
2292
2502
|
lastEventErrorInfo = extractCodexErrorInfo(message) ?? lastEventErrorInfo;
|
|
2293
|
-
if (isCodexTurnStartedMethod(method)) {
|
|
2294
|
-
turnId = extractCodexTurnIdFromMessage(message) ?? turnId;
|
|
2295
|
-
}
|
|
2296
2503
|
const normalizedEvent = normalizeCodexEvent(message);
|
|
2297
2504
|
const runtimeIssueInput = buildRuntimeIssueInputForFailedCodexAction({
|
|
2298
2505
|
normalizedEvent,
|
|
@@ -2306,6 +2513,27 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2306
2513
|
normalizedEvent,
|
|
2307
2514
|
rawEvent: message,
|
|
2308
2515
|
});
|
|
2516
|
+
const transportDiagnosticsTraceEvent = input.onTraceEvent
|
|
2517
|
+
? buildCodexTransportDiagnosticsTraceEvent({
|
|
2518
|
+
codexThreadId,
|
|
2519
|
+
message,
|
|
2520
|
+
method,
|
|
2521
|
+
providerActionCount,
|
|
2522
|
+
turnId,
|
|
2523
|
+
})
|
|
2524
|
+
: null;
|
|
2525
|
+
if (transportDiagnosticsTraceEvent) {
|
|
2526
|
+
try {
|
|
2527
|
+
input.onTraceEvent?.({
|
|
2528
|
+
codexThreadId: null,
|
|
2529
|
+
rawEvent: transportDiagnosticsTraceEvent,
|
|
2530
|
+
updates: [],
|
|
2531
|
+
});
|
|
2532
|
+
}
|
|
2533
|
+
catch {
|
|
2534
|
+
// Transport diagnostics are metadata-only and must not block turns.
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
2309
2537
|
const providerActionKey = extractCodexProviderActionKey(normalizedEvent);
|
|
2310
2538
|
if (providerActionKey && !providerActionItemIds.has(providerActionKey)) {
|
|
2311
2539
|
providerActionItemIds.add(providerActionKey);
|
|
@@ -2313,11 +2541,22 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2313
2541
|
}
|
|
2314
2542
|
const deliveryContextOrdinal = currentDeliveryContextOrdinal();
|
|
2315
2543
|
const suppressDeliveryContext = shouldSuppressDeliveryContext(deliveryContextOrdinal);
|
|
2316
|
-
const
|
|
2544
|
+
const isCommentaryAssistantMessage = normalizedEvent.kind === 'assistant_message' &&
|
|
2545
|
+
normalizedEvent.messagePhase === 'commentary';
|
|
2546
|
+
const rawUpdates = extractCodexTraceUpdatesFromNormalized(normalizedEvent);
|
|
2547
|
+
const updates = rawUpdates
|
|
2317
2548
|
.filter((update) => !(suppressDeliveryContext && update.kind === 'assistant'));
|
|
2318
2549
|
for (const update of updates) {
|
|
2319
2550
|
recordAssistantTraceUpdate(update, deliveryContextOrdinal);
|
|
2320
2551
|
}
|
|
2552
|
+
if (isCommentaryAssistantMessage) {
|
|
2553
|
+
// Commentary is internal progress, not a member-facing message. Remove
|
|
2554
|
+
// its stream, including any earlier deltas for the same item, so a
|
|
2555
|
+
// media-only response cannot reuse it as final reply text.
|
|
2556
|
+
for (const update of rawUpdates) {
|
|
2557
|
+
removeAssistantTraceUpdateFromFinalFallback(update);
|
|
2558
|
+
}
|
|
2559
|
+
}
|
|
2321
2560
|
if (normalizedEvent.kind !== 'status_item' ||
|
|
2322
2561
|
normalizedEvent.itemType !== 'context.compaction') {
|
|
2323
2562
|
input.onTraceEvent?.({
|
|
@@ -2330,23 +2569,14 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2330
2569
|
markExternallyVisibleAssistantOutput(deliveryContextOrdinal);
|
|
2331
2570
|
}
|
|
2332
2571
|
}
|
|
2333
|
-
const
|
|
2334
|
-
|
|
2335
|
-
? resolveCodexCurrentChannelProgressSource(normalizedEvent)
|
|
2336
|
-
: null;
|
|
2337
|
-
if (progressDeliveryText &&
|
|
2338
|
-
progressDeliverySource &&
|
|
2572
|
+
const contextCompactionProgressText = extractCodexContextCompactionProgressTextFromNormalized(normalizedEvent);
|
|
2573
|
+
if (contextCompactionProgressText &&
|
|
2339
2574
|
!suppressDeliveryContext) {
|
|
2340
|
-
|
|
2575
|
+
notifyContextCompactionProgress(deliveryContextOrdinal, contextCompactionProgressText);
|
|
2341
2576
|
}
|
|
2342
2577
|
const completedFinalAgentMessageText = extractCodexCompletedFinalAgentMessageTextFromNormalized(normalizedEvent);
|
|
2343
2578
|
if (completedFinalAgentMessageText !== null && !suppressDeliveryContext) {
|
|
2344
|
-
|
|
2345
|
-
precedingAgentMessageSegments.push(trailingSteerCandidate);
|
|
2346
|
-
trailingSteerCandidate = null;
|
|
2347
|
-
trailingSteerCandidateDeliveryContextOrdinal = null;
|
|
2348
|
-
trailingSteerCandidateMedia = null;
|
|
2349
|
-
}
|
|
2579
|
+
promoteTrailingSteerCandidate();
|
|
2350
2580
|
completedFinalAgentMessage = completedFinalAgentMessageText;
|
|
2351
2581
|
}
|
|
2352
2582
|
else if (isCodexCompletedUserMessageItemFromNormalized(normalizedEvent)) {
|
|
@@ -2356,10 +2586,9 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2356
2586
|
response: completedFinalAgentMessage,
|
|
2357
2587
|
media: [...responseMedia],
|
|
2358
2588
|
};
|
|
2359
|
-
trailingSteerCandidateDeliveryContextOrdinal =
|
|
2360
|
-
trailingSteerCandidate.deliveryContextOrdinal ?? 0;
|
|
2361
|
-
trailingSteerCandidateMedia = trailingSteerCandidate.media;
|
|
2362
2589
|
completedFinalAgentMessage = null;
|
|
2590
|
+
assistantStreams.clear();
|
|
2591
|
+
assistantStreamOrder.length = 0;
|
|
2363
2592
|
responseMedia = [];
|
|
2364
2593
|
}
|
|
2365
2594
|
completedUserMessageOrdinal += 1;
|
|
@@ -2371,8 +2600,8 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2371
2600
|
}
|
|
2372
2601
|
else {
|
|
2373
2602
|
if (progressEvent.kind === 'message') {
|
|
2374
|
-
|
|
2375
|
-
|
|
2603
|
+
if (input.onProgress &&
|
|
2604
|
+
normalizeStreamingText(progressEvent.text)) {
|
|
2376
2605
|
markExternallyVisibleAssistantOutput(deliveryContextOrdinal);
|
|
2377
2606
|
}
|
|
2378
2607
|
}
|
|
@@ -2401,39 +2630,15 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2401
2630
|
turnTerminal = true;
|
|
2402
2631
|
completeTurn?.();
|
|
2403
2632
|
};
|
|
2404
|
-
const flushPendingPreStartMessages = () => {
|
|
2405
|
-
while (pendingPreStartMessages.length > 0) {
|
|
2406
|
-
const pending = pendingPreStartMessages.shift();
|
|
2407
|
-
const correlationError = validateWarmTurnEventCorrelation(pending.message, pending.method);
|
|
2408
|
-
if (correlationError) {
|
|
2409
|
-
rejectOnce(correlationError);
|
|
2410
|
-
return false;
|
|
2411
|
-
}
|
|
2412
|
-
if (pending.kind === 'server_request') {
|
|
2413
|
-
const requestId = readCodexRpcServerRequestId(pending.message);
|
|
2414
|
-
if (requestId === null) {
|
|
2415
|
-
rejectOnce(buildUnknownRpcResponseError());
|
|
2416
|
-
return false;
|
|
2417
|
-
}
|
|
2418
|
-
handleAcceptedServerRequest(pending.message, requestId);
|
|
2419
|
-
}
|
|
2420
|
-
else {
|
|
2421
|
-
handleAcceptedEvent(pending.message, pending.method);
|
|
2422
|
-
}
|
|
2423
|
-
}
|
|
2424
|
-
return true;
|
|
2425
|
-
};
|
|
2426
2633
|
const handleSubagentThreadMessage = (threadId, message) => {
|
|
2427
2634
|
const requestId = readCodexRpcServerRequestId(message);
|
|
2428
2635
|
if (requestId !== null) {
|
|
2429
2636
|
// Dynamic tools and approvals stay parent-thread-scoped; answer the
|
|
2430
2637
|
// child so it does not hang, without involving the parent turn.
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
message: 'Server requests from codex subagent threads are not supported.',
|
|
2436
|
-
},
|
|
2638
|
+
rejectCodexServerRequest({
|
|
2639
|
+
message: 'Server requests from codex subagent threads are not supported.',
|
|
2640
|
+
requestId,
|
|
2641
|
+
writeRpcMessage: tryWriteRpcMessage,
|
|
2437
2642
|
});
|
|
2438
2643
|
return;
|
|
2439
2644
|
}
|
|
@@ -2466,7 +2671,46 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2466
2671
|
lastEvent: message,
|
|
2467
2672
|
});
|
|
2468
2673
|
};
|
|
2469
|
-
const
|
|
2674
|
+
const handleStaleParentTurnMessage = (message) => {
|
|
2675
|
+
const requestId = readCodexRpcServerRequestId(message);
|
|
2676
|
+
if (requestId === null) {
|
|
2677
|
+
return;
|
|
2678
|
+
}
|
|
2679
|
+
rejectCodexServerRequest({
|
|
2680
|
+
message: 'Codex message turn id does not match the active turn.',
|
|
2681
|
+
requestId,
|
|
2682
|
+
writeRpcMessage: tryWriteRpcMessage,
|
|
2683
|
+
});
|
|
2684
|
+
};
|
|
2685
|
+
const rejectUnscopedParentTurnRequest = (requestId) => {
|
|
2686
|
+
rejectCodexServerRequest({
|
|
2687
|
+
message: 'Codex parent-thread request did not include the active turn id.',
|
|
2688
|
+
requestId,
|
|
2689
|
+
writeRpcMessage: tryWriteRpcMessage,
|
|
2690
|
+
});
|
|
2691
|
+
};
|
|
2692
|
+
const rejectPreStartParentTurnRequest = (requestId) => {
|
|
2693
|
+
rejectCodexServerRequest({
|
|
2694
|
+
message: 'Codex parent-thread request arrived before the active turn id was known.',
|
|
2695
|
+
requestId,
|
|
2696
|
+
writeRpcMessage: tryWriteRpcMessage,
|
|
2697
|
+
});
|
|
2698
|
+
};
|
|
2699
|
+
const acceptTurnStartResultTurnId = (resultTurnId) => {
|
|
2700
|
+
if (resultTurnId === null) {
|
|
2701
|
+
return;
|
|
2702
|
+
}
|
|
2703
|
+
if (turnId === null) {
|
|
2704
|
+
turnId = resultTurnId;
|
|
2705
|
+
return;
|
|
2706
|
+
}
|
|
2707
|
+
if (turnId !== resultTurnId) {
|
|
2708
|
+
rejectOnce(new VaultCliError('ASSISTANT_CODEX_APP_SERVER_TURN_ID_MISMATCH', 'Codex app-server turn/start returned a different turn id than the active turn.', {
|
|
2709
|
+
retryable: true,
|
|
2710
|
+
}));
|
|
2711
|
+
}
|
|
2712
|
+
};
|
|
2713
|
+
function handleParsedMessage(message) {
|
|
2470
2714
|
const responseId = readCodexRpcResponseId(message);
|
|
2471
2715
|
if (responseId !== null) {
|
|
2472
2716
|
const pending = codexProcess.pendingRequests.get(responseId);
|
|
@@ -2475,91 +2719,69 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2475
2719
|
pendingRequests: codexProcess.pendingRequests,
|
|
2476
2720
|
responseId,
|
|
2477
2721
|
});
|
|
2478
|
-
if (resolveResult === 'unknown_response_id'
|
|
2479
|
-
|
|
2480
|
-
rejectOnce(buildUnknownRpcResponseError());
|
|
2722
|
+
if (resolveResult === 'unknown_response_id') {
|
|
2723
|
+
codexProcess.consumeIgnoredResponseId(responseId);
|
|
2481
2724
|
return;
|
|
2482
2725
|
}
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
codexProcess.noteBoundThreadId(codexThreadId);
|
|
2491
|
-
}
|
|
2492
|
-
if (pending?.method === 'turn/start') {
|
|
2493
|
-
const resultTurnId = extractCodexTurnIdFromResult(message.result);
|
|
2494
|
-
if (codexProcess.requiresCompleteTurnCorrelation && !resultTurnId) {
|
|
2495
|
-
rejectOnce(buildMissingReusedTurnIdError());
|
|
2496
|
-
return;
|
|
2497
|
-
}
|
|
2498
|
-
const correlationError = bindExpectedTurnId(resultTurnId, 'turn/start');
|
|
2499
|
-
if (correlationError) {
|
|
2500
|
-
rejectOnce(correlationError);
|
|
2501
|
-
return;
|
|
2502
|
-
}
|
|
2503
|
-
turnId = resultTurnId ?? turnId;
|
|
2504
|
-
}
|
|
2505
|
-
if (pending?.method === 'turn/start' && !flushPendingPreStartMessages()) {
|
|
2506
|
-
return;
|
|
2507
|
-
}
|
|
2726
|
+
acceptJsonEvent(message);
|
|
2727
|
+
if (message.error) {
|
|
2728
|
+
return;
|
|
2729
|
+
}
|
|
2730
|
+
if (pending?.method === 'turn/start') {
|
|
2731
|
+
const resultTurnId = extractCodexTurnIdFromResult(message.result);
|
|
2732
|
+
acceptTurnStartResultTurnId(resultTurnId);
|
|
2508
2733
|
}
|
|
2509
2734
|
return;
|
|
2510
2735
|
}
|
|
2511
|
-
// Codex
|
|
2512
|
-
//
|
|
2513
|
-
//
|
|
2514
|
-
//
|
|
2515
|
-
//
|
|
2516
|
-
// Before a fresh thread/start response produces this turn's thread id,
|
|
2517
|
-
// fall back to the process's last bound thread id so a late child event
|
|
2518
|
-
// in that window is still routed instead of failing correlation; events
|
|
2519
|
-
// for the last bound thread itself keep today's strict stale handling.
|
|
2736
|
+
// Codex owns subagent/thread lifecycle. Murph only keeps foreign thread
|
|
2737
|
+
// traffic away from the active parent turn: token usage is buffered for
|
|
2738
|
+
// billing, server requests are denied, and other child events are dropped.
|
|
2739
|
+
// Before a fresh thread/start response produces this turn's thread id, the
|
|
2740
|
+
// previous bound thread id is enough to distinguish late child traffic.
|
|
2520
2741
|
const messageThreadId = extractCodexThreadIdFromMessage(message);
|
|
2521
|
-
const knownParentThreadId = codexThreadId ?? codexProcess.lastBoundThreadId;
|
|
2742
|
+
const knownParentThreadId = codexThreadId ?? requestedResumeThreadId ?? codexProcess.lastBoundThreadId;
|
|
2522
2743
|
if (messageThreadId !== null &&
|
|
2523
2744
|
knownParentThreadId !== null &&
|
|
2524
2745
|
messageThreadId !== knownParentThreadId) {
|
|
2525
2746
|
handleSubagentThreadMessage(messageThreadId, message);
|
|
2526
2747
|
return;
|
|
2527
2748
|
}
|
|
2749
|
+
const messageTurnId = extractCodexTurnIdFromMessage(message);
|
|
2750
|
+
const method = readCodexEventMethod(message);
|
|
2528
2751
|
const requestId = readCodexRpcServerRequestId(message);
|
|
2529
|
-
if (
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
}
|
|
2752
|
+
if (messageTurnId !== null) {
|
|
2753
|
+
if (turnId === null) {
|
|
2754
|
+
// A reused warm process adopts the turn id only from turn/started (or
|
|
2755
|
+
// the turn/start response); a fresh process cannot carry stale turns,
|
|
2756
|
+
// so any tagged message may bind it.
|
|
2757
|
+
if (isCodexTurnStartedMethod(method) || !isReusedWarmProcess) {
|
|
2758
|
+
turnId = messageTurnId;
|
|
2759
|
+
}
|
|
2760
|
+
else {
|
|
2761
|
+
if (requestId !== null) {
|
|
2762
|
+
rejectPreStartParentTurnRequest(requestId);
|
|
2763
|
+
}
|
|
2764
|
+
return;
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
else if (messageTurnId !== turnId) {
|
|
2768
|
+
handleStaleParentTurnMessage(message);
|
|
2537
2769
|
return;
|
|
2538
2770
|
}
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2771
|
+
}
|
|
2772
|
+
if (requestId !== null) {
|
|
2773
|
+
if (isReusedWarmProcess && messageTurnId === null) {
|
|
2774
|
+
rejectUnscopedParentTurnRequest(requestId);
|
|
2542
2775
|
return;
|
|
2543
2776
|
}
|
|
2544
2777
|
handleAcceptedServerRequest(message, requestId);
|
|
2545
2778
|
return;
|
|
2546
2779
|
}
|
|
2547
|
-
|
|
2548
|
-
if (shouldBufferPreStartWarmMessage(message, method)) {
|
|
2549
|
-
pendingPreStartMessages.push({
|
|
2550
|
-
kind: 'event',
|
|
2551
|
-
message,
|
|
2552
|
-
method,
|
|
2553
|
-
});
|
|
2554
|
-
return;
|
|
2555
|
-
}
|
|
2556
|
-
const correlationError = validateWarmTurnEventCorrelation(message, method);
|
|
2557
|
-
if (correlationError) {
|
|
2558
|
-
rejectOnce(correlationError);
|
|
2780
|
+
if (isReusedWarmProcess && messageTurnId === null) {
|
|
2559
2781
|
return;
|
|
2560
2782
|
}
|
|
2561
2783
|
handleAcceptedEvent(message, method);
|
|
2562
|
-
}
|
|
2784
|
+
}
|
|
2563
2785
|
const emitActionDiagnosticsTrace = () => {
|
|
2564
2786
|
if (actionDiagnosticsTraceEmitted ||
|
|
2565
2787
|
!input.onTraceEvent ||
|
|
@@ -2637,7 +2859,7 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2637
2859
|
return;
|
|
2638
2860
|
}
|
|
2639
2861
|
rejectOnce(buildCodexProcessExitError({
|
|
2640
|
-
|
|
2862
|
+
abortOwnsTermination: false,
|
|
2641
2863
|
code,
|
|
2642
2864
|
diagnostics: buildProcessExitDiagnostics(),
|
|
2643
2865
|
errorInfo: lastEventErrorInfo,
|
|
@@ -2689,7 +2911,7 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2689
2911
|
lifecycleStage = 'initialized';
|
|
2690
2912
|
emitAppServerTimingTrace('warm-reused');
|
|
2691
2913
|
}
|
|
2692
|
-
const resumeThreadId =
|
|
2914
|
+
const resumeThreadId = requestedResumeThreadId;
|
|
2693
2915
|
const threadTimingStage = resumeThreadId ? 'thread-resumed' : 'thread-started';
|
|
2694
2916
|
lifecycleStage = resumeThreadId ? 'thread_resume' : 'thread_start';
|
|
2695
2917
|
const threadResult = await withCodexRpcTimeout(resumeThreadId
|
|
@@ -2705,6 +2927,12 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2705
2927
|
threadResult,
|
|
2706
2928
|
});
|
|
2707
2929
|
}
|
|
2930
|
+
else if (normalizeNullableString(input.permissions)) {
|
|
2931
|
+
assertCodexThreadStartPermissionAttestation({
|
|
2932
|
+
input,
|
|
2933
|
+
threadResult,
|
|
2934
|
+
});
|
|
2935
|
+
}
|
|
2708
2936
|
codexThreadId = extractCodexThreadIdFromResult(threadResult) ?? codexThreadId;
|
|
2709
2937
|
codexProcess.noteBoundThreadId(codexThreadId);
|
|
2710
2938
|
rolloutRelativePath = resolveCodexRolloutRelativePath({
|
|
@@ -2718,16 +2946,22 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2718
2946
|
throw new VaultCliError('ASSISTANT_CODEX_APP_SERVER_FAILED', 'Codex app-server did not return a thread id.');
|
|
2719
2947
|
}
|
|
2720
2948
|
lifecycleStage = 'turn_start';
|
|
2949
|
+
codexProcess.noteBoundThreadModel(input.model ?? null);
|
|
2721
2950
|
codexProcess.noteBoundThreadServiceTier(input.serviceTier ?? null);
|
|
2722
|
-
const
|
|
2951
|
+
const turnStartRequest = sendRequest('turn/start', buildCodexTurnStartParams({
|
|
2723
2952
|
input,
|
|
2724
2953
|
imagePaths: input.imagePaths,
|
|
2725
2954
|
codexThreadId,
|
|
2726
|
-
}))
|
|
2727
|
-
|
|
2955
|
+
}));
|
|
2956
|
+
// The child can begin executing (including side-effecting commands) as
|
|
2957
|
+
// soon as the turn/start request is written, so the provider-start
|
|
2958
|
+
// barrier arms here rather than at the acknowledgement. A death between
|
|
2959
|
+
// write and response must never be classified as pre-provider work.
|
|
2960
|
+
notifyProviderRequestStarted();
|
|
2961
|
+
const turnResult = await withCodexRpcTimeout(turnStartRequest, CODEX_RPC_DEFAULT_TIMEOUT_MS, 'turn/start');
|
|
2962
|
+
acceptTurnStartResultTurnId(extractCodexTurnIdFromResult(turnResult));
|
|
2728
2963
|
lifecycleStage = 'turn_started';
|
|
2729
2964
|
emitAppServerTimingTrace('turn-started');
|
|
2730
|
-
notifyProviderRequestStarted();
|
|
2731
2965
|
registerLiveTurn();
|
|
2732
2966
|
lifecycleStage = 'turn_running';
|
|
2733
2967
|
await turnCompleted;
|
|
@@ -2738,33 +2972,81 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2738
2972
|
lifecycleStage = 'turn_completed';
|
|
2739
2973
|
emitAppServerTimingTrace('turn-completed');
|
|
2740
2974
|
closeLiveTurn();
|
|
2975
|
+
if (stdinFailure) {
|
|
2976
|
+
throw stdinFailure;
|
|
2977
|
+
}
|
|
2978
|
+
await settleNoReplyFinalActions();
|
|
2741
2979
|
if (abortRequested || terminationSignalSent) {
|
|
2742
2980
|
normalShutdown = true;
|
|
2743
2981
|
lifecycleStage = 'abort_cleanup';
|
|
2744
2982
|
await codexProcess.poison('turn-completed-after-abort');
|
|
2745
2983
|
lifecycleStage = 'shutdown_complete';
|
|
2746
|
-
emitAppServerTimingTrace('
|
|
2984
|
+
emitAppServerTimingTrace(input.processLifetime === 'one-shot'
|
|
2985
|
+
? 'one-shot-abort-stopped'
|
|
2986
|
+
: 'warm-abort-poisoned');
|
|
2747
2987
|
}
|
|
2748
2988
|
else {
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2989
|
+
if (input.processLifetime !== 'one-shot' &&
|
|
2990
|
+
codexThreadId &&
|
|
2991
|
+
normalizeNullableString(input.env[HOSTED_CLI_BRIDGE_TOKEN_ENV])) {
|
|
2992
|
+
lifecycleStage = 'background_terminal_cleanup';
|
|
2993
|
+
const cleanup = codexProcess.beginHostedBackgroundTerminalCleanup({
|
|
2994
|
+
binding: activeTurnBinding,
|
|
2995
|
+
threadId: codexThreadId,
|
|
2996
|
+
});
|
|
2997
|
+
trackHostedCodexPostTurnCleanup(cleanup);
|
|
2998
|
+
void cleanup.then(() => {
|
|
2999
|
+
emitAppServerTimingTrace(codexProcess.isReusableFor(input.launchKey)
|
|
3000
|
+
? 'background-terminals-cleaned'
|
|
3001
|
+
: 'warm-background-terminal-cleanup-failed');
|
|
3002
|
+
});
|
|
3003
|
+
}
|
|
3004
|
+
if (!normalShutdown && !codexProcess.pendingPostTurnCleanup) {
|
|
3005
|
+
lifecycleStage = 'idle';
|
|
3006
|
+
codexProcess.releaseTurn(activeTurnBinding);
|
|
3007
|
+
emitAppServerTimingTrace(input.processLifetime === 'one-shot'
|
|
3008
|
+
? 'one-shot-complete'
|
|
3009
|
+
: 'warm-idle');
|
|
3010
|
+
}
|
|
2755
3011
|
}
|
|
2756
3012
|
}
|
|
2757
3013
|
catch (error) {
|
|
3014
|
+
const recordedEndReason = codexProcess.recordedEndReason;
|
|
3015
|
+
const preserveInterruptCleanupTimeout = error instanceof VaultCliError &&
|
|
3016
|
+
error.code === 'ASSISTANT_CODEX_APP_SERVER_INTERRUPT_TIMEOUT' &&
|
|
3017
|
+
recordedEndReason !== 'previous-process-exit';
|
|
3018
|
+
const preserveMissingCodexStartupFailure = error instanceof VaultCliError &&
|
|
3019
|
+
error.code === 'ASSISTANT_CODEX_NOT_FOUND';
|
|
3020
|
+
const failureMatchesRecordedOwner = error instanceof VaultCliError &&
|
|
3021
|
+
((recordedEndReason === 'previous-process-exit' &&
|
|
3022
|
+
error.context?.codexFailureStage === 'process_exit') ||
|
|
3023
|
+
(recordedEndReason === 'previous-turn-abort' &&
|
|
3024
|
+
error.code === 'ASSISTANT_CODEX_INTERRUPTED'));
|
|
3025
|
+
const shouldApplyRecordedOwner = !preserveInterruptCleanupTimeout &&
|
|
3026
|
+
!preserveMissingCodexStartupFailure &&
|
|
3027
|
+
!failureMatchesRecordedOwner &&
|
|
3028
|
+
(recordedEndReason === 'previous-turn-abort' ||
|
|
3029
|
+
(recordedEndReason === 'previous-process-exit' &&
|
|
3030
|
+
providerRequestStartedNotified));
|
|
3031
|
+
let turnFailure = shouldApplyRecordedOwner
|
|
3032
|
+
? (buildRecordedTerminationError(lastEventError) ?? error)
|
|
3033
|
+
: error;
|
|
2758
3034
|
emitActionDiagnosticsTrace();
|
|
2759
3035
|
dynamicToolAbortController.abort();
|
|
2760
3036
|
await drainPendingDynamicToolExecutions();
|
|
2761
3037
|
await drainPendingProgressDeliveries();
|
|
2762
|
-
|
|
3038
|
+
try {
|
|
3039
|
+
await settleNoReplyFinalActions();
|
|
3040
|
+
}
|
|
3041
|
+
catch (settlementError) {
|
|
3042
|
+
turnFailure = settlementError;
|
|
3043
|
+
}
|
|
3044
|
+
annotateTurnFailureContext(turnFailure);
|
|
2763
3045
|
closeLiveTurn();
|
|
2764
3046
|
normalShutdown = true;
|
|
2765
3047
|
lifecycleStage = 'error_cleanup';
|
|
2766
|
-
await codexProcess.poison('turn-failure').catch(() => undefined);
|
|
2767
|
-
throw
|
|
3048
|
+
await codexProcess.poison(abortRequested ? 'turn-completed-after-abort' : 'turn-failure').catch(() => undefined);
|
|
3049
|
+
throw turnFailure;
|
|
2768
3050
|
}
|
|
2769
3051
|
finally {
|
|
2770
3052
|
closeLiveTurn();
|
|
@@ -2777,39 +3059,48 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2777
3059
|
const extractedFinalMessage = extractAssistantMessageFallback({
|
|
2778
3060
|
assistantStreams,
|
|
2779
3061
|
assistantStreamOrder,
|
|
2780
|
-
}) ??
|
|
2781
|
-
lastAgentMessage ??
|
|
2782
|
-
'';
|
|
3062
|
+
}) ?? '';
|
|
2783
3063
|
const latestDeliveryContextOrdinal = Math.max(0, completedUserMessageOrdinal);
|
|
2784
3064
|
const latestFinalActionPatch = resolveFinalActionPatch(latestDeliveryContextOrdinal);
|
|
3065
|
+
let finalTrailingSteerCandidate = readTrailingSteerCandidate();
|
|
3066
|
+
const trailingSteerCandidateDeliveryContextOrdinal = finalTrailingSteerCandidate?.deliveryContextOrdinal ?? null;
|
|
2785
3067
|
const trailingSteerCandidateFinalActionPatch = trailingSteerCandidateDeliveryContextOrdinal !== null
|
|
2786
3068
|
? resolveFinalActionPatch(trailingSteerCandidateDeliveryContextOrdinal)
|
|
2787
3069
|
: null;
|
|
2788
3070
|
const suppressTrailingSteerCandidateForEarlierNoReply = latestFinalActionPatch === null &&
|
|
2789
|
-
|
|
3071
|
+
finalTrailingSteerCandidate !== null &&
|
|
2790
3072
|
trailingSteerCandidateFinalActionPatch?.kind === 'none';
|
|
2791
|
-
const
|
|
2792
|
-
|
|
2793
|
-
|
|
3073
|
+
const shouldPromoteTrailingSteerCandidate = finalTrailingSteerCandidate !== null &&
|
|
3074
|
+
(latestFinalActionPatch?.kind === 'none' ||
|
|
3075
|
+
(!suppressTrailingSteerCandidateForEarlierNoReply &&
|
|
3076
|
+
(normalizeNullableString(extractedFinalMessage) !== null ||
|
|
3077
|
+
responseMedia.length > 0)));
|
|
3078
|
+
if (shouldPromoteTrailingSteerCandidate) {
|
|
3079
|
+
promoteTrailingSteerCandidate();
|
|
3080
|
+
finalTrailingSteerCandidate = null;
|
|
3081
|
+
}
|
|
3082
|
+
const selectedFinalMessage = finalTrailingSteerCandidate?.response ?? extractedFinalMessage;
|
|
2794
3083
|
const finalResponseMedia = latestFinalActionPatch?.kind === 'none'
|
|
2795
3084
|
? responseMedia
|
|
2796
3085
|
: suppressTrailingSteerCandidateForEarlierNoReply
|
|
2797
3086
|
? responseMedia
|
|
2798
|
-
:
|
|
3087
|
+
: finalTrailingSteerCandidate?.media ?? responseMedia;
|
|
2799
3088
|
const finalDeliveryContextOrdinal = latestFinalActionPatch?.kind === 'none'
|
|
2800
3089
|
? latestDeliveryContextOrdinal
|
|
2801
3090
|
: suppressTrailingSteerCandidateForEarlierNoReply
|
|
2802
3091
|
? latestDeliveryContextOrdinal
|
|
2803
|
-
:
|
|
3092
|
+
: finalTrailingSteerCandidate?.deliveryContextOrdinal ??
|
|
2804
3093
|
latestDeliveryContextOrdinal;
|
|
2805
3094
|
const finalActionPatch = resolveFinalActionPatch(finalDeliveryContextOrdinal);
|
|
2806
|
-
const
|
|
3095
|
+
const requiredUserVisibleOutput = hasRequiredUserVisibleOutput();
|
|
3096
|
+
const noReplySelected = finalActionPatch?.kind === 'none' && !requiredUserVisibleOutput;
|
|
2807
3097
|
const finalAction = noReplySelected
|
|
2808
3098
|
? { kind: 'none' }
|
|
2809
3099
|
: null;
|
|
2810
|
-
const
|
|
3100
|
+
const modelFinalMessage = noReplySelected || suppressTrailingSteerCandidateForEarlierNoReply
|
|
2811
3101
|
? ''
|
|
2812
|
-
:
|
|
3102
|
+
: selectedFinalMessage;
|
|
3103
|
+
const finalMessage = appendRequiredVaultFileApprovalUrls(modelFinalMessage, requiredVaultFileApprovalUrls);
|
|
2813
3104
|
if (noReplySelected &&
|
|
2814
3105
|
normalizeNullableString(extractedFinalMessage) !== null) {
|
|
2815
3106
|
emitCodexSuppressedFinalMessageTrace({
|
|
@@ -2819,31 +3110,27 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2819
3110
|
suppressedTextLength: extractedFinalMessage.length,
|
|
2820
3111
|
});
|
|
2821
3112
|
}
|
|
2822
|
-
const filteredPrecedingAgentMessageSegments =
|
|
3113
|
+
const filteredPrecedingAgentMessageSegments = precedingAgentMessageSegments
|
|
2823
3114
|
.filter((segment) => !shouldSuppressDeliveryContext(segment.deliveryContextOrdinal));
|
|
2824
|
-
const codexThreadHistoryUnsafe = finalActionPatches.some((entry) => entry.patch.kind === 'none') ||
|
|
2825
|
-
suppressTrailingSteerCandidateForEarlierNoReply ||
|
|
2826
|
-
filteredPrecedingAgentMessageSegments.length !==
|
|
2827
|
-
finalPrecedingAgentMessageSegments.length;
|
|
2828
3115
|
const finalHasDeliverableOutput = normalizeNullableString(finalMessage) !== null ||
|
|
2829
3116
|
(!noReplySelected && finalResponseMedia.length > 0);
|
|
2830
3117
|
return {
|
|
2831
|
-
acceptedNoReplyDeliveryContextOrdinals:
|
|
2832
|
-
codexThreadHistoryUnsafe,
|
|
3118
|
+
acceptedNoReplyDeliveryContextOrdinals: acceptedNoReplyDeliveryContextOrdinals,
|
|
2833
3119
|
finalAction,
|
|
2834
|
-
finalActionExplicit: finalActionPatch !== null,
|
|
3120
|
+
finalActionExplicit: finalActionPatch !== null && !requiredUserVisibleOutput,
|
|
2835
3121
|
finalMessage,
|
|
3122
|
+
transcriptMessage: normalizeNullableString(modelFinalMessage) ??
|
|
3123
|
+
(finalResponseMedia.length > 0 ? '' : null),
|
|
2836
3124
|
reactions: reactionPatches.map((entry) => ({
|
|
2837
3125
|
deliveryContextOrdinal: entry.deliveryContextOrdinal,
|
|
2838
3126
|
reaction: entry.patch.reaction,
|
|
2839
3127
|
})),
|
|
2840
3128
|
precedingAgentMessageSegments: filteredPrecedingAgentMessageSegments.map((segment) => ({
|
|
2841
|
-
|
|
2842
|
-
? { deliveryContextOrdinal: segment.deliveryContextOrdinal }
|
|
2843
|
-
: {}),
|
|
3129
|
+
deliveryContextOrdinal: segment.deliveryContextOrdinal,
|
|
2844
3130
|
response: segment.response,
|
|
2845
3131
|
media: [...segment.media],
|
|
2846
3132
|
})),
|
|
3133
|
+
responseDeliveryContextOrdinal: finalDeliveryContextOrdinal,
|
|
2847
3134
|
additionalUsages: [...additionalUsages, ...buildSubagentUsageDrafts()],
|
|
2848
3135
|
responseMedia: finalHasDeliverableOutput ? [...finalResponseMedia] : [],
|
|
2849
3136
|
jsonEvents,
|
|
@@ -2857,6 +3144,45 @@ async function runCodexAppServerTurnOnProcess(codexProcess, input) {
|
|
|
2857
3144
|
turnId,
|
|
2858
3145
|
};
|
|
2859
3146
|
}
|
|
3147
|
+
function assertCodexThreadStartPermissionAttestation(input) {
|
|
3148
|
+
const result = asCodexRecord(input.threadResult);
|
|
3149
|
+
const activePermissionProfile = asCodexRecord(result?.activePermissionProfile);
|
|
3150
|
+
const actualCwd = normalizeNullableString(asCodexString(result?.cwd));
|
|
3151
|
+
const actualRoots = asCodexStringArray(result?.runtimeWorkspaceRoots);
|
|
3152
|
+
const instructionSources = Array.isArray(result?.instructionSources)
|
|
3153
|
+
? result.instructionSources
|
|
3154
|
+
: null;
|
|
3155
|
+
const expectedRoots = input.input.runtimeWorkspaceRoots ?? [];
|
|
3156
|
+
const mismatchedFields = [];
|
|
3157
|
+
const permissionProfileMismatch = normalizeNullableString(asCodexString(activePermissionProfile?.id)) !==
|
|
3158
|
+
normalizeNullableString(input.input.permissions) ||
|
|
3159
|
+
normalizeNullableString(asCodexString(activePermissionProfile?.extends)) !== null;
|
|
3160
|
+
if (permissionProfileMismatch) {
|
|
3161
|
+
mismatchedFields.push('activePermissionProfile');
|
|
3162
|
+
}
|
|
3163
|
+
if (!actualRoots ||
|
|
3164
|
+
actualRoots.length !== expectedRoots.length ||
|
|
3165
|
+
actualRoots.some((root, index) => path.resolve(root) !== path.resolve(expectedRoots[index] ?? ''))) {
|
|
3166
|
+
mismatchedFields.push('runtimeWorkspaceRoots');
|
|
3167
|
+
}
|
|
3168
|
+
if (!actualCwd || path.resolve(actualCwd) !== input.input.workingDirectory) {
|
|
3169
|
+
mismatchedFields.push('cwd');
|
|
3170
|
+
}
|
|
3171
|
+
if (instructionSources === null || instructionSources.length !== 0) {
|
|
3172
|
+
mismatchedFields.push('instructionSources');
|
|
3173
|
+
}
|
|
3174
|
+
if (asCodexString(result?.approvalPolicy) !==
|
|
3175
|
+
mapCodexAppServerApprovalPolicy(input.input.approvalPolicy)) {
|
|
3176
|
+
mismatchedFields.push('approvalPolicy');
|
|
3177
|
+
}
|
|
3178
|
+
if (mismatchedFields.length === 0) {
|
|
3179
|
+
return;
|
|
3180
|
+
}
|
|
3181
|
+
throw new VaultCliError('ASSISTANT_CODEX_APP_SERVER_PERMISSION_ATTESTATION_FAILED', 'Codex app-server did not attest the requested read-only execution context.', {
|
|
3182
|
+
mismatchedFields,
|
|
3183
|
+
retryable: false,
|
|
3184
|
+
});
|
|
3185
|
+
}
|
|
2860
3186
|
function emitCodexSuppressedFinalMessageTrace(input) {
|
|
2861
3187
|
if (!input.onTraceEvent) {
|
|
2862
3188
|
return;
|
|
@@ -2882,7 +3208,10 @@ function notifyCodexAppServerProviderRequestStartedBestEffort(input) {
|
|
|
2882
3208
|
return;
|
|
2883
3209
|
}
|
|
2884
3210
|
try {
|
|
2885
|
-
void Promise.resolve(input.hook({
|
|
3211
|
+
void Promise.resolve(input.hook({
|
|
3212
|
+
...(input.timing ?? {}),
|
|
3213
|
+
startedAt: input.startedAt,
|
|
3214
|
+
})).catch(() => {
|
|
2886
3215
|
// Provider-start hooks are diagnostic-only and must not block turns.
|
|
2887
3216
|
});
|
|
2888
3217
|
}
|
|
@@ -2892,6 +3221,7 @@ function notifyCodexAppServerProviderRequestStartedBestEffort(input) {
|
|
|
2892
3221
|
}
|
|
2893
3222
|
function isInvalidDynamicToolRequest(request) {
|
|
2894
3223
|
return (request.kind === 'invalid-generate-image-arguments' ||
|
|
3224
|
+
request.kind === 'invalid-assistant-style-arguments' ||
|
|
2895
3225
|
request.kind === 'invalid-computer-arguments' ||
|
|
2896
3226
|
request.kind === 'invalid-generate-voice-memo-arguments' ||
|
|
2897
3227
|
request.kind === 'invalid-finish-without-reply-arguments' ||
|
|
@@ -2905,6 +3235,9 @@ function isSerializedDynamicToolRequest(request) {
|
|
|
2905
3235
|
request.kind === 'generate-voice-memo' ||
|
|
2906
3236
|
request.kind === 'generate-song' ||
|
|
2907
3237
|
request.kind === 'attach-response-media' ||
|
|
3238
|
+
request.kind === 'assistant-configuration' ||
|
|
3239
|
+
request.kind === 'assistant-style' ||
|
|
3240
|
+
request.kind === 'personalization' ||
|
|
2908
3241
|
request.kind === 'submit-product-feedback' ||
|
|
2909
3242
|
isComputerDynamicToolRequest(request);
|
|
2910
3243
|
}
|
|
@@ -2977,7 +3310,9 @@ function resolveCodexRolloutRelativePath(input) {
|
|
|
2977
3310
|
// remain attached (codex-rs `thread_processor.rs` `resume_running_thread`).
|
|
2978
3311
|
// The thread/resume response echoes the effective execution context, so this
|
|
2979
3312
|
// echo check is the only client-visible stale-rejoin signal before turn/start.
|
|
2980
|
-
// Fields with no requested value are skipped; requested
|
|
3313
|
+
// Fields with no requested value are skipped; requested immutable execution
|
|
3314
|
+
// fields must echo back. Model is intentionally excluded because turn/start
|
|
3315
|
+
// applies its sticky model override atomically with the next user input.
|
|
2981
3316
|
function assertCodexResumeContextMatches(input) {
|
|
2982
3317
|
const result = asCodexRecord(input.threadResult);
|
|
2983
3318
|
const actualCwd = normalizeNullableString(asCodexString(result?.cwd));
|
|
@@ -2993,11 +3328,6 @@ function assertCodexResumeContextMatches(input) {
|
|
|
2993
3328
|
asCodexString(result?.approvalPolicy),
|
|
2994
3329
|
],
|
|
2995
3330
|
['cwd', input.input.workingDirectory, actualCwd ? path.resolve(actualCwd) : null],
|
|
2996
|
-
[
|
|
2997
|
-
'model',
|
|
2998
|
-
normalizeNullableString(input.input.model),
|
|
2999
|
-
normalizeNullableString(asCodexString(result?.model)),
|
|
3000
|
-
],
|
|
3001
3331
|
[
|
|
3002
3332
|
'modelProvider',
|
|
3003
3333
|
normalizeNullableString(input.input.modelProvider),
|
|
@@ -3045,6 +3375,11 @@ function asCodexRecord(value) {
|
|
|
3045
3375
|
function asCodexString(value) {
|
|
3046
3376
|
return typeof value === 'string' ? value : null;
|
|
3047
3377
|
}
|
|
3378
|
+
function asCodexStringArray(value) {
|
|
3379
|
+
return Array.isArray(value) && value.every((entry) => typeof entry === 'string')
|
|
3380
|
+
? value
|
|
3381
|
+
: null;
|
|
3382
|
+
}
|
|
3048
3383
|
const codexRolloutRelativePathPattern = /^sessions\/(\d{4})\/(\d{2})\/(\d{2})\/rollout-(\d{4})-(\d{2})-(\d{2})T[^/]+-([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\.jsonl$/u;
|
|
3049
3384
|
function normalizeCodexRolloutRelativePath(value, codexThreadId) {
|
|
3050
3385
|
if (value.length === 0 ||
|