@abot-ai/runtime 1.2.0 → 1.3.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 +14 -0
- package/dist/src/bridge/request-steering.d.ts +2 -1
- package/dist/src/bridge/request-steering.js +4 -2
- package/dist/src/bridge/runtime-replay.js +2 -19
- package/dist/src/bridge/start-agent-bridge.js +1 -1
- package/dist/src/capabilities/normal-invocation/validator.js +1 -1
- package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
- package/dist/src/capabilities/tool-definition-validator/event-result-metadata.d.ts +2 -0
- package/dist/src/capabilities/tool-definition-validator/event-result-metadata.js +74 -0
- package/dist/src/capabilities/tool-event-metadata.js +3 -0
- package/dist/src/capabilities/tool-result-event-projection.d.ts +3 -0
- package/dist/src/capabilities/tool-result-event-projection.js +82 -0
- package/dist/src/capabilities/tool-types.d.ts +5 -0
- package/dist/src/cli/abot.js +2 -11
- package/dist/src/runtime/adapters/in-memory-session-store.js +1 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +11 -2
- package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.d.ts +2 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/synchronous-release.js +40 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +3 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +9 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.d.ts +13 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/rejection-event.js +25 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +18 -2
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +8 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/payload/lifecycle.js +7 -3
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +17 -2
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.d.ts +9 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/event-metadata.js +8 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +16 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +2 -2
- package/dist/src/runtime/adapters/scheduled-request-outcome.d.ts +11 -0
- package/dist/src/runtime/adapters/scheduled-request-outcome.js +41 -0
- package/dist/src/runtime/adapters/scheduler-runtime.d.ts +19 -0
- package/dist/src/runtime/adapters/scheduler-runtime.js +138 -0
- package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +55 -0
- package/dist/src/runtime/capabilities/scheduling/create-operations.js +30 -0
- package/dist/src/runtime/capabilities/scheduling/create-time-zone.d.ts +1 -0
- package/dist/src/runtime/capabilities/scheduling/create-time-zone.js +11 -0
- package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +25 -0
- package/dist/src/runtime/capabilities/scheduling/job-list-page.js +40 -0
- package/dist/src/runtime/capabilities/scheduling/model-validation.d.ts +2 -0
- package/dist/src/runtime/capabilities/scheduling/model-validation.js +15 -0
- package/dist/src/runtime/capabilities/scheduling/tool-contract.d.ts +2 -0
- package/dist/src/runtime/capabilities/scheduling/tool-contract.js +35 -0
- package/dist/src/runtime/capabilities/scheduling/tool-input-properties.d.ts +43 -0
- package/dist/src/runtime/capabilities/scheduling/tool-input-properties.js +27 -0
- package/dist/src/runtime/capabilities/scheduling/tool-module.d.ts +4 -0
- package/dist/src/runtime/capabilities/scheduling/tool-module.js +158 -0
- package/dist/src/runtime/capabilities/scheduling/update-operations.d.ts +2 -0
- package/dist/src/runtime/capabilities/scheduling/update-operations.js +49 -0
- package/dist/src/runtime/composition.d.ts +23 -3
- package/dist/src/runtime/composition.js +12 -17
- package/dist/src/runtime/config/environment-paths.d.ts +10 -0
- package/dist/src/runtime/config/environment-paths.js +31 -0
- package/dist/src/runtime/config/environment-storage.d.ts +9 -0
- package/dist/src/runtime/config/environment-storage.js +65 -0
- package/dist/src/runtime/config/fields.js +7 -0
- package/dist/src/runtime/config/long-term-memory.js +15 -0
- package/dist/src/runtime/config/schema.js +8 -0
- package/dist/src/runtime/config.js +9 -5
- package/dist/src/runtime/context/scheduled-execution-context.d.ts +10 -0
- package/dist/src/runtime/context/scheduled-execution-context.js +52 -0
- package/dist/src/runtime/default-adapters.d.ts +3 -32
- package/dist/src/runtime/default-adapters.js +3 -270
- package/dist/src/runtime/default-environment-adapters.d.ts +19 -0
- package/dist/src/runtime/default-environment-adapters.js +144 -0
- package/dist/src/runtime/index.d.ts +5 -0
- package/dist/src/runtime/index.js +4 -0
- package/dist/src/runtime/local-application.d.ts +22 -0
- package/dist/src/runtime/local-application.js +81 -0
- package/dist/src/runtime/local-host/app-memory-dispatch.d.ts +11 -0
- package/dist/src/runtime/local-host/app-memory-dispatch.js +103 -0
- package/dist/src/runtime/local-host/app-owner.d.ts +4 -0
- package/dist/src/runtime/local-host/app-owner.js +119 -0
- package/dist/src/runtime/local-host/app-request-control.d.ts +24 -0
- package/dist/src/runtime/local-host/app-request-control.js +135 -0
- package/dist/src/runtime/local-host/app-service-dispatch.d.ts +5 -0
- package/dist/src/runtime/local-host/app-service-dispatch.js +64 -0
- package/dist/src/runtime/local-host/client-identity.d.ts +3 -0
- package/dist/src/runtime/local-host/client-identity.js +17 -0
- package/dist/src/runtime/local-host/client-memory.d.ts +7 -0
- package/dist/src/runtime/local-host/client-memory.js +54 -0
- package/dist/src/runtime/local-host/client-requests.d.ts +19 -0
- package/dist/src/runtime/local-host/client-requests.js +145 -0
- package/dist/src/runtime/local-host/client-services.d.ts +10 -0
- package/dist/src/runtime/local-host/client-services.js +14 -0
- package/dist/src/runtime/local-host/contracts.d.ts +36 -0
- package/dist/src/runtime/local-host/contracts.js +1 -0
- package/dist/src/runtime/local-host/endpoint.d.ts +7 -0
- package/dist/src/runtime/local-host/endpoint.js +79 -0
- package/dist/src/runtime/local-host/owner-activity.d.ts +10 -0
- package/dist/src/runtime/local-host/owner-activity.js +30 -0
- package/dist/src/runtime/local-host/owner-retirement.d.ts +3 -0
- package/dist/src/runtime/local-host/owner-retirement.js +15 -0
- package/dist/src/runtime/local-host/owner-server.d.ts +6 -0
- package/dist/src/runtime/local-host/owner-server.js +88 -0
- package/dist/src/runtime/local-host/private-access.d.ts +2 -0
- package/dist/src/runtime/local-host/private-access.js +16 -0
- package/dist/src/runtime/local-host/private-directory.d.ts +1 -0
- package/dist/src/runtime/local-host/private-directory.js +57 -0
- package/dist/src/runtime/local-host/rpc-peer.d.ts +22 -0
- package/dist/src/runtime/local-host/rpc-peer.js +168 -0
- package/dist/src/runtime/local-host/rpc-protocol.d.ts +21 -0
- package/dist/src/runtime/local-host/rpc-protocol.js +46 -0
- package/dist/src/runtime/local-host/startup-connection.d.ts +5 -0
- package/dist/src/runtime/local-host/startup-connection.js +72 -0
- package/dist/src/runtime/local-host/transport.d.ts +3 -0
- package/dist/src/runtime/local-host/transport.js +88 -0
- package/dist/src/runtime/local-host/windows-private-access.d.ts +1 -0
- package/dist/src/runtime/local-host/windows-private-access.js +51 -0
- package/dist/src/runtime/long-term-memory/onboarding/configuration.js +6 -0
- package/dist/src/runtime/long-term-memory/recall-binding.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/recall-binding.js +27 -0
- package/dist/src/runtime/long-term-memory/recall-context.d.ts +20 -0
- package/dist/src/runtime/long-term-memory/recall-context.js +101 -0
- package/dist/src/runtime/long-term-memory/recall-continuation.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/recall-continuation.js +36 -0
- package/dist/src/runtime/long-term-memory/recall-policy.d.ts +7 -0
- package/dist/src/runtime/long-term-memory/recall-policy.js +14 -0
- package/dist/src/runtime/long-term-memory/recall-result.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/recall-result.js +54 -0
- package/dist/src/runtime/long-term-memory/repository-state.d.ts +2 -1
- package/dist/src/runtime/long-term-memory/repository-state.js +2 -2
- package/dist/src/runtime/model/invoke-raw-step.d.ts +1 -0
- package/dist/src/runtime/model/invoke-raw-step.js +1 -0
- package/dist/src/runtime/model/invoke-step.js +6 -0
- package/dist/src/runtime/model/invoke-structured-step.d.ts +1 -0
- package/dist/src/runtime/model/invoke-structured-step.js +1 -0
- package/dist/src/runtime/model/model-step-port.d.ts +2 -0
- package/dist/src/runtime/model/model-step-steering.d.ts +8 -0
- package/dist/src/runtime/model/model-step-steering.js +19 -0
- package/dist/src/runtime/orchestration/final-response/authoring-contract.js +1 -1
- package/dist/src/runtime/orchestration/final-response/invoke.d.ts +1 -0
- package/dist/src/runtime/orchestration/final-response/invoke.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +9 -49
- package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.d.ts +9 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-reconsideration.js +17 -8
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/capability-selection-supervision-validation.js +62 -0
- package/dist/src/runtime/orchestration/role-calls/command-decoder.js +4 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/memory-recall-transitions.js +89 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +5 -0
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +9 -7
- package/dist/src/runtime/orchestration/role-calls/contracts.js +2 -2
- package/dist/src/runtime/orchestration/role-calls/diagnostics.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/index.d.ts +1 -0
- package/dist/src/runtime/orchestration/role-calls/index.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +51 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.js +4 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.d.ts +6 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-decoder.js +147 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.d.ts +5 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-diagnostics.js +27 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +121 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-transactions.js +44 -0
- package/dist/src/runtime/orchestration/role-calls/reducer.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/transaction-effect.d.ts +5 -0
- package/dist/src/runtime/orchestration/role-calls/transaction-effect.js +14 -0
- package/dist/src/runtime/orchestration/role-calls/transactions.js +3 -24
- package/dist/src/runtime/plugins/manifest-validator.js +4 -1
- package/dist/src/runtime/ports.d.ts +4 -0
- package/dist/src/runtime/request/bound-runtime-handler.d.ts +2 -0
- package/dist/src/runtime/request/bound-runtime-handler.js +25 -0
- package/dist/src/runtime/request/contracts.d.ts +6 -0
- package/dist/src/runtime/request/execution-agent-root-execution.js +12 -0
- package/dist/src/runtime/request/execution-facets.js +6 -0
- package/dist/src/runtime/request/execution-scope-surfaces.js +10 -0
- package/dist/src/runtime/request/execution-scope.d.ts +1 -1
- package/dist/src/runtime/request/handler.js +6 -0
- package/dist/src/runtime/request/root-contract.d.ts +7 -1
- package/dist/src/runtime/request/root-execution-kernel.js +33 -37
- package/dist/src/runtime/request/root-memory-recall.d.ts +11 -0
- package/dist/src/runtime/request/root-memory-recall.js +71 -0
- package/dist/src/runtime/request/root-observation-handoff.d.ts +17 -0
- package/dist/src/runtime/request/root-observation-handoff.js +44 -0
- package/dist/src/runtime/request/scheduled-execution.d.ts +9 -0
- package/dist/src/runtime/request/scheduled-execution.js +32 -0
- package/dist/src/runtime/request/session-admission.d.ts +17 -0
- package/dist/src/runtime/request/session-admission.js +88 -0
- package/dist/src/runtime/request/supervisor-root-execution-diagnostics.d.ts +1 -1
- package/dist/src/runtime/request/supervisor-root-execution.js +8 -0
- package/dist/src/runtime/runtime-environment.d.ts +31 -0
- package/dist/src/runtime/runtime-environment.js +102 -0
- package/dist/src/runtime/runtime-host-environment.d.ts +8 -0
- package/dist/src/runtime/runtime-host-environment.js +57 -0
- package/dist/src/runtime/runtime-host-lifecycle.d.ts +4 -0
- package/dist/src/runtime/runtime-host-lifecycle.js +64 -0
- package/dist/src/runtime/runtime-host-scheduler-ownership.d.ts +5 -0
- package/dist/src/runtime/runtime-host-scheduler-ownership.js +67 -0
- package/dist/src/runtime/runtime-host.d.ts +19 -0
- package/dist/src/runtime/runtime-host.js +63 -0
- package/dist/src/runtime/scheduler/calendar-time.d.ts +10 -0
- package/dist/src/runtime/scheduler/calendar-time.js +58 -0
- package/dist/src/runtime/scheduler/contracts.d.ts +143 -0
- package/dist/src/runtime/scheduler/contracts.js +1 -0
- package/dist/src/runtime/scheduler/file-store.d.ts +2 -0
- package/dist/src/runtime/scheduler/file-store.js +76 -0
- package/dist/src/runtime/scheduler/instant-validation.d.ts +4 -0
- package/dist/src/runtime/scheduler/instant-validation.js +69 -0
- package/dist/src/runtime/scheduler/interval-range.d.ts +8 -0
- package/dist/src/runtime/scheduler/interval-range.js +24 -0
- package/dist/src/runtime/scheduler/job-management.d.ts +8 -0
- package/dist/src/runtime/scheduler/job-management.js +212 -0
- package/dist/src/runtime/scheduler/journal-checkpoint.d.ts +9 -0
- package/dist/src/runtime/scheduler/journal-checkpoint.js +45 -0
- package/dist/src/runtime/scheduler/journal-durability.d.ts +8 -0
- package/dist/src/runtime/scheduler/journal-durability.js +59 -0
- package/dist/src/runtime/scheduler/journal-files.d.ts +14 -0
- package/dist/src/runtime/scheduler/journal-files.js +59 -0
- package/dist/src/runtime/scheduler/journal-head.d.ts +21 -0
- package/dist/src/runtime/scheduler/journal-head.js +81 -0
- package/dist/src/runtime/scheduler/journal-index-state.d.ts +31 -0
- package/dist/src/runtime/scheduler/journal-index-state.js +137 -0
- package/dist/src/runtime/scheduler/journal-index.d.ts +22 -0
- package/dist/src/runtime/scheduler/journal-index.js +195 -0
- package/dist/src/runtime/scheduler/journal-store.d.ts +21 -0
- package/dist/src/runtime/scheduler/journal-store.js +184 -0
- package/dist/src/runtime/scheduler/journal-transaction.d.ts +14 -0
- package/dist/src/runtime/scheduler/journal-transaction.js +104 -0
- package/dist/src/runtime/scheduler/next-occurrence.d.ts +3 -0
- package/dist/src/runtime/scheduler/next-occurrence.js +39 -0
- package/dist/src/runtime/scheduler/run-completion.d.ts +12 -0
- package/dist/src/runtime/scheduler/run-completion.js +77 -0
- package/dist/src/runtime/scheduler/run-list-query.d.ts +5 -0
- package/dist/src/runtime/scheduler/run-list-query.js +38 -0
- package/dist/src/runtime/scheduler/run-records.d.ts +6 -0
- package/dist/src/runtime/scheduler/run-records.js +41 -0
- package/dist/src/runtime/scheduler/schedule-update.d.ts +3 -0
- package/dist/src/runtime/scheduler/schedule-update.js +22 -0
- package/dist/src/runtime/scheduler/schedule-validation.d.ts +10 -0
- package/dist/src/runtime/scheduler/schedule-validation.js +132 -0
- package/dist/src/runtime/scheduler/scheduler-engine.d.ts +2 -0
- package/dist/src/runtime/scheduler/scheduler-engine.js +174 -0
- package/dist/src/runtime/scheduler/scheduler-service.d.ts +10 -0
- package/dist/src/runtime/scheduler/scheduler-service.js +115 -0
- package/dist/src/runtime/scheduler/service-context.d.ts +21 -0
- package/dist/src/runtime/scheduler/service-context.js +26 -0
- package/dist/src/runtime/scheduler/session-deletion-state.d.ts +9 -0
- package/dist/src/runtime/scheduler/session-deletion-state.js +30 -0
- package/dist/src/runtime/scheduler/snapshot-validation.d.ts +4 -0
- package/dist/src/runtime/scheduler/snapshot-validation.js +112 -0
- package/dist/src/runtime/scheduler/startup-recovery.d.ts +2 -0
- package/dist/src/runtime/scheduler/startup-recovery.js +38 -0
- package/dist/src/runtime/scheduler/validation-error.d.ts +4 -0
- package/dist/src/runtime/scheduler/validation-error.js +8 -0
- package/dist/src/runtime/scheduler/working-store.d.ts +3 -0
- package/dist/src/runtime/scheduler/working-store.js +8 -0
- package/dist/src/runtime/session/request-session.d.ts +1 -0
- package/dist/src/runtime/session/request-session.js +14 -1
- package/dist/src/runtime/session/session-attachment-deletion.d.ts +8 -0
- package/dist/src/runtime/session/session-attachment-deletion.js +87 -0
- package/dist/src/runtime/session/session-deletion-boundary.d.ts +10 -0
- package/dist/src/runtime/session/session-deletion-boundary.js +39 -0
- package/dist/src/runtime/session/session-deletion-cleanup.d.ts +7 -0
- package/dist/src/runtime/session/session-deletion-cleanup.js +62 -0
- package/dist/src/runtime/session/session-deletion-finalization.d.ts +7 -0
- package/dist/src/runtime/session/session-deletion-finalization.js +34 -0
- package/dist/src/runtime/session/session-deletion-receipts.d.ts +7 -0
- package/dist/src/runtime/session/session-deletion-receipts.js +18 -0
- package/dist/src/runtime/session/session-lifecycle-store.d.ts +21 -0
- package/dist/src/runtime/session/session-lifecycle-store.js +72 -0
- package/dist/src/runtime/session/session-mutation-queue.d.ts +3 -0
- package/dist/src/runtime/session/session-mutation-queue.js +15 -0
- package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.d.ts +16 -0
- package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.js +165 -0
- package/dist/src/runtime/steps/execution-agent/contracts.d.ts +3 -1
- package/dist/src/runtime/steps/execution-agent/decision-parsing.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/decision-parsing.js +195 -0
- package/dist/src/runtime/steps/execution-agent/decision-validation.d.ts +30 -0
- package/dist/src/runtime/steps/execution-agent/decision-validation.js +127 -0
- package/dist/src/runtime/steps/execution-agent/format.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/format.js +12 -0
- package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -1
- package/dist/src/runtime/steps/execution-agent/input.js +17 -2
- package/dist/src/runtime/steps/execution-agent/parser.d.ts +1 -2
- package/dist/src/runtime/steps/execution-agent/parser.js +1 -472
- package/dist/src/runtime/steps/execution-agent/prompt.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +2 -0
- package/dist/src/runtime/steps/execution-agent/reconsideration-context.js +4 -3
- package/dist/src/runtime/steps/execution-agent/response-input.js +5 -4
- package/dist/src/runtime/steps/execution-agent/response-run.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/response-run.js +7 -3
- package/dist/src/runtime/steps/execution-agent/run.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/run.js +2 -0
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -1
- package/dist/src/runtime/steps/execution-agent/state-context.js +13 -5
- package/dist/src/runtime/steps/memory-recall-decision.d.ts +30 -0
- package/dist/src/runtime/steps/memory-recall-decision.js +101 -0
- package/dist/src/runtime/steps/memory-recall-prompt.d.ts +1 -0
- package/dist/src/runtime/steps/memory-recall-prompt.js +15 -0
- package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +4 -2
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +13 -6
- package/dist/src/runtime/steps/supervisor-decision/format.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/format.js +41 -2
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +5 -1
- package/dist/src/runtime/steps/supervisor-decision/input.js +25 -5
- package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-decision/memory-recall-continuation.js +32 -0
- package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/parser.js +36 -1
- package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +16 -8
- package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +13 -0
- package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +32 -0
- package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/resume.js +13 -0
- package/dist/src/runtime/steps/supervisor-decision/run.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +19 -0
- package/dist/src/runtime/steps/supervisor-decision/working-directory.js +7 -1
- package/dist/src/runtime/steps/supervisor-response/diagnostics.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-response/diagnostics.js +1 -0
- package/dist/src/runtime/steps/supervisor-response/input.d.ts +2 -1
- package/dist/src/runtime/steps/supervisor-response/input.js +17 -4
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +4 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.js +8 -2
- package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +25 -0
- package/dist/src/runtime/steps/supervisor-response/run.d.ts +6 -1
- package/dist/src/runtime/steps/supervisor-response/run.js +26 -7
- package/dist/src/sessions/record/projection.js +1 -0
- package/dist/src/sessions/schedule-metadata.d.ts +8 -0
- package/dist/src/sessions/schedule-metadata.js +1 -0
- package/dist/src/sessions/session-service.d.ts +1 -0
- package/dist/src/sessions/session-service.js +1 -0
- package/dist/src/sessions/types.d.ts +2 -0
- package/dist/src/shared/http-server-shutdown.d.ts +4 -0
- package/dist/src/shared/http-server-shutdown.js +17 -0
- package/dist/src/shared/public-http/aggregate-gate.d.ts +3 -0
- package/dist/src/shared/public-http/aggregate-gate.js +87 -0
- package/dist/src/shared/public-http/deadline.d.ts +2 -0
- package/dist/src/shared/public-http/deadline.js +29 -0
- package/dist/src/shared/public-http/errors.d.ts +6 -0
- package/dist/src/shared/public-http/errors.js +11 -0
- package/dist/src/shared/public-http/limits.d.ts +8 -0
- package/dist/src/shared/public-http/limits.js +8 -0
- package/dist/src/shared/public-http/network-policy.d.ts +11 -0
- package/dist/src/shared/public-http/network-policy.js +178 -0
- package/dist/src/shared/public-http/public-http.d.ts +24 -0
- package/dist/src/shared/public-http/public-http.js +85 -0
- package/dist/src/shared/public-http/request-hop.d.ts +18 -0
- package/dist/src/shared/public-http/request-hop.js +140 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +66 -4
- package/dist/src/web-ui/app/app-bootstrap.js +53 -0
- package/dist/src/web-ui/app/app-dom.js +80 -0
- package/dist/src/web-ui/app/app.js +195 -212
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
- package/dist/src/web-ui/app/components/conversation-activity.js +34 -7
- package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +1 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.js +61 -5
- package/dist/src/web-ui/app/components/conversation-schedule.js +71 -0
- package/dist/src/web-ui/app/components/conversation-status.js +65 -0
- package/dist/src/web-ui/app/components/conversation-tools.d.ts +13 -0
- package/dist/src/web-ui/app/components/conversation-tools.js +284 -0
- package/dist/src/web-ui/app/components/conversation-view.js +39 -11
- package/dist/src/web-ui/app/components/dashboard/activity.js +61 -0
- package/dist/src/web-ui/app/components/dashboard/icons.js +23 -0
- package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +64 -0
- package/dist/src/web-ui/app/components/dashboard/workspace.js +107 -0
- package/dist/src/web-ui/app/components/message-link-previews.d.ts +16 -0
- package/dist/src/web-ui/app/components/message-link-previews.js +179 -0
- package/dist/src/web-ui/app/components/schedules/details.js +101 -0
- package/dist/src/web-ui/app/components/schedules/form.d.ts +13 -0
- package/dist/src/web-ui/app/components/schedules/form.js +246 -0
- package/dist/src/web-ui/app/components/schedules/workspace-state.js +59 -0
- package/dist/src/web-ui/app/components/schedules/workspace.js +165 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +48 -2
- package/dist/src/web-ui/app/configuration-feature.js +72 -0
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +17 -6
- package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +2 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.js +15 -1
- package/dist/src/web-ui/app/controllers/composer-surface-controller.js +58 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +53 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +180 -0
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +23 -0
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +82 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +8 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +28 -39
- package/dist/src/web-ui/app/controllers/dashboard-controller.js +127 -0
- package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +40 -0
- package/dist/src/web-ui/app/controllers/home-composer-feature.js +119 -0
- package/dist/src/web-ui/app/controllers/home-conversation-activation.js +37 -0
- package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/realtime-event-controller.js +74 -3
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +2 -1
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +15 -14
- package/dist/src/web-ui/app/controllers/schedule-realtime.js +118 -0
- package/dist/src/web-ui/app/controllers/schedules-controller.js +421 -0
- package/dist/src/web-ui/app/controllers/session-controller.js +30 -3
- package/dist/src/web-ui/app/dashboard-feature.js +44 -0
- package/dist/src/web-ui/app/index.html +53 -1
- package/dist/src/web-ui/app/lib/composer-submission-scope.d.ts +21 -0
- package/dist/src/web-ui/app/lib/composer-submission-scope.js +13 -0
- package/dist/src/web-ui/app/lib/context-window-snapshot-order.d.ts +15 -0
- package/dist/src/web-ui/app/lib/context-window-snapshot-order.js +31 -0
- package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +10 -1
- package/dist/src/web-ui/app/lib/conversation-role-model.js +97 -15
- package/dist/src/web-ui/app/lib/conversation-status-model.d.ts +12 -0
- package/dist/src/web-ui/app/lib/conversation-status-model.js +116 -0
- package/dist/src/web-ui/app/lib/dashboard-job-templates.js +41 -0
- package/dist/src/web-ui/app/lib/dashboard-presentation.js +126 -0
- package/dist/src/web-ui/app/lib/message-markdown.d.ts +5 -0
- package/dist/src/web-ui/app/lib/message-markdown.js +99 -0
- package/dist/src/web-ui/app/lib/message-url-policy.d.ts +1 -0
- package/dist/src/web-ui/app/lib/message-url-policy.js +13 -0
- package/dist/src/web-ui/app/lib/schedule-errors.js +29 -0
- package/dist/src/web-ui/app/lib/schedule-message.js +30 -0
- package/dist/src/web-ui/app/lib/schedule-presentation.js +81 -0
- package/dist/src/web-ui/app/lib/session-read-state.d.ts +22 -0
- package/dist/src/web-ui/app/lib/session-read-state.js +63 -0
- package/dist/src/web-ui/app/lib/text-format.js +2 -143
- package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +26 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.js +228 -0
- package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +41 -0
- package/dist/src/web-ui/app/lib/tool-activity-model.js +255 -0
- package/dist/src/web-ui/app/lib/tool-timeline.d.ts +3 -0
- package/dist/src/web-ui/app/lib/tool-timeline.js +18 -0
- package/dist/src/web-ui/app/schedules-feature.js +87 -0
- package/dist/src/web-ui/app/services/message-link-preview-client.d.ts +14 -0
- package/dist/src/web-ui/app/services/message-link-preview-client.js +96 -0
- package/dist/src/web-ui/app/services/runtime-web-client/schedules.js +51 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +37 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +13 -8
- package/dist/src/web-ui/app/styles/00-tokens-base.css +11 -11
- package/dist/src/web-ui/app/styles/18-dashboard.css +384 -0
- package/dist/src/web-ui/app/styles/20-chat-composer.css +1 -130
- package/dist/src/web-ui/app/styles/26-message-content.css +295 -0
- package/dist/src/web-ui/app/styles/27-conversation-tools.css +266 -0
- package/dist/src/web-ui/app/styles/28-conversation-status.css +52 -0
- package/dist/src/web-ui/app/styles/38-schedule-workspace.css +263 -0
- package/dist/src/web-ui/app/styles/38-schedules.css +352 -0
- package/dist/src/web-ui/app/styles/90-responsive.css +14 -0
- package/dist/src/web-ui/app/styles/91-schedules-responsive.css +72 -0
- package/dist/src/web-ui/app/styles/92-dashboard-responsive.css +88 -0
- package/dist/src/web-ui/app/styles.css +8 -0
- package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
- package/dist/src/web-ui/app/ui-behavior.js +3 -1
- package/dist/src/web-ui/app/vendor/README.md +15 -0
- package/dist/src/web-ui/app/vendor/markdown-it.LICENSE +22 -0
- package/dist/src/web-ui/app/vendor/markdown-it.js +3003 -0
- package/dist/src/web-ui/link-preview/metadata.d.ts +9 -0
- package/dist/src/web-ui/link-preview/metadata.js +97 -0
- package/dist/src/web-ui/link-preview/preview-cache.d.ts +4 -0
- package/dist/src/web-ui/link-preview/preview-cache.js +23 -0
- package/dist/src/web-ui/link-preview/raster-response.d.ts +9 -0
- package/dist/src/web-ui/link-preview/raster-response.js +49 -0
- package/dist/src/web-ui/link-preview/routes.d.ts +3 -0
- package/dist/src/web-ui/link-preview/routes.js +97 -0
- package/dist/src/web-ui/link-preview/service.d.ts +11 -0
- package/dist/src/web-ui/link-preview/service.js +117 -0
- package/dist/src/web-ui/local-runtime/api-router.d.ts +4 -1
- package/dist/src/web-ui/local-runtime/api-router.js +42 -73
- package/dist/src/web-ui/local-runtime/contracts.d.ts +2 -2
- package/dist/src/web-ui/local-runtime/environment-registry.d.ts +12 -1
- package/dist/src/web-ui/local-runtime/environment-registry.js +38 -3
- package/dist/src/web-ui/local-runtime/realtime-controller.js +3 -1
- package/dist/src/web-ui/local-runtime/request-execution.d.ts +5 -1
- package/dist/src/web-ui/local-runtime/request-execution.js +38 -2
- package/dist/src/web-ui/local-runtime/schedule-job-creation.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/schedule-job-creation.js +62 -0
- package/dist/src/web-ui/local-runtime/schedule-management-routes.d.ts +30 -0
- package/dist/src/web-ui/local-runtime/schedule-management-routes.js +134 -0
- package/dist/src/web-ui/local-runtime/schedule-run-page.d.ts +5 -0
- package/dist/src/web-ui/local-runtime/schedule-run-page.js +23 -0
- package/dist/src/web-ui/local-runtime/session-routes.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/session-routes.js +74 -0
- package/dist/src/web-ui/local-runtime-backend.d.ts +2 -0
- package/dist/src/web-ui/local-runtime-backend.js +11 -1
- package/dist/src/web-ui/schedule-creation-contract.d.ts +7 -0
- package/dist/src/web-ui/schedule-creation-contract.js +1 -0
- package/dist/src/web-ui/server-shutdown.d.ts +4 -0
- package/dist/src/web-ui/server-shutdown.js +32 -0
- package/dist/src/web-ui/server.js +13 -10
- package/dist/src/web-ui/session-read-state/availability.d.ts +16 -0
- package/dist/src/web-ui/session-read-state/availability.js +20 -0
- package/dist/src/web-ui/session-read-state/projection.d.ts +17 -0
- package/dist/src/web-ui/session-read-state/projection.js +71 -0
- package/dist/src/web-ui/session-read-state/service.d.ts +86 -0
- package/dist/src/web-ui/session-read-state/service.js +89 -0
- package/dist/src/web-ui/session-read-state/store.d.ts +22 -0
- package/dist/src/web-ui/session-read-state/store.js +110 -0
- package/docs/configuration.md +41 -1
- package/docs/long-term-memory.md +46 -5
- package/docs/runtime-invariant-coverage.md +1 -1
- package/docs/runtime-library.md +23 -0
- package/docs/runtime-public-contracts.md +32 -1
- package/package.json +3 -1
- package/plugins/code-outline/plugin.json +15 -0
- package/plugins/document-reader/plugin.json +17 -0
- package/plugins/filesystem/plugin.json +17 -2
- package/plugins/json-inspector/plugin.json +12 -0
- package/plugins/local-search/plugin.json +12 -0
- package/plugins/memory/plugin.json +26 -1
- package/plugins/memory/source/index.ts +10 -6
- package/plugins/memory/src/index.cjs +11 -7
- package/plugins/project-orientation/plugin.json +14 -0
- package/plugins/web/source/aggregate-gate.ts +8 -130
- package/plugins/web/source/deadline.ts +14 -50
- package/plugins/web/source/errors.ts +17 -11
- package/plugins/web/source/limits.ts +3 -6
- package/plugins/web/source/network-policy.ts +28 -226
- package/plugins/web/source/public-http.ts +17 -142
- package/plugins/web/source/request-hop.ts +11 -191
- package/plugins/web/src/index.cjs +119 -59
- package/runtime.config.schema.json +7 -0
- package/src/runtime/README.md +105 -1
- package/src/runtime/local-host/README.md +86 -0
- package/src/runtime/scheduler/README.md +166 -0
|
@@ -246,11 +246,24 @@ function failureFromError(error, options) {
|
|
|
246
246
|
});
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
//
|
|
250
|
-
var
|
|
249
|
+
// src/shared/public-http/errors.ts
|
|
250
|
+
var PublicHttpError = class extends Error {
|
|
251
251
|
code;
|
|
252
252
|
constructor(code, message) {
|
|
253
253
|
super(message);
|
|
254
|
+
this.name = "PublicHttpError";
|
|
255
|
+
this.code = code;
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
function isPublicHttpError(error) {
|
|
259
|
+
return error instanceof PublicHttpError;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// plugins/web/source/errors.ts
|
|
263
|
+
var WebPluginError = class extends PublicHttpError {
|
|
264
|
+
code;
|
|
265
|
+
constructor(code, message) {
|
|
266
|
+
super(code, message);
|
|
254
267
|
this.name = "WebPluginError";
|
|
255
268
|
this.code = code;
|
|
256
269
|
}
|
|
@@ -258,6 +271,13 @@ var WebPluginError = class extends Error {
|
|
|
258
271
|
function isWebPluginError(error) {
|
|
259
272
|
return error instanceof WebPluginError;
|
|
260
273
|
}
|
|
274
|
+
function rethrowWebPluginError(error) {
|
|
275
|
+
if (error instanceof WebPluginError) throw error;
|
|
276
|
+
if (isPublicHttpError(error)) {
|
|
277
|
+
throw new WebPluginError(error.code, error.message);
|
|
278
|
+
}
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
261
281
|
|
|
262
282
|
// plugins/web/source/concurrency.ts
|
|
263
283
|
async function mapWithConcurrency(values, concurrency, operation) {
|
|
@@ -280,8 +300,19 @@ async function mapWithConcurrency(values, concurrency, operation) {
|
|
|
280
300
|
return Object.freeze(results);
|
|
281
301
|
}
|
|
282
302
|
|
|
303
|
+
// src/shared/public-http/limits.ts
|
|
304
|
+
var PUBLIC_HTTP_LIMITS = Object.freeze({
|
|
305
|
+
httpConcurrency: 6,
|
|
306
|
+
httpQueueLimit: 64,
|
|
307
|
+
redirects: 3,
|
|
308
|
+
responseBytes: 512 * 1024,
|
|
309
|
+
requestTimeoutMs: 1e4,
|
|
310
|
+
responseHeaderBytes: 32 * 1024
|
|
311
|
+
});
|
|
312
|
+
|
|
283
313
|
// plugins/web/source/limits.ts
|
|
284
314
|
var WEB_LIMITS = Object.freeze({
|
|
315
|
+
...PUBLIC_HTTP_LIMITS,
|
|
285
316
|
queryMaxChars: 400,
|
|
286
317
|
queryMaxWords: 50,
|
|
287
318
|
searchQueries: 5,
|
|
@@ -292,14 +323,9 @@ var WEB_LIMITS = Object.freeze({
|
|
|
292
323
|
targetReadableSources: 3,
|
|
293
324
|
fetchUrls: 3,
|
|
294
325
|
fetchConcurrency: 3,
|
|
295
|
-
httpConcurrency: 6,
|
|
296
|
-
httpQueueLimit: 64,
|
|
297
|
-
redirects: 3,
|
|
298
|
-
responseBytes: 512 * 1024,
|
|
299
326
|
outputChars: 16e3,
|
|
300
327
|
pageOutputChars: 12e3,
|
|
301
328
|
sourceOutputChars: 3e3,
|
|
302
|
-
requestTimeoutMs: 1e4,
|
|
303
329
|
searchTotalTimeoutMs: 3e4,
|
|
304
330
|
outputBytes: 48 * 1024,
|
|
305
331
|
upstreamUrlChars: 4096,
|
|
@@ -307,8 +333,7 @@ var WEB_LIMITS = Object.freeze({
|
|
|
307
333
|
upstreamTitleChars: 180,
|
|
308
334
|
upstreamSnippetChars: 800,
|
|
309
335
|
retryAttempts: 2,
|
|
310
|
-
retryBaseMs: 750
|
|
311
|
-
responseHeaderBytes: 32 * 1024
|
|
336
|
+
retryBaseMs: 750
|
|
312
337
|
});
|
|
313
338
|
|
|
314
339
|
// plugins/web/source/content.ts
|
|
@@ -832,7 +857,7 @@ function createWebFetchService(httpClient) {
|
|
|
832
857
|
});
|
|
833
858
|
}
|
|
834
859
|
|
|
835
|
-
//
|
|
860
|
+
// src/shared/public-http/network-policy.ts
|
|
836
861
|
var import_promises = require("node:dns/promises");
|
|
837
862
|
var import_node_net = require("node:net");
|
|
838
863
|
function ipv4Value(address) {
|
|
@@ -935,33 +960,33 @@ function parsePublicHttpUrl(rawUrl) {
|
|
|
935
960
|
try {
|
|
936
961
|
parsed = new URL(rawUrl);
|
|
937
962
|
} catch {
|
|
938
|
-
throw new
|
|
963
|
+
throw new PublicHttpError(
|
|
939
964
|
"web_target_invalid",
|
|
940
965
|
"A valid absolute URL is required."
|
|
941
966
|
);
|
|
942
967
|
}
|
|
943
968
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
944
|
-
throw new
|
|
969
|
+
throw new PublicHttpError(
|
|
945
970
|
"web_target_invalid",
|
|
946
971
|
"Only http and https URLs are supported."
|
|
947
972
|
);
|
|
948
973
|
}
|
|
949
974
|
if (parsed.username || parsed.password) {
|
|
950
|
-
throw new
|
|
975
|
+
throw new PublicHttpError(
|
|
951
976
|
"web_target_invalid",
|
|
952
977
|
"URLs containing credentials are not supported."
|
|
953
978
|
);
|
|
954
979
|
}
|
|
955
980
|
const hostname = normalizeHostname(parsed.hostname);
|
|
956
981
|
if (!hostname || isBlockedHostname(hostname)) {
|
|
957
|
-
throw new
|
|
982
|
+
throw new PublicHttpError(
|
|
958
983
|
"web_target_not_public",
|
|
959
984
|
"Only public Internet targets are allowed."
|
|
960
985
|
);
|
|
961
986
|
}
|
|
962
987
|
const family = (0, import_node_net.isIP)(hostname);
|
|
963
988
|
if (family === 4 && !isPublicIpv4(hostname) || family === 6 && !isPublicIpv6(hostname)) {
|
|
964
|
-
throw new
|
|
989
|
+
throw new PublicHttpError(
|
|
965
990
|
"web_target_not_public",
|
|
966
991
|
"Only public Internet targets are allowed."
|
|
967
992
|
);
|
|
@@ -980,7 +1005,7 @@ var resolveHostAddresses = async (hostname) => {
|
|
|
980
1005
|
try {
|
|
981
1006
|
resolved = await (0, import_promises.lookup)(normalized, { all: true, verbatim: true });
|
|
982
1007
|
} catch {
|
|
983
|
-
throw new
|
|
1008
|
+
throw new PublicHttpError(
|
|
984
1009
|
"web_target_unresolvable",
|
|
985
1010
|
"The public target hostname could not be resolved."
|
|
986
1011
|
);
|
|
@@ -991,7 +1016,7 @@ var resolveHostAddresses = async (hostname) => {
|
|
|
991
1016
|
(entry) => Object.freeze({ address: entry.address, family: entry.family })
|
|
992
1017
|
);
|
|
993
1018
|
if (addresses.length === 0) {
|
|
994
|
-
throw new
|
|
1019
|
+
throw new PublicHttpError(
|
|
995
1020
|
"web_target_unresolvable",
|
|
996
1021
|
"The public target hostname could not be resolved."
|
|
997
1022
|
);
|
|
@@ -1002,7 +1027,7 @@ async function resolvePublicTarget(url, resolver = resolveHostAddresses) {
|
|
|
1002
1027
|
const hostname = normalizeHostname(url.hostname);
|
|
1003
1028
|
const addresses = await resolver(hostname);
|
|
1004
1029
|
if (addresses.length === 0 || addresses.some((entry) => !isPublicAddress(entry))) {
|
|
1005
|
-
throw new
|
|
1030
|
+
throw new PublicHttpError(
|
|
1006
1031
|
"web_target_not_public",
|
|
1007
1032
|
"Only public Internet targets are allowed."
|
|
1008
1033
|
);
|
|
@@ -1010,6 +1035,15 @@ async function resolvePublicTarget(url, resolver = resolveHostAddresses) {
|
|
|
1010
1035
|
return addresses[0];
|
|
1011
1036
|
}
|
|
1012
1037
|
|
|
1038
|
+
// plugins/web/source/network-policy.ts
|
|
1039
|
+
function parsePublicHttpUrl2(rawUrl) {
|
|
1040
|
+
try {
|
|
1041
|
+
return parsePublicHttpUrl(rawUrl);
|
|
1042
|
+
} catch (error) {
|
|
1043
|
+
return rethrowWebPluginError(error);
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1013
1047
|
// plugins/web/source/parameters.ts
|
|
1014
1048
|
var SEARCH_REPAIR_HINT = "Do not retry this call unchanged. Provide query for one non-empty web query, or queries for up to five distinct non-empty web queries.";
|
|
1015
1049
|
var FETCH_REPAIR_HINT = "Do not retry this call unchanged. Provide url for one absolute public http(s) URL, or urls for up to three such URLs.";
|
|
@@ -1069,7 +1103,7 @@ function parseFetchParams(params) {
|
|
|
1069
1103
|
maxItems: WEB_LIMITS.fetchUrls,
|
|
1070
1104
|
maxItemLength: WEB_LIMITS.upstreamUrlChars
|
|
1071
1105
|
});
|
|
1072
|
-
for (const url of urls)
|
|
1106
|
+
for (const url of urls) parsePublicHttpUrl2(url);
|
|
1073
1107
|
return urls;
|
|
1074
1108
|
}
|
|
1075
1109
|
function validate(parse, error, repairHint) {
|
|
@@ -1106,11 +1140,11 @@ var webFetchCallAdapter = Object.freeze({
|
|
|
1106
1140
|
validateCall: ({ params }) => adapterValidation(validateFetchParams(params))
|
|
1107
1141
|
});
|
|
1108
1142
|
|
|
1109
|
-
//
|
|
1143
|
+
// src/shared/public-http/deadline.ts
|
|
1110
1144
|
function remainingTime(deadline) {
|
|
1111
1145
|
const remaining = deadline - Date.now();
|
|
1112
1146
|
if (remaining <= 0) {
|
|
1113
|
-
throw new
|
|
1147
|
+
throw new PublicHttpError(
|
|
1114
1148
|
"web_request_timed_out",
|
|
1115
1149
|
"The upstream web request timed out."
|
|
1116
1150
|
);
|
|
@@ -1120,7 +1154,10 @@ function remainingTime(deadline) {
|
|
|
1120
1154
|
function withinDeadline(promise, deadline, abortSignal) {
|
|
1121
1155
|
if (abortSignal?.aborted) {
|
|
1122
1156
|
return Promise.reject(
|
|
1123
|
-
new
|
|
1157
|
+
new PublicHttpError(
|
|
1158
|
+
"web_request_aborted",
|
|
1159
|
+
"The web request was aborted."
|
|
1160
|
+
)
|
|
1124
1161
|
);
|
|
1125
1162
|
}
|
|
1126
1163
|
return new Promise((resolve, reject) => {
|
|
@@ -1134,7 +1171,7 @@ function withinDeadline(promise, deadline, abortSignal) {
|
|
|
1134
1171
|
};
|
|
1135
1172
|
const onAbort = () => finish(
|
|
1136
1173
|
() => reject(
|
|
1137
|
-
new
|
|
1174
|
+
new PublicHttpError(
|
|
1138
1175
|
"web_request_aborted",
|
|
1139
1176
|
"The web request was aborted."
|
|
1140
1177
|
)
|
|
@@ -1143,7 +1180,7 @@ function withinDeadline(promise, deadline, abortSignal) {
|
|
|
1143
1180
|
const timeout = setTimeout(
|
|
1144
1181
|
() => finish(
|
|
1145
1182
|
() => reject(
|
|
1146
|
-
new
|
|
1183
|
+
new PublicHttpError(
|
|
1147
1184
|
"web_request_timed_out",
|
|
1148
1185
|
"The upstream web request timed out."
|
|
1149
1186
|
)
|
|
@@ -1160,7 +1197,7 @@ function withinDeadline(promise, deadline, abortSignal) {
|
|
|
1160
1197
|
});
|
|
1161
1198
|
}
|
|
1162
1199
|
|
|
1163
|
-
//
|
|
1200
|
+
// src/shared/public-http/aggregate-gate.ts
|
|
1164
1201
|
function createAggregateGate(maxActive, maxQueued) {
|
|
1165
1202
|
let active = 0;
|
|
1166
1203
|
const queue = [];
|
|
@@ -1173,7 +1210,7 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1173
1210
|
}
|
|
1174
1211
|
if (waiter.abortSignal?.aborted) {
|
|
1175
1212
|
waiter.reject(
|
|
1176
|
-
new
|
|
1213
|
+
new PublicHttpError(
|
|
1177
1214
|
"web_request_aborted",
|
|
1178
1215
|
"The web request was aborted."
|
|
1179
1216
|
)
|
|
@@ -1182,7 +1219,7 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1182
1219
|
}
|
|
1183
1220
|
if (waiter.deadline <= Date.now()) {
|
|
1184
1221
|
waiter.reject(
|
|
1185
|
-
new
|
|
1222
|
+
new PublicHttpError(
|
|
1186
1223
|
"web_request_timed_out",
|
|
1187
1224
|
"The upstream web request timed out."
|
|
1188
1225
|
)
|
|
@@ -1202,7 +1239,7 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1202
1239
|
const acquire = (deadline, abortSignal) => {
|
|
1203
1240
|
if (abortSignal?.aborted) {
|
|
1204
1241
|
return Promise.reject(
|
|
1205
|
-
new
|
|
1242
|
+
new PublicHttpError(
|
|
1206
1243
|
"web_request_aborted",
|
|
1207
1244
|
"The web request was aborted."
|
|
1208
1245
|
)
|
|
@@ -1220,7 +1257,7 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1220
1257
|
}
|
|
1221
1258
|
if (queue.length >= maxQueued) {
|
|
1222
1259
|
return Promise.reject(
|
|
1223
|
-
new
|
|
1260
|
+
new PublicHttpError(
|
|
1224
1261
|
"web_request_capacity_exceeded",
|
|
1225
1262
|
"The web client is at its bounded request capacity."
|
|
1226
1263
|
)
|
|
@@ -1246,14 +1283,14 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1246
1283
|
reject(error);
|
|
1247
1284
|
};
|
|
1248
1285
|
waiter.onAbort = () => fail(
|
|
1249
|
-
new
|
|
1286
|
+
new PublicHttpError(
|
|
1250
1287
|
"web_request_aborted",
|
|
1251
1288
|
"The web request was aborted."
|
|
1252
1289
|
)
|
|
1253
1290
|
);
|
|
1254
1291
|
waiter.timeout = setTimeout(
|
|
1255
1292
|
() => fail(
|
|
1256
|
-
new
|
|
1293
|
+
new PublicHttpError(
|
|
1257
1294
|
"web_request_timed_out",
|
|
1258
1295
|
"The upstream web request timed out."
|
|
1259
1296
|
)
|
|
@@ -1275,7 +1312,7 @@ function createAggregateGate(maxActive, maxQueued) {
|
|
|
1275
1312
|
});
|
|
1276
1313
|
}
|
|
1277
1314
|
|
|
1278
|
-
//
|
|
1315
|
+
// src/shared/public-http/request-hop.ts
|
|
1279
1316
|
var import_node_http = require("node:http");
|
|
1280
1317
|
var import_node_https = require("node:https");
|
|
1281
1318
|
function buildPinnedLookup(address) {
|
|
@@ -1335,7 +1372,7 @@ function readBoundedBody(response, maxBytes) {
|
|
|
1335
1372
|
if (settled) return;
|
|
1336
1373
|
settled = true;
|
|
1337
1374
|
reject(
|
|
1338
|
-
new
|
|
1375
|
+
new PublicHttpError(
|
|
1339
1376
|
"web_response_invalid",
|
|
1340
1377
|
"The upstream response ended before completion."
|
|
1341
1378
|
)
|
|
@@ -1345,7 +1382,7 @@ function readBoundedBody(response, maxBytes) {
|
|
|
1345
1382
|
}
|
|
1346
1383
|
var requestPinnedHop = async (params) => {
|
|
1347
1384
|
if (params.abortSignal?.aborted) {
|
|
1348
|
-
throw new
|
|
1385
|
+
throw new PublicHttpError(
|
|
1349
1386
|
"web_request_aborted",
|
|
1350
1387
|
"The web request was aborted."
|
|
1351
1388
|
);
|
|
@@ -1362,7 +1399,7 @@ var requestPinnedHop = async (params) => {
|
|
|
1362
1399
|
headers: params.headers,
|
|
1363
1400
|
lookup: buildPinnedLookup(params.address),
|
|
1364
1401
|
agent: false,
|
|
1365
|
-
maxHeaderSize:
|
|
1402
|
+
maxHeaderSize: PUBLIC_HTTP_LIMITS.responseHeaderBytes
|
|
1366
1403
|
};
|
|
1367
1404
|
const requestFunction = params.url.protocol === "https:" ? import_node_https.request : import_node_http.request;
|
|
1368
1405
|
const request = requestFunction(requestOptions, async (response) => {
|
|
@@ -1389,7 +1426,7 @@ var requestPinnedHop = async (params) => {
|
|
|
1389
1426
|
const timeout = setTimeout(() => {
|
|
1390
1427
|
timedOut = true;
|
|
1391
1428
|
request.destroy(
|
|
1392
|
-
new
|
|
1429
|
+
new PublicHttpError(
|
|
1393
1430
|
"web_request_timed_out",
|
|
1394
1431
|
"The upstream web request timed out."
|
|
1395
1432
|
)
|
|
@@ -1397,7 +1434,7 @@ var requestPinnedHop = async (params) => {
|
|
|
1397
1434
|
}, params.timeoutMs);
|
|
1398
1435
|
timeout.unref?.();
|
|
1399
1436
|
const onAbort = () => request.destroy(
|
|
1400
|
-
new
|
|
1437
|
+
new PublicHttpError(
|
|
1401
1438
|
"web_request_aborted",
|
|
1402
1439
|
"The web request was aborted."
|
|
1403
1440
|
)
|
|
@@ -1406,18 +1443,18 @@ var requestPinnedHop = async (params) => {
|
|
|
1406
1443
|
request.once("error", (error) => {
|
|
1407
1444
|
if (settled) return;
|
|
1408
1445
|
settled = true;
|
|
1409
|
-
if (
|
|
1446
|
+
if (isPublicHttpError(error)) {
|
|
1410
1447
|
reject(error);
|
|
1411
1448
|
} else if (timedOut) {
|
|
1412
1449
|
reject(
|
|
1413
|
-
new
|
|
1450
|
+
new PublicHttpError(
|
|
1414
1451
|
"web_request_timed_out",
|
|
1415
1452
|
"The upstream web request timed out."
|
|
1416
1453
|
)
|
|
1417
1454
|
);
|
|
1418
1455
|
} else {
|
|
1419
1456
|
reject(
|
|
1420
|
-
new
|
|
1457
|
+
new PublicHttpError(
|
|
1421
1458
|
"web_response_invalid",
|
|
1422
1459
|
"The upstream web request failed."
|
|
1423
1460
|
)
|
|
@@ -1432,7 +1469,7 @@ var requestPinnedHop = async (params) => {
|
|
|
1432
1469
|
});
|
|
1433
1470
|
};
|
|
1434
1471
|
|
|
1435
|
-
//
|
|
1472
|
+
// src/shared/public-http/public-http.ts
|
|
1436
1473
|
var REDIRECT_STATUSES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
1437
1474
|
function canFollowHttpRedirect(request, status) {
|
|
1438
1475
|
if (request.followRedirects === false) return false;
|
|
@@ -1443,9 +1480,9 @@ function redirectLocation(response) {
|
|
|
1443
1480
|
return Array.isArray(raw) ? raw[0] : raw;
|
|
1444
1481
|
}
|
|
1445
1482
|
function validateBounds(request) {
|
|
1446
|
-
const maxBytes = request.maxBytes ??
|
|
1447
|
-
const maxRedirects = request.maxRedirects ??
|
|
1448
|
-
const timeoutMs = request.timeoutMs ??
|
|
1483
|
+
const maxBytes = request.maxBytes ?? PUBLIC_HTTP_LIMITS.responseBytes;
|
|
1484
|
+
const maxRedirects = request.maxRedirects ?? PUBLIC_HTTP_LIMITS.redirects;
|
|
1485
|
+
const timeoutMs = request.timeoutMs ?? PUBLIC_HTTP_LIMITS.requestTimeoutMs;
|
|
1449
1486
|
if (!Number.isSafeInteger(maxBytes) || maxBytes < 1) {
|
|
1450
1487
|
throw new RangeError("maxBytes must be a positive safe integer");
|
|
1451
1488
|
}
|
|
@@ -1461,8 +1498,8 @@ function createPublicHttpClient(dependencies = {}) {
|
|
|
1461
1498
|
const resolveHost = dependencies.resolveHost;
|
|
1462
1499
|
const requestHop = dependencies.requestHop ?? requestPinnedHop;
|
|
1463
1500
|
const gate = createAggregateGate(
|
|
1464
|
-
|
|
1465
|
-
|
|
1501
|
+
PUBLIC_HTTP_LIMITS.httpConcurrency,
|
|
1502
|
+
PUBLIC_HTTP_LIMITS.httpQueueLimit
|
|
1466
1503
|
);
|
|
1467
1504
|
return Object.freeze({
|
|
1468
1505
|
async get(request) {
|
|
@@ -1502,13 +1539,13 @@ function createPublicHttpClient(dependencies = {}) {
|
|
|
1502
1539
|
}
|
|
1503
1540
|
const location = redirectLocation(response);
|
|
1504
1541
|
if (!location) {
|
|
1505
|
-
throw new
|
|
1542
|
+
throw new PublicHttpError(
|
|
1506
1543
|
"web_redirect_invalid",
|
|
1507
1544
|
"The upstream redirect did not provide a valid destination."
|
|
1508
1545
|
);
|
|
1509
1546
|
}
|
|
1510
1547
|
if (redirectCount >= bounds.maxRedirects) {
|
|
1511
|
-
throw new
|
|
1548
|
+
throw new PublicHttpError(
|
|
1512
1549
|
"web_redirect_limit_exceeded",
|
|
1513
1550
|
"The web request exceeded the redirect limit."
|
|
1514
1551
|
);
|
|
@@ -1516,8 +1553,8 @@ function createPublicHttpClient(dependencies = {}) {
|
|
|
1516
1553
|
try {
|
|
1517
1554
|
current = parsePublicHttpUrl(new URL(location, current).toString());
|
|
1518
1555
|
} catch (error) {
|
|
1519
|
-
if (
|
|
1520
|
-
throw new
|
|
1556
|
+
if (isPublicHttpError(error)) throw error;
|
|
1557
|
+
throw new PublicHttpError(
|
|
1521
1558
|
"web_redirect_invalid",
|
|
1522
1559
|
"The upstream redirect did not provide a valid destination."
|
|
1523
1560
|
);
|
|
@@ -1527,6 +1564,20 @@ function createPublicHttpClient(dependencies = {}) {
|
|
|
1527
1564
|
});
|
|
1528
1565
|
}
|
|
1529
1566
|
|
|
1567
|
+
// plugins/web/source/public-http.ts
|
|
1568
|
+
function createPublicHttpClient2(dependencies = {}) {
|
|
1569
|
+
const client = createPublicHttpClient(dependencies);
|
|
1570
|
+
return Object.freeze({
|
|
1571
|
+
async get(request) {
|
|
1572
|
+
try {
|
|
1573
|
+
return await client.get(request);
|
|
1574
|
+
} catch (error) {
|
|
1575
|
+
return rethrowWebPluginError(error);
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
});
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1530
1581
|
// plugins/web/source/research.ts
|
|
1531
1582
|
function uniqueHits(results) {
|
|
1532
1583
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -2141,9 +2192,9 @@ function readSource(value) {
|
|
|
2141
2192
|
value.allowedOrigins,
|
|
2142
2193
|
"allowedOrigins",
|
|
2143
2194
|
8
|
|
2144
|
-
).map((origin) =>
|
|
2195
|
+
).map((origin) => parsePublicHttpUrl2(origin).origin);
|
|
2145
2196
|
const entryUrls = readSourceStrings(value.entryUrls, "entryUrls", 8).map(
|
|
2146
|
-
(url) =>
|
|
2197
|
+
(url) => parsePublicHttpUrl2(url).toString()
|
|
2147
2198
|
);
|
|
2148
2199
|
for (const url of entryUrls) {
|
|
2149
2200
|
if (url.length > 1024)
|
|
@@ -2220,6 +2271,15 @@ function readLightConfig(value) {
|
|
|
2220
2271
|
});
|
|
2221
2272
|
}
|
|
2222
2273
|
|
|
2274
|
+
// plugins/web/source/deadline.ts
|
|
2275
|
+
async function withinDeadline2(promise, deadline, abortSignal) {
|
|
2276
|
+
try {
|
|
2277
|
+
return await withinDeadline(promise, deadline, abortSignal);
|
|
2278
|
+
} catch (error) {
|
|
2279
|
+
return rethrowWebPluginError(error);
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2223
2283
|
// plugins/web/source/light/crawl/origin-gate.ts
|
|
2224
2284
|
function createOriginGate(maxActive, maxPerOrigin) {
|
|
2225
2285
|
const activeOrigins = /* @__PURE__ */ new Map();
|
|
@@ -2321,7 +2381,7 @@ function createOriginGate(maxActive, maxPerOrigin) {
|
|
|
2321
2381
|
const release = await acquire(origin, deadline, signal);
|
|
2322
2382
|
const work = Promise.resolve().then(operation);
|
|
2323
2383
|
void work.then(release, release);
|
|
2324
|
-
return await
|
|
2384
|
+
return await withinDeadline2(work, deadline, signal);
|
|
2325
2385
|
}
|
|
2326
2386
|
});
|
|
2327
2387
|
}
|
|
@@ -2726,7 +2786,7 @@ function createRobotsPolicy(config, admittedOrigins) {
|
|
|
2726
2786
|
document.sitemaps.filter((rawUrl) => {
|
|
2727
2787
|
if (rawUrl.length > WEB_LIMITS.upstreamUrlChars) return false;
|
|
2728
2788
|
try {
|
|
2729
|
-
return admittedOrigins.has(
|
|
2789
|
+
return admittedOrigins.has(parsePublicHttpUrl2(rawUrl).origin);
|
|
2730
2790
|
} catch {
|
|
2731
2791
|
return false;
|
|
2732
2792
|
}
|
|
@@ -2864,7 +2924,7 @@ function parseLightUrl(raw) {
|
|
|
2864
2924
|
"The Light source URL exceeds its length limit."
|
|
2865
2925
|
);
|
|
2866
2926
|
}
|
|
2867
|
-
return
|
|
2927
|
+
return parsePublicHttpUrl2(raw);
|
|
2868
2928
|
}
|
|
2869
2929
|
function redirectTarget(response, current) {
|
|
2870
2930
|
const raw = response.headers.location;
|
|
@@ -3260,7 +3320,7 @@ function boundedDiscoveryText(value, maxChars = 800) {
|
|
|
3260
3320
|
function resolveDiscoveryUrl(value, base) {
|
|
3261
3321
|
if (!value || value.length > 4096) return void 0;
|
|
3262
3322
|
try {
|
|
3263
|
-
const parsed =
|
|
3323
|
+
const parsed = parsePublicHttpUrl2(new URL(value.trim(), base).toString());
|
|
3264
3324
|
parsed.hash = "";
|
|
3265
3325
|
return parsed.toString();
|
|
3266
3326
|
} catch {
|
|
@@ -3898,7 +3958,7 @@ async function readLightDocument(params) {
|
|
|
3898
3958
|
// plugins/web/source/light/search-frontier.ts
|
|
3899
3959
|
function admittedCandidateUrl(url, source) {
|
|
3900
3960
|
try {
|
|
3901
|
-
const parsed =
|
|
3961
|
+
const parsed = parsePublicHttpUrl2(url);
|
|
3902
3962
|
if (!source.allowedOrigins.includes(parsed.origin)) return void 0;
|
|
3903
3963
|
parsed.hash = "";
|
|
3904
3964
|
if (parsed.toString().length > 1024) return void 0;
|
|
@@ -4413,7 +4473,7 @@ function parseBraveHits(body, query) {
|
|
|
4413
4473
|
if (!title || !rawUrl) continue;
|
|
4414
4474
|
let parsed;
|
|
4415
4475
|
try {
|
|
4416
|
-
parsed =
|
|
4476
|
+
parsed = parsePublicHttpUrl2(rawUrl);
|
|
4417
4477
|
} catch {
|
|
4418
4478
|
continue;
|
|
4419
4479
|
}
|
|
@@ -4722,7 +4782,7 @@ function failure(error, operation) {
|
|
|
4722
4782
|
});
|
|
4723
4783
|
}
|
|
4724
4784
|
function createWebPlugin(context, dependencies = {}) {
|
|
4725
|
-
const httpClient = dependencies.httpClient ??
|
|
4785
|
+
const httpClient = dependencies.httpClient ?? createPublicHttpClient2();
|
|
4726
4786
|
const fetchService = createWebFetchService(httpClient);
|
|
4727
4787
|
const braveApiKey = context.secrets?.get("braveSearchApiKey")?.trim() ?? "";
|
|
4728
4788
|
const retryBaseMs = readBoundedInteger(context.config?.retryBaseMs, {
|
|
@@ -339,6 +339,13 @@
|
|
|
339
339
|
"properties": {
|
|
340
340
|
"enabled": { "type": "boolean", "default": false },
|
|
341
341
|
"emitClientEvents": { "type": "boolean", "default": false },
|
|
342
|
+
"maxRecallCallsPerRequest": {
|
|
343
|
+
"type": "integer",
|
|
344
|
+
"minimum": 1,
|
|
345
|
+
"maximum": 9007199254740991,
|
|
346
|
+
"default": 5,
|
|
347
|
+
"description": "Maximum explicit memory recall calls offered per request."
|
|
348
|
+
},
|
|
342
349
|
"embeddingProfileId": {
|
|
343
350
|
"type": "string",
|
|
344
351
|
"minLength": 1,
|
package/src/runtime/README.md
CHANGED
|
@@ -46,6 +46,12 @@ The production path is:
|
|
|
46
46
|
kernel establishes one immutable normalized working directory on the root
|
|
47
47
|
call from the accepted Execution Agent decision; an explicit `null`
|
|
48
48
|
selection resolves to `.`.
|
|
49
|
+
When long-term memory is enabled, either root contract may instead select
|
|
50
|
+
`recall_memory`. The kernel invokes the Runtime memory service directly,
|
|
51
|
+
commits a root-bound passive receipt, and resumes the same root under the
|
|
52
|
+
existing activation ceiling. Recall neither creates a child nor consumes a
|
|
53
|
+
capability execution. The bounded projection belongs only to the current
|
|
54
|
+
root steering version and is reused during terminal response authoring.
|
|
49
55
|
6. Only the canonical root commits the root response. The selected contract
|
|
50
56
|
may use its own presentation step, but the request finalizer, persistence,
|
|
51
57
|
terminal observation, and completion path are shared.
|
|
@@ -155,7 +161,7 @@ or model prose.
|
|
|
155
161
|
|
|
156
162
|
## Canonical State
|
|
157
163
|
|
|
158
|
-
`orchestration/role-calls/` ledger
|
|
164
|
+
`orchestration/role-calls/` ledger v18 is the sole writer of the request-local call tree
|
|
159
165
|
and role results. Each call frame records its caller, role, bounded objective,
|
|
160
166
|
depth, status, result reference, and any canonical capability catalog-group
|
|
161
167
|
scope. An authorized root, Planner, or Worker may also record one normalized
|
|
@@ -450,6 +456,104 @@ terminal-text behavior.
|
|
|
450
456
|
|
|
451
457
|
## Public Package Boundary
|
|
452
458
|
|
|
459
|
+
### Scheduler lifecycle
|
|
460
|
+
|
|
461
|
+
For installed clients, use `createLocalRuntimeApplication(config)` from
|
|
462
|
+
`@abot-ai/runtime/runtime`. It automatically attaches to or creates one local
|
|
463
|
+
environment owner. Web and Bridge use the same managed facade, so requests,
|
|
464
|
+
session deletion and scheduling share admission across processes. Start with
|
|
465
|
+
`await application.start()` and close with `await application.stop()`; closing
|
|
466
|
+
an attached client leaves the owner running. See
|
|
467
|
+
[local ownership and client lifecycle](local-host/README.md).
|
|
468
|
+
|
|
469
|
+
`createRuntimeApplication` composes one local scheduler and its management
|
|
470
|
+
capability. Call `await application.start()` to load persisted Jobs and begin
|
|
471
|
+
the clock, and `await application.stop()` when shutting down. The local Web
|
|
472
|
+
backend starts all configured environments without waiting for a browser visit.
|
|
473
|
+
Scheduling can also start lazily when its built-in capability is first invoked.
|
|
474
|
+
After shutdown, explicit application or compatibility-host startup can restart
|
|
475
|
+
the same scheduler. Lazy management cannot revive a stopped scheduler. New
|
|
476
|
+
subscribers belong to the restarted lifecycle; old run events cannot cross into
|
|
477
|
+
it, and interrupted work is never retried.
|
|
478
|
+
|
|
479
|
+
The compatibility `createDefaultRuntimeDependencies(config).host.start()` and
|
|
480
|
+
standalone default host also start their composed scheduler automatically. The
|
|
481
|
+
synchronous handle exposes optional `ready` for asynchronous startup and `stop`
|
|
482
|
+
for both scheduler and Bridge; host requests and optional steering await
|
|
483
|
+
readiness and reject after shutdown. Host adapter overrides that change execution
|
|
484
|
+
or storage rebuild the scheduling graph. An event-only override rebinds future
|
|
485
|
+
scheduled requests while preserving the existing scheduler, admission, session
|
|
486
|
+
guard and subscriptions; running requests keep their captured sink. Starting the
|
|
487
|
+
default host again restores its sink for future schedules. The default-adapters
|
|
488
|
+
facade delegates these
|
|
489
|
+
responsibilities to `runtime-environment`, `runtime-host-environment` and
|
|
490
|
+
`runtime-host-lifecycle`; caller-supplied stores and registries remain injected.
|
|
491
|
+
|
|
492
|
+
`application.services.scheduler` provides create/list/get/update/pause/resume/
|
|
493
|
+
cancel/runNow and run history. Model calls bind the current conversation and
|
|
494
|
+
model mechanically; the Web page selects an existing conversation and model.
|
|
495
|
+
Each scheduled run enters the ordinary request handler with FULL permissions,
|
|
496
|
+
its saved model, current canonical history, and one persisted trigger message.
|
|
497
|
+
The trigger's immutable `schedule` reference identifies the Job and Run; its
|
|
498
|
+
message content is the exact historical prompt. Provenance comes from an internal
|
|
499
|
+
scheduler option bound to the exact request and session, never from public
|
|
500
|
+
`run_request` fields. Supplied `schedule` fields do not mark ordinary requests as
|
|
501
|
+
scheduled. Scheduled events can be observed
|
|
502
|
+
through `application.subscribeScheduledEvents`. Consumers may supply
|
|
503
|
+
`scheduledRequestOptions` for the existing approval and steering controllers.
|
|
504
|
+
Scheduled terminal events are published once after the handler settles. Success
|
|
505
|
+
requires the correlated assistant reply in canonical session storage; missing or
|
|
506
|
+
failed persistence is published as failure instead of an earlier completion.
|
|
507
|
+
|
|
508
|
+
Session admission defers scheduled work while ordinary requests are active;
|
|
509
|
+
subsequent ordinary requests wait for a running scheduled reservation. Existing
|
|
510
|
+
ordinary-request concurrency is unchanged when no scheduled reservation exists.
|
|
511
|
+
The composed SessionStore facade serializes mutations and marks deletion intent
|
|
512
|
+
synchronously. It uses the injected backing store but intentionally does not
|
|
513
|
+
preserve that object's identity: all callers must use the composed facade for
|
|
514
|
+
deletion and request persistence to share the lifetime guard.
|
|
515
|
+
|
|
516
|
+
Session deletion keeps its tombstone even if backing deletion or cleanup fails.
|
|
517
|
+
A later explicit delete retries only failed listeners from the original deletion;
|
|
518
|
+
successful cleanup is not repeated and newly registered listeners are not
|
|
519
|
+
retroactive. Concurrent deletes share the cleanup attempt until all listeners
|
|
520
|
+
settle. Successful physical deletion retains its original result until cleanup
|
|
521
|
+
succeeds, so an explicit retry can finish consumer attachment cleanup. Both
|
|
522
|
+
delete APIs use the backing store's statistics operation; the boolean API projects
|
|
523
|
+
its `deleted` result. The receipt is delivered once, including across API variants.
|
|
524
|
+
Cleanup never revives the session or reruns scheduled work.
|
|
525
|
+
|
|
526
|
+
See [scheduler ownership and time rules](scheduler/README.md) for persistence,
|
|
527
|
+
offline behavior, cancellation, and local ownership locking. Stopping does not
|
|
528
|
+
drain active model requests or retry interrupted work. This lifecycle does not
|
|
529
|
+
start a separate model loop or alter the Supervisor/Worker/Execution Agent roles.
|
|
530
|
+
|
|
531
|
+
The conversation-scoped `schedules.list` tool returns at most 100 Jobs per page,
|
|
532
|
+
newest first, without their stored prompts. Pass `nextCursor` as `cursor` to
|
|
533
|
+
continue until it is null; `omittedCount` describes the entries after that page.
|
|
534
|
+
A stale cursor fails explicitly and requires listing from the beginning. This
|
|
535
|
+
passive listing never schedules or executes work; `get` resolves an exact Job ID.
|
|
536
|
+
`get` requests the latest 20 runs from storage before loading their payloads and
|
|
537
|
+
returns that bounded history in chronological order, without pruning older runs.
|
|
538
|
+
|
|
539
|
+
Creation is projected as six flat operations (`create_timer`, `create_once`,
|
|
540
|
+
`create_interval`, `create_daily`, `create_weekly`, `create_monthly`). Each fixes
|
|
541
|
+
the adapter's `action=create` and schedule kind mechanically and requires only
|
|
542
|
+
its relevant timing fields. Calendar variants require an explicit IANA time zone.
|
|
543
|
+
Missing required timing is rejected before dispatch; model and conversation
|
|
544
|
+
binding remain owned by the active request. Recurrence changes use six matching
|
|
545
|
+
`update_*` operations with complete required timing and fixed action/kind.
|
|
546
|
+
The plain `update` operation edits metadata while retaining the recurrence;
|
|
547
|
+
omitted time zone, model and mode retain their saved values. The scheduling tool
|
|
548
|
+
has 19 operations under the shared 32-operation contract limit. Other management
|
|
549
|
+
operations and the underlying scheduler service keep their existing contracts.
|
|
550
|
+
|
|
551
|
+
`SchedulerService.listRuns` preserves complete chronological results when no
|
|
552
|
+
query is supplied. Optional cursor/limit queries return bounded newest-first
|
|
553
|
+
records with an exact Job-scoped run cursor. The Web requests one lookahead
|
|
554
|
+
record before owner RPC serialization, returns 50 runs by default (maximum 100),
|
|
555
|
+
and preserves access to older full records.
|
|
556
|
+
|
|
453
557
|
Stable public subpath exports are:
|
|
454
558
|
|
|
455
559
|
- `@abot-ai/runtime/runtime`
|