@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
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { request as requestHttp, } from "node:http";
|
|
2
|
+
import { request as requestHttps } from "node:https";
|
|
3
|
+
import { PublicHttpError, isPublicHttpError } from "./errors.js";
|
|
4
|
+
import { PUBLIC_HTTP_LIMITS } from "./limits.js";
|
|
5
|
+
function buildPinnedLookup(address) {
|
|
6
|
+
return (_hostname, options, callback) => {
|
|
7
|
+
if (options.all) {
|
|
8
|
+
callback(null, [address]);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
callback(null, address.address, address.family);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function contentLength(headers) {
|
|
15
|
+
const raw = headers["content-length"];
|
|
16
|
+
const value = Array.isArray(raw) ? raw[0] : raw;
|
|
17
|
+
if (typeof value !== "string" || !/^\d+$/u.test(value))
|
|
18
|
+
return undefined;
|
|
19
|
+
const parsed = Number(value);
|
|
20
|
+
return Number.isSafeInteger(parsed) ? parsed : undefined;
|
|
21
|
+
}
|
|
22
|
+
function readBoundedBody(response, maxBytes) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const chunks = [];
|
|
25
|
+
let bytesRead = 0;
|
|
26
|
+
let settled = false;
|
|
27
|
+
const finish = (partialContent) => {
|
|
28
|
+
if (settled)
|
|
29
|
+
return;
|
|
30
|
+
settled = true;
|
|
31
|
+
resolve(Object.freeze({
|
|
32
|
+
body: Buffer.concat(chunks, bytesRead),
|
|
33
|
+
partialContent,
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
36
|
+
response.on("data", (rawChunk) => {
|
|
37
|
+
if (settled)
|
|
38
|
+
return;
|
|
39
|
+
const chunk = Buffer.isBuffer(rawChunk)
|
|
40
|
+
? rawChunk
|
|
41
|
+
: Buffer.from(rawChunk);
|
|
42
|
+
const remaining = maxBytes - bytesRead;
|
|
43
|
+
if (chunk.byteLength > remaining) {
|
|
44
|
+
if (remaining > 0) {
|
|
45
|
+
chunks.push(chunk.subarray(0, remaining));
|
|
46
|
+
bytesRead += remaining;
|
|
47
|
+
}
|
|
48
|
+
finish(true);
|
|
49
|
+
response.destroy();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
chunks.push(chunk);
|
|
53
|
+
bytesRead += chunk.byteLength;
|
|
54
|
+
});
|
|
55
|
+
response.once("end", () => finish(false));
|
|
56
|
+
response.once("error", (error) => {
|
|
57
|
+
if (settled)
|
|
58
|
+
return;
|
|
59
|
+
settled = true;
|
|
60
|
+
reject(error);
|
|
61
|
+
});
|
|
62
|
+
response.once("aborted", () => {
|
|
63
|
+
if (settled)
|
|
64
|
+
return;
|
|
65
|
+
settled = true;
|
|
66
|
+
reject(new PublicHttpError("web_response_invalid", "The upstream response ended before completion."));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export const requestPinnedHop = async (params) => {
|
|
71
|
+
if (params.abortSignal?.aborted) {
|
|
72
|
+
throw new PublicHttpError("web_request_aborted", "The web request was aborted.");
|
|
73
|
+
}
|
|
74
|
+
return await new Promise((resolve, reject) => {
|
|
75
|
+
let settled = false;
|
|
76
|
+
let timedOut = false;
|
|
77
|
+
const requestOptions = {
|
|
78
|
+
protocol: params.url.protocol,
|
|
79
|
+
hostname: params.url.hostname.replace(/^\[|\]$/gu, ""),
|
|
80
|
+
port: params.url.port || undefined,
|
|
81
|
+
path: `${params.url.pathname}${params.url.search}`,
|
|
82
|
+
method: "GET",
|
|
83
|
+
headers: params.headers,
|
|
84
|
+
lookup: buildPinnedLookup(params.address),
|
|
85
|
+
agent: false,
|
|
86
|
+
maxHeaderSize: PUBLIC_HTTP_LIMITS.responseHeaderBytes,
|
|
87
|
+
};
|
|
88
|
+
const requestFunction = params.url.protocol === "https:" ? requestHttps : requestHttp;
|
|
89
|
+
const request = requestFunction(requestOptions, async (response) => {
|
|
90
|
+
try {
|
|
91
|
+
const declaredLength = contentLength(response.headers);
|
|
92
|
+
const body = await readBoundedBody(response, params.maxBytes);
|
|
93
|
+
if (settled)
|
|
94
|
+
return;
|
|
95
|
+
settled = true;
|
|
96
|
+
resolve(Object.freeze({
|
|
97
|
+
status: response.statusCode ?? 0,
|
|
98
|
+
headers: response.headers,
|
|
99
|
+
body: body.body,
|
|
100
|
+
bytesRead: body.body.byteLength,
|
|
101
|
+
partialContent: body.partialContent ||
|
|
102
|
+
(declaredLength !== undefined &&
|
|
103
|
+
declaredLength > params.maxBytes),
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (settled)
|
|
108
|
+
return;
|
|
109
|
+
settled = true;
|
|
110
|
+
reject(error);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
const timeout = setTimeout(() => {
|
|
114
|
+
timedOut = true;
|
|
115
|
+
request.destroy(new PublicHttpError("web_request_timed_out", "The upstream web request timed out."));
|
|
116
|
+
}, params.timeoutMs);
|
|
117
|
+
timeout.unref?.();
|
|
118
|
+
const onAbort = () => request.destroy(new PublicHttpError("web_request_aborted", "The web request was aborted."));
|
|
119
|
+
params.abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
120
|
+
request.once("error", (error) => {
|
|
121
|
+
if (settled)
|
|
122
|
+
return;
|
|
123
|
+
settled = true;
|
|
124
|
+
if (isPublicHttpError(error)) {
|
|
125
|
+
reject(error);
|
|
126
|
+
}
|
|
127
|
+
else if (timedOut) {
|
|
128
|
+
reject(new PublicHttpError("web_request_timed_out", "The upstream web request timed out."));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
reject(new PublicHttpError("web_response_invalid", "The upstream web request failed."));
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
request.once("close", () => {
|
|
135
|
+
clearTimeout(timeout);
|
|
136
|
+
params.abortSignal?.removeEventListener("abort", onAbort);
|
|
137
|
+
});
|
|
138
|
+
request.end();
|
|
139
|
+
});
|
|
140
|
+
};
|
|
@@ -17,7 +17,7 @@ Dependencies flow in one direction:
|
|
|
17
17
|
|
|
18
18
|
Controllers and components communicate through injected callbacks or values. They must not reach back into `app.js`; services must not depend on controllers or presentation code.
|
|
19
19
|
|
|
20
|
-
`workspace-shell.js` is the single owner of workspace navigation. It owns the active Chat or Config workspace, responsive Conversations visibility, focus restoration, Escape handling, backdrop state, and related ARIA attributes. `conversation-sidebar-layout.js` resolves the sidebar presentation policy; `operations-section.js` owns the internal Runtime, Logs, and Health tabs within Configuration. These components must not own session data, request state, or Runtime transport.
|
|
20
|
+
`workspace-shell.js` is the single owner of workspace navigation. It owns the active Home, Chat, Schedules or Config workspace, responsive Conversations visibility, focus restoration, Escape handling, backdrop state, and related ARIA attributes. `conversation-sidebar-layout.js` resolves the sidebar presentation policy; `operations-section.js` owns the internal Runtime, Logs, and Health tabs within Configuration. These components must not own session data, request state, or Runtime transport.
|
|
21
21
|
|
|
22
22
|
`conversation-activity.js` owns only request-scoped activity presentation. `realtime-event-controller.js` preserves sequence authority, associates events and progress with their exact `requestId`, and injects those values into the conversation view. `realtime-transport.js` only parses and transports frames; it does not reduce application state.
|
|
23
23
|
|
|
@@ -25,7 +25,28 @@ Controllers and components communicate through injected callbacks or values. The
|
|
|
25
25
|
|
|
26
26
|
`composer-plan.js` presents the current user turn's Planner plan in a collapsed-by-default drawer above the composer. `composer-plan-model.js` selects request-linked progress from the current turn, including restored failed requests that have only a persisted user message; a new user turn hides earlier plans. Disclosure identity follows the selected request, so steering preserves expansion and list scroll; session resets clear the drawer. `task-progress.js` reduces structured plan events by request: full snapshots replace the baseline, later item changes are retained across overlapping replay, and completion counters never imply request or Reviewer success. Live events and stored replay use this same projection. Historical per-response progress remains available in Activity.
|
|
27
27
|
|
|
28
|
-
Activity counts tool invocations from `tool.started` entries and their recorded multiplicities before timeline display grouping. Completion, payload, and approval events
|
|
28
|
+
Activity counts tool invocations from `tool.started` entries and their recorded multiplicities before timeline display grouping. Completion, payload, and approval events contribute to action details but do not add tool invocations; terminal-only history does not invent missing starts. Failure-event counts retain their existing meaning.
|
|
29
|
+
|
|
30
|
+
Tool activity is presented as one evolving action per `(requestId, executionId)`.
|
|
31
|
+
`tool-activity-event.js` retains only bounded display fields; `tool-activity-model.js`
|
|
32
|
+
combines payload, approval, execution, and outcome events without guessing from
|
|
33
|
+
tool names or event adjacency. `conversation-tools.js` renders compact disclosures
|
|
34
|
+
inside the executing agent's card, preserving expansion and scroll across updates.
|
|
35
|
+
The canonical role call supplies `executorRole` and `roleCallId`; explicit identity
|
|
36
|
+
takes precedence over the currently active role, including late completions.
|
|
37
|
+
Older events use the recorded role-stage association when available. Actions
|
|
38
|
+
without recorded ownership appear in an explicitly unattributed card.
|
|
39
|
+
Prepared input is distinguished from input sent to an executed tool. Source
|
|
40
|
+
truncation and preview clipping remain separate, and an absent outcome never
|
|
41
|
+
implies success. Existing uncorrelated history supplies independent outcome rows;
|
|
42
|
+
unpaired legacy progress stays in the diagnostic timeline. Live and stored events
|
|
43
|
+
use the same projection. Raw lifecycle events remain stored for replay and counts.
|
|
44
|
+
|
|
45
|
+
Plugins may declare `eventPresentation.resultMetadata` to select bounded previews
|
|
46
|
+
or scalar facts from existing tool results. This projection is evaluated only at
|
|
47
|
+
the completion-event boundary: tool output, canonical evidence and model context
|
|
48
|
+
are unchanged. The Web UI does not fetch a file or memory record again to recreate
|
|
49
|
+
historical evidence. Passive Runtime memory remains outside tool activity.
|
|
29
50
|
|
|
30
51
|
Web sources appear in a separate Activity section alongside role cards and the event timeline. `web-source-event.js` projects only successful `web_search` and `web_fetch` completions; `web-sources.js` validates bounded plugin receipts and groups them by recorded call. `conversation-sources.js` renders links and retrieval/presentation states without interpreting answer text. Source-bearing events retain their own identity before display grouping, and stored session events use the same projection as live events. Session switching clears them with the existing Activity state.
|
|
31
52
|
|
|
@@ -33,10 +54,10 @@ The optional `meta.webSources` version 1 receipt describes the final bounded **t
|
|
|
33
54
|
|
|
34
55
|
`conversation-session-controller.js` is the single owner of the active conversation view lifecycle: normalized message identity, session switching, stored-message hydration, request-event replay, read state, active assistant placeholders, and session/request realtime subscriptions. `chat-request-controller.js` owns starting one chat request, while `composer-submit-controller.js` owns the composer's selected action and busy/error lifecycle. `tool-approval-controller.js` owns approval state and transport; `tool-approval-card.js` owns its DOM presentation.
|
|
35
56
|
|
|
36
|
-
The primary information architecture
|
|
57
|
+
The primary information architecture starts at Home:
|
|
37
58
|
|
|
38
59
|
- the navigation rail is persistent;
|
|
39
|
-
- Chat and Config are mutually exclusive workspaces;
|
|
60
|
+
- Home, Chat, Schedules and Config are mutually exclusive workspaces;
|
|
40
61
|
- Conversations is docked beside Chat from 1260 CSS pixels upward, with its own column and no modal backdrop;
|
|
41
62
|
- below that width, Conversations is the only transient sheet and overlays the chat canvas;
|
|
42
63
|
- Configuration always hides Conversations and uses the full content canvas;
|
|
@@ -47,6 +68,18 @@ The primary information architecture is chat-first:
|
|
|
47
68
|
|
|
48
69
|
Panel resizing and persisted panel widths are intentionally not part of this architecture. Crossing the sidebar breakpoint closes transient drawer state and restores focus when its previous target becomes hidden.
|
|
49
70
|
|
|
71
|
+
`dashboard-feature.js` composes Home presentation and data refresh. Its controller reuses the canonical conversation list and bounded scheduler run history, refreshing while Home is visible. Recent conversations retain all unread conversations and fill remaining slots with recently updated read conversations. Run activity follows the scheduler's scheduled-time ordering. Loading, failures, and empty states remain distinct.
|
|
72
|
+
|
|
73
|
+
`composer-workspace-controller.js` moves the existing composer DOM between Home and Chat and isolates their draft text and attachments. `composer-surface-controller.js` routes input, rendering and attachment actions to the active surface. Both surfaces use the same attachment and submission controllers; background Chat queue work writes to its own input surface. Home submission adopts its draft into a new conversation before invoking the ordinary Chat request controller. Home navigation alone never resets or reads the active conversation. `conversation-read-state-controller.js` rechecks visible Chat, environment, session and view revision before marking persisted assistant messages read.
|
|
74
|
+
|
|
75
|
+
Dashboard Job suggestions are inert data in `dashboard-job-templates.js`. They open the ordinary schedule form with editable defaults, a selected model, device time zone and a new dedicated conversation target. Only explicit Save creates state. `schedule-job-creation.ts` adapts this Web-only target into an owner-created conversation and the existing scheduler contract; it never invokes the model. Existing-conversation creation remains supported. `configuration-feature.js` owns the composition of Configuration and its memory controls. `app-bootstrap.js` owns startup ordering, environment restoration, initial loading and Home activation.
|
|
76
|
+
|
|
77
|
+
Read tracking belongs only to the native Web UI backend. `session-read-state/service.ts` reads canonical session snapshots and projects unread assistant replies; `store.ts` persists the UI cursors in an environment-specific sidecar under `runtimeDir/web-ui/read-state/`. Runtime session files, model context and Runtime contracts remain unchanged. A persisted initialization timestamp treats existing history as read and tracks later replies, including newly created Job conversations. Read acknowledgements resolve only the displayed persisted assistant message or its exact completed request ID. Cursors advance monotonically and survive server restarts; invalid boundaries never acknowledge unseen replies. Browser consumers retain newer read revisions when older responses arrive late.
|
|
78
|
+
|
|
79
|
+
The native conversation list uses the existing `SessionService` disk reader and canonical client-visible projections once per refresh. It avoids offset pagination over changing conversation order and avoids sending all request-event histories through the managed Runtime RPC. Only Web UI read-state sidecars are written by this projection. Clearing messages keeps a fresh read revision so subsequent unread replies can replace the previous read receipt.
|
|
80
|
+
|
|
81
|
+
Read-state persistence is an optional Web UI projection. `session-read-state/availability.ts` isolates sidecar failures from listing, loading, clearing and deleting conversations. A failure returns `readStateStatus: "unavailable"` and unknown counts, preserves the sidecar for diagnosis, and leaves read acknowledgements unsuccessful. The browser keeps the last known receipt, labels unavailable tracking explicitly and resumes normal counts after a healthy list refresh. Canonical session and attachment failures remain errors. Workspace visibility is committed before change callbacks attempt to acknowledge visible messages, including drawer closure and responsive layout changes.
|
|
82
|
+
|
|
50
83
|
## Styles
|
|
51
84
|
|
|
52
85
|
`styles.css` is the ordered manifest. The modules under `styles/` own:
|
|
@@ -63,3 +96,32 @@ Keep responsive overrides last and avoid moving declarations between modules wit
|
|
|
63
96
|
## Contract boundary
|
|
64
97
|
|
|
65
98
|
Visual components may format or group events, but they never accept transport frames or construct Runtime API payloads. Realtime frame parsing belongs to `realtime-transport.js`; request sequence and terminal-state reduction belong to `realtime-event-controller.js`; endpoint construction and HTTP payload serialization belong to `runtime-web-client.js` and its feature request modules; and feature controllers own when those operations occur. Config remains explicit-save; presentation changes must never introduce autosave.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
## Core schedules
|
|
102
|
+
|
|
103
|
+
`schedules-feature.js` composes the scheduler browser feature from its controller,
|
|
104
|
+
transport requests and presentation. `schedules-controller.js` owns loading and
|
|
105
|
+
management actions scoped to the selected environment, guards stale reads, and
|
|
106
|
+
refreshes only while the workspace is active and no editor or mutation is pending.
|
|
107
|
+
The full Schedules workspace shares the shell navigation and discard guards;
|
|
108
|
+
its editor uses an explicit save and a saved model/mode with Full tool access.
|
|
109
|
+
Unchanged timing fields are omitted from edits, preserving the original timer or
|
|
110
|
+
interval anchor when only a title, prompt or model changes.
|
|
111
|
+
|
|
112
|
+
`workspace-state.js` owns the single page-level loading, empty, missing or failed
|
|
113
|
+
read presentation before any schedules are available. Loaded jobs and unsaved
|
|
114
|
+
editors remain visible if a later request fails. `schedule-errors.js` maps service
|
|
115
|
+
error reasons to display text without changing the management or domain contract.
|
|
116
|
+
The schedule workspace owns its full-width alignment; it does not inherit the
|
|
117
|
+
configuration page's centered child-width caps.
|
|
118
|
+
|
|
119
|
+
`conversation-schedule.js` presents the persisted invocation as a compact Job/Run
|
|
120
|
+
reference. Its prompt disclosure reads that canonical message's exact historical
|
|
121
|
+
content; it does not fetch the current Job to reconstruct an earlier request.
|
|
122
|
+
The normal assistant reply remains separate. `schedule-realtime.js` admits only
|
|
123
|
+
`schedule.triggered` events with exact environment, session, request, message and
|
|
124
|
+
run identity before activating the ordinary realtime request lifecycle. Duplicate
|
|
125
|
+
trigger delivery cannot add another user message or reactivate a completed run.
|
|
126
|
+
The scheduler page and chat card are presentation-only consumers; the runtime
|
|
127
|
+
scheduler remains the sole owner of Job state and dispatch decisions.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { textOf } from "./lib/text-format.js";
|
|
2
|
+
|
|
3
|
+
export async function bootstrapWebApp({
|
|
4
|
+
state,
|
|
5
|
+
dom,
|
|
6
|
+
preferences,
|
|
7
|
+
shell,
|
|
8
|
+
homeComposer,
|
|
9
|
+
dashboard,
|
|
10
|
+
schedules,
|
|
11
|
+
selection,
|
|
12
|
+
client,
|
|
13
|
+
bindables,
|
|
14
|
+
bindEvents,
|
|
15
|
+
renderComposer,
|
|
16
|
+
renderMessages,
|
|
17
|
+
operations,
|
|
18
|
+
configuration,
|
|
19
|
+
realtime,
|
|
20
|
+
restoreLastSession,
|
|
21
|
+
}) {
|
|
22
|
+
selection.loadPreferences();
|
|
23
|
+
shell.load();
|
|
24
|
+
homeComposer.setWorkspace(shell.activeWorkspace());
|
|
25
|
+
dashboard.setActive(true);
|
|
26
|
+
for (const control of [shell, ...bindables]) control.bind();
|
|
27
|
+
bindEvents();
|
|
28
|
+
renderComposer();
|
|
29
|
+
selection.renderPermissionMode();
|
|
30
|
+
renderMessages();
|
|
31
|
+
state.config = await client.loadWebConfig();
|
|
32
|
+
schedules.refreshAvailability();
|
|
33
|
+
selection.renderEnvironmentOptions();
|
|
34
|
+
const options = selection.environmentOptions();
|
|
35
|
+
const saved = preferences.environmentId();
|
|
36
|
+
const fallback =
|
|
37
|
+
textOf(state.config.defaultEnvironmentId).trim() || options[0]?.value || "";
|
|
38
|
+
const hasSavedEnvironment = options.some((option) => option.value === saved);
|
|
39
|
+
dom.environmentSelect.value = hasSavedEnvironment ? saved : fallback;
|
|
40
|
+
preferences.saveEnvironmentId(dom.environmentSelect.value);
|
|
41
|
+
homeComposer.environmentChanged();
|
|
42
|
+
selection.renderAgentPicker();
|
|
43
|
+
realtime.connect();
|
|
44
|
+
await Promise.allSettled([
|
|
45
|
+
selection.loadModels(),
|
|
46
|
+
selection.loadAgentMode(),
|
|
47
|
+
operations.loadRuntimeStatus(),
|
|
48
|
+
operations.loadSystemHealth(),
|
|
49
|
+
configuration.load(),
|
|
50
|
+
]);
|
|
51
|
+
await restoreLastSession();
|
|
52
|
+
dashboard.setReady();
|
|
53
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export function findAppDom(documentRoot = document) {
|
|
2
|
+
return {
|
|
3
|
+
app: documentRoot.getElementById("app"),
|
|
4
|
+
homeWorkspaceButton: documentRoot.getElementById("homeWorkspaceButton"),
|
|
5
|
+
homeWorkspacePanel: documentRoot.getElementById("homeWorkspacePanel"),
|
|
6
|
+
homeDashboardRoot: documentRoot.getElementById("homeDashboardRoot"),
|
|
7
|
+
chatWorkspaceButton: documentRoot.getElementById("chatWorkspaceButton"),
|
|
8
|
+
schedulesWorkspaceButton: documentRoot.getElementById(
|
|
9
|
+
"schedulesWorkspaceButton",
|
|
10
|
+
),
|
|
11
|
+
schedulesWorkspacePanel: documentRoot.getElementById(
|
|
12
|
+
"schedulesWorkspacePanel",
|
|
13
|
+
),
|
|
14
|
+
closeSchedulesWorkspaceButton: documentRoot.getElementById(
|
|
15
|
+
"closeSchedulesWorkspaceButton",
|
|
16
|
+
),
|
|
17
|
+
schedulesRoot: documentRoot.getElementById("schedulesRoot"),
|
|
18
|
+
configWorkspaceButton: documentRoot.getElementById("configWorkspaceButton"),
|
|
19
|
+
chatPanel: documentRoot.querySelector(".chat-panel"),
|
|
20
|
+
sessionsPanel: documentRoot.querySelector(".sessions-panel"),
|
|
21
|
+
configWorkspacePanel: documentRoot.getElementById("configWorkspacePanel"),
|
|
22
|
+
closeConfigWorkspaceButton: documentRoot.getElementById(
|
|
23
|
+
"closeConfigWorkspaceButton",
|
|
24
|
+
),
|
|
25
|
+
connectionLabel: documentRoot.getElementById("connectionLabel"),
|
|
26
|
+
environmentSelect: documentRoot.getElementById("environmentSelect"),
|
|
27
|
+
agentPickerButton: documentRoot.getElementById("agentPickerButton"),
|
|
28
|
+
agentPickerMenu: documentRoot.getElementById("agentPickerMenu"),
|
|
29
|
+
newSessionButton: documentRoot.getElementById("newSessionButton"),
|
|
30
|
+
refreshSessionsButton: documentRoot.getElementById("refreshSessionsButton"),
|
|
31
|
+
closeSessionsButton: documentRoot.getElementById("closeSessionsButton"),
|
|
32
|
+
sessionsToggleButton: documentRoot.getElementById("sessionsToggleButton"),
|
|
33
|
+
sessionSearchInput: documentRoot.getElementById("sessionSearchInput"),
|
|
34
|
+
sessionsCount: documentRoot.getElementById("sessionsCount"),
|
|
35
|
+
sessionsList: documentRoot.getElementById("sessionsList"),
|
|
36
|
+
sessionTitle: documentRoot.getElementById("sessionTitle"),
|
|
37
|
+
agentModeButton: documentRoot.getElementById("agentModeButton"),
|
|
38
|
+
agentModeMenu: documentRoot.getElementById("agentModeMenu"),
|
|
39
|
+
permissionModeButton: documentRoot.getElementById("permissionModeButton"),
|
|
40
|
+
permissionModeMenu: documentRoot.getElementById("permissionModeMenu"),
|
|
41
|
+
modelSelect: documentRoot.getElementById("modelSelect"),
|
|
42
|
+
modelSelectButton: documentRoot.getElementById("modelSelectButton"),
|
|
43
|
+
modelSelectValue: documentRoot.getElementById("modelSelectValue"),
|
|
44
|
+
modelSelectMenu: documentRoot.getElementById("modelSelectMenu"),
|
|
45
|
+
messagesList: documentRoot.getElementById("messagesList"),
|
|
46
|
+
runtimeSetupGuide: documentRoot.getElementById("runtimeSetupGuide"),
|
|
47
|
+
messageStatusRegion: documentRoot.getElementById("messageStatusRegion"),
|
|
48
|
+
jumpToLatestButton: documentRoot.getElementById("jumpToLatestButton"),
|
|
49
|
+
composerForm: documentRoot.getElementById("composerForm"),
|
|
50
|
+
attachmentButton: documentRoot.getElementById("attachmentButton"),
|
|
51
|
+
attachmentInput: documentRoot.getElementById("attachmentInput"),
|
|
52
|
+
attachmentPreview: documentRoot.getElementById("attachmentPreview"),
|
|
53
|
+
composerInput: documentRoot.getElementById("composerInput"),
|
|
54
|
+
composerContextWindow: documentRoot.getElementById("composerContextWindow"),
|
|
55
|
+
composerPlan: documentRoot.getElementById("composerPlan"),
|
|
56
|
+
composerSubmitControl: documentRoot.getElementById("composerSubmitControl"),
|
|
57
|
+
sendButton: documentRoot.getElementById("sendButton"),
|
|
58
|
+
sendButtonLabel: documentRoot.getElementById("sendButtonLabel"),
|
|
59
|
+
sendNextMenuButton: documentRoot.getElementById("sendNextMenuButton"),
|
|
60
|
+
sendNextMenu: documentRoot.getElementById("sendNextMenu"),
|
|
61
|
+
sendNextButton: documentRoot.getElementById("sendNextButton"),
|
|
62
|
+
refreshRuntimeButton: documentRoot.getElementById("refreshRuntimeButton"),
|
|
63
|
+
runtimeStatus: documentRoot.getElementById("runtimeStatus"),
|
|
64
|
+
refreshLogsButton: documentRoot.getElementById("refreshLogsButton"),
|
|
65
|
+
runtimeLogs: documentRoot.getElementById("runtimeLogs"),
|
|
66
|
+
refreshHealthButton: documentRoot.getElementById("refreshHealthButton"),
|
|
67
|
+
healthStatus: documentRoot.getElementById("healthStatus"),
|
|
68
|
+
refreshConfigButton: documentRoot.getElementById("refreshConfigButton"),
|
|
69
|
+
configStatus: documentRoot.getElementById("configStatus"),
|
|
70
|
+
configDashboard: documentRoot.getElementById("configDashboard"),
|
|
71
|
+
panelBackdrop: documentRoot.getElementById("panelBackdrop"),
|
|
72
|
+
toastRegion: documentRoot.getElementById("toastRegion"),
|
|
73
|
+
operationsTabButtons: [
|
|
74
|
+
...documentRoot.querySelectorAll(".operations-tab-button"),
|
|
75
|
+
],
|
|
76
|
+
operationsTabPages: [
|
|
77
|
+
...documentRoot.querySelectorAll(".operations-tab-page"),
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|