@abot-ai/runtime 1.0.0 → 1.1.0
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/README.md +17 -3
- package/dist/scripts/add-runtime-model.js +4 -0
- package/dist/scripts/configure-long-term-memory.d.ts +6 -0
- package/dist/scripts/configure-long-term-memory.js +139 -0
- package/dist/scripts/init-runtime.js +11 -1
- package/dist/scripts/runtime-setup-files.d.ts +1 -0
- package/dist/scripts/runtime-setup-files.js +4 -0
- package/dist/src/capabilities/normal-invocation/contracts.d.ts +1 -0
- package/dist/src/capabilities/normal-invocation/validator.d.ts +5 -0
- package/dist/src/capabilities/normal-invocation/validator.js +35 -2
- package/dist/src/capabilities/tool-definition-validator/definition-fields.d.ts +7 -0
- package/dist/src/capabilities/tool-definition-validator/definition-fields.js +156 -0
- package/dist/src/capabilities/tool-definition-validator/definition-parser.d.ts +2 -0
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +76 -0
- package/dist/src/capabilities/tool-definition-validator/definition-shape.d.ts +7 -0
- package/dist/src/capabilities/tool-definition-validator/definition-shape.js +34 -0
- package/dist/src/capabilities/tool-definition-validator/event-presentation.d.ts +2 -0
- package/dist/src/capabilities/tool-definition-validator/event-presentation.js +97 -0
- package/dist/src/capabilities/tool-definition-validator/module-registry.d.ts +3 -0
- package/dist/src/capabilities/tool-definition-validator/module-registry.js +99 -0
- package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.d.ts +2 -0
- package/dist/src/capabilities/tool-definition-validator/payload-channel-spec.js +190 -0
- package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.d.ts +11 -0
- package/dist/src/capabilities/tool-definition-validator/payload-channel-stage.js +155 -0
- package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.d.ts +24 -0
- package/dist/src/capabilities/tool-definition-validator/payload-stage-conditions.js +193 -0
- package/dist/src/capabilities/tool-definition-validator.d.ts +2 -4
- package/dist/src/capabilities/tool-definition-validator.js +2 -776
- package/dist/src/cli/abot.js +11 -2
- package/dist/src/model-gateway/client/embeddings.d.ts +3 -0
- package/dist/src/model-gateway/client/embeddings.js +48 -0
- package/dist/src/model-gateway/client.d.ts +3 -1
- package/dist/src/model-gateway/client.js +5 -0
- package/dist/src/model-gateway/embeddings/constants.d.ts +1 -0
- package/dist/src/model-gateway/embeddings/constants.js +1 -0
- package/dist/src/model-gateway/embeddings/discovery.d.ts +10 -0
- package/dist/src/model-gateway/embeddings/discovery.js +39 -0
- package/dist/src/model-gateway/embeddings/execution.d.ts +16 -0
- package/dist/src/model-gateway/embeddings/execution.js +64 -0
- package/dist/src/model-gateway/embeddings/fingerprint.d.ts +3 -0
- package/dist/src/model-gateway/embeddings/fingerprint.js +36 -0
- package/dist/src/model-gateway/embeddings/profile.d.ts +11 -0
- package/dist/src/model-gateway/embeddings/profile.js +37 -0
- package/dist/src/model-gateway/embeddings/server-handler.d.ts +3 -0
- package/dist/src/model-gateway/embeddings/server-handler.js +89 -0
- package/dist/src/model-gateway/embeddings/validation.d.ts +7 -0
- package/dist/src/model-gateway/embeddings/validation.js +69 -0
- package/dist/src/model-gateway/index.d.ts +5 -3
- package/dist/src/model-gateway/index.js +3 -1
- package/dist/src/model-gateway/providers/contracts.d.ts +27 -1
- package/dist/src/model-gateway/providers/ollama/adapter.js +4 -0
- package/dist/src/model-gateway/providers/ollama/base-url.d.ts +1 -0
- package/dist/src/model-gateway/providers/ollama/base-url.js +4 -0
- package/dist/src/model-gateway/providers/ollama/embedding-models.d.ts +2 -0
- package/dist/src/model-gateway/providers/ollama/embedding-models.js +31 -0
- package/dist/src/model-gateway/providers/ollama/embeddings.d.ts +2 -0
- package/dist/src/model-gateway/providers/ollama/embeddings.js +43 -0
- package/dist/src/model-gateway/providers/ollama/request-diagnostics.js +2 -1
- package/dist/src/model-gateway/providers/openai/adapter.js +2 -0
- package/dist/src/model-gateway/providers/openai/embeddings.d.ts +2 -0
- package/dist/src/model-gateway/providers/openai/embeddings.js +87 -0
- package/dist/src/model-gateway/providers/openai/payload.js +5 -8
- package/dist/src/model-gateway/server/contracts.d.ts +5 -3
- package/dist/src/model-gateway/server/create-server.js +9 -0
- package/dist/src/model-gateway/server/errors.js +34 -0
- package/dist/src/model-gateway/server/index.d.ts +2 -0
- package/dist/src/model-gateway/server/index.js +2 -0
- package/dist/src/model-gateway/server/provider-fetch.d.ts +5 -3
- package/dist/src/model-gateway/server/provider-fetch.js +3 -1
- package/dist/src/model-gateway/server/request-body.d.ts +1 -1
- package/dist/src/model-gateway/types.d.ts +39 -0
- package/dist/src/plugin-contract/manifest.d.ts +1 -0
- package/dist/src/runtime/adapters/index.d.ts +4 -0
- package/dist/src/runtime/adapters/index.js +4 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +77 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.d.ts +4 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/cleanup.js +52 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +31 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.js +17 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +36 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +114 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +103 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock.js +10 -0
- package/dist/src/runtime/adapters/long-term-memory/file-repository.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-repository.js +57 -0
- package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/in-memory-repository.js +21 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.d.ts +5 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +60 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-service.d.ts +8 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +34 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.d.ts +7 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +54 -25
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +18 -4
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.d.ts +6 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +25 -12
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +22 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +65 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +44 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations.d.ts +1 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +14 -4
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +218 -87
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.d.ts +7 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/failure-outcome-fingerprint.js +84 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +5 -4
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +7 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.d.ts +35 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +32 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +3 -3
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +13 -8
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +5 -4
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +4 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.js +12 -4
- package/dist/src/runtime/composition.d.ts +3 -0
- package/dist/src/runtime/composition.js +5 -2
- package/dist/src/runtime/config/builders.js +34 -1
- package/dist/src/runtime/config/effective-model-config-validation.js +9 -0
- package/dist/src/runtime/config/embedding-profiles.d.ts +5 -0
- package/dist/src/runtime/config/embedding-profiles.js +66 -0
- package/dist/src/runtime/config/fields.js +22 -0
- package/dist/src/runtime/config/long-term-memory.d.ts +9 -0
- package/dist/src/runtime/config/long-term-memory.js +71 -0
- package/dist/src/runtime/config/runner/config-normalization.d.ts +16 -0
- package/dist/src/runtime/config/runner/config-normalization.js +109 -0
- package/dist/src/runtime/config/runner/loader.d.ts +1 -1
- package/dist/src/runtime/config/runner/loader.js +2 -69
- package/dist/src/runtime/config/runner/model-policy.js +3 -0
- package/dist/src/runtime/config/runner/schema-version.d.ts +14 -0
- package/dist/src/runtime/config/runner/schema-version.js +35 -0
- package/dist/src/runtime/config/runner/versioned-config.d.ts +2 -0
- package/dist/src/runtime/config/runner/versioned-config.js +51 -0
- package/dist/src/runtime/config/schema.js +36 -0
- package/dist/src/runtime/config/types.d.ts +1 -0
- package/dist/src/runtime/config/validation/environment-config-validation.d.ts +1 -0
- package/dist/src/runtime/config/validation/environment-config-validation.js +41 -0
- package/dist/src/runtime/config/validation/model-invocation-config-validation.d.ts +2 -0
- package/dist/src/runtime/config/validation/model-invocation-config-validation.js +64 -0
- package/dist/src/runtime/config/validation/model-invocation-override-validation.d.ts +2 -0
- package/dist/src/runtime/config/validation/model-invocation-override-validation.js +72 -0
- package/dist/src/runtime/config/validation/model-profile-validation.d.ts +4 -0
- package/dist/src/runtime/config/validation/model-profile-validation.js +87 -0
- package/dist/src/runtime/config/validation/model-registry-validation.d.ts +2 -0
- package/dist/src/runtime/config/validation/model-registry-validation.js +118 -0
- package/dist/src/runtime/config/validation/path-config-validation.d.ts +1 -0
- package/dist/src/runtime/config/validation/path-config-validation.js +7 -0
- package/dist/src/runtime/config/validation/runtime-config-field-validation.d.ts +12 -0
- package/dist/src/runtime/config/validation/runtime-config-field-validation.js +158 -0
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +9 -0
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +13 -0
- package/dist/src/runtime/config/validation/runtime-root-section-validation.d.ts +6 -0
- package/dist/src/runtime/config/validation/runtime-root-section-validation.js +82 -0
- package/dist/src/runtime/config/validation/web-ui-config-validation.d.ts +3 -0
- package/dist/src/runtime/config/validation/web-ui-config-validation.js +26 -0
- package/dist/src/runtime/config/validation.d.ts +4 -15
- package/dist/src/runtime/config/validation.js +27 -499
- package/dist/src/runtime/config.js +3 -0
- package/dist/src/runtime/context/accepted-capability-action.d.ts +11 -0
- package/dist/src/runtime/context/accepted-capability-action.js +29 -0
- package/dist/src/runtime/context/model-step-compaction.js +6 -0
- package/dist/src/runtime/context/operation-supervision-evidence.d.ts +37 -0
- package/dist/src/runtime/context/operation-supervision-evidence.js +90 -0
- package/dist/src/runtime/context/request-tool-results.d.ts +3 -0
- package/dist/src/runtime/context/request-tool-results.js +11 -2
- package/dist/src/runtime/default-adapters.d.ts +3 -0
- package/dist/src/runtime/default-adapters.js +64 -3
- package/dist/src/runtime/index.d.ts +1 -0
- package/dist/src/runtime/index.js +1 -0
- package/dist/src/runtime/lifecycle/request-finalizer.d.ts +3 -0
- package/dist/src/runtime/lifecycle/request-finalizer.js +8 -0
- package/dist/src/runtime/long-term-memory/background-save-queue.d.ts +17 -0
- package/dist/src/runtime/long-term-memory/background-save-queue.js +66 -0
- package/dist/src/runtime/long-term-memory/candidate-persistence.d.ts +16 -0
- package/dist/src/runtime/long-term-memory/candidate-persistence.js +109 -0
- package/dist/src/runtime/long-term-memory/candidate-preparation.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/candidate-preparation.js +36 -0
- package/dist/src/runtime/long-term-memory/candidate-processing.d.ts +9 -0
- package/dist/src/runtime/long-term-memory/candidate-processing.js +79 -0
- package/dist/src/runtime/long-term-memory/contracts.d.ts +108 -0
- package/dist/src/runtime/long-term-memory/contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/diagnostics.d.ts +9 -0
- package/dist/src/runtime/long-term-memory/diagnostics.js +42 -0
- package/dist/src/runtime/long-term-memory/embedding-batches.d.ts +13 -0
- package/dist/src/runtime/long-term-memory/embedding-batches.js +87 -0
- package/dist/src/runtime/long-term-memory/events.d.ts +13 -0
- package/dist/src/runtime/long-term-memory/events.js +15 -0
- package/dist/src/runtime/long-term-memory/finalization.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/finalization.js +24 -0
- package/dist/src/runtime/long-term-memory/index.d.ts +6 -0
- package/dist/src/runtime/long-term-memory/index.js +6 -0
- package/dist/src/runtime/long-term-memory/management/contracts.d.ts +54 -0
- package/dist/src/runtime/long-term-memory/management/contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/management/errors.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/management/errors.js +13 -0
- package/dist/src/runtime/long-term-memory/management/mutations.d.ts +17 -0
- package/dist/src/runtime/long-term-memory/management/mutations.js +178 -0
- package/dist/src/runtime/long-term-memory/management/queries.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/management/queries.js +46 -0
- package/dist/src/runtime/long-term-memory/management/search.d.ts +7 -0
- package/dist/src/runtime/long-term-memory/management/search.js +18 -0
- package/dist/src/runtime/long-term-memory/management/service.d.ts +13 -0
- package/dist/src/runtime/long-term-memory/management/service.js +61 -0
- package/dist/src/runtime/long-term-memory/management/validation.d.ts +24 -0
- package/dist/src/runtime/long-term-memory/management/validation.js +77 -0
- package/dist/src/runtime/long-term-memory/onboarding/configuration.d.ts +14 -0
- package/dist/src/runtime/long-term-memory/onboarding/configuration.js +92 -0
- package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +52 -0
- package/dist/src/runtime/long-term-memory/onboarding/contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/onboarding/service.d.ts +21 -0
- package/dist/src/runtime/long-term-memory/onboarding/service.js +88 -0
- package/dist/src/runtime/long-term-memory/policies/normalization.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/policies/normalization.js +45 -0
- package/dist/src/runtime/long-term-memory/policies/reconciliation.d.ts +20 -0
- package/dist/src/runtime/long-term-memory/policies/reconciliation.js +21 -0
- package/dist/src/runtime/long-term-memory/policies/scoring.d.ts +13 -0
- package/dist/src/runtime/long-term-memory/policies/scoring.js +55 -0
- package/dist/src/runtime/long-term-memory/policies/sensitive-data.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/policies/sensitive-data.js +12 -0
- package/dist/src/runtime/long-term-memory/projection.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/projection.js +39 -0
- package/dist/src/runtime/long-term-memory/ranked-search.d.ts +11 -0
- package/dist/src/runtime/long-term-memory/ranked-search.js +111 -0
- package/dist/src/runtime/long-term-memory/repository-state.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/repository-state.js +131 -0
- package/dist/src/runtime/long-term-memory/response-context.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/response-context.js +21 -0
- package/dist/src/runtime/long-term-memory/retrieval.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/retrieval.js +73 -0
- package/dist/src/runtime/long-term-memory/service.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/service.js +83 -0
- package/dist/src/runtime/orchestration/capability-adapters/index.d.ts +2 -0
- package/dist/src/runtime/orchestration/capability-adapters/index.js +2 -0
- package/dist/src/runtime/orchestration/final-response/authoring-contract.d.ts +10 -0
- package/dist/src/runtime/orchestration/final-response/authoring-contract.js +94 -0
- package/dist/src/runtime/orchestration/final-response/finalization.d.ts +1 -0
- package/dist/src/runtime/orchestration/final-response/finalization.js +1 -0
- package/dist/src/runtime/orchestration/final-response/format.d.ts +2 -0
- package/dist/src/runtime/orchestration/final-response/format.js +49 -0
- package/dist/src/runtime/orchestration/final-response/invoke.d.ts +16 -0
- package/dist/src/runtime/orchestration/final-response/invoke.js +24 -0
- package/dist/src/runtime/orchestration/role-calls/activation-budget.d.ts +14 -0
- package/dist/src/runtime/orchestration/role-calls/activation-budget.js +52 -0
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +154 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +1 -8
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.d.ts +17 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-issuance.js +155 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.d.ts +78 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision.js +339 -0
- package/dist/src/runtime/orchestration/role-calls/command-decoder.js +35 -10
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.d.ts +6 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/active-capability-caller.js +15 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-frame-state.js +6 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/call-scope-transitions.js +86 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-batch-transitions.js +172 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.d.ts +9 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-state.js +28 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-execution-transitions.js +117 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-invocation.js +16 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-selection-transition.js +114 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.d.ts +6 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/capability-settlement.js +54 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +206 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.d.ts +13 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/operation-supervision-intervention.js +25 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/root-transitions.js +70 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +6 -580
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +45 -5
- package/dist/src/runtime/orchestration/role-calls/contracts.js +2 -2
- package/dist/src/runtime/orchestration/role-calls/diagnostics.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/diagnostics.js +152 -1
- package/dist/src/runtime/orchestration/role-calls/index.d.ts +6 -0
- package/dist/src/runtime/orchestration/role-calls/index.js +6 -0
- package/dist/src/runtime/orchestration/role-calls/ledger.js +131 -7
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.d.ts +11 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.js +66 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.d.ts +16 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-projection.js +52 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-state-validation.js +151 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision.d.ts +112 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision.js +197 -0
- package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.d.ts +26 -0
- package/dist/src/runtime/orchestration/role-calls/reconsideration-cause.js +127 -0
- package/dist/src/runtime/orchestration/role-calls/reducer-primitives.d.ts +1 -2
- package/dist/src/runtime/orchestration/role-calls/reducer-primitives.js +2 -12
- package/dist/src/runtime/orchestration/role-calls/reducer.js +19 -2
- package/dist/src/runtime/orchestration/role-calls/transactions.js +62 -5
- package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.d.ts +15 -0
- package/dist/src/runtime/orchestration/role-executors/activation/capability-continuation.js +73 -0
- package/dist/src/runtime/orchestration/role-executors/activation/loop.d.ts +0 -1
- package/dist/src/runtime/orchestration/role-executors/activation/loop.js +16 -54
- package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +14 -0
- package/dist/src/runtime/orchestration/role-executors/activation/state-validation.d.ts +13 -1
- package/dist/src/runtime/orchestration/role-executors/activation/state-validation.js +137 -1
- package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +7 -3
- package/dist/src/runtime/orchestration/role-executors/diagnostics.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-executors/diagnostics.js +1 -6
- package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.d.ts +10 -0
- package/dist/src/runtime/orchestration/worker-capabilities/batch-selection.js +8 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.d.ts +14 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-catalog.js +76 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.d.ts +10 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.js +160 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/binding-rejection.js +8 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.d.ts +24 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.js +100 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.d.ts +29 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/call-authority.js +193 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.d.ts +11 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +109 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/dependency-results.js +34 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.d.ts +21 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.js +167 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding.d.ts +1 -13
- package/dist/src/runtime/orchestration/worker-capabilities/binding.js +1 -625
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +57 -14
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +3 -1
- package/dist/src/runtime/orchestration/worker-capabilities/controls.d.ts +7 -0
- package/dist/src/runtime/orchestration/worker-capabilities/controls.js +50 -0
- package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.d.ts +5 -0
- package/dist/src/runtime/orchestration/worker-capabilities/error-fingerprint.js +119 -0
- package/dist/src/runtime/orchestration/worker-capabilities/errors.d.ts +6 -0
- package/dist/src/runtime/orchestration/worker-capabilities/errors.js +11 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.d.ts +7 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-exact-result.js +35 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.d.ts +9 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-execution.js +28 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.d.ts +18 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-normalization.js +197 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/adapter-result-references.js +44 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.d.ts +12 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.js +51 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +25 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +111 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.d.ts +20 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.js +142 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution.d.ts +10 -14
- package/dist/src/runtime/orchestration/worker-capabilities/execution.js +84 -357
- package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/index.js +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.d.ts +8 -0
- package/dist/src/runtime/orchestration/worker-capabilities/outcome-fingerprint.js +21 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +31 -9
- package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +15 -6
- package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.js +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +4 -4
- package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.d.ts +23 -0
- package/dist/src/runtime/orchestration/worker-capabilities/preparation-fingerprint.js +109 -0
- package/dist/src/runtime/plugins/manifest-projection.js +3 -0
- package/dist/src/runtime/plugins/manifest-validator.js +20 -0
- package/dist/src/runtime/ports.d.ts +10 -1
- package/dist/src/runtime/request/contracts.d.ts +7 -0
- package/dist/src/runtime/request/dependencies.d.ts +1 -0
- package/dist/src/runtime/request/dependencies.js +10 -1
- package/dist/src/runtime/request/execution-agent-root-execution.js +5 -4
- package/dist/src/runtime/request/execution-facets.d.ts +2 -1
- package/dist/src/runtime/request/execution-facets.js +6 -0
- package/dist/src/runtime/request/execution-scope-surfaces.js +6 -0
- package/dist/src/runtime/request/execution-scope.d.ts +3 -2
- package/dist/src/runtime/request/handler.js +4 -1
- package/dist/src/runtime/request/result.d.ts +2 -0
- package/dist/src/runtime/request/root-contract.d.ts +4 -2
- package/dist/src/runtime/request/root-execution-kernel.js +100 -31
- package/dist/src/runtime/request/supervisor-root-execution.js +4 -2
- package/dist/src/runtime/request/worker-capability-payload-prompts.js +1 -1
- package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.d.ts +24 -0
- package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.js +52 -0
- package/dist/src/runtime/steps/execution-agent/contracts.d.ts +5 -2
- package/dist/src/runtime/steps/execution-agent/format.js +19 -6
- package/dist/src/runtime/steps/execution-agent/input.js +8 -12
- package/dist/src/runtime/steps/execution-agent/parser.js +25 -19
- package/dist/src/runtime/steps/execution-agent/prompt.js +3 -2
- package/dist/src/runtime/steps/execution-agent/reconsideration-context.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +76 -0
- package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -4
- package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/refinement-reconsideration.js +25 -0
- package/dist/src/runtime/steps/execution-agent/refinement.d.ts +4 -7
- package/dist/src/runtime/steps/execution-agent/refinement.js +24 -35
- package/dist/src/runtime/steps/execution-agent/response-input.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/response-input.js +22 -6
- package/dist/src/runtime/steps/execution-agent/response-prompt.d.ts +1 -1
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +8 -3
- package/dist/src/runtime/steps/execution-agent/response-run.d.ts +6 -0
- package/dist/src/runtime/steps/execution-agent/response-run.js +40 -10
- package/dist/src/runtime/steps/execution-agent/run.js +6 -6
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +4 -1
- package/dist/src/runtime/steps/execution-agent/state-context.js +40 -23
- package/dist/src/runtime/steps/supervisor-response/index.d.ts +1 -1
- package/dist/src/runtime/steps/supervisor-response/index.js +1 -1
- package/dist/src/runtime/steps/supervisor-response/input.d.ts +13 -5
- package/dist/src/runtime/steps/supervisor-response/input.js +27 -8
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +125 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +4 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.js +19 -0
- package/dist/src/runtime/steps/supervisor-response/run.d.ts +8 -0
- package/dist/src/runtime/steps/supervisor-response/run.js +46 -17
- package/dist/src/runtime/steps/worker-decision/contracts.d.ts +8 -1
- package/dist/src/runtime/steps/worker-decision/contracts.js +3 -0
- package/dist/src/runtime/steps/worker-decision/format.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/format.js +97 -22
- package/dist/src/runtime/steps/worker-decision/input/action-policy.d.ts +9 -0
- package/dist/src/runtime/steps/worker-decision/input/action-policy.js +15 -0
- package/dist/src/runtime/steps/worker-decision/input/canonical-state.d.ts +2 -2
- package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +19 -7
- package/dist/src/runtime/steps/worker-decision/input/capability-selection.js +44 -3
- package/dist/src/runtime/steps/worker-decision/input/contract.d.ts +1 -0
- package/dist/src/runtime/steps/worker-decision/input/contract.js +12 -6
- package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +14 -5
- package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +9 -6
- package/dist/src/runtime/steps/worker-decision/input/reference-context.js +21 -3
- package/dist/src/runtime/steps/worker-decision/input/session.js +2 -1
- package/dist/src/runtime/steps/worker-decision/input/types.d.ts +6 -1
- package/dist/src/runtime/steps/worker-decision/input.d.ts +2 -2
- package/dist/src/runtime/steps/worker-decision/input.js +1 -2
- package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -0
- package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +70 -0
- package/dist/src/runtime/steps/worker-decision/parser/action-validation.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/parser/action-validation.js +55 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +3 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +135 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.d.ts +6 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-controls-validation.js +132 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +104 -0
- package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/parser/decision-shape-validation.js +28 -0
- package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/parser/pending-capability-selection-validation.js +105 -0
- package/dist/src/runtime/steps/worker-decision/parser/validation-contract.d.ts +50 -0
- package/dist/src/runtime/steps/worker-decision/parser/validation-contract.js +19 -0
- package/dist/src/runtime/steps/worker-decision/parser.d.ts +5 -1
- package/dist/src/runtime/steps/worker-decision/parser.js +32 -426
- package/dist/src/runtime/steps/worker-decision/prompt.d.ts +3 -0
- package/dist/src/runtime/steps/worker-decision/prompt.js +57 -20
- package/dist/src/runtime/steps/worker-decision/result-author.js +11 -1
- package/dist/src/runtime/steps/worker-decision/run.js +97 -19
- package/dist/src/runtime/validation/strict-record.d.ts +2 -0
- package/dist/src/runtime/validation/strict-record.js +12 -0
- package/dist/src/shared/model-step-registry-data.json +9 -0
- package/dist/src/shared/model-step-registry.d.ts +9 -0
- package/dist/src/shared/model-step-registry.generated.d.ts +9 -0
- package/dist/src/shared/model-step-registry.generated.js +9 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
- package/dist/src/web-ui/app/app.js +56 -11
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +320 -0
- package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +155 -0
- package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +278 -0
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +251 -0
- package/dist/src/web-ui/app/components/config-workspace/step-rendering.js +145 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +271 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +195 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +247 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +299 -0
- package/dist/src/web-ui/app/components/config-workspace.js +179 -866
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +7 -1
- package/dist/src/web-ui/app/components/long-term-memory/icons.js +16 -0
- package/dist/src/web-ui/app/components/long-term-memory/manager.js +192 -0
- package/dist/src/web-ui/app/components/long-term-memory/record-editor.d.ts +9 -0
- package/dist/src/web-ui/app/components/long-term-memory/record-editor.js +62 -0
- package/dist/src/web-ui/app/components/long-term-memory/record-list.d.ts +5 -0
- package/dist/src/web-ui/app/components/long-term-memory/record-list.js +97 -0
- package/dist/src/web-ui/app/components/long-term-memory/view-model.d.ts +29 -0
- package/dist/src/web-ui/app/components/long-term-memory/view-model.js +69 -0
- package/dist/src/web-ui/app/components/long-term-memory-setup.js +334 -0
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +39 -0
- package/dist/src/web-ui/app/components/tool-approval-card.d.ts +18 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +48 -7
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +43 -6
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +92 -0
- package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +109 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +77 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +149 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +43 -3
- package/dist/src/web-ui/app/controllers/long-term-memory/controller.d.ts +87 -0
- package/dist/src/web-ui/app/controllers/long-term-memory/controller.js +302 -0
- package/dist/src/web-ui/app/controllers/long-term-memory/policy.d.ts +14 -0
- package/dist/src/web-ui/app/controllers/long-term-memory/policy.js +61 -0
- package/dist/src/web-ui/app/controllers/long-term-memory/state.js +85 -0
- package/dist/src/web-ui/app/controllers/operations-controller.d.ts +25 -0
- package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +57 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +32 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +177 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +78 -11
- package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +28 -0
- package/dist/src/web-ui/app/index.html +13 -15
- package/dist/src/web-ui/app/services/runtime-web-client/memory.js +127 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +84 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +27 -1
- package/dist/src/web-ui/app/styles/30-inspector-config.css +151 -1423
- package/dist/src/web-ui/app/styles/35-memory-onboarding.css +153 -0
- package/dist/src/web-ui/app/styles/36-memory-management.css +419 -0
- package/dist/src/web-ui/app/styles/40-config-workspace.css +992 -0
- package/dist/src/web-ui/app/styles/90-responsive.css +187 -26
- package/dist/src/web-ui/app/styles.css +3 -0
- package/dist/src/web-ui/config-dashboard-backend.js +9 -1
- package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -2
- package/dist/src/web-ui/local-runtime/api-router.js +33 -0
- package/dist/src/web-ui/local-runtime/contracts.d.ts +5 -0
- package/dist/src/web-ui/local-runtime/memory-management-input.d.ts +12 -0
- package/dist/src/web-ui/local-runtime/memory-management-input.js +68 -0
- package/dist/src/web-ui/local-runtime/memory-management-response.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/memory-management-response.js +47 -0
- package/dist/src/web-ui/local-runtime/memory-management-routes.d.ts +24 -0
- package/dist/src/web-ui/local-runtime/memory-management-routes.js +128 -0
- package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +81 -0
- package/dist/src/web-ui/local-runtime/request-abort.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/request-abort.js +19 -0
- package/dist/src/web-ui/local-runtime-backend.js +10 -3
- package/dist/src/web-ui/server.d.ts +2 -0
- package/dist/src/web-ui/server.js +3 -0
- package/docs/configuration.md +128 -45
- package/docs/installation.md +21 -0
- package/docs/known-limitations.md +11 -0
- package/docs/long-term-memory.md +181 -0
- package/docs/publishing.md +52 -25
- package/docs/runtime-invariant-coverage.md +1 -1
- package/docs/runtime-library.md +16 -1
- package/docs/runtime-prompt-policy-contracts.md +12 -2
- package/docs/troubleshooting.md +21 -0
- package/examples/models/default.config.json +1 -0
- package/examples/request-runner.config.example.json +16 -22
- package/examples/runtime.config.example.json +4 -0
- package/methodologies/memory-informed-response.md +15 -0
- package/methodologies/response-ux.md +17 -0
- package/package.json +8 -2
- package/plugins/exec/source/handlers.ts +65 -5
- package/plugins/exec/src/index.cjs +39 -3
- package/plugins/filesystem/plugin.json +1 -0
- package/runtime.config.schema.json +30 -0
- package/src/runtime/README.md +77 -38
|
@@ -1,776 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { projectNormalInvocationDefinition } from "./normal-invocation/definition-projection.js";
|
|
4
|
-
import { parseToolNormalInvocationContract, parseToolNormalInvocationForDefinition, } from "./normal-invocation/validator.js";
|
|
5
|
-
const ROUTING_CAPABILITIES = [
|
|
6
|
-
"filesystem_inspection",
|
|
7
|
-
"filesystem_mutation",
|
|
8
|
-
"semantic_lookup",
|
|
9
|
-
"semantic_mutation",
|
|
10
|
-
"web_lookup",
|
|
11
|
-
];
|
|
12
|
-
const DEVELOPMENT_ROLES = [
|
|
13
|
-
"inspect",
|
|
14
|
-
"establish",
|
|
15
|
-
"mutate",
|
|
16
|
-
"verify",
|
|
17
|
-
"auxiliary",
|
|
18
|
-
];
|
|
19
|
-
const EXECUTION_EFFECTS = [
|
|
20
|
-
"read_only",
|
|
21
|
-
"mutating",
|
|
22
|
-
"mixed",
|
|
23
|
-
];
|
|
24
|
-
const EVENT_PROJECTION_KINDS = [
|
|
25
|
-
"string",
|
|
26
|
-
"number",
|
|
27
|
-
"string_array",
|
|
28
|
-
"length",
|
|
29
|
-
];
|
|
30
|
-
const PAYLOAD_STAGE_CONDITION_VALUE_MAX_LENGTH = 256;
|
|
31
|
-
function isObject(value) {
|
|
32
|
-
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
33
|
-
}
|
|
34
|
-
function isRoutingCapability(value) {
|
|
35
|
-
return (typeof value === "string" &&
|
|
36
|
-
ROUTING_CAPABILITIES.includes(value));
|
|
37
|
-
}
|
|
38
|
-
function isDevelopmentRole(value) {
|
|
39
|
-
return (typeof value === "string" &&
|
|
40
|
-
DEVELOPMENT_ROLES.includes(value));
|
|
41
|
-
}
|
|
42
|
-
function parseToolCatalogGroups(toolName, value) {
|
|
43
|
-
if (value === undefined)
|
|
44
|
-
return ["other"];
|
|
45
|
-
if (!Array.isArray(value) ||
|
|
46
|
-
value.length === 0 ||
|
|
47
|
-
value.some((group) => !isToolCatalogGroupId(group)) ||
|
|
48
|
-
new Set(value).size !== value.length) {
|
|
49
|
-
throw new Error(`Invalid tool definition for ${toolName} (catalogGroups)`);
|
|
50
|
-
}
|
|
51
|
-
return [...value];
|
|
52
|
-
}
|
|
53
|
-
function isExecutionEffect(value) {
|
|
54
|
-
return (typeof value === "string" &&
|
|
55
|
-
EXECUTION_EFFECTS.includes(value));
|
|
56
|
-
}
|
|
57
|
-
function parseEventPresentation(toolName, raw) {
|
|
58
|
-
if (raw === undefined)
|
|
59
|
-
return undefined;
|
|
60
|
-
if (!isObject(raw) || !isObject(raw.metadata)) {
|
|
61
|
-
throw new Error(`Invalid tool definition for ${toolName} (eventPresentation)`);
|
|
62
|
-
}
|
|
63
|
-
const metadata = Object.fromEntries(Object.entries(raw.metadata).map(([key, rawProjection]) => {
|
|
64
|
-
if (!key.trim() || !isObject(rawProjection)) {
|
|
65
|
-
throw new Error(`Invalid tool definition for ${toolName} (eventPresentation.metadata.${key})`);
|
|
66
|
-
}
|
|
67
|
-
const param = rawProjection.param;
|
|
68
|
-
const kind = rawProjection.kind;
|
|
69
|
-
const fallback = rawProjection.default;
|
|
70
|
-
if (typeof param !== "string" ||
|
|
71
|
-
!param.trim() ||
|
|
72
|
-
!EVENT_PROJECTION_KINDS.includes(kind) ||
|
|
73
|
-
(fallback !== undefined &&
|
|
74
|
-
typeof fallback !== "string" &&
|
|
75
|
-
typeof fallback !== "number" &&
|
|
76
|
-
typeof fallback !== "boolean")) {
|
|
77
|
-
throw new Error(`Invalid tool definition for ${toolName} (eventPresentation.metadata.${key})`);
|
|
78
|
-
}
|
|
79
|
-
return [
|
|
80
|
-
key,
|
|
81
|
-
{
|
|
82
|
-
param: param.trim(),
|
|
83
|
-
kind: kind,
|
|
84
|
-
...(fallback !== undefined ? { default: fallback } : {}),
|
|
85
|
-
},
|
|
86
|
-
];
|
|
87
|
-
}));
|
|
88
|
-
const lifecycle = raw.lifecycle;
|
|
89
|
-
if (lifecycle !== undefined && !isObject(lifecycle)) {
|
|
90
|
-
throw new Error(`Invalid tool definition for ${toolName} (eventPresentation.lifecycle)`);
|
|
91
|
-
}
|
|
92
|
-
const parsedLifecycle = isObject(lifecycle)
|
|
93
|
-
? Object.fromEntries(["started", "completed", "failed"].flatMap((phase) => {
|
|
94
|
-
const copy = lifecycle[phase];
|
|
95
|
-
if (copy === undefined)
|
|
96
|
-
return [];
|
|
97
|
-
if (!isObject(copy) ||
|
|
98
|
-
typeof copy.status !== "string" ||
|
|
99
|
-
copy.status.trim().length === 0 ||
|
|
100
|
-
typeof copy.message !== "string" ||
|
|
101
|
-
copy.message.trim().length === 0) {
|
|
102
|
-
throw new Error(`Invalid tool definition for ${toolName} (eventPresentation.lifecycle.${phase})`);
|
|
103
|
-
}
|
|
104
|
-
return [
|
|
105
|
-
[
|
|
106
|
-
phase,
|
|
107
|
-
{ status: copy.status.trim(), message: copy.message.trim() },
|
|
108
|
-
],
|
|
109
|
-
];
|
|
110
|
-
}))
|
|
111
|
-
: undefined;
|
|
112
|
-
return {
|
|
113
|
-
metadata,
|
|
114
|
-
...(parsedLifecycle && Object.keys(parsedLifecycle).length > 0
|
|
115
|
-
? { lifecycle: parsedLifecycle }
|
|
116
|
-
: {}),
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
function parseParamsByCommand(toolName, raw) {
|
|
120
|
-
if (raw === undefined) {
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
if (!isObject(raw)) {
|
|
124
|
-
throw new Error(`Invalid tool definition for ${toolName} (paramsByCommand)`);
|
|
125
|
-
}
|
|
126
|
-
const discriminator = raw.discriminator;
|
|
127
|
-
const variants = raw.variants;
|
|
128
|
-
if (typeof discriminator !== "string" || discriminator.trim().length === 0) {
|
|
129
|
-
throw new Error(`Invalid tool definition for ${toolName} (paramsByCommand.discriminator)`);
|
|
130
|
-
}
|
|
131
|
-
if (!isObject(variants)) {
|
|
132
|
-
throw new Error(`Invalid tool definition for ${toolName} (paramsByCommand.variants)`);
|
|
133
|
-
}
|
|
134
|
-
const parsedVariants = {};
|
|
135
|
-
for (const [variantName, variantParams] of Object.entries(variants)) {
|
|
136
|
-
if (!isObject(variantParams)) {
|
|
137
|
-
throw new Error(`Invalid tool definition for ${toolName} (paramsByCommand.variants.${variantName})`);
|
|
138
|
-
}
|
|
139
|
-
const parsedVariant = {};
|
|
140
|
-
for (const [paramName, paramType] of Object.entries(variantParams)) {
|
|
141
|
-
if (typeof paramType !== "string") {
|
|
142
|
-
throw new Error(`Invalid tool definition for ${toolName} (paramsByCommand.variants.${variantName}.${paramName})`);
|
|
143
|
-
}
|
|
144
|
-
parsedVariant[paramName] = paramType;
|
|
145
|
-
}
|
|
146
|
-
parsedVariants[variantName] = parsedVariant;
|
|
147
|
-
}
|
|
148
|
-
return { discriminator, variants: parsedVariants };
|
|
149
|
-
}
|
|
150
|
-
function parseRuntimePathBindings(toolName, raw) {
|
|
151
|
-
if (raw === undefined)
|
|
152
|
-
return undefined;
|
|
153
|
-
if (!Array.isArray(raw) || raw.length === 0 || raw.length > 32) {
|
|
154
|
-
throw new Error(`Invalid tool definition for ${toolName} (runtimePathBindings)`);
|
|
155
|
-
}
|
|
156
|
-
const identities = new Set();
|
|
157
|
-
return raw.map((value, index) => {
|
|
158
|
-
if (!isObject(value) ||
|
|
159
|
-
(Object.keys(value).length !== 3 && Object.keys(value).length !== 4) ||
|
|
160
|
-
!Object.hasOwn(value, "operationId") ||
|
|
161
|
-
!Object.hasOwn(value, "param") ||
|
|
162
|
-
!Object.hasOwn(value, "base") ||
|
|
163
|
-
Object.keys(value).some((key) => !["operationId", "param", "base", "default"].includes(key)) ||
|
|
164
|
-
typeof value.operationId !== "string" ||
|
|
165
|
-
value.operationId.trim().length === 0 ||
|
|
166
|
-
typeof value.param !== "string" ||
|
|
167
|
-
value.param.trim().length === 0 ||
|
|
168
|
-
value.base !== "worker_working_directory" ||
|
|
169
|
-
(value.default !== undefined && value.default !== ".")) {
|
|
170
|
-
throw new Error(`Invalid tool definition for ${toolName} (runtimePathBindings.${index})`);
|
|
171
|
-
}
|
|
172
|
-
const operationId = value.operationId.trim();
|
|
173
|
-
const param = value.param.trim();
|
|
174
|
-
const identity = `${operationId}\u0000${param}`;
|
|
175
|
-
if (identities.has(identity)) {
|
|
176
|
-
throw new Error(`Invalid tool definition for ${toolName} (runtimePathBindings duplicate ${operationId}.${param})`);
|
|
177
|
-
}
|
|
178
|
-
identities.add(identity);
|
|
179
|
-
return Object.freeze({
|
|
180
|
-
operationId,
|
|
181
|
-
param,
|
|
182
|
-
base: "worker_working_directory",
|
|
183
|
-
...(value.default === "." ? { default: "." } : {}),
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
function parsePayloadChannelSpec(toolName, params, raw) {
|
|
188
|
-
if (raw === undefined) {
|
|
189
|
-
return undefined;
|
|
190
|
-
}
|
|
191
|
-
if (!isObject(raw)) {
|
|
192
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec)`);
|
|
193
|
-
}
|
|
194
|
-
const payloadParams = raw.params;
|
|
195
|
-
const outputParam = raw.outputParam;
|
|
196
|
-
const generationMode = raw.generationMode;
|
|
197
|
-
const targetParam = raw.targetParam;
|
|
198
|
-
const targetRole = raw.targetRole;
|
|
199
|
-
const contextScope = raw.contextScope;
|
|
200
|
-
const targetContext = raw.targetContext;
|
|
201
|
-
const responseFormat = raw.responseFormat;
|
|
202
|
-
const promptHint = raw.promptHint;
|
|
203
|
-
const stages = raw.stages;
|
|
204
|
-
const groundingWindow = raw.groundingWindow;
|
|
205
|
-
const requiresCurrentTargetObservation = raw.requiresCurrentTargetObservation;
|
|
206
|
-
if (!Array.isArray(payloadParams) ||
|
|
207
|
-
payloadParams.length === 0 ||
|
|
208
|
-
payloadParams.some((paramName) => typeof paramName !== "string" || paramName.trim().length === 0)) {
|
|
209
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.params)`);
|
|
210
|
-
}
|
|
211
|
-
if (typeof outputParam !== "string" || outputParam.trim().length === 0) {
|
|
212
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.outputParam)`);
|
|
213
|
-
}
|
|
214
|
-
if (generationMode !== "raw_text") {
|
|
215
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.generationMode)`);
|
|
216
|
-
}
|
|
217
|
-
if (targetParam !== undefined &&
|
|
218
|
-
(typeof targetParam !== "string" || targetParam.trim().length === 0)) {
|
|
219
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.targetParam)`);
|
|
220
|
-
}
|
|
221
|
-
if (targetRole !== undefined &&
|
|
222
|
-
targetRole !== "payload_body" &&
|
|
223
|
-
targetRole !== "operation_target") {
|
|
224
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.targetRole)`);
|
|
225
|
-
}
|
|
226
|
-
if (contextScope !== undefined &&
|
|
227
|
-
contextScope !== "standard" &&
|
|
228
|
-
contextScope !== "target_only" &&
|
|
229
|
-
contextScope !== "target_with_artifacts") {
|
|
230
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.contextScope)`);
|
|
231
|
-
}
|
|
232
|
-
if (targetContext !== undefined &&
|
|
233
|
-
targetContext !== "bounded" &&
|
|
234
|
-
targetContext !== "full" &&
|
|
235
|
-
targetContext !== "full_numbered") {
|
|
236
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.targetContext)`);
|
|
237
|
-
}
|
|
238
|
-
if (responseFormat !== undefined &&
|
|
239
|
-
responseFormat !== "json" &&
|
|
240
|
-
!isObject(responseFormat)) {
|
|
241
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.responseFormat)`);
|
|
242
|
-
}
|
|
243
|
-
if (promptHint !== undefined && typeof promptHint !== "string") {
|
|
244
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.promptHint)`);
|
|
245
|
-
}
|
|
246
|
-
if (stages !== undefined && (!Array.isArray(stages) || stages.length === 0)) {
|
|
247
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages)`);
|
|
248
|
-
}
|
|
249
|
-
if (groundingWindow !== undefined &&
|
|
250
|
-
(typeof groundingWindow !== "number" ||
|
|
251
|
-
!Number.isInteger(groundingWindow) ||
|
|
252
|
-
groundingWindow < 0)) {
|
|
253
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.groundingWindow)`);
|
|
254
|
-
}
|
|
255
|
-
if (requiresCurrentTargetObservation !== undefined &&
|
|
256
|
-
(!isObject(requiresCurrentTargetObservation) ||
|
|
257
|
-
typeof requiresCurrentTargetObservation.targetParam !== "string" ||
|
|
258
|
-
requiresCurrentTargetObservation.targetParam.trim().length === 0 ||
|
|
259
|
-
(requiresCurrentTargetObservation.contentRequirement !== undefined &&
|
|
260
|
-
requiresCurrentTargetObservation.contentRequirement !== "any" &&
|
|
261
|
-
requiresCurrentTargetObservation.contentRequirement !== "full"))) {
|
|
262
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.requiresCurrentTargetObservation)`);
|
|
263
|
-
}
|
|
264
|
-
const requiredCurrentTargetParam = isObject(requiresCurrentTargetObservation) &&
|
|
265
|
-
typeof requiresCurrentTargetObservation.targetParam === "string"
|
|
266
|
-
? requiresCurrentTargetObservation.targetParam
|
|
267
|
-
: undefined;
|
|
268
|
-
const payloadTargetParam = typeof targetParam === "string" ? targetParam.trim() : undefined;
|
|
269
|
-
const requiredCurrentTargetContent = isObject(requiresCurrentTargetObservation) &&
|
|
270
|
-
(requiresCurrentTargetObservation.contentRequirement === "any" ||
|
|
271
|
-
requiresCurrentTargetObservation.contentRequirement === "full")
|
|
272
|
-
? requiresCurrentTargetObservation.contentRequirement
|
|
273
|
-
: undefined;
|
|
274
|
-
const parsedStages = Array.isArray(stages)
|
|
275
|
-
? stages.map((stage, index) => {
|
|
276
|
-
if (!isObject(stage)) {
|
|
277
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index})`);
|
|
278
|
-
}
|
|
279
|
-
const stageOutputParam = stage.outputParam;
|
|
280
|
-
const stageContextScope = stage.contextScope;
|
|
281
|
-
const stageTargetContext = stage.targetContext;
|
|
282
|
-
const stageResponseFormat = stage.responseFormat;
|
|
283
|
-
const stageTargetLineBoundProperties = stage.targetLineBoundProperties;
|
|
284
|
-
const stagePromptHint = stage.promptHint;
|
|
285
|
-
const includeMaterializedParams = stage.includeMaterializedParams;
|
|
286
|
-
const stageMinBytes = stage.minBytes;
|
|
287
|
-
const stageMinBytesOverride = stage.minBytesOverride;
|
|
288
|
-
const stageLiteralOutput = stage.literalOutput;
|
|
289
|
-
if (typeof stageOutputParam !== "string" ||
|
|
290
|
-
stageOutputParam.trim().length === 0 ||
|
|
291
|
-
!payloadParams.includes(stageOutputParam) ||
|
|
292
|
-
params[stageOutputParam] !== "string") {
|
|
293
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.outputParam)`);
|
|
294
|
-
}
|
|
295
|
-
if (stageContextScope !== undefined &&
|
|
296
|
-
stageContextScope !== "standard" &&
|
|
297
|
-
stageContextScope !== "target_only" &&
|
|
298
|
-
stageContextScope !== "target_with_artifacts") {
|
|
299
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.contextScope)`);
|
|
300
|
-
}
|
|
301
|
-
if (stageTargetContext !== undefined &&
|
|
302
|
-
stageTargetContext !== "bounded" &&
|
|
303
|
-
stageTargetContext !== "full" &&
|
|
304
|
-
stageTargetContext !== "full_numbered") {
|
|
305
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.targetContext)`);
|
|
306
|
-
}
|
|
307
|
-
if (stageResponseFormat !== undefined &&
|
|
308
|
-
stageResponseFormat !== "json" &&
|
|
309
|
-
!isObject(stageResponseFormat)) {
|
|
310
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.responseFormat)`);
|
|
311
|
-
}
|
|
312
|
-
if (stageTargetLineBoundProperties !== undefined &&
|
|
313
|
-
(!Array.isArray(stageTargetLineBoundProperties) ||
|
|
314
|
-
stageTargetLineBoundProperties.length === 0 ||
|
|
315
|
-
new Set(stageTargetLineBoundProperties).size !==
|
|
316
|
-
stageTargetLineBoundProperties.length ||
|
|
317
|
-
stageTargetLineBoundProperties.some((property) => typeof property !== "string" || property.trim().length === 0))) {
|
|
318
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.targetLineBoundProperties)`);
|
|
319
|
-
}
|
|
320
|
-
if (stagePromptHint !== undefined &&
|
|
321
|
-
typeof stagePromptHint !== "string") {
|
|
322
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.promptHint)`);
|
|
323
|
-
}
|
|
324
|
-
if (includeMaterializedParams !== undefined &&
|
|
325
|
-
(!Array.isArray(includeMaterializedParams) ||
|
|
326
|
-
includeMaterializedParams.some((paramName) => typeof paramName !== "string" ||
|
|
327
|
-
!payloadParams.includes(paramName)))) {
|
|
328
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.includeMaterializedParams)`);
|
|
329
|
-
}
|
|
330
|
-
if (stageMinBytes !== undefined &&
|
|
331
|
-
(typeof stageMinBytes !== "number" ||
|
|
332
|
-
!Number.isSafeInteger(stageMinBytes) ||
|
|
333
|
-
stageMinBytes < 0 ||
|
|
334
|
-
stageMinBytes > TOOL_NORMAL_INVOCATION_PAYLOAD_MAX_BYTES)) {
|
|
335
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index}.minBytes)`);
|
|
336
|
-
}
|
|
337
|
-
if ((stageMinBytes !== undefined ||
|
|
338
|
-
stageMinBytesOverride !== undefined) &&
|
|
339
|
-
stageOutputParam.trim() !== outputParam) {
|
|
340
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index} byte minimum must belong to the final payload stage)`);
|
|
341
|
-
}
|
|
342
|
-
const priorStageOutputs = new Set(stages
|
|
343
|
-
.slice(0, index)
|
|
344
|
-
.filter(isObject)
|
|
345
|
-
.map((priorStage) => priorStage.outputParam)
|
|
346
|
-
.filter((paramName) => typeof paramName === "string"));
|
|
347
|
-
if (Array.isArray(includeMaterializedParams) &&
|
|
348
|
-
includeMaterializedParams.some((paramName) => !priorStageOutputs.has(paramName))) {
|
|
349
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.stages.${index} references unavailable materialized params)`);
|
|
350
|
-
}
|
|
351
|
-
const parsedMinBytesOverride = stageMinBytesOverride === undefined
|
|
352
|
-
? undefined
|
|
353
|
-
: parsePayloadStageMinBytesOverride({
|
|
354
|
-
toolName,
|
|
355
|
-
stageIndex: index,
|
|
356
|
-
input: stageMinBytesOverride,
|
|
357
|
-
baseMinBytes: stageMinBytes,
|
|
358
|
-
includeMaterializedParams,
|
|
359
|
-
stages,
|
|
360
|
-
inheritedResponseFormat: responseFormat,
|
|
361
|
-
});
|
|
362
|
-
const parsedLiteralOutput = parsePayloadStageLiteralOutput({
|
|
363
|
-
toolName,
|
|
364
|
-
stageIndex: index,
|
|
365
|
-
input: stageLiteralOutput,
|
|
366
|
-
stageOutputParam: stageOutputParam.trim(),
|
|
367
|
-
finalOutputParam: outputParam,
|
|
368
|
-
stageResponseFormat,
|
|
369
|
-
inheritedResponseFormat: responseFormat,
|
|
370
|
-
stageTargetLineBoundProperties,
|
|
371
|
-
stageMinBytesOverride,
|
|
372
|
-
includeMaterializedParams,
|
|
373
|
-
stages,
|
|
374
|
-
});
|
|
375
|
-
return {
|
|
376
|
-
outputParam: stageOutputParam.trim(),
|
|
377
|
-
...(stageContextScope === "standard" ||
|
|
378
|
-
stageContextScope === "target_only" ||
|
|
379
|
-
stageContextScope === "target_with_artifacts"
|
|
380
|
-
? { contextScope: stageContextScope }
|
|
381
|
-
: {}),
|
|
382
|
-
...(stageTargetContext === "bounded" ||
|
|
383
|
-
stageTargetContext === "full" ||
|
|
384
|
-
stageTargetContext === "full_numbered"
|
|
385
|
-
? { targetContext: stageTargetContext }
|
|
386
|
-
: {}),
|
|
387
|
-
...(stageResponseFormat === "json" || isObject(stageResponseFormat)
|
|
388
|
-
? { responseFormat: stageResponseFormat }
|
|
389
|
-
: {}),
|
|
390
|
-
...(Array.isArray(stageTargetLineBoundProperties)
|
|
391
|
-
? {
|
|
392
|
-
targetLineBoundProperties: [...stageTargetLineBoundProperties],
|
|
393
|
-
}
|
|
394
|
-
: {}),
|
|
395
|
-
...(typeof stagePromptHint === "string"
|
|
396
|
-
? { promptHint: stagePromptHint }
|
|
397
|
-
: {}),
|
|
398
|
-
...(Array.isArray(includeMaterializedParams)
|
|
399
|
-
? { includeMaterializedParams: [...includeMaterializedParams] }
|
|
400
|
-
: {}),
|
|
401
|
-
...(typeof stageMinBytes === "number"
|
|
402
|
-
? { minBytes: stageMinBytes }
|
|
403
|
-
: {}),
|
|
404
|
-
...(parsedMinBytesOverride
|
|
405
|
-
? { minBytesOverride: parsedMinBytesOverride }
|
|
406
|
-
: {}),
|
|
407
|
-
...(parsedLiteralOutput
|
|
408
|
-
? { literalOutput: parsedLiteralOutput }
|
|
409
|
-
: {}),
|
|
410
|
-
};
|
|
411
|
-
})
|
|
412
|
-
: undefined;
|
|
413
|
-
const unknownParam = payloadParams.find((paramName) => !(paramName in params));
|
|
414
|
-
if (unknownParam) {
|
|
415
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec unknown param ${unknownParam})`);
|
|
416
|
-
}
|
|
417
|
-
if (!(outputParam in params)) {
|
|
418
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec outputParam ${outputParam})`);
|
|
419
|
-
}
|
|
420
|
-
if (params[outputParam] !== "string") {
|
|
421
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec outputParam ${outputParam} must be string)`);
|
|
422
|
-
}
|
|
423
|
-
if (payloadTargetParam !== undefined && !(payloadTargetParam in params)) {
|
|
424
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec unknown targetParam ${payloadTargetParam})`);
|
|
425
|
-
}
|
|
426
|
-
if (payloadTargetParam !== undefined &&
|
|
427
|
-
payloadParams.includes(payloadTargetParam)) {
|
|
428
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec targetParam ${payloadTargetParam} must be a visible control param)`);
|
|
429
|
-
}
|
|
430
|
-
if (targetContext !== undefined && payloadTargetParam === undefined) {
|
|
431
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec.targetContext requires targetParam)`);
|
|
432
|
-
}
|
|
433
|
-
if (parsedStages?.some((stage) => stage.targetContext !== undefined) &&
|
|
434
|
-
payloadTargetParam === undefined) {
|
|
435
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec stage targetContext requires targetParam)`);
|
|
436
|
-
}
|
|
437
|
-
if (parsedStages &&
|
|
438
|
-
parsedStages[parsedStages.length - 1]?.outputParam !== outputParam) {
|
|
439
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec final stage must materialize outputParam ${outputParam})`);
|
|
440
|
-
}
|
|
441
|
-
if (requiredCurrentTargetParam !== undefined &&
|
|
442
|
-
!(requiredCurrentTargetParam in params)) {
|
|
443
|
-
throw new Error(`Invalid tool definition for ${toolName} (payloadChannelSpec requiresCurrentTargetObservation unknown targetParam ${requiredCurrentTargetParam})`);
|
|
444
|
-
}
|
|
445
|
-
return {
|
|
446
|
-
params: [...payloadParams],
|
|
447
|
-
outputParam,
|
|
448
|
-
generationMode,
|
|
449
|
-
...(payloadTargetParam ? { targetParam: payloadTargetParam } : {}),
|
|
450
|
-
...(targetRole === "payload_body" || targetRole === "operation_target"
|
|
451
|
-
? { targetRole }
|
|
452
|
-
: {}),
|
|
453
|
-
...(contextScope === "standard" ||
|
|
454
|
-
contextScope === "target_only" ||
|
|
455
|
-
contextScope === "target_with_artifacts"
|
|
456
|
-
? { contextScope }
|
|
457
|
-
: {}),
|
|
458
|
-
...(targetContext === "bounded" ||
|
|
459
|
-
targetContext === "full" ||
|
|
460
|
-
targetContext === "full_numbered"
|
|
461
|
-
? { targetContext }
|
|
462
|
-
: {}),
|
|
463
|
-
...(responseFormat === "json" || isObject(responseFormat)
|
|
464
|
-
? { responseFormat }
|
|
465
|
-
: {}),
|
|
466
|
-
...(typeof promptHint === "string" ? { promptHint } : {}),
|
|
467
|
-
...(parsedStages ? { stages: parsedStages } : {}),
|
|
468
|
-
...(typeof groundingWindow === "number" ? { groundingWindow } : {}),
|
|
469
|
-
...(requiredCurrentTargetParam
|
|
470
|
-
? {
|
|
471
|
-
requiresCurrentTargetObservation: {
|
|
472
|
-
targetParam: requiredCurrentTargetParam,
|
|
473
|
-
...(requiredCurrentTargetContent
|
|
474
|
-
? { contentRequirement: requiredCurrentTargetContent }
|
|
475
|
-
: {}),
|
|
476
|
-
},
|
|
477
|
-
}
|
|
478
|
-
: {}),
|
|
479
|
-
};
|
|
480
|
-
}
|
|
481
|
-
function parsePayloadStageMinBytesOverride(params) {
|
|
482
|
-
const path = `payloadChannelSpec.stages.${params.stageIndex}.minBytesOverride`;
|
|
483
|
-
const input = params.input;
|
|
484
|
-
if (typeof params.baseMinBytes !== "number" ||
|
|
485
|
-
!isObject(input) ||
|
|
486
|
-
Object.keys(input).length !== 4 ||
|
|
487
|
-
Object.keys(input).some((key) => !["materializedParam", "property", "equals", "minBytes"].includes(key)) ||
|
|
488
|
-
typeof input.materializedParam !== "string" ||
|
|
489
|
-
input.materializedParam.length === 0 ||
|
|
490
|
-
input.materializedParam.length >
|
|
491
|
-
TOOL_NORMAL_INVOCATION_IDENTIFIER_MAX_LENGTH ||
|
|
492
|
-
typeof input.property !== "string" ||
|
|
493
|
-
input.property.length === 0 ||
|
|
494
|
-
input.property.length > TOOL_NORMAL_INVOCATION_IDENTIFIER_MAX_LENGTH ||
|
|
495
|
-
typeof input.equals !== "string" ||
|
|
496
|
-
input.equals.length === 0 ||
|
|
497
|
-
input.equals.length > PAYLOAD_STAGE_CONDITION_VALUE_MAX_LENGTH ||
|
|
498
|
-
typeof input.minBytes !== "number" ||
|
|
499
|
-
!Number.isSafeInteger(input.minBytes) ||
|
|
500
|
-
input.minBytes < 0 ||
|
|
501
|
-
input.minBytes > TOOL_NORMAL_INVOCATION_PAYLOAD_MAX_BYTES ||
|
|
502
|
-
!Array.isArray(params.includeMaterializedParams) ||
|
|
503
|
-
!params.includeMaterializedParams.includes(input.materializedParam)) {
|
|
504
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path})`);
|
|
505
|
-
}
|
|
506
|
-
const materializedParam = input.materializedParam;
|
|
507
|
-
const property = input.property;
|
|
508
|
-
const equals = input.equals;
|
|
509
|
-
const overrideMinBytes = input.minBytes;
|
|
510
|
-
const sourceStages = [];
|
|
511
|
-
for (const stage of params.stages.slice(0, params.stageIndex)) {
|
|
512
|
-
if (isObject(stage) && stage.outputParam === materializedParam) {
|
|
513
|
-
sourceStages.push(stage);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
if (sourceStages.length !== 1) {
|
|
517
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path} source)`);
|
|
518
|
-
}
|
|
519
|
-
const source = sourceStages[0];
|
|
520
|
-
const responseFormat = source.responseFormat ?? params.inheritedResponseFormat;
|
|
521
|
-
if (!validPayloadStageStringConditionSchema(responseFormat, property, equals)) {
|
|
522
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path} schema)`);
|
|
523
|
-
}
|
|
524
|
-
return {
|
|
525
|
-
materializedParam,
|
|
526
|
-
property,
|
|
527
|
-
equals,
|
|
528
|
-
minBytes: overrideMinBytes,
|
|
529
|
-
};
|
|
530
|
-
}
|
|
531
|
-
function parsePayloadStageLiteralOutput(params) {
|
|
532
|
-
if (params.input === undefined)
|
|
533
|
-
return undefined;
|
|
534
|
-
const path = `payloadChannelSpec.stages.${params.stageIndex}.literalOutput`;
|
|
535
|
-
const input = params.input;
|
|
536
|
-
if (!isObject(input) ||
|
|
537
|
-
Object.keys(input).length !== 2 ||
|
|
538
|
-
Object.keys(input).some((key) => !["when", "value"].includes(key)) ||
|
|
539
|
-
!isObject(input.when) ||
|
|
540
|
-
Object.keys(input.when).length !== 3 ||
|
|
541
|
-
Object.keys(input.when).some((key) => !["materializedParam", "property", "equals"].includes(key)) ||
|
|
542
|
-
typeof input.when.materializedParam !== "string" ||
|
|
543
|
-
input.when.materializedParam.trim().length === 0 ||
|
|
544
|
-
input.when.materializedParam.length >
|
|
545
|
-
TOOL_NORMAL_INVOCATION_IDENTIFIER_MAX_LENGTH ||
|
|
546
|
-
typeof input.when.property !== "string" ||
|
|
547
|
-
input.when.property.trim().length === 0 ||
|
|
548
|
-
input.when.property.length > TOOL_NORMAL_INVOCATION_IDENTIFIER_MAX_LENGTH ||
|
|
549
|
-
typeof input.when.equals !== "string" ||
|
|
550
|
-
input.when.equals.length === 0 ||
|
|
551
|
-
input.when.equals.length > PAYLOAD_STAGE_CONDITION_VALUE_MAX_LENGTH ||
|
|
552
|
-
typeof input.value !== "string" ||
|
|
553
|
-
Buffer.byteLength(input.value, "utf8") >
|
|
554
|
-
TOOL_PAYLOAD_STAGE_LITERAL_OUTPUT_MAX_BYTES ||
|
|
555
|
-
params.stageOutputParam !== params.finalOutputParam ||
|
|
556
|
-
params.stageResponseFormat !== undefined ||
|
|
557
|
-
params.inheritedResponseFormat !== undefined ||
|
|
558
|
-
params.stageTargetLineBoundProperties !== undefined ||
|
|
559
|
-
params.stageMinBytesOverride !== undefined ||
|
|
560
|
-
!Array.isArray(params.includeMaterializedParams) ||
|
|
561
|
-
!params.includeMaterializedParams.includes(input.when.materializedParam)) {
|
|
562
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path})`);
|
|
563
|
-
}
|
|
564
|
-
const sourceStages = [];
|
|
565
|
-
for (const stage of params.stages.slice(0, params.stageIndex)) {
|
|
566
|
-
if (isObject(stage) && stage.outputParam === input.when.materializedParam) {
|
|
567
|
-
sourceStages.push(stage);
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
if (sourceStages.length !== 1) {
|
|
571
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path} source)`);
|
|
572
|
-
}
|
|
573
|
-
const source = sourceStages[0];
|
|
574
|
-
const sourceResponseFormat = source.responseFormat ?? params.inheritedResponseFormat;
|
|
575
|
-
if (!validPayloadStageStringConditionSchema(sourceResponseFormat, input.when.property, input.when.equals)) {
|
|
576
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (${path} schema)`);
|
|
577
|
-
}
|
|
578
|
-
return {
|
|
579
|
-
when: {
|
|
580
|
-
materializedParam: input.when.materializedParam,
|
|
581
|
-
property: input.when.property,
|
|
582
|
-
equals: input.when.equals,
|
|
583
|
-
},
|
|
584
|
-
value: input.value,
|
|
585
|
-
};
|
|
586
|
-
}
|
|
587
|
-
function validPayloadStageStringConditionSchema(input, property, equals) {
|
|
588
|
-
if (!isObject(input) || input.type !== "object")
|
|
589
|
-
return false;
|
|
590
|
-
const properties = input.properties;
|
|
591
|
-
const required = input.required;
|
|
592
|
-
if (!isObject(properties) ||
|
|
593
|
-
!Array.isArray(required) ||
|
|
594
|
-
!required.includes(property)) {
|
|
595
|
-
return false;
|
|
596
|
-
}
|
|
597
|
-
const propertySchema = properties[property];
|
|
598
|
-
return (isObject(propertySchema) &&
|
|
599
|
-
propertySchema.type === "string" &&
|
|
600
|
-
Array.isArray(propertySchema.enum) &&
|
|
601
|
-
propertySchema.enum.length > 0 &&
|
|
602
|
-
propertySchema.enum.every((value) => typeof value === "string") &&
|
|
603
|
-
propertySchema.enum.includes(equals));
|
|
604
|
-
}
|
|
605
|
-
export function parseToolDefinition(raw) {
|
|
606
|
-
if (!isObject(raw)) {
|
|
607
|
-
throw new Error("Invalid tool definition entry (not an object)");
|
|
608
|
-
}
|
|
609
|
-
const name = raw.name;
|
|
610
|
-
const description = raw.description;
|
|
611
|
-
const routingCapability = raw.routingCapability;
|
|
612
|
-
const controlsRefinement = raw.controlsRefinement;
|
|
613
|
-
const catalogGroups = raw.catalogGroups;
|
|
614
|
-
const executionEffect = raw.executionEffect;
|
|
615
|
-
const developmentRoles = raw.developmentRoles;
|
|
616
|
-
const eventPresentation = raw.eventPresentation;
|
|
617
|
-
const params = raw.params;
|
|
618
|
-
if (typeof name !== "string" || name.trim().length === 0) {
|
|
619
|
-
throw new Error("Invalid tool definition entry (name)");
|
|
620
|
-
}
|
|
621
|
-
if (description !== undefined && typeof description !== "string") {
|
|
622
|
-
throw new Error(`Invalid tool definition for ${name} (description)`);
|
|
623
|
-
}
|
|
624
|
-
if (!isRoutingCapability(routingCapability)) {
|
|
625
|
-
throw new Error(`Invalid tool definition for ${name} (routingCapability)`);
|
|
626
|
-
}
|
|
627
|
-
if (controlsRefinement !== undefined &&
|
|
628
|
-
controlsRefinement !== "mechanical_when_complete") {
|
|
629
|
-
throw new Error(`Invalid tool definition for ${name} (controlsRefinement)`);
|
|
630
|
-
}
|
|
631
|
-
if (executionEffect !== undefined && !isExecutionEffect(executionEffect)) {
|
|
632
|
-
throw new Error(`Invalid tool definition for ${name} (executionEffect)`);
|
|
633
|
-
}
|
|
634
|
-
if (!isObject(params)) {
|
|
635
|
-
throw new Error(`Invalid tool definition for ${name} (params)`);
|
|
636
|
-
}
|
|
637
|
-
if (developmentRoles !== undefined &&
|
|
638
|
-
(!Array.isArray(developmentRoles) ||
|
|
639
|
-
developmentRoles.some((role) => !isDevelopmentRole(role)))) {
|
|
640
|
-
throw new Error(`Invalid tool definition for ${name} (developmentRoles)`);
|
|
641
|
-
}
|
|
642
|
-
for (const [paramName, paramType] of Object.entries(params)) {
|
|
643
|
-
if (typeof paramType !== "string") {
|
|
644
|
-
throw new Error(`Invalid tool definition for ${name} (param type for ${paramName})`);
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
|
-
const paramsByCommand = parseParamsByCommand(name, raw.paramsByCommand);
|
|
648
|
-
const runtimePathBindings = parseRuntimePathBindings(name, raw.runtimePathBindings);
|
|
649
|
-
const payloadChannelSpec = parsePayloadChannelSpec(name, params, raw.payloadChannelSpec);
|
|
650
|
-
const parsedEventPresentation = parseEventPresentation(name, eventPresentation);
|
|
651
|
-
return {
|
|
652
|
-
name,
|
|
653
|
-
...(typeof description === "string" ? { description } : {}),
|
|
654
|
-
routingCapability,
|
|
655
|
-
...(controlsRefinement === "mechanical_when_complete"
|
|
656
|
-
? { controlsRefinement }
|
|
657
|
-
: {}),
|
|
658
|
-
catalogGroups: parseToolCatalogGroups(name, catalogGroups),
|
|
659
|
-
...(executionEffect ? { executionEffect } : {}),
|
|
660
|
-
...(Array.isArray(developmentRoles)
|
|
661
|
-
? { developmentRoles: [...developmentRoles] }
|
|
662
|
-
: {}),
|
|
663
|
-
...(parsedEventPresentation
|
|
664
|
-
? { eventPresentation: parsedEventPresentation }
|
|
665
|
-
: {}),
|
|
666
|
-
params: params,
|
|
667
|
-
...(paramsByCommand ? { paramsByCommand } : {}),
|
|
668
|
-
...(payloadChannelSpec ? { payloadChannelSpec } : {}),
|
|
669
|
-
...(runtimePathBindings ? { runtimePathBindings } : {}),
|
|
670
|
-
};
|
|
671
|
-
}
|
|
672
|
-
function parseToolAdapter(toolName, raw) {
|
|
673
|
-
if (raw === undefined) {
|
|
674
|
-
return undefined;
|
|
675
|
-
}
|
|
676
|
-
if (!isObject(raw)) {
|
|
677
|
-
throw new Error(`Invalid tool module for ${toolName} (adapter)`);
|
|
678
|
-
}
|
|
679
|
-
const normalizeCall = raw.normalizeCall;
|
|
680
|
-
const validateCall = raw.validateCall;
|
|
681
|
-
if (normalizeCall !== undefined && typeof normalizeCall !== "function") {
|
|
682
|
-
throw new Error(`Invalid tool module for ${toolName} (adapter.normalizeCall)`);
|
|
683
|
-
}
|
|
684
|
-
if (validateCall !== undefined && typeof validateCall !== "function") {
|
|
685
|
-
throw new Error(`Invalid tool module for ${toolName} (adapter.validateCall)`);
|
|
686
|
-
}
|
|
687
|
-
const adapter = {};
|
|
688
|
-
if (typeof normalizeCall === "function") {
|
|
689
|
-
adapter.normalizeCall = normalizeCall;
|
|
690
|
-
}
|
|
691
|
-
if (typeof validateCall === "function") {
|
|
692
|
-
adapter.validateCall = validateCall;
|
|
693
|
-
}
|
|
694
|
-
return adapter;
|
|
695
|
-
}
|
|
696
|
-
export function buildToolRegistry(modules) {
|
|
697
|
-
if (!Array.isArray(modules)) {
|
|
698
|
-
throw new Error("Tool registry modules must be an array");
|
|
699
|
-
}
|
|
700
|
-
const seenNames = new Set();
|
|
701
|
-
return modules.map((module, index) => {
|
|
702
|
-
if (!module || typeof module !== "object") {
|
|
703
|
-
throw new Error(`Invalid tool module entry at index ${index}`);
|
|
704
|
-
}
|
|
705
|
-
const rawDefinition = module.definition;
|
|
706
|
-
const toolName = readToolDefinitionName(rawDefinition);
|
|
707
|
-
const parsedNormalInvocation = parseToolNormalInvocationContract(toolName, module.normalInvocation);
|
|
708
|
-
if (!parsedNormalInvocation) {
|
|
709
|
-
throw new Error(`Invalid tool module for ${toolName} (normalInvocation is required)`);
|
|
710
|
-
}
|
|
711
|
-
const definition = parseToolDefinition(projectCanonicalDefinition({
|
|
712
|
-
toolName,
|
|
713
|
-
rawDefinition,
|
|
714
|
-
normalInvocation: parsedNormalInvocation,
|
|
715
|
-
}));
|
|
716
|
-
if (seenNames.has(definition.name)) {
|
|
717
|
-
throw new Error(`Duplicate tool definition: ${definition.name}`);
|
|
718
|
-
}
|
|
719
|
-
seenNames.add(definition.name);
|
|
720
|
-
if (typeof module.implementation !== "function") {
|
|
721
|
-
throw new Error(`Invalid tool module for ${definition.name} (implementation)`);
|
|
722
|
-
}
|
|
723
|
-
const adapter = parseToolAdapter(definition.name, module.adapter);
|
|
724
|
-
const normalInvocation = parseToolNormalInvocationForDefinition(definition, parsedNormalInvocation);
|
|
725
|
-
return {
|
|
726
|
-
definition,
|
|
727
|
-
implementation: module.implementation,
|
|
728
|
-
...(adapter ? { adapter } : {}),
|
|
729
|
-
normalInvocation: normalInvocation,
|
|
730
|
-
};
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
export function validateToolModuleDeclarations(modules) {
|
|
734
|
-
const resolved = buildToolRegistry(modules);
|
|
735
|
-
return resolved.map((tool, index) => {
|
|
736
|
-
const source = modules[index];
|
|
737
|
-
const { params: _projectedParams, executionEffect: _projectedEffect, ...definition } = tool.definition;
|
|
738
|
-
void _projectedParams;
|
|
739
|
-
void _projectedEffect;
|
|
740
|
-
return {
|
|
741
|
-
definition,
|
|
742
|
-
implementation: tool.implementation,
|
|
743
|
-
...(tool.adapter ? { adapter: tool.adapter } : {}),
|
|
744
|
-
normalInvocation: tool.normalInvocation,
|
|
745
|
-
};
|
|
746
|
-
});
|
|
747
|
-
}
|
|
748
|
-
function readToolDefinitionName(raw) {
|
|
749
|
-
if (!isObject(raw)) {
|
|
750
|
-
throw new Error("Invalid tool definition entry (not an object)");
|
|
751
|
-
}
|
|
752
|
-
if (typeof raw.name !== "string" || raw.name.trim().length === 0) {
|
|
753
|
-
throw new Error("Invalid tool definition entry (name)");
|
|
754
|
-
}
|
|
755
|
-
return raw.name;
|
|
756
|
-
}
|
|
757
|
-
function projectCanonicalDefinition(params) {
|
|
758
|
-
if (!isObject(params.rawDefinition)) {
|
|
759
|
-
throw new Error("Invalid tool definition entry (not an object)");
|
|
760
|
-
}
|
|
761
|
-
if (params.rawDefinition.params !== undefined) {
|
|
762
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (params must be omitted when normalInvocation is canonical)`);
|
|
763
|
-
}
|
|
764
|
-
if (params.rawDefinition.executionEffect !== undefined) {
|
|
765
|
-
throw new Error(`Invalid tool definition for ${params.toolName} (executionEffect must be omitted when normalInvocation is canonical)`);
|
|
766
|
-
}
|
|
767
|
-
const projection = projectNormalInvocationDefinition({
|
|
768
|
-
toolName: params.toolName,
|
|
769
|
-
contract: params.normalInvocation,
|
|
770
|
-
});
|
|
771
|
-
return {
|
|
772
|
-
...params.rawDefinition,
|
|
773
|
-
params: { ...projection.params },
|
|
774
|
-
executionEffect: projection.executionEffect,
|
|
775
|
-
};
|
|
776
|
-
}
|
|
1
|
+
export { parseToolDefinition } from "./tool-definition-validator/definition-parser.js";
|
|
2
|
+
export { buildToolRegistry, validateToolModuleDeclarations, } from "./tool-definition-validator/module-registry.js";
|