@abot-ai/runtime 1.1.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 +20 -3
- 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 +6 -1
- package/dist/src/cli/abot.js +2 -11
- package/dist/src/model-gateway/providers/ollama/generation-options.d.ts +1 -3
- package/dist/src/model-gateway/providers/ollama/generation-options.js +1 -5
- package/dist/src/model-gateway/providers/ollama/payload.js +0 -8
- package/dist/src/model-gateway/server/request-body.js +1 -0
- package/dist/src/plugin-sdk/index.d.ts +2 -0
- package/dist/src/plugin-sdk/index.js +2 -0
- package/dist/src/plugin-sdk/tool-availability-brief.d.ts +9 -0
- package/dist/src/plugin-sdk/tool-availability-brief.js +48 -0
- package/dist/src/plugin-sdk/tool-availability-overview.d.ts +9 -0
- package/dist/src/plugin-sdk/tool-availability-overview.js +62 -0
- 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-payload-plan.d.ts +0 -9
- package/dist/src/runtime/adapters/registered-tool-payload-plan.js +0 -67
- package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +13 -0
- package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +84 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/catalog.js +4 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +19 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +11 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +2 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +9 -1
- 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/request-bound-tool-registry.js +1 -24
- 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/capabilities/tool-availability.d.ts +6 -0
- package/dist/src/runtime/capabilities/tool-availability.js +28 -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/capability-brief.d.ts +25 -0
- package/dist/src/runtime/context/capability-brief.js +106 -0
- package/dist/src/runtime/context/request-tool-results-message-binding.d.ts +6 -0
- package/dist/src/runtime/context/request-tool-results-message-binding.js +30 -0
- package/dist/src/runtime/context/request-tool-results-scope.d.ts +3 -0
- package/dist/src/runtime/context/request-tool-results-scope.js +8 -0
- package/dist/src/runtime/context/request-tool-results.d.ts +8 -4
- package/dist/src/runtime/context/request-tool-results.js +49 -38
- 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 +17 -50
- 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/child-return.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/child-return.js +25 -5
- package/dist/src/runtime/orchestration/role-calls/command-decoder.js +12 -3
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +17 -2
- 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.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +7 -2
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +12 -7
- package/dist/src/runtime/orchestration/role-calls/contracts.js +4 -4
- package/dist/src/runtime/orchestration/role-calls/dependency-results.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/dependency-results.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/diagnostics.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/index.d.ts +6 -1
- package/dist/src/runtime/orchestration/role-calls/index.js +6 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +3 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.js +9 -2
- 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.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/reducer.js +3 -2
- package/dist/src/runtime/orchestration/role-calls/result-receipt.d.ts +49 -0
- package/dist/src/runtime/orchestration/role-calls/result-receipt.js +188 -0
- package/dist/src/runtime/orchestration/role-calls/return-result-receipt.d.ts +19 -0
- package/dist/src/runtime/orchestration/role-calls/return-result-receipt.js +52 -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 +4 -24
- package/dist/src/runtime/orchestration/role-calls/work-result-lineage.d.ts +34 -0
- package/dist/src/runtime/orchestration/role-calls/work-result-lineage.js +185 -0
- package/dist/src/runtime/orchestration/role-calls/work-result-receipt.d.ts +36 -0
- package/dist/src/runtime/orchestration/role-calls/work-result-receipt.js +187 -0
- package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +6 -3
- package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.js +1 -0
- package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +2 -1
- package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.d.ts +36 -0
- package/dist/src/runtime/orchestration/worker-capabilities/assignment-provenance.js +171 -0
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +32 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.d.ts +2 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution.js +42 -19
- package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/index.js +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.d.ts +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.js +30 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +8 -19
- package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +5 -1
- package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.d.ts +14 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-source-provenance.js +132 -0
- 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/capability-brief.d.ts +5 -0
- package/dist/src/runtime/request/capability-brief.js +24 -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 +3 -2
- package/dist/src/runtime/request/handler.js +6 -0
- package/dist/src/runtime/request/role-executor-composition.js +1 -1
- 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/request/worker-capability-composition.d.ts +2 -1
- package/dist/src/runtime/request/worker-capability-composition.js +6 -1
- package/dist/src/runtime/request/worker-capability-payload.js +11 -8
- 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 +6 -3
- 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/planner-decision/capability-catalog-context.d.ts +14 -0
- package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +87 -0
- package/dist/src/runtime/steps/planner-decision/contracts.d.ts +3 -5
- package/dist/src/runtime/steps/planner-decision/contracts.js +3 -3
- package/dist/src/runtime/steps/planner-decision/format.d.ts +3 -2
- package/dist/src/runtime/steps/planner-decision/format.js +73 -76
- package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -3
- package/dist/src/runtime/steps/planner-decision/input.js +10 -7
- package/dist/src/runtime/steps/planner-decision/parser.d.ts +3 -2
- package/dist/src/runtime/steps/planner-decision/parser.js +10 -19
- package/dist/src/runtime/steps/planner-decision/plan-parser.js +18 -12
- package/dist/src/runtime/steps/planner-decision/prompt.js +33 -28
- package/dist/src/runtime/steps/planner-decision/resume.d.ts +1 -1
- package/dist/src/runtime/steps/planner-decision/resume.js +38 -1
- package/dist/src/runtime/steps/planner-decision/run.d.ts +3 -2
- package/dist/src/runtime/steps/reviewer-decision/audit-coverage.d.ts +10 -0
- package/dist/src/runtime/steps/reviewer-decision/audit-coverage.js +186 -0
- package/dist/src/runtime/steps/reviewer-decision/contracts.d.ts +3 -8
- package/dist/src/runtime/steps/reviewer-decision/contracts.js +12 -6
- package/dist/src/runtime/steps/reviewer-decision/delegated-context.d.ts +24 -0
- package/dist/src/runtime/steps/reviewer-decision/delegated-context.js +70 -0
- package/dist/src/runtime/steps/reviewer-decision/diagnostics.js +1 -1
- package/dist/src/runtime/steps/reviewer-decision/format.js +37 -24
- package/dist/src/runtime/steps/reviewer-decision/input.js +1 -1
- package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +4 -3
- package/dist/src/runtime/steps/reviewer-decision/model-context.js +92 -10
- package/dist/src/runtime/steps/reviewer-decision/parser.js +19 -1
- package/dist/src/runtime/steps/reviewer-decision/projection.js +42 -68
- package/dist/src/runtime/steps/reviewer-decision/prompt.js +10 -5
- package/dist/src/runtime/steps/reviewer-decision/run.js +12 -3
- package/dist/src/runtime/steps/reviewer-decision/verification-coverage.d.ts +14 -0
- package/dist/src/runtime/steps/reviewer-decision/verification-coverage.js +52 -0
- package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +14 -0
- package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +38 -0
- package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +11 -5
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +4 -0
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +21 -8
- package/dist/src/runtime/steps/supervisor-decision/format.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/format.js +73 -22
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +9 -2
- package/dist/src/runtime/steps/supervisor-decision/input.js +44 -6
- 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 +97 -59
- package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +22 -15
- 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 +60 -1
- package/dist/src/runtime/steps/supervisor-decision/run.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +29 -0
- package/dist/src/runtime/steps/supervisor-decision/working-directory.js +8 -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/runtime/steps/worker-decision/contracts.d.ts +2 -1
- package/dist/src/runtime/steps/worker-decision/input/canonical-state.js +8 -1
- package/dist/src/runtime/steps/worker-decision/input/diagnostic-projection.js +2 -2
- package/dist/src/runtime/steps/worker-decision/input/prompt-context.d.ts +1 -0
- package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +4 -1
- package/dist/src/runtime/steps/worker-decision/input/reference-context.js +34 -14
- package/dist/src/runtime/steps/worker-decision/input/types.d.ts +2 -1
- package/dist/src/runtime/steps/worker-decision/input.d.ts +1 -0
- package/dist/src/runtime/steps/worker-decision/input.js +1 -0
- package/dist/src/runtime/steps/worker-decision/payload-dependency-results.d.ts +8 -0
- package/dist/src/runtime/steps/worker-decision/payload-dependency-results.js +19 -0
- package/dist/src/runtime/steps/worker-decision/prompt.js +8 -8
- package/dist/src/runtime/steps/worker-decision/result-author.js +18 -11
- package/dist/src/runtime/steps/worker-decision/run.js +2 -2
- 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 +82 -7
- 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 +199 -217
- package/dist/src/web-ui/app/components/composer-context-window.d.ts +25 -0
- package/dist/src/web-ui/app/components/composer-context-window.js +155 -0
- package/dist/src/web-ui/app/components/composer-plan.d.ts +9 -0
- package/dist/src/web-ui/app/components/composer-plan.js +128 -0
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +7 -6
- package/dist/src/web-ui/app/components/conversation-activity.js +97 -163
- package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +24 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.js +237 -0
- package/dist/src/web-ui/app/components/conversation-schedule.js +71 -0
- package/dist/src/web-ui/app/components/conversation-sidebar-layout.js +12 -0
- package/dist/src/web-ui/app/components/conversation-sources.d.ts +7 -0
- package/dist/src/web-ui/app/components/conversation-sources.js +182 -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 +73 -17
- 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/model-selector.js +4 -1
- package/dist/src/web-ui/app/components/operations-section.js +46 -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 +133 -79
- 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 +2 -0
- package/dist/src/web-ui/app/controllers/realtime-event-controller.js +126 -90
- 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 +17 -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 +47 -15
- package/dist/src/web-ui/app/dashboard-feature.js +44 -0
- package/dist/src/web-ui/app/index.html +240 -189
- package/dist/src/web-ui/app/lib/composer-plan-model.d.ts +32 -0
- package/dist/src/web-ui/app/lib/composer-plan-model.js +108 -0
- 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 +28 -0
- package/dist/src/web-ui/app/lib/conversation-role-model.js +275 -0
- 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/event-presentation.js +30 -9
- 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/source-url-policy.d.ts +2 -0
- package/dist/src/web-ui/app/lib/source-url-policy.js +31 -0
- package/dist/src/web-ui/app/lib/task-progress.d.ts +53 -0
- package/dist/src/web-ui/app/lib/task-progress.js +233 -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-invocation-count.d.ts +5 -0
- package/dist/src/web-ui/app/lib/tool-invocation-count.js +21 -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/lib/web-source-event.d.ts +8 -0
- package/dist/src/web-ui/app/lib/web-source-event.js +21 -0
- package/dist/src/web-ui/app/lib/web-sources.d.ts +36 -0
- package/dist/src/web-ui/app/lib/web-sources.js +177 -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 +15 -3
- package/dist/src/web-ui/app/styles/10-shell-sessions.css +24 -34
- package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +93 -0
- package/dist/src/web-ui/app/styles/18-dashboard.css +384 -0
- package/dist/src/web-ui/app/styles/20-chat-composer.css +54 -600
- package/dist/src/web-ui/app/styles/21-composer-controls.css +368 -0
- package/dist/src/web-ui/app/styles/22-composer-context-window.css +90 -0
- package/dist/src/web-ui/app/styles/23-composer-plan.css +171 -0
- package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +205 -0
- package/dist/src/web-ui/app/styles/25-conversation-sources.css +141 -0
- 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/30-inspector-config.css +21 -209
- package/dist/src/web-ui/app/styles/35-memory-onboarding.css +8 -8
- package/dist/src/web-ui/app/styles/36-memory-management.css +13 -13
- package/dist/src/web-ui/app/styles/37-config-operations.css +197 -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/40-config-workspace.css +36 -36
- package/dist/src/web-ui/app/styles/90-responsive.css +28 -77
- 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/foundation.css +2 -2
- package/dist/src/web-ui/app/styles.css +15 -0
- package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
- package/dist/src/web-ui/app/ui-behavior.js +4 -2
- 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 +56 -9
- package/docs/installation.md +7 -4
- package/docs/known-limitations.md +21 -0
- package/docs/long-term-memory.md +46 -5
- package/docs/plugins.md +28 -13
- package/docs/runtime-invariant-coverage.md +18 -17
- package/docs/runtime-library.md +23 -0
- package/docs/runtime-prompt-policy-contracts.md +27 -17
- package/docs/runtime-public-contracts.md +32 -1
- package/package.json +6 -3
- package/plugins/capability-brief/source/index.ts +5 -48
- package/plugins/capability-brief/src/index.cjs +46 -33
- 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/system-probe/plugin.json +1 -0
- package/plugins/web/README.md +125 -0
- package/plugins/web/plugin.json +1 -1
- package/plugins/web/skills/web_fetch_skill/SKILL.md +2 -2
- package/plugins/web/skills/web_search_skill/SKILL.md +8 -4
- package/plugins/web/source/aggregate-gate.ts +8 -130
- package/plugins/web/source/deadline.ts +14 -50
- package/plugins/web/source/errors.ts +22 -12
- package/plugins/web/source/fetch-presentation.ts +61 -0
- package/plugins/web/source/fetch-service.ts +2 -31
- package/plugins/web/source/light/config.ts +196 -0
- package/plugins/web/source/light/crawl/origin-gate.ts +134 -0
- package/plugins/web/source/light/crawl/robots-cache.ts +71 -0
- package/plugins/web/source/light/crawl/robots-parser.ts +132 -0
- package/plugins/web/source/light/crawl/robots-policy.ts +154 -0
- package/plugins/web/source/light/crawl/session-budget.ts +141 -0
- package/plugins/web/source/light/crawl/transport.ts +216 -0
- package/plugins/web/source/light/discovery/candidate-values.ts +63 -0
- package/plugins/web/source/light/discovery/feed-document.ts +127 -0
- package/plugins/web/source/light/discovery/html-links.ts +80 -0
- package/plugins/web/source/light/discovery/html-robots-directives.ts +29 -0
- package/plugins/web/source/light/discovery/markup-tree.ts +145 -0
- package/plugins/web/source/light/discovery/origin-dates.ts +71 -0
- package/plugins/web/source/light/discovery/sitemap-document.ts +63 -0
- package/plugins/web/source/light/documents/cache-policy.ts +28 -0
- package/plugins/web/source/light/documents/document-cache.ts +99 -0
- package/plugins/web/source/light/documents/document-charset.ts +89 -0
- package/plugins/web/source/light/documents/document-contract.ts +20 -0
- package/plugins/web/source/light/documents/document-reader.ts +75 -0
- package/plugins/web/source/light/documents/extract-document.ts +124 -0
- package/plugins/web/source/light/documents/http-cache-freshness.ts +68 -0
- package/plugins/web/source/light/documents/response-decoding.ts +120 -0
- package/plugins/web/source/light/ranking/document-ranking.ts +114 -0
- package/plugins/web/source/light/ranking/query-normalization.ts +69 -0
- package/plugins/web/source/light/search-collection.ts +136 -0
- package/plugins/web/source/light/search-frontier.ts +246 -0
- package/plugins/web/source/light/search-metadata.ts +84 -0
- package/plugins/web/source/light/search-service.ts +154 -0
- package/plugins/web/source/light/search-unavailable.ts +33 -0
- package/plugins/web/source/light/sources/catalog.ts +312 -0
- package/plugins/web/source/light/sources/source-definition.ts +9 -0
- package/plugins/web/source/light/sources/source-selection.ts +35 -0
- package/plugins/web/source/limits.ts +3 -6
- package/plugins/web/source/network-policy.ts +28 -226
- package/plugins/web/source/plugin.ts +70 -56
- package/plugins/web/source/public-http.ts +17 -133
- package/plugins/web/source/request-hop.ts +11 -191
- package/plugins/web/source/search-presentation.ts +63 -63
- package/plugins/web/source/search-service-selector.ts +31 -0
- package/plugins/web/source/search-service.ts +6 -0
- package/plugins/web/source/search-source-presentation.ts +76 -0
- package/plugins/web/source/search-types.ts +4 -0
- package/plugins/web/source/source-output-receipts.ts +267 -0
- package/plugins/web/source/source-receipt-budget.ts +51 -0
- package/plugins/web/source/source-receipt-contract.ts +18 -0
- package/plugins/web/src/index.cjs +3289 -303
- package/runtime.config.schema.json +7 -0
- package/src/runtime/README.md +134 -9
- package/src/runtime/local-host/README.md +86 -0
- package/src/runtime/scheduler/README.md +166 -0
- package/dist/src/model-gateway/structured-output/budget.d.ts +0 -7
- package/dist/src/model-gateway/structured-output/budget.js +0 -20
- package/dist/src/model-gateway/structured-output/schema-character-estimator.d.ts +0 -1
- package/dist/src/model-gateway/structured-output/schema-character-estimator.js +0 -211
- package/dist/src/model-gateway/structured-output-budget.d.ts +0 -1
- package/dist/src/model-gateway/structured-output-budget.js +0 -1
|
@@ -6,9 +6,11 @@ import { pathToFileURL } from "node:url";
|
|
|
6
6
|
import { WebSocketServer } from "ws";
|
|
7
7
|
import { inspectRuntimeConfigFileWithMeta } from "../runtime/config/loader.js";
|
|
8
8
|
import { loadDotEnvFile } from "../shared/load-dotenv.js";
|
|
9
|
+
import { createWebUiShutdown } from "./server-shutdown.js";
|
|
9
10
|
import { ExternalBridgeWebBackend } from "./external-bridge-backend.js";
|
|
10
11
|
import { LocalRuntimeWebBackend } from "./local-runtime-backend.js";
|
|
11
12
|
import { resolveWebUiAddress } from "./web-ui-address.js";
|
|
13
|
+
import { createLinkPreviewRouteHandler } from "./link-preview/routes.js";
|
|
12
14
|
const DEFAULT_WEB_BACKEND = "runtime";
|
|
13
15
|
const DEFAULT_BRIDGE_API_BASE = "http://127.0.0.1:8787/abot/api";
|
|
14
16
|
const DEFAULT_BRIDGE_REALTIME_URL = "ws://127.0.0.1:8787/abot/realtime";
|
|
@@ -226,8 +228,11 @@ export function startWebUiServer(overrides = {}) {
|
|
|
226
228
|
externalBridgeBackend.handleRealtimeConnection(client);
|
|
227
229
|
});
|
|
228
230
|
}
|
|
231
|
+
const handleLinkPreview = createLinkPreviewRouteHandler();
|
|
229
232
|
const server = createServer((req, res) => {
|
|
230
233
|
void (async () => {
|
|
234
|
+
if (await handleLinkPreview(req, res))
|
|
235
|
+
return;
|
|
231
236
|
const pathname = new URL(req.url || "/", "http://localhost").pathname;
|
|
232
237
|
if (pathname === "/web-config") {
|
|
233
238
|
sendJson(res, 200, {
|
|
@@ -301,7 +306,12 @@ export function startWebUiServer(overrides = {}) {
|
|
|
301
306
|
wss.emit("connection", ws, req);
|
|
302
307
|
});
|
|
303
308
|
});
|
|
304
|
-
|
|
309
|
+
const listenAbort = new AbortController();
|
|
310
|
+
server.listen({
|
|
311
|
+
port: options.port,
|
|
312
|
+
host: options.host,
|
|
313
|
+
signal: listenAbort.signal,
|
|
314
|
+
}, () => {
|
|
305
315
|
console.log(`abot web UI listening on http://${options.host}:${options.port}`);
|
|
306
316
|
if (localRuntimeBackend) {
|
|
307
317
|
console.log("using local abot backend");
|
|
@@ -311,16 +321,9 @@ export function startWebUiServer(overrides = {}) {
|
|
|
311
321
|
console.log(`using external bridge realtime ${options.realtimeUrl}`);
|
|
312
322
|
}
|
|
313
323
|
});
|
|
324
|
+
const schedulerStartup = localRuntimeBackend?.start(options.environments.map(({ id }) => id));
|
|
314
325
|
return {
|
|
315
|
-
close: () =>
|
|
316
|
-
wss.close();
|
|
317
|
-
server.close((error) => {
|
|
318
|
-
if (error)
|
|
319
|
-
reject(error);
|
|
320
|
-
else
|
|
321
|
-
resolveClose();
|
|
322
|
-
});
|
|
323
|
-
}),
|
|
326
|
+
close: createWebUiShutdown(server, wss, schedulerStartup, () => localRuntimeBackend?.stop(), listenAbort),
|
|
324
327
|
};
|
|
325
328
|
}
|
|
326
329
|
const invokedPath = process.argv[1] ? pathToFileURL(process.argv[1]).href : "";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Isolate UI sidecar failures; canonical session operations stay outside this boundary. */
|
|
2
|
+
export declare function captureReadStateAvailability<T>(operation: () => Promise<T>): Promise<{
|
|
3
|
+
readStateStatus: "available";
|
|
4
|
+
value: Awaited<T>;
|
|
5
|
+
} | {
|
|
6
|
+
readStateStatus: "unavailable";
|
|
7
|
+
value?: undefined;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function unavailableSessionReadState(sessionId: string): {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
readStateStatus: "unavailable";
|
|
12
|
+
unreadCount: null;
|
|
13
|
+
hasUnread: null;
|
|
14
|
+
lastReadAt: null;
|
|
15
|
+
lastReadMessageId: null;
|
|
16
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Isolate UI sidecar failures; canonical session operations stay outside this boundary. */
|
|
2
|
+
export async function captureReadStateAvailability(operation) {
|
|
3
|
+
try {
|
|
4
|
+
return { readStateStatus: "available", value: await operation() };
|
|
5
|
+
}
|
|
6
|
+
catch (error) {
|
|
7
|
+
console.error("Web UI read tracking unavailable:", error);
|
|
8
|
+
return { readStateStatus: "unavailable" };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function unavailableSessionReadState(sessionId) {
|
|
12
|
+
return {
|
|
13
|
+
sessionId,
|
|
14
|
+
readStateStatus: "unavailable",
|
|
15
|
+
unreadCount: null,
|
|
16
|
+
hasUnread: null,
|
|
17
|
+
lastReadAt: null,
|
|
18
|
+
lastReadMessageId: null,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SessionSnapshotMessage } from "../../sessions/types.js";
|
|
2
|
+
import type { WebReadState } from "./store.js";
|
|
3
|
+
export type ReadBoundary = {
|
|
4
|
+
readThroughMessageId?: unknown;
|
|
5
|
+
readThroughRequestId?: unknown;
|
|
6
|
+
};
|
|
7
|
+
export declare function advanceReadCursor(state: WebReadState, sessionId: string, messages: SessionSnapshotMessage[], boundary: ReadBoundary, now: number): void;
|
|
8
|
+
export declare function projectSessionReadState(state: WebReadState, sessionId: string, messages: SessionSnapshotMessage[]): {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
readStateStatus: "available";
|
|
11
|
+
unreadCount: number;
|
|
12
|
+
hasUnread: boolean;
|
|
13
|
+
lastReadMessageId: string | null;
|
|
14
|
+
lastReadAt: number;
|
|
15
|
+
latestMessageId: string | number | null;
|
|
16
|
+
latestAssistantMessageId: string | number | null;
|
|
17
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
function messageTimestamp(message) {
|
|
2
|
+
const value = typeof message.createdAt === "number"
|
|
3
|
+
? message.createdAt
|
|
4
|
+
: Date.parse(String(message.createdAt));
|
|
5
|
+
return Number.isFinite(value) ? value : 0;
|
|
6
|
+
}
|
|
7
|
+
function cursorIndex(messages, cursor) {
|
|
8
|
+
if (!cursor)
|
|
9
|
+
return -1;
|
|
10
|
+
if (!cursor.messageId)
|
|
11
|
+
return -1;
|
|
12
|
+
return messages.findIndex((message) => String(message.id) === cursor.messageId &&
|
|
13
|
+
messageTimestamp(message) === cursor.createdAt);
|
|
14
|
+
}
|
|
15
|
+
function requestedAssistantIndex(messages, boundary) {
|
|
16
|
+
const id = boundary.readThroughMessageId;
|
|
17
|
+
const hasNumericBoundary = typeof id === "number" && Number.isSafeInteger(id) && id >= 0;
|
|
18
|
+
if (hasNumericBoundary)
|
|
19
|
+
return messages.findIndex((message) => message.role === "assistant" && String(message.id) === String(id));
|
|
20
|
+
const requestId = boundary.readThroughRequestId;
|
|
21
|
+
if (typeof requestId !== "string" || !requestId)
|
|
22
|
+
return -1;
|
|
23
|
+
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
24
|
+
const message = messages[index];
|
|
25
|
+
if (message.role === "assistant" && message.requestId === requestId)
|
|
26
|
+
return index;
|
|
27
|
+
}
|
|
28
|
+
return -1;
|
|
29
|
+
}
|
|
30
|
+
export function advanceReadCursor(state, sessionId, messages, boundary, now) {
|
|
31
|
+
const nextIndex = requestedAssistantIndex(messages, boundary);
|
|
32
|
+
if (nextIndex < 0)
|
|
33
|
+
return;
|
|
34
|
+
const cursors = new Map(state.cursors);
|
|
35
|
+
const previous = cursors.get(sessionId);
|
|
36
|
+
const previousIndex = cursorIndex(messages, previous);
|
|
37
|
+
if (previousIndex >= nextIndex)
|
|
38
|
+
return;
|
|
39
|
+
const message = messages[nextIndex];
|
|
40
|
+
const createdAt = messageTimestamp(message);
|
|
41
|
+
if (previous && previous.createdAt > createdAt)
|
|
42
|
+
return;
|
|
43
|
+
cursors.set(sessionId, {
|
|
44
|
+
messageId: String(message.id),
|
|
45
|
+
createdAt,
|
|
46
|
+
lastReadAt: Math.max(now, (previous?.lastReadAt ?? state.initializedAt) + 1),
|
|
47
|
+
});
|
|
48
|
+
state.cursors = [...cursors];
|
|
49
|
+
}
|
|
50
|
+
export function projectSessionReadState(state, sessionId, messages) {
|
|
51
|
+
const cursor = new Map(state.cursors).get(sessionId);
|
|
52
|
+
const readIndex = cursorIndex(messages, cursor);
|
|
53
|
+
const unreadCount = messages.filter((message, index) => {
|
|
54
|
+
if (message.role !== "assistant")
|
|
55
|
+
return false;
|
|
56
|
+
if (messageTimestamp(message) <= state.initializedAt)
|
|
57
|
+
return false;
|
|
58
|
+
return index > readIndex;
|
|
59
|
+
}).length;
|
|
60
|
+
return {
|
|
61
|
+
sessionId,
|
|
62
|
+
readStateStatus: "available",
|
|
63
|
+
unreadCount,
|
|
64
|
+
hasUnread: unreadCount > 0,
|
|
65
|
+
lastReadMessageId: cursor?.messageId || null,
|
|
66
|
+
lastReadAt: cursor?.lastReadAt ?? state.initializedAt,
|
|
67
|
+
latestMessageId: messages.at(-1)?.id ?? null,
|
|
68
|
+
latestAssistantMessageId: [...messages].reverse().find((message) => message.role === "assistant")
|
|
69
|
+
?.id ?? null,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { RuntimeConfig, SessionStore } from "../../runtime/ports.js";
|
|
2
|
+
import type { SessionSnapshot } from "../../sessions/types.js";
|
|
3
|
+
import { type ReadBoundary } from "./projection.js";
|
|
4
|
+
type Sessions = Pick<SessionStore, "getSessionSnapshot">;
|
|
5
|
+
type Environment = {
|
|
6
|
+
services: {
|
|
7
|
+
config: RuntimeConfig;
|
|
8
|
+
sessions: Sessions;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare class WebSessionReadStates {
|
|
12
|
+
private readonly getEnvironment;
|
|
13
|
+
private readonly now;
|
|
14
|
+
private readonly stores;
|
|
15
|
+
private readonly initializedAt;
|
|
16
|
+
constructor(getEnvironment: (id: string) => Environment, now?: () => number);
|
|
17
|
+
private store;
|
|
18
|
+
initialize(environmentId: string): Promise<void>;
|
|
19
|
+
forget(environmentId: string, sessionId: string): Promise<void>;
|
|
20
|
+
reset(environmentId: string, sessionId: string): Promise<void>;
|
|
21
|
+
project(environmentId: string, snapshot: SessionSnapshot): Promise<{
|
|
22
|
+
sessionId: string;
|
|
23
|
+
readStateStatus: "unavailable";
|
|
24
|
+
unreadCount: null;
|
|
25
|
+
hasUnread: null;
|
|
26
|
+
lastReadAt: null;
|
|
27
|
+
lastReadMessageId: null;
|
|
28
|
+
} | {
|
|
29
|
+
sessionId: string;
|
|
30
|
+
readStateStatus: "available";
|
|
31
|
+
unreadCount: number;
|
|
32
|
+
hasUnread: boolean;
|
|
33
|
+
lastReadMessageId: string | null;
|
|
34
|
+
lastReadAt: number;
|
|
35
|
+
latestMessageId: string | number | null;
|
|
36
|
+
latestAssistantMessageId: string | number | null;
|
|
37
|
+
}>;
|
|
38
|
+
mark(environmentId: string, sessionId: string, boundary: ReadBoundary): Promise<{
|
|
39
|
+
sessionId: string;
|
|
40
|
+
readStateStatus: "available";
|
|
41
|
+
unreadCount: number;
|
|
42
|
+
hasUnread: boolean;
|
|
43
|
+
lastReadMessageId: string | null;
|
|
44
|
+
lastReadAt: number;
|
|
45
|
+
latestMessageId: string | number | null;
|
|
46
|
+
latestAssistantMessageId: string | number | null;
|
|
47
|
+
} | null>;
|
|
48
|
+
list(environmentId: string): Promise<{
|
|
49
|
+
sessions: {
|
|
50
|
+
sessionId: string;
|
|
51
|
+
readStateStatus: "available";
|
|
52
|
+
unreadCount: number;
|
|
53
|
+
hasUnread: boolean;
|
|
54
|
+
lastReadMessageId: string | null;
|
|
55
|
+
lastReadAt: number;
|
|
56
|
+
latestMessageId: string | number | null;
|
|
57
|
+
latestAssistantMessageId: string | number | null;
|
|
58
|
+
id: string;
|
|
59
|
+
title: string;
|
|
60
|
+
createdAt: number;
|
|
61
|
+
updatedAt: number;
|
|
62
|
+
lastMessagePreview: string;
|
|
63
|
+
lastMessageAt: number | null;
|
|
64
|
+
}[];
|
|
65
|
+
nextCursor: null;
|
|
66
|
+
} | {
|
|
67
|
+
sessions: {
|
|
68
|
+
sessionId: string;
|
|
69
|
+
readStateStatus: "unavailable";
|
|
70
|
+
unreadCount: null;
|
|
71
|
+
hasUnread: null;
|
|
72
|
+
lastReadAt: null;
|
|
73
|
+
lastReadMessageId: null;
|
|
74
|
+
id: string;
|
|
75
|
+
title: string;
|
|
76
|
+
createdAt: number;
|
|
77
|
+
updatedAt: number;
|
|
78
|
+
lastMessagePreview: string;
|
|
79
|
+
lastMessageAt: number | null;
|
|
80
|
+
latestMessageId: string | number | null;
|
|
81
|
+
latestAssistantMessageId: string | number | null;
|
|
82
|
+
}[];
|
|
83
|
+
nextCursor: null;
|
|
84
|
+
}>;
|
|
85
|
+
}
|
|
86
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { SessionService } from "../../sessions/session-service.js";
|
|
4
|
+
import { clientVisibleMessages, toSessionListItem, toSnapshotMessage, } from "../../sessions/record/projection.js";
|
|
5
|
+
import { WebReadStateStore } from "./store.js";
|
|
6
|
+
import { captureReadStateAvailability, unavailableSessionReadState, } from "./availability.js";
|
|
7
|
+
import { advanceReadCursor, projectSessionReadState, } from "./projection.js";
|
|
8
|
+
export class WebSessionReadStates {
|
|
9
|
+
getEnvironment;
|
|
10
|
+
now;
|
|
11
|
+
stores = new Map();
|
|
12
|
+
initializedAt;
|
|
13
|
+
constructor(getEnvironment, now = Date.now) {
|
|
14
|
+
this.getEnvironment = getEnvironment;
|
|
15
|
+
this.now = now;
|
|
16
|
+
this.initializedAt = now();
|
|
17
|
+
}
|
|
18
|
+
store(environmentId) {
|
|
19
|
+
const { paths } = this.getEnvironment(environmentId).services.config;
|
|
20
|
+
const identity = JSON.stringify([
|
|
21
|
+
environmentId,
|
|
22
|
+
resolve(paths.sessionsDir),
|
|
23
|
+
]);
|
|
24
|
+
const existing = this.stores.get(identity);
|
|
25
|
+
if (existing)
|
|
26
|
+
return existing;
|
|
27
|
+
const filename = createHash("sha256").update(identity).digest("hex") + ".json";
|
|
28
|
+
const store = new WebReadStateStore(join(paths.runtimeDir, "web-ui", "read-state", filename), this.initializedAt);
|
|
29
|
+
this.stores.set(identity, store);
|
|
30
|
+
return store;
|
|
31
|
+
}
|
|
32
|
+
initialize(environmentId) {
|
|
33
|
+
return this.store(environmentId).initialize();
|
|
34
|
+
}
|
|
35
|
+
async forget(environmentId, sessionId) {
|
|
36
|
+
await captureReadStateAvailability(() => this.store(environmentId).forget(sessionId));
|
|
37
|
+
}
|
|
38
|
+
async reset(environmentId, sessionId) {
|
|
39
|
+
await captureReadStateAvailability(() => this.store(environmentId).reset(sessionId, this.now()));
|
|
40
|
+
}
|
|
41
|
+
async project(environmentId, snapshot) {
|
|
42
|
+
const result = await captureReadStateAvailability(() => this.store(environmentId).transaction((state) => projectSessionReadState(state, snapshot.sessionId, snapshot.messages)));
|
|
43
|
+
if (result.readStateStatus === "unavailable")
|
|
44
|
+
return unavailableSessionReadState(snapshot.sessionId);
|
|
45
|
+
return result.value;
|
|
46
|
+
}
|
|
47
|
+
async mark(environmentId, sessionId, boundary) {
|
|
48
|
+
const store = this.store(environmentId);
|
|
49
|
+
await store.initialize();
|
|
50
|
+
const sessions = this.getEnvironment(environmentId).services.sessions;
|
|
51
|
+
return store.transaction(async (state) => {
|
|
52
|
+
const snapshot = await sessions.getSessionSnapshot(sessionId, {
|
|
53
|
+
includeRequests: false,
|
|
54
|
+
});
|
|
55
|
+
if (!snapshot)
|
|
56
|
+
return null;
|
|
57
|
+
advanceReadCursor(state, sessionId, snapshot.messages, boundary, this.now());
|
|
58
|
+
return projectSessionReadState(state, sessionId, snapshot.messages);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async list(environmentId) {
|
|
62
|
+
const { sessionsDir } = this.getEnvironment(environmentId).services.config.paths;
|
|
63
|
+
// One canonical disk enumeration avoids mutable offset pages and sending
|
|
64
|
+
// every request event across the managed Runtime's bounded RPC transport.
|
|
65
|
+
const records = await new SessionService({ sessionsDir }).getAllSessions();
|
|
66
|
+
const projectedSessions = records.map((record) => ({
|
|
67
|
+
summary: toSessionListItem(record),
|
|
68
|
+
messages: clientVisibleMessages(record.messages).map((message) => toSnapshotMessage(record.id, message, record.requests ?? [])),
|
|
69
|
+
}));
|
|
70
|
+
const result = await captureReadStateAvailability(() => this.store(environmentId).transaction((state) => {
|
|
71
|
+
const sessions = projectedSessions.map(({ summary, messages }) => {
|
|
72
|
+
return {
|
|
73
|
+
...summary,
|
|
74
|
+
...projectSessionReadState(state, summary.id, messages),
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
return { sessions, nextCursor: null };
|
|
78
|
+
}));
|
|
79
|
+
if (result.readStateStatus === "unavailable")
|
|
80
|
+
return {
|
|
81
|
+
sessions: projectedSessions.map(({ summary }) => ({
|
|
82
|
+
...summary,
|
|
83
|
+
...unavailableSessionReadState(summary.id),
|
|
84
|
+
})),
|
|
85
|
+
nextCursor: null,
|
|
86
|
+
};
|
|
87
|
+
return result.value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type WebReadCursor = {
|
|
2
|
+
messageId: string;
|
|
3
|
+
createdAt: number;
|
|
4
|
+
lastReadAt: number;
|
|
5
|
+
};
|
|
6
|
+
export type WebReadState = {
|
|
7
|
+
version: 1;
|
|
8
|
+
initializedAt: number;
|
|
9
|
+
cursors: Array<[string, WebReadCursor]>;
|
|
10
|
+
};
|
|
11
|
+
/** UI-owned state; never writes Runtime session records or model context. */
|
|
12
|
+
export declare class WebReadStateStore {
|
|
13
|
+
private readonly initializedAt;
|
|
14
|
+
private readonly path;
|
|
15
|
+
constructor(path: string, initializedAt: number);
|
|
16
|
+
private load;
|
|
17
|
+
private save;
|
|
18
|
+
transaction<T>(operation: (state: WebReadState) => T | Promise<T>): Promise<T>;
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
reset(sessionId: string, now: number): Promise<void>;
|
|
21
|
+
forget(sessionId: string): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
const pendingWrites = new Map();
|
|
5
|
+
function hasFileErrorCode(error, code) {
|
|
6
|
+
return error instanceof Error && "code" in error && error.code === code;
|
|
7
|
+
}
|
|
8
|
+
function isReadCursor(value) {
|
|
9
|
+
if (!value || typeof value !== "object")
|
|
10
|
+
return false;
|
|
11
|
+
const cursor = value;
|
|
12
|
+
if (typeof cursor.messageId !== "string")
|
|
13
|
+
return false;
|
|
14
|
+
if (!Number.isFinite(cursor.createdAt))
|
|
15
|
+
return false;
|
|
16
|
+
return Number.isFinite(cursor.lastReadAt);
|
|
17
|
+
}
|
|
18
|
+
function decodeReadState(raw) {
|
|
19
|
+
const state = JSON.parse(raw);
|
|
20
|
+
if (state?.version !== 1)
|
|
21
|
+
throw new Error("Unsupported Web UI read state.");
|
|
22
|
+
if (!Number.isFinite(state.initializedAt))
|
|
23
|
+
throw new Error("Invalid Web UI read boundary.");
|
|
24
|
+
if (!Array.isArray(state.cursors))
|
|
25
|
+
throw new Error("Invalid Web UI read cursors.");
|
|
26
|
+
for (const entry of state.cursors) {
|
|
27
|
+
if (!Array.isArray(entry) || entry.length !== 2)
|
|
28
|
+
throw new Error("Invalid Web UI read cursor entry.");
|
|
29
|
+
if (typeof entry[0] !== "string" || !isReadCursor(entry[1]))
|
|
30
|
+
throw new Error("Invalid Web UI read cursor entry.");
|
|
31
|
+
}
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
/** UI-owned state; never writes Runtime session records or model context. */
|
|
35
|
+
export class WebReadStateStore {
|
|
36
|
+
initializedAt;
|
|
37
|
+
path;
|
|
38
|
+
constructor(path, initializedAt) {
|
|
39
|
+
this.initializedAt = initializedAt;
|
|
40
|
+
this.path = resolve(path);
|
|
41
|
+
}
|
|
42
|
+
async load() {
|
|
43
|
+
try {
|
|
44
|
+
return decodeReadState(await readFile(this.path, "utf8"));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (hasFileErrorCode(error, "ENOENT"))
|
|
48
|
+
return null;
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async save(state) {
|
|
53
|
+
await mkdir(dirname(this.path), { recursive: true });
|
|
54
|
+
const temporary = `${this.path}.${process.pid}.${randomUUID()}.tmp`;
|
|
55
|
+
try {
|
|
56
|
+
await writeFile(temporary, JSON.stringify(state), "utf8");
|
|
57
|
+
await rename(temporary, this.path);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
await rm(temporary, { force: true }).catch(() => undefined);
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async transaction(operation) {
|
|
65
|
+
const prior = pendingWrites.get(this.path) ?? Promise.resolve();
|
|
66
|
+
const pending = prior
|
|
67
|
+
.catch(() => undefined)
|
|
68
|
+
.then(async () => {
|
|
69
|
+
const existing = await this.load();
|
|
70
|
+
const state = existing ?? {
|
|
71
|
+
version: 1,
|
|
72
|
+
initializedAt: this.initializedAt,
|
|
73
|
+
cursors: [],
|
|
74
|
+
};
|
|
75
|
+
const before = JSON.stringify(state);
|
|
76
|
+
const result = await operation(state);
|
|
77
|
+
if (!existing || JSON.stringify(state) !== before)
|
|
78
|
+
await this.save(state);
|
|
79
|
+
return result;
|
|
80
|
+
});
|
|
81
|
+
pendingWrites.set(this.path, pending);
|
|
82
|
+
try {
|
|
83
|
+
return await pending;
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
if (pendingWrites.get(this.path) === pending)
|
|
87
|
+
pendingWrites.delete(this.path);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
initialize() {
|
|
91
|
+
return this.transaction(() => undefined);
|
|
92
|
+
}
|
|
93
|
+
reset(sessionId, now) {
|
|
94
|
+
return this.transaction((state) => {
|
|
95
|
+
const cursors = new Map(state.cursors);
|
|
96
|
+
const previous = cursors.get(sessionId);
|
|
97
|
+
cursors.set(sessionId, {
|
|
98
|
+
messageId: "",
|
|
99
|
+
createdAt: 0,
|
|
100
|
+
lastReadAt: Math.max(now, (previous?.lastReadAt ?? state.initializedAt) + 1),
|
|
101
|
+
});
|
|
102
|
+
state.cursors = [...cursors];
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
forget(sessionId) {
|
|
106
|
+
return this.transaction((state) => {
|
|
107
|
+
state.cursors = state.cursors.filter(([id]) => id !== sessionId);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
package/docs/configuration.md
CHANGED
|
@@ -31,11 +31,16 @@ AGENT_BRIDGE_TOKEN=
|
|
|
31
31
|
LLM_RUNTIME_CONFIG_FILE=local/runtime.config.json
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
`BRAVE_SEARCH_API_KEY` is optional
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
`BRAVE_SEARCH_API_KEY` is optional. The bundled Web plugin always exposes
|
|
35
|
+
`web_fetch` and `web_search`. A non-empty key selects Brave Search; without one,
|
|
36
|
+
`web_search` uses Light search over a limited catalog of public Hebrew and
|
|
37
|
+
English sources. Light reads those sources directly without an external search
|
|
38
|
+
engine. A failing configured key does not silently switch providers. The key
|
|
39
|
+
never belongs in runtime JSON or a plugin manifest.
|
|
40
|
+
|
|
41
|
+
Light uses the Web plugin's defaults and an in-memory cache; no background
|
|
42
|
+
crawler or separate service is installed. See
|
|
43
|
+
[Known Limitations](known-limitations.md#web-search) for its coverage and limits.
|
|
39
44
|
|
|
40
45
|
Provider configs should reference env var names:
|
|
41
46
|
|
|
@@ -138,7 +143,21 @@ storage, privacy, retrieval, and management behavior.
|
|
|
138
143
|
|
|
139
144
|
## Paths
|
|
140
145
|
|
|
141
|
-
`environment.paths.runtimeDir` is
|
|
146
|
+
`environment.paths.runtimeDir` is the generated runtime state base. A named
|
|
147
|
+
environment profile without its own `paths.runtimeDir` uses
|
|
148
|
+
`<base>/environments/<sha256(profileId)>`. The stable profile ID determines that
|
|
149
|
+
directory; changing models or adding another profile does not move its state.
|
|
150
|
+
`LLM_RUNTIME_DIR` takes precedence over profile paths and acts as the shared base
|
|
151
|
+
when a profile is selected. Without a selected profile, the existing runtime
|
|
152
|
+
directory layout is unchanged.
|
|
153
|
+
|
|
154
|
+
An explicit `environment.profiles.<id>.paths.runtimeDir` is already a final
|
|
155
|
+
environment directory and is preserved when there is no `LLM_RUNTIME_DIR`
|
|
156
|
+
override. Explicit session, attachment and trace path overrides also remain
|
|
157
|
+
final paths. Use distinct final paths for different environments. The resolved
|
|
158
|
+
runtime directory owns local hosting, scheduling, passive memory, plugin state,
|
|
159
|
+
and the default session, attachment and log paths. Shared, compiled, workspace
|
|
160
|
+
and agent-work directories retain their configured sharing behavior.
|
|
142
161
|
`environment.paths.attachmentsDir` stores runtime-managed attachment files
|
|
143
162
|
referenced by session/request metadata. Images and supported document files
|
|
144
163
|
share this store; document contents are read on demand by a request-bound tool
|
|
@@ -215,6 +234,32 @@ LLM_RUNTIME_PROFILE=dev npm run dev
|
|
|
215
234
|
|
|
216
235
|
The active profile id becomes the runtime id used by the bridge.
|
|
217
236
|
|
|
237
|
+
Existing populated state in an inherited base is never automatically moved or
|
|
238
|
+
silently replaced by an empty environment. Loading stops with
|
|
239
|
+
`runtime_environment_storage_assignment_required` until that state is explicitly
|
|
240
|
+
assigned. For example, to retain an existing `prod` environment at `.runtime`
|
|
241
|
+
and add an isolated `dev` environment:
|
|
242
|
+
|
|
243
|
+
```json
|
|
244
|
+
{
|
|
245
|
+
"environment": {
|
|
246
|
+
"default": "prod",
|
|
247
|
+
"paths": { "runtimeDir": ".runtime" },
|
|
248
|
+
"profiles": {
|
|
249
|
+
"prod": { "paths": { "runtimeDir": ".runtime" } },
|
|
250
|
+
"dev": {}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
This leaves existing Jobs and conversations in place and gives `dev` its own
|
|
257
|
+
namespace. Preserve any previous explicit session, attachment and trace paths
|
|
258
|
+
on the assigned profile too. Remove a shared `LLM_RUNTIME_DIR` override before
|
|
259
|
+
making this assignment because environment variables keep their precedence.
|
|
260
|
+
The stored Jobs must retain their original environment ID. Empty state folders
|
|
261
|
+
and intentionally shared or compiled artifacts do not require assignment.
|
|
262
|
+
|
|
218
263
|
## Request Runner
|
|
219
264
|
|
|
220
265
|
The runtime config owns host wiring, installed models, and plugin availability.
|
|
@@ -310,10 +355,12 @@ the request-runner context block supplies only admission headroom.
|
|
|
310
355
|
subtracted while projecting messages so the prompt does not consume the whole
|
|
311
356
|
context window; it is never forwarded to a provider as an output limit. Model
|
|
312
357
|
steps may vary their prompt contract, timeout, format, or other generation
|
|
313
|
-
controls, but
|
|
358
|
+
controls, but configuration does not define a shared per-step output-token cap.
|
|
314
359
|
The Ollama adapter still sends a finite provider-native `num_predict`, derived
|
|
315
|
-
mechanically from the final provider input
|
|
316
|
-
|
|
360
|
+
mechanically from the final provider input and the physical context remainder.
|
|
361
|
+
Registered core-decision steps additionally retain their internal output-token
|
|
362
|
+
limit. Output schema size does not impose another generation limit; schema
|
|
363
|
+
projection, validation, input estimation, and compaction remain unchanged.
|
|
317
364
|
|
|
318
365
|
The required context fields remain explicit. Unknown fields, unknown step ids,
|
|
319
366
|
and invalid explicit overrides are rejected during configuration loading;
|
package/docs/installation.md
CHANGED
|
@@ -155,10 +155,13 @@ a bundled plugin: duplicate plugin ids fail closed.
|
|
|
155
155
|
The passive long-term memory service belongs to the Runtime core and does not
|
|
156
156
|
depend on the bundled `memory` plugin.
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
credential.
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
The bundled Web plugin supports URL fetching and Light search without a search
|
|
159
|
+
credential. Light searches a limited catalog of public Hebrew and English
|
|
160
|
+
sources directly; it does not query an external search engine or provide
|
|
161
|
+
whole-web coverage. Set `BRAVE_SEARCH_API_KEY` to use Brave Search instead.
|
|
162
|
+
A configured Brave key that fails remains a Brave error. See
|
|
163
|
+
[Known Limitations](known-limitations.md#web-search) for Light's discovery and
|
|
164
|
+
cache boundaries.
|
|
162
165
|
|
|
163
166
|
## Run From Source
|
|
164
167
|
|
|
@@ -61,6 +61,27 @@ plugin entrypoints are not currently supported.
|
|
|
61
61
|
Plugin behavior belongs inside the plugin. Runtime orchestration should only
|
|
62
62
|
see the generic selected catalog and execution results.
|
|
63
63
|
|
|
64
|
+
## Web Search
|
|
65
|
+
|
|
66
|
+
With a configured `BRAVE_SEARCH_API_KEY`, `web_search` uses Brave Search and
|
|
67
|
+
preserves its authentication and rate-limit errors. Without a key, Light search
|
|
68
|
+
discovers and ranks pages within a catalog of public Hebrew and English
|
|
69
|
+
sources. It contacts content sources directly, without another search engine.
|
|
70
|
+
|
|
71
|
+
Light does not maintain a whole-web index. Its source selection, crawl depth,
|
|
72
|
+
candidate count, response sizes, and request deadline are bounded. Results may
|
|
73
|
+
be partial because a source is unavailable, disallows crawling, or exceeds a
|
|
74
|
+
budget. Zero matches mean no matches in the inspected sources, not that the
|
|
75
|
+
information is absent from the web. Source coverage accompanies the results.
|
|
76
|
+
|
|
77
|
+
The document cache exists only in the plugin instance's memory, bounded to
|
|
78
|
+
16 MiB of serialized content and 500 documents. Feed entries expire within
|
|
79
|
+
five minutes and page entries within 30 minutes; origin directives can shorten
|
|
80
|
+
these lifetimes. Restarting the runtime clears the cache. There is no background
|
|
81
|
+
crawl, browser rendering, or persistent search database. Content that requires
|
|
82
|
+
JavaScript may therefore be unavailable. Exact public URL fetching remains a
|
|
83
|
+
separate `web_fetch` capability with its existing public-network restrictions.
|
|
84
|
+
|
|
64
85
|
## Passive Long-Term Memory
|
|
65
86
|
|
|
66
87
|
Passive long-term memory is disabled by default and requires an embedding model
|