@abot-ai/runtime 1.2.0 → 1.3.1
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/scripts/init-runtime.js +4 -13
- package/dist/scripts/runtime-setup-directories.d.ts +2 -0
- package/dist/scripts/runtime-setup-directories.js +38 -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/directory-authority/bootstrap.d.ts +1 -0
- package/dist/src/shared/directory-authority/bootstrap.js +118 -0
- package/dist/src/shared/directory-authority/command.d.ts +8 -0
- package/dist/src/shared/directory-authority/command.js +27 -0
- package/dist/src/shared/directory-authority/errors.d.ts +5 -0
- package/dist/src/shared/directory-authority/errors.js +10 -0
- package/dist/src/shared/directory-authority/index.d.ts +3 -0
- package/dist/src/shared/directory-authority/index.js +3 -0
- package/dist/src/shared/directory-authority/protocol.d.ts +11 -0
- package/dist/src/shared/directory-authority/protocol.js +62 -0
- package/dist/src/shared/directory-authority/task.d.ts +7 -0
- package/dist/src/shared/directory-authority/task.js +97 -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/plugins.md +15 -9
- 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/exec/plugin.json +3 -3
- package/plugins/exec/skills/exec_skill/SKILL.md +1 -1
- package/plugins/exec/source/process-manager.ts +1 -20
- package/plugins/exec/source/shell-platform.ts +29 -0
- package/plugins/exec/src/index.cjs +25 -18
- package/plugins/filesystem/plugin.json +17 -2
- package/plugins/filesystem/source/atomic-write.ts +9 -0
- package/plugins/filesystem/source/bounded-io.ts +5 -99
- package/plugins/filesystem/source/directory-authority-write.ts +64 -0
- package/plugins/filesystem/source/directory-sample-task.ts +23 -0
- package/plugins/filesystem/source/directory-sample.ts +132 -0
- package/plugins/filesystem/source/directory-write-task.ts +160 -0
- package/plugins/filesystem/source/mutation-parent.ts +11 -0
- package/plugins/filesystem/src/index.cjs +693 -118
- package/plugins/json-inspector/plugin.json +12 -0
- package/plugins/local-search/plugin.json +12 -0
- package/plugins/local-search/source/index.ts +2 -0
- package/plugins/local-search/source/paths.ts +30 -7
- package/plugins/local-search/source/ripgrep-process.ts +69 -0
- package/plugins/local-search/source/ripgrep.ts +19 -23
- package/plugins/local-search/src/index.cjs +295 -32
- 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
|
@@ -200,6 +200,7 @@ export class SessionService {
|
|
|
200
200
|
taskType: options.taskType,
|
|
201
201
|
requestId: options.requestId,
|
|
202
202
|
cronJobId: options.cronJobId,
|
|
203
|
+
...(options.schedule ? { schedule: options.schedule } : {}),
|
|
203
204
|
cronTitle: options.cronTitle,
|
|
204
205
|
triggerType: options.triggerType,
|
|
205
206
|
attachments: options.attachments,
|
|
@@ -86,6 +86,7 @@ export type SessionListResult = {
|
|
|
86
86
|
nextCursor: string | null;
|
|
87
87
|
};
|
|
88
88
|
export type SessionSnapshotMessage = {
|
|
89
|
+
schedule?: import("./schedule-metadata.js").ScheduleMessageReference;
|
|
89
90
|
id: string | number;
|
|
90
91
|
sessionId: string;
|
|
91
92
|
role: SessionMessageRole;
|
|
@@ -137,6 +138,7 @@ export type SessionMessageDeleteResult = {
|
|
|
137
138
|
deletedRequestEvents?: number;
|
|
138
139
|
};
|
|
139
140
|
export type SessionMessage = {
|
|
141
|
+
schedule?: import("./schedule-metadata.js").ScheduleMessageReference;
|
|
140
142
|
id: string;
|
|
141
143
|
role: SessionMessageRole;
|
|
142
144
|
content: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function directoryAuthorityScript(mode: "task" | "command", messageLimit: number, task?: (input: never) => unknown): string;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function is serialized into a fresh Node process. It must remain
|
|
3
|
+
* closure-free and use only node: built-ins; the starting cwd is untrusted
|
|
4
|
+
* until its identity has been compared with the inherited directory handle.
|
|
5
|
+
*/
|
|
6
|
+
function directoryAuthorityBootstrap(mode, messageLimit, task) {
|
|
7
|
+
const fs = require("node:fs");
|
|
8
|
+
function fail(code, message) {
|
|
9
|
+
throw Object.assign(new Error(message), { code });
|
|
10
|
+
}
|
|
11
|
+
function verifyDirectoryAuthority() {
|
|
12
|
+
const expected = fs.fstatSync(3, { bigint: true });
|
|
13
|
+
const actual = fs.statSync(".", { bigint: true });
|
|
14
|
+
const matchesHeldDirectory = expected.isDirectory() &&
|
|
15
|
+
actual.isDirectory() &&
|
|
16
|
+
expected.dev === actual.dev &&
|
|
17
|
+
expected.ino === actual.ino;
|
|
18
|
+
if (matchesHeldDirectory)
|
|
19
|
+
return;
|
|
20
|
+
fail("directory_authority_changed", "The directory changed before the operation could establish its authority.");
|
|
21
|
+
}
|
|
22
|
+
function readRequest() {
|
|
23
|
+
const fd = mode === "task" ? 0 : 4;
|
|
24
|
+
const chunk = Buffer.alloc(64 * 1024);
|
|
25
|
+
const chunks = [];
|
|
26
|
+
let total = 0;
|
|
27
|
+
for (;;) {
|
|
28
|
+
const length = fs.readSync(fd, chunk, 0, chunk.length, null);
|
|
29
|
+
if (length === 0)
|
|
30
|
+
break;
|
|
31
|
+
total += length;
|
|
32
|
+
if (total > messageLimit) {
|
|
33
|
+
fail("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
|
|
34
|
+
}
|
|
35
|
+
chunks.push(Buffer.from(chunk.subarray(0, length)));
|
|
36
|
+
}
|
|
37
|
+
return JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
38
|
+
}
|
|
39
|
+
function reportFailure(error) {
|
|
40
|
+
const detail = error;
|
|
41
|
+
const code = typeof detail?.code === "string"
|
|
42
|
+
? detail.code.slice(0, 256)
|
|
43
|
+
: "directory_authority_failed";
|
|
44
|
+
const message = typeof detail?.message === "string"
|
|
45
|
+
? detail.message.slice(0, 4096)
|
|
46
|
+
: "The directory operation failed.";
|
|
47
|
+
let encoded;
|
|
48
|
+
try {
|
|
49
|
+
encoded = JSON.stringify({
|
|
50
|
+
ok: false,
|
|
51
|
+
error: { code, message, data: detail?.data },
|
|
52
|
+
});
|
|
53
|
+
if (Buffer.byteLength(encoded) > messageLimit)
|
|
54
|
+
throw new Error();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
encoded = JSON.stringify({ ok: false, error: { code, message } });
|
|
58
|
+
}
|
|
59
|
+
writeResponse(mode === "task" ? 1 : 2, encoded);
|
|
60
|
+
process.exitCode = mode === "task" ? 0 : 125;
|
|
61
|
+
}
|
|
62
|
+
function writeResponse(fd, encoded) {
|
|
63
|
+
const bytes = Buffer.from(encoded);
|
|
64
|
+
let offset = 0;
|
|
65
|
+
while (offset < bytes.length) {
|
|
66
|
+
offset += fs.writeSync(fd, bytes, offset, bytes.length - offset);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function runTask(input) {
|
|
70
|
+
if (!task)
|
|
71
|
+
fail("directory_authority_failed", "The directory task is missing.");
|
|
72
|
+
const result = await task(input);
|
|
73
|
+
const encoded = JSON.stringify({ ok: true, result });
|
|
74
|
+
if (Buffer.byteLength(encoded) > messageLimit) {
|
|
75
|
+
fail("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit.");
|
|
76
|
+
}
|
|
77
|
+
writeResponse(1, encoded);
|
|
78
|
+
}
|
|
79
|
+
function runCommand(input) {
|
|
80
|
+
const { spawn } = require("node:child_process");
|
|
81
|
+
const command = input;
|
|
82
|
+
// Omitting cwd inherits the kernel-pinned authority. Resolving cwd() back
|
|
83
|
+
// into a pathname here would reopen the race this bridge prevents.
|
|
84
|
+
const child = spawn(command.command, command.args, {
|
|
85
|
+
stdio: ["ignore", "inherit", "inherit"],
|
|
86
|
+
env: process.env,
|
|
87
|
+
});
|
|
88
|
+
child.once("error", reportFailure);
|
|
89
|
+
child.once("exit", (code, signal) => {
|
|
90
|
+
if (signal) {
|
|
91
|
+
process.kill(process.pid, signal);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (typeof code === "number")
|
|
95
|
+
process.exitCode = code;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
verifyDirectoryAuthority();
|
|
100
|
+
const input = readRequest();
|
|
101
|
+
if (mode === "command") {
|
|
102
|
+
runCommand(input);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
void runTask(input).catch(reportFailure);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
reportFailure(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export function directoryAuthorityScript(mode, messageLimit, task) {
|
|
112
|
+
const taskSource = task ? `(${task.toString()})` : "undefined";
|
|
113
|
+
// tsx preserves nested function names with esbuild's __name annotation.
|
|
114
|
+
// Include that annotation's definition so the same trusted task works in
|
|
115
|
+
// development and in the production bundle without rewriting its source.
|
|
116
|
+
const preserveFunctionName = "const __name=(target,value)=>Object.defineProperty(target,'name',{value,configurable:true});";
|
|
117
|
+
return `${preserveFunctionName}(${directoryAuthorityBootstrap.toString()})(${JSON.stringify(mode)},${messageLimit},${taskSource});`;
|
|
118
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ChildProcessByStdio } from "node:child_process";
|
|
2
|
+
import type { Readable } from "node:stream";
|
|
3
|
+
import { type DirectoryAuthorityLocation } from "./protocol.js";
|
|
4
|
+
export declare function spawnDirectoryAuthorityCommand(input: DirectoryAuthorityLocation & Readonly<{
|
|
5
|
+
command: string;
|
|
6
|
+
args: readonly string[];
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
8
|
+
}>): ChildProcessByStdio<null, Readable, Readable>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { directoryAuthorityScript } from "./bootstrap.js";
|
|
3
|
+
import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, encodeAuthorityRequest, } from "./protocol.js";
|
|
4
|
+
export function spawnDirectoryAuthorityCommand(input) {
|
|
5
|
+
assertDirectoryAuthorityLocation(input);
|
|
6
|
+
const request = encodeAuthorityRequest({
|
|
7
|
+
command: input.command,
|
|
8
|
+
args: input.args,
|
|
9
|
+
});
|
|
10
|
+
const child = spawn(process.execPath, [
|
|
11
|
+
"--input-type=commonjs",
|
|
12
|
+
"-e",
|
|
13
|
+
directoryAuthorityScript("command", AUTHORITY_MESSAGE_LIMIT),
|
|
14
|
+
], {
|
|
15
|
+
cwd: input.directoryPath,
|
|
16
|
+
env: authorityEnvironment(input.env),
|
|
17
|
+
detached: true,
|
|
18
|
+
windowsHide: true,
|
|
19
|
+
stdio: ["ignore", "pipe", "pipe", input.directoryFd, "pipe"],
|
|
20
|
+
});
|
|
21
|
+
const requestPipe = child.stdio[4];
|
|
22
|
+
// An early authority failure may close the request pipe before the parent
|
|
23
|
+
// finishes writing. The process result remains the authoritative error.
|
|
24
|
+
requestPipe?.on("error", () => undefined);
|
|
25
|
+
requestPipe?.end(request);
|
|
26
|
+
return child;
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const AUTHORITY_MESSAGE_LIMIT: number;
|
|
2
|
+
export declare const AUTHORITY_STDERR_LIMIT: number;
|
|
3
|
+
export declare const AUTHORITY_TASK_TIMEOUT_MS = 30000;
|
|
4
|
+
export type DirectoryAuthorityLocation = Readonly<{
|
|
5
|
+
directoryPath: string;
|
|
6
|
+
directoryFd: number;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function assertDirectoryAuthorityLocation(location: DirectoryAuthorityLocation): void;
|
|
9
|
+
export declare function authorityEnvironment(environment?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
10
|
+
export declare function encodeAuthorityRequest(input: unknown): string;
|
|
11
|
+
export declare function decodeAuthorityResult<Result>(output: string): Result;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { DirectoryAuthorityError } from "./errors.js";
|
|
3
|
+
export const AUTHORITY_MESSAGE_LIMIT = 8 * 1024 * 1024;
|
|
4
|
+
export const AUTHORITY_STDERR_LIMIT = 16 * 1024;
|
|
5
|
+
export const AUTHORITY_TASK_TIMEOUT_MS = 30_000;
|
|
6
|
+
export function assertDirectoryAuthorityLocation(location) {
|
|
7
|
+
if (!isAbsolute(location.directoryPath)) {
|
|
8
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_path", "The directory authority requires an absolute starting path.");
|
|
9
|
+
}
|
|
10
|
+
const hasOpenDescriptorNumber = Number.isInteger(location.directoryFd) && location.directoryFd >= 0;
|
|
11
|
+
if (hasOpenDescriptorNumber)
|
|
12
|
+
return;
|
|
13
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_fd", "The directory authority requires an open directory descriptor.");
|
|
14
|
+
}
|
|
15
|
+
export function authorityEnvironment(environment = process.env) {
|
|
16
|
+
const sanitized = { ...environment };
|
|
17
|
+
delete sanitized.NODE_OPTIONS;
|
|
18
|
+
delete sanitized.NODE_PATH;
|
|
19
|
+
return sanitized;
|
|
20
|
+
}
|
|
21
|
+
export function encodeAuthorityRequest(input) {
|
|
22
|
+
let encoded;
|
|
23
|
+
try {
|
|
24
|
+
encoded = JSON.stringify(input);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
|
|
28
|
+
}
|
|
29
|
+
if (encoded === undefined) {
|
|
30
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
|
|
31
|
+
}
|
|
32
|
+
if (Buffer.byteLength(encoded) <= AUTHORITY_MESSAGE_LIMIT)
|
|
33
|
+
return encoded;
|
|
34
|
+
throw new DirectoryAuthorityError("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
|
|
35
|
+
}
|
|
36
|
+
function isAuthorityMessageObject(value) {
|
|
37
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
38
|
+
}
|
|
39
|
+
export function decodeAuthorityResult(output) {
|
|
40
|
+
let message;
|
|
41
|
+
try {
|
|
42
|
+
message = JSON.parse(output);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
46
|
+
}
|
|
47
|
+
if (!isAuthorityMessageObject(message)) {
|
|
48
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
49
|
+
}
|
|
50
|
+
if (message.ok === true)
|
|
51
|
+
return message.result;
|
|
52
|
+
const hasAuthorityError = message.ok === false && isAuthorityMessageObject(message.error);
|
|
53
|
+
if (!hasAuthorityError) {
|
|
54
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
55
|
+
}
|
|
56
|
+
const { code, message: explanation, data, } = message.error;
|
|
57
|
+
const hasErrorDescription = typeof code === "string" && typeof explanation === "string";
|
|
58
|
+
if (!hasErrorDescription) {
|
|
59
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid error response.");
|
|
60
|
+
}
|
|
61
|
+
throw new DirectoryAuthorityError(code, explanation, isAuthorityMessageObject(data) ? data : undefined);
|
|
62
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type DirectoryAuthorityLocation } from "./protocol.js";
|
|
2
|
+
export declare function runDirectoryAuthorityTask<Input, Result>(input: DirectoryAuthorityLocation & Readonly<{
|
|
3
|
+
input: Input;
|
|
4
|
+
task: (input: Input) => Result | Promise<Result>;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
signal?: AbortSignal;
|
|
7
|
+
}>): Promise<Result>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { directoryAuthorityScript } from "./bootstrap.js";
|
|
3
|
+
import { DirectoryAuthorityError } from "./errors.js";
|
|
4
|
+
import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, AUTHORITY_STDERR_LIMIT, AUTHORITY_TASK_TIMEOUT_MS, decodeAuthorityResult, encodeAuthorityRequest, } from "./protocol.js";
|
|
5
|
+
export async function runDirectoryAuthorityTask(input) {
|
|
6
|
+
assertDirectoryAuthorityLocation(input);
|
|
7
|
+
const request = encodeAuthorityRequest(input.input);
|
|
8
|
+
const timeoutMs = input.timeoutMs ?? AUTHORITY_TASK_TIMEOUT_MS;
|
|
9
|
+
const hasPositiveDeadline = Number.isFinite(timeoutMs) && timeoutMs > 0;
|
|
10
|
+
if (!hasPositiveDeadline) {
|
|
11
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_timeout", "The directory operation deadline must be a positive finite duration.");
|
|
12
|
+
}
|
|
13
|
+
if (input.signal?.aborted) {
|
|
14
|
+
throw new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled before it started.");
|
|
15
|
+
}
|
|
16
|
+
const child = spawn(process.execPath, [
|
|
17
|
+
"--input-type=commonjs",
|
|
18
|
+
"-e",
|
|
19
|
+
directoryAuthorityScript("task", AUTHORITY_MESSAGE_LIMIT, input.task),
|
|
20
|
+
], {
|
|
21
|
+
cwd: input.directoryPath,
|
|
22
|
+
env: authorityEnvironment(),
|
|
23
|
+
detached: true,
|
|
24
|
+
windowsHide: true,
|
|
25
|
+
stdio: ["pipe", "pipe", "pipe", input.directoryFd],
|
|
26
|
+
});
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const chunks = [];
|
|
29
|
+
const stderrChunks = [];
|
|
30
|
+
let bytes = 0;
|
|
31
|
+
let stderrBytes = 0;
|
|
32
|
+
let failure;
|
|
33
|
+
const stop = (error) => {
|
|
34
|
+
if (failure)
|
|
35
|
+
return;
|
|
36
|
+
failure = error;
|
|
37
|
+
if (typeof child.pid === "number") {
|
|
38
|
+
try {
|
|
39
|
+
process.kill(-child.pid, "SIGKILL");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// A process which has already exited may no longer own its group.
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
child.kill("SIGKILL");
|
|
47
|
+
};
|
|
48
|
+
const onAbort = () => stop(new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled."));
|
|
49
|
+
const timer = setTimeout(() => stop(new DirectoryAuthorityError("directory_authority_timeout", "The directory operation exceeded its deadline.")), timeoutMs);
|
|
50
|
+
timer.unref();
|
|
51
|
+
input.signal?.addEventListener("abort", onAbort, { once: true });
|
|
52
|
+
if (input.signal?.aborted)
|
|
53
|
+
onAbort();
|
|
54
|
+
child.stdout.on("data", (chunk) => {
|
|
55
|
+
bytes += chunk.length;
|
|
56
|
+
if (bytes > AUTHORITY_MESSAGE_LIMIT) {
|
|
57
|
+
stop(new DirectoryAuthorityError("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit."));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
chunks.push(chunk);
|
|
61
|
+
});
|
|
62
|
+
child.stderr.on("data", (chunk) => {
|
|
63
|
+
const remaining = Math.max(AUTHORITY_STDERR_LIMIT - stderrBytes, 0);
|
|
64
|
+
if (remaining === 0)
|
|
65
|
+
return;
|
|
66
|
+
stderrChunks.push(chunk.subarray(0, remaining));
|
|
67
|
+
stderrBytes += Math.min(chunk.length, remaining);
|
|
68
|
+
});
|
|
69
|
+
child.stdin.on("error", () => undefined);
|
|
70
|
+
child.once("error", (error) => {
|
|
71
|
+
failure ??= new DirectoryAuthorityError("directory_authority_unavailable", `The directory operation could not start: ${error.message}`);
|
|
72
|
+
});
|
|
73
|
+
child.once("close", (code, signal) => {
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
input.signal?.removeEventListener("abort", onAbort);
|
|
76
|
+
if (failure) {
|
|
77
|
+
reject(failure);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (code !== 0) {
|
|
81
|
+
reject(new DirectoryAuthorityError("directory_authority_failed", "The directory operation process did not complete successfully.", {
|
|
82
|
+
exitCode: code,
|
|
83
|
+
signal,
|
|
84
|
+
stderr: Buffer.concat(stderrChunks).toString("utf8"),
|
|
85
|
+
}));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
resolve(decodeAuthorityResult(Buffer.concat(chunks).toString("utf8")));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
reject(error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
child.stdin.end(request);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Server } from "node:http";
|
|
2
|
+
import type { WebSocketServer } from "ws";
|
|
3
|
+
/** Stops only this server's connections; active work is not drained on shutdown. */
|
|
4
|
+
export declare function closeHttpServerImmediately(server: Server, webSockets?: WebSocketServer): Promise<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Stops only this server's connections; active work is not drained on shutdown. */
|
|
2
|
+
export function closeHttpServerImmediately(server, webSockets) {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
server.close((error) => {
|
|
5
|
+
if (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
resolve();
|
|
10
|
+
});
|
|
11
|
+
// Stop accepting first: a connection cannot arrive between the sweep and close.
|
|
12
|
+
server.closeAllConnections();
|
|
13
|
+
webSockets?.close();
|
|
14
|
+
for (const client of webSockets?.clients ?? [])
|
|
15
|
+
client.terminate();
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { remainingTime, withinDeadline } from "./deadline.js";
|
|
2
|
+
import { PublicHttpError } from "./errors.js";
|
|
3
|
+
export function createAggregateGate(maxActive, maxQueued) {
|
|
4
|
+
let active = 0;
|
|
5
|
+
const queue = [];
|
|
6
|
+
const startQueued = () => {
|
|
7
|
+
while (active < maxActive && queue.length > 0) {
|
|
8
|
+
const waiter = queue.shift();
|
|
9
|
+
clearTimeout(waiter.timeout);
|
|
10
|
+
if (waiter.onAbort) {
|
|
11
|
+
waiter.abortSignal?.removeEventListener("abort", waiter.onAbort);
|
|
12
|
+
}
|
|
13
|
+
if (waiter.abortSignal?.aborted) {
|
|
14
|
+
waiter.reject(new PublicHttpError("web_request_aborted", "The web request was aborted."));
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (waiter.deadline <= Date.now()) {
|
|
18
|
+
waiter.reject(new PublicHttpError("web_request_timed_out", "The upstream web request timed out."));
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
active += 1;
|
|
22
|
+
let released = false;
|
|
23
|
+
waiter.resolve(() => {
|
|
24
|
+
if (released)
|
|
25
|
+
return;
|
|
26
|
+
released = true;
|
|
27
|
+
active -= 1;
|
|
28
|
+
startQueued();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const acquire = (deadline, abortSignal) => {
|
|
33
|
+
if (abortSignal?.aborted) {
|
|
34
|
+
return Promise.reject(new PublicHttpError("web_request_aborted", "The web request was aborted."));
|
|
35
|
+
}
|
|
36
|
+
if (active < maxActive) {
|
|
37
|
+
active += 1;
|
|
38
|
+
let released = false;
|
|
39
|
+
return Promise.resolve(() => {
|
|
40
|
+
if (released)
|
|
41
|
+
return;
|
|
42
|
+
released = true;
|
|
43
|
+
active -= 1;
|
|
44
|
+
startQueued();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (queue.length >= maxQueued) {
|
|
48
|
+
return Promise.reject(new PublicHttpError("web_request_capacity_exceeded", "The web client is at its bounded request capacity."));
|
|
49
|
+
}
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
const waiter = {
|
|
52
|
+
resolve,
|
|
53
|
+
reject,
|
|
54
|
+
deadline,
|
|
55
|
+
...(abortSignal ? { abortSignal } : {}),
|
|
56
|
+
};
|
|
57
|
+
const remove = () => {
|
|
58
|
+
const index = queue.indexOf(waiter);
|
|
59
|
+
if (index >= 0)
|
|
60
|
+
queue.splice(index, 1);
|
|
61
|
+
};
|
|
62
|
+
const fail = (error) => {
|
|
63
|
+
remove();
|
|
64
|
+
clearTimeout(waiter.timeout);
|
|
65
|
+
if (waiter.onAbort) {
|
|
66
|
+
abortSignal?.removeEventListener("abort", waiter.onAbort);
|
|
67
|
+
}
|
|
68
|
+
reject(error);
|
|
69
|
+
};
|
|
70
|
+
waiter.onAbort = () => fail(new PublicHttpError("web_request_aborted", "The web request was aborted."));
|
|
71
|
+
waiter.timeout = setTimeout(() => fail(new PublicHttpError("web_request_timed_out", "The upstream web request timed out.")), remainingTime(deadline));
|
|
72
|
+
waiter.timeout.unref?.();
|
|
73
|
+
abortSignal?.addEventListener("abort", waiter.onAbort, { once: true });
|
|
74
|
+
queue.push(waiter);
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
return Object.freeze({
|
|
78
|
+
async run(operation, deadline, abortSignal) {
|
|
79
|
+
const release = await acquire(deadline, abortSignal);
|
|
80
|
+
const rawWork = Promise.resolve().then(operation);
|
|
81
|
+
// A deadline rejects the visible operation promptly, but the capacity slot
|
|
82
|
+
// remains held until non-cancellable DNS or transport work actually settles.
|
|
83
|
+
void rawWork.then(release, release);
|
|
84
|
+
return await withinDeadline(rawWork, deadline, abortSignal);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PublicHttpError } from "./errors.js";
|
|
2
|
+
export function remainingTime(deadline) {
|
|
3
|
+
const remaining = deadline - Date.now();
|
|
4
|
+
if (remaining <= 0) {
|
|
5
|
+
throw new PublicHttpError("web_request_timed_out", "The upstream web request timed out.");
|
|
6
|
+
}
|
|
7
|
+
return remaining;
|
|
8
|
+
}
|
|
9
|
+
export function withinDeadline(promise, deadline, abortSignal) {
|
|
10
|
+
if (abortSignal?.aborted) {
|
|
11
|
+
return Promise.reject(new PublicHttpError("web_request_aborted", "The web request was aborted."));
|
|
12
|
+
}
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
let settled = false;
|
|
15
|
+
const finish = (operation) => {
|
|
16
|
+
if (settled)
|
|
17
|
+
return;
|
|
18
|
+
settled = true;
|
|
19
|
+
clearTimeout(timeout);
|
|
20
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
21
|
+
operation();
|
|
22
|
+
};
|
|
23
|
+
const onAbort = () => finish(() => reject(new PublicHttpError("web_request_aborted", "The web request was aborted.")));
|
|
24
|
+
const timeout = setTimeout(() => finish(() => reject(new PublicHttpError("web_request_timed_out", "The upstream web request timed out."))), remainingTime(deadline));
|
|
25
|
+
timeout.unref?.();
|
|
26
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
27
|
+
promise.then((value) => finish(() => resolve(value)), (error) => finish(() => reject(error)));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type PublicHttpErrorCode = "web_request_aborted" | "web_request_timed_out" | "web_request_capacity_exceeded" | "web_target_invalid" | "web_target_not_public" | "web_target_unresolvable" | "web_redirect_invalid" | "web_redirect_limit_exceeded" | "web_response_invalid";
|
|
2
|
+
export declare class PublicHttpError<Code extends string = PublicHttpErrorCode> extends Error {
|
|
3
|
+
readonly code: Code;
|
|
4
|
+
constructor(code: Code, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function isPublicHttpError(error: unknown): error is PublicHttpError;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type PublicAddress = Readonly<{
|
|
2
|
+
address: string;
|
|
3
|
+
family: 4 | 6;
|
|
4
|
+
}>;
|
|
5
|
+
export type HostResolver = (hostname: string) => Promise<readonly PublicAddress[]>;
|
|
6
|
+
export declare function isPublicIpv4(address: string): boolean;
|
|
7
|
+
export declare function isPublicIpv6(address: string): boolean;
|
|
8
|
+
export declare function isPublicAddress(address: PublicAddress): boolean;
|
|
9
|
+
export declare function parsePublicHttpUrl(rawUrl: string): URL;
|
|
10
|
+
export declare const resolveHostAddresses: HostResolver;
|
|
11
|
+
export declare function resolvePublicTarget(url: URL, resolver?: HostResolver): Promise<PublicAddress>;
|