@abot-ai/runtime 1.9.0 → 2.0.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 +5 -1
- package/dist/scripts/add-runtime-model.js +11 -5
- package/dist/scripts/init-runtime.js +15 -10
- package/dist/scripts/runtime-model-addition.js +6 -1
- package/dist/scripts/runtime-setup-command-options.d.ts +11 -0
- package/dist/scripts/runtime-setup-command-options.js +41 -0
- package/dist/scripts/runtime-setup-files.d.ts +3 -2
- package/dist/scripts/runtime-setup-files.js +19 -4
- package/dist/scripts/runtime-setup-model-options.d.ts +8 -0
- package/dist/scripts/runtime-setup-model-options.js +40 -0
- package/dist/scripts/runtime-setup-presentation.js +2 -2
- package/dist/scripts/runtime-setup-provider-options.d.ts +4 -0
- package/dist/scripts/runtime-setup-provider-options.js +20 -0
- package/dist/src/model-gateway/client/contracts.d.ts +3 -0
- package/dist/src/model-gateway/client/input-token-count.js +36 -16
- package/dist/src/model-gateway/client/message-projection.d.ts +2 -0
- package/dist/src/model-gateway/client/message-projection.js +1 -0
- package/dist/src/model-gateway/client/options.js +1 -1
- package/dist/src/model-gateway/client/raw.js +1 -0
- package/dist/src/model-gateway/index.d.ts +1 -1
- package/dist/src/model-gateway/observability/input-token-count-diagnostics.d.ts +26 -0
- package/dist/src/model-gateway/observability/input-token-count-diagnostics.js +178 -0
- package/dist/src/model-gateway/policy/invocation-policy.d.ts +1 -3
- package/dist/src/model-gateway/policy/invocation-policy.js +3 -30
- package/dist/src/model-gateway/policy/reasoning-mode-budget.d.ts +5 -0
- package/dist/src/model-gateway/policy/reasoning-mode-budget.js +13 -0
- package/dist/src/model-gateway/policy/reasoning-policy.d.ts +10 -0
- package/dist/src/model-gateway/policy/reasoning-policy.js +124 -0
- package/dist/src/model-gateway/protocol/openai-embedding-response.d.ts +1 -0
- package/dist/src/model-gateway/protocol/openai-embedding-response.js +28 -0
- package/dist/src/model-gateway/protocol/sse-data.d.ts +9 -0
- package/dist/src/model-gateway/protocol/sse-data.js +67 -0
- package/dist/src/model-gateway/providers/envelope-budget.js +10 -1
- package/dist/src/model-gateway/providers/llamacpp/adapter.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/adapter.js +79 -0
- package/dist/src/model-gateway/providers/llamacpp/connection.d.ts +9 -0
- package/dist/src/model-gateway/providers/llamacpp/connection.js +73 -0
- package/dist/src/model-gateway/providers/llamacpp/diagnostics.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/diagnostics.js +17 -0
- package/dist/src/model-gateway/providers/llamacpp/embeddings.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/embeddings.js +56 -0
- package/dist/src/model-gateway/providers/llamacpp/input-token-count.d.ts +3 -0
- package/dist/src/model-gateway/providers/llamacpp/input-token-count.js +59 -0
- package/dist/src/model-gateway/providers/llamacpp/message-projection.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/message-projection.js +33 -0
- package/dist/src/model-gateway/providers/llamacpp/payload.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/payload.js +44 -0
- package/dist/src/model-gateway/providers/llamacpp/response-lifetime.d.ts +1 -0
- package/dist/src/model-gateway/providers/llamacpp/response-lifetime.js +56 -0
- package/dist/src/model-gateway/providers/llamacpp/schema-format.d.ts +2 -0
- package/dist/src/model-gateway/providers/llamacpp/schema-format.js +29 -0
- package/dist/src/model-gateway/providers/llamacpp/settings.d.ts +9 -0
- package/dist/src/model-gateway/providers/llamacpp/settings.js +25 -0
- package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.d.ts +10 -0
- package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.js +85 -0
- package/dist/src/model-gateway/providers/llamacpp/stream.d.ts +9 -0
- package/dist/src/model-gateway/providers/llamacpp/stream.js +33 -0
- package/dist/src/model-gateway/providers/openai/embeddings.js +2 -29
- package/dist/src/model-gateway/providers/openai/sse-data.d.ts +1 -9
- package/dist/src/model-gateway/providers/openai/sse-data.js +1 -67
- package/dist/src/model-gateway/providers/registry.js +2 -0
- package/dist/src/model-gateway/server/input-token-count-handler.js +10 -1
- package/dist/src/model-gateway/types.d.ts +11 -1
- package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.d.ts +4 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.js +11 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +28 -1
- package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +6 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +2 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +2 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +1 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +1 -0
- package/dist/src/runtime/adapters/scheduler-runtime.js +2 -0
- package/dist/src/runtime/automations/agent-step-executor.js +1 -0
- package/dist/src/runtime/automations/catalog.d.ts +3 -0
- package/dist/src/runtime/automations/catalog.js +2 -0
- package/dist/src/runtime/automations/definition-contracts.d.ts +2 -0
- package/dist/src/runtime/automations/definition-input.js +3 -1
- package/dist/src/runtime/automations/draft-mutations.js +5 -1
- package/dist/src/runtime/automations/model-dependency-projection.d.ts +3 -1
- package/dist/src/runtime/automations/model-dependency-projection.js +4 -2
- package/dist/src/runtime/automations/publication-validation.js +7 -0
- package/dist/src/runtime/automations/saved-agent-management.js +1 -0
- package/dist/src/runtime/automations/service.d.ts +3 -0
- package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +7 -5
- package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +9 -0
- package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -0
- package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +3 -0
- package/dist/src/runtime/capabilities/automations/tool-contract.js +3 -2
- package/dist/src/runtime/capabilities/automations/tool-module.js +16 -7
- package/dist/src/runtime/capabilities/model-reasoning-controls.d.ts +23 -0
- package/dist/src/runtime/capabilities/model-reasoning-controls.js +56 -0
- package/dist/src/runtime/capabilities/scheduling/create-operations.js +2 -0
- package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +1 -0
- package/dist/src/runtime/capabilities/scheduling/tool-module.js +5 -2
- package/dist/src/runtime/capabilities/scheduling/update-operations.js +2 -0
- package/dist/src/runtime/config/builders.js +6 -0
- package/dist/src/runtime/config/effective-model-config-validation.js +4 -0
- package/dist/src/runtime/config/llamacpp-profile-validation.d.ts +3 -0
- package/dist/src/runtime/config/llamacpp-profile-validation.js +15 -0
- package/dist/src/runtime/config/model-reasoning-schema.d.ts +40 -0
- package/dist/src/runtime/config/model-reasoning-schema.js +38 -0
- package/dist/src/runtime/config/model-reasoning-validation.d.ts +3 -0
- package/dist/src/runtime/config/model-reasoning-validation.js +37 -0
- package/dist/src/runtime/config/runner/step-instructions.d.ts +4 -0
- package/dist/src/runtime/config/runner/step-instructions.js +10 -6
- package/dist/src/runtime/config/schema.js +3 -0
- package/dist/src/runtime/config/validation/model-invocation-config-validation.js +14 -0
- package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +2 -0
- package/dist/src/runtime/context/compacted-capability-result-receipt.js +8 -7
- package/dist/src/runtime/context/execution-compacted-evidence.d.ts +4 -0
- package/dist/src/runtime/context/execution-compacted-evidence.js +2 -23
- package/dist/src/runtime/context/execution-compaction-checkpoint-selection.d.ts +19 -0
- package/dist/src/runtime/context/execution-compaction-checkpoint-selection.js +104 -0
- package/dist/src/runtime/context/model-step-compaction-inheritance.d.ts +12 -0
- package/dist/src/runtime/context/model-step-compaction-inheritance.js +28 -0
- package/dist/src/runtime/context/model-step-compaction-projection.d.ts +12 -0
- package/dist/src/runtime/context/model-step-compaction-projection.js +322 -0
- package/dist/src/runtime/context/model-step-compaction.d.ts +2 -1
- package/dist/src/runtime/context/model-step-compaction.js +25 -316
- package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +7 -1
- package/dist/src/runtime/context/request-context.d.ts +2 -0
- package/dist/src/runtime/context/request-context.js +16 -0
- package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +2 -1
- package/dist/src/runtime/context/request-tool-results-checkpoint.js +35 -6
- package/dist/src/runtime/context/request-tool-results.js +3 -1
- package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +5 -1
- package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +10 -4
- package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.d.ts +4 -0
- package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.js +38 -0
- package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +3 -1
- package/dist/src/runtime/context/semantic-compaction/generation-input.js +15 -10
- package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.d.ts +8 -0
- package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.js +76 -0
- package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +3 -1
- package/dist/src/runtime/context/semantic-compaction/run.js +6 -12
- package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +1 -1
- package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +20 -2
- package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.js +27 -0
- package/dist/src/runtime/knowledge-skills/catalog.js +2 -0
- package/dist/src/runtime/local-application.d.ts +5 -0
- package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -1
- package/dist/src/runtime/local-host/app-service-dispatch.js +2 -0
- package/dist/src/runtime/local-host/client-services.d.ts +5 -0
- package/dist/src/runtime/local-host/saved-approvals.js +1 -0
- package/dist/src/runtime/long-term-memory/onboarding/configuration.js +5 -7
- package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +26 -0
- package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.d.ts +1 -0
- package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.js +8 -0
- package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.d.ts +17 -0
- package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.js +77 -0
- package/dist/src/runtime/long-term-memory/onboarding/service.js +40 -10
- package/dist/src/runtime/model/input-token-count.js +1 -0
- package/dist/src/runtime/model/invoke-step.js +12 -0
- package/dist/src/runtime/model/invoke-structured-step.d.ts +4 -1
- package/dist/src/runtime/model/invoke-structured-step.js +4 -0
- package/dist/src/runtime/model/model-catalog.d.ts +3 -0
- package/dist/src/runtime/model/model-catalog.js +2 -0
- package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
- package/dist/src/runtime/model/model-context-budget.js +2 -0
- package/dist/src/runtime/model/model-step-port.d.ts +7 -0
- package/dist/src/runtime/model/optional-context-admission.d.ts +18 -0
- package/dist/src/runtime/model/optional-context-admission.js +23 -0
- package/dist/src/runtime/ports.d.ts +3 -1
- package/dist/src/runtime/projects/contracts.d.ts +6 -0
- package/dist/src/runtime/projects/registry-format.d.ts +3 -0
- package/dist/src/runtime/projects/registry-format.js +50 -0
- package/dist/src/runtime/projects/repository.d.ts +6 -3
- package/dist/src/runtime/projects/repository.js +26 -19
- package/dist/src/runtime/projects/service.js +11 -0
- package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
- package/dist/src/runtime/request/approval-wait/snapshot.d.ts +1 -1
- package/dist/src/runtime/request/approval-wait/snapshot.js +1 -0
- package/dist/src/runtime/request/contracts.d.ts +5 -1
- package/dist/src/runtime/request/execution-facets.js +2 -0
- package/dist/src/runtime/request/execution-payload-artifact-policy.d.ts +3 -0
- package/dist/src/runtime/request/execution-payload-artifact-policy.js +6 -0
- package/dist/src/runtime/request/execution-payload-compacted-evidence.js +1 -0
- package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
- package/dist/src/runtime/request/execution-scope-surfaces.js +3 -0
- package/dist/src/runtime/request/execution-scope.d.ts +2 -0
- package/dist/src/runtime/request/execution-scope.js +2 -0
- package/dist/src/runtime/request/input.d.ts +1 -0
- package/dist/src/runtime/request/input.js +1 -0
- package/dist/src/runtime/request/prepared-execution.d.ts +1 -0
- package/dist/src/runtime/request/prepared-execution.js +3 -0
- package/dist/src/runtime/request/reasoning-preference.d.ts +10 -0
- package/dist/src/runtime/request/reasoning-preference.js +29 -0
- package/dist/src/runtime/request/root-reference-action.js +3 -3
- package/dist/src/runtime/request/root-skill-read-admission.d.ts +4 -0
- package/dist/src/runtime/request/root-skill-read-admission.js +14 -0
- package/dist/src/runtime/request/root-skill-read.js +13 -5
- package/dist/src/runtime/request/supervisor-skill-selection-window.d.ts +16 -0
- package/dist/src/runtime/request/supervisor-skill-selection-window.js +17 -0
- package/dist/src/runtime/request/worker-capability-composition.js +2 -0
- package/dist/src/runtime/scheduler/contracts.d.ts +7 -1
- package/dist/src/runtime/scheduler/job-management.js +7 -1
- package/dist/src/runtime/scheduler/run-records.js +2 -0
- package/dist/src/runtime/scheduler/schedule-validation.js +2 -0
- package/dist/src/runtime/scheduler/scheduler-engine.js +1 -0
- package/dist/src/runtime/scheduler/snapshot-validation.js +2 -0
- package/dist/src/runtime/steps/auditor-decision/projection.js +2 -0
- package/dist/src/runtime/steps/execution-agent/capability-controls-partition.d.ts +9 -0
- package/dist/src/runtime/steps/execution-agent/capability-controls-partition.js +29 -0
- package/dist/src/runtime/steps/execution-agent/capability-scope.d.ts +17 -0
- package/dist/src/runtime/steps/execution-agent/capability-scope.js +54 -0
- package/dist/src/runtime/steps/execution-agent/compaction.js +22 -6
- package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +2 -0
- package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.d.ts +6 -0
- package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.js +13 -0
- package/dist/src/runtime/steps/execution-agent/format.js +3 -6
- package/dist/src/runtime/steps/execution-agent/input.d.ts +5 -1
- package/dist/src/runtime/steps/execution-agent/input.js +10 -36
- package/dist/src/runtime/steps/execution-agent/observation-guidance.d.ts +11 -0
- package/dist/src/runtime/steps/execution-agent/observation-guidance.js +33 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +2 -0
- package/dist/src/runtime/steps/execution-agent/refinement.d.ts +3 -2
- package/dist/src/runtime/steps/execution-agent/refinement.js +17 -6
- package/dist/src/runtime/steps/execution-agent/run.js +7 -1
- package/dist/src/runtime/steps/skill-read-decision.d.ts +1 -0
- package/dist/src/runtime/steps/skill-read-decision.js +9 -4
- package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +6 -1
- package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +15 -0
- package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +1 -1
- package/dist/src/runtime/steps/supervisor-decision/contracts.js +2 -0
- package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +22 -3
- package/dist/src/runtime/steps/supervisor-decision/delegation-contract.d.ts +9 -0
- package/dist/src/runtime/steps/supervisor-decision/delegation-contract.js +82 -0
- package/dist/src/runtime/steps/supervisor-decision/delegation-input.d.ts +7 -0
- package/dist/src/runtime/steps/supervisor-decision/delegation-input.js +105 -0
- package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.d.ts +7 -0
- package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.js +13 -0
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +3 -5
- package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +5 -21
- package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +4 -1
- package/dist/src/runtime/steps/supervisor-decision/preparation.js +58 -6
- package/dist/src/runtime/steps/supervisor-decision/procedure-entry.d.ts +22 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-entry.js +61 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-gate.d.ts +39 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-gate.js +146 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-memory.d.ts +9 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-memory.js +100 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-recall.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-decision/procedure-recall.js +52 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +3 -16
- package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -2
- package/dist/src/runtime/steps/supervisor-decision/role-guidance.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/role-guidance.js +20 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +50 -7
- package/dist/src/runtime/steps/supervisor-decision/skill-read-state.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-read-state.js +45 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.d.ts +15 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.js +25 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.js +15 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.js +65 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +3 -1
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +20 -22
- package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +3 -2
- package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +62 -15
- package/dist/src/runtime/steps/supervisor-response/prompt.js +18 -4
- package/dist/src/shared/model-reasoning-modes.d.ts +5 -0
- package/dist/src/shared/model-reasoning-modes.js +20 -0
- package/dist/src/shared/model-reasoning-schema.d.ts +38 -0
- package/dist/src/shared/model-reasoning-schema.js +29 -0
- package/dist/src/shared/model-reasoning.d.ts +35 -0
- package/dist/src/shared/model-reasoning.js +100 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +13 -0
- package/dist/src/web-ui/app/app-bootstrap.js +9 -12
- package/dist/src/web-ui/app/app-dom.js +6 -1
- package/dist/src/web-ui/app/app-state.js +1 -0
- package/dist/src/web-ui/app/app.js +8 -3
- package/dist/src/web-ui/app/appearance-feature.js +28 -0
- package/dist/src/web-ui/app/automations-feature.js +20 -11
- package/dist/src/web-ui/app/components/appearance-dialog.js +79 -0
- package/dist/src/web-ui/app/components/automations/archive-actions.js +5 -3
- package/dist/src/web-ui/app/components/automations/authoring-entry.js +26 -7
- package/dist/src/web-ui/app/components/automations/confirmation-actions.js +78 -0
- package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +1 -0
- package/dist/src/web-ui/app/components/automations/node-inspector.js +5 -1
- package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +4 -2
- package/dist/src/web-ui/app/components/automations/timeline.js +2 -2
- package/dist/src/web-ui/app/components/automations/workspace-navigation.js +37 -0
- package/dist/src/web-ui/app/components/automations/workspace.js +31 -46
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +6 -0
- package/dist/src/web-ui/app/components/config-workspace/model-removal.js +4 -2
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +8 -16
- package/dist/src/web-ui/app/components/config-workspace/reasoning-budget-edit.js +113 -0
- package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.d.ts +16 -0
- package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.js +67 -0
- package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.d.ts +7 -0
- package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.js +25 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +15 -7
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +32 -12
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +1 -1
- package/dist/src/web-ui/app/components/config-workspace.js +2 -1
- package/dist/src/web-ui/app/components/confirmation-dialog.js +88 -0
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
- package/dist/src/web-ui/app/components/conversation-activity.js +32 -3
- package/dist/src/web-ui/app/components/conversation-memory-activity.js +31 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +2 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.js +14 -11
- package/dist/src/web-ui/app/components/conversation-skill-activity.js +67 -0
- package/dist/src/web-ui/app/components/conversation-tools.js +5 -5
- package/dist/src/web-ui/app/components/conversation-view.js +6 -0
- package/dist/src/web-ui/app/components/dashboard/approvals.js +13 -1
- package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.d.ts +38 -0
- package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.js +289 -0
- package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-feature.js +75 -0
- package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-rendering.js +31 -0
- package/dist/src/web-ui/app/components/long-term-memory/manager.js +15 -5
- package/dist/src/web-ui/app/components/long-term-memory/saved-embedding-profiles.js +114 -0
- package/dist/src/web-ui/app/components/long-term-memory/setup-rendering.js +55 -0
- package/dist/src/web-ui/app/components/long-term-memory-setup.js +141 -76
- package/dist/src/web-ui/app/components/model-setup/rendering.js +3 -2
- package/dist/src/web-ui/app/components/model-setup/validation.js +6 -2
- package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.js +28 -5
- package/dist/src/web-ui/app/components/passive-learning/memory.js +12 -5
- package/dist/src/web-ui/app/components/plugins/manager.js +14 -0
- package/dist/src/web-ui/app/components/plugins/removal.js +10 -2
- package/dist/src/web-ui/app/components/project-group-actions.js +35 -0
- package/dist/src/web-ui/app/components/project-session-groups.js +17 -31
- package/dist/src/web-ui/app/components/runtime-setup/commands.js +1 -1
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.d.ts +15 -0
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +32 -9
- package/dist/src/web-ui/app/components/runtime-setup/connection-input.js +23 -0
- package/dist/src/web-ui/app/components/runtime-setup/connection-inspection.js +57 -0
- package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +18 -4
- package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +3 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-options.js +54 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +3 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +22 -22
- package/dist/src/web-ui/app/components/runtime-setup/embedding.js +60 -16
- package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.d.ts +17 -0
- package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.js +54 -0
- package/dist/src/web-ui/app/components/runtime-setup/validation.js +5 -1
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +9 -3
- package/dist/src/web-ui/app/components/runtime-setup-guide.js +20 -29
- package/dist/src/web-ui/app/components/schedules/details.js +2 -2
- package/dist/src/web-ui/app/components/schedules/form.js +12 -5
- package/dist/src/web-ui/app/components/schedules/workspace.js +30 -18
- package/dist/src/web-ui/app/components/session-list-viewport.js +49 -0
- package/dist/src/web-ui/app/components/session-search-disclosure.js +27 -0
- package/dist/src/web-ui/app/components/skills/workspace.js +7 -3
- package/dist/src/web-ui/app/components/spark-chat/panel.js +7 -3
- package/dist/src/web-ui/app/components/spark-chat/settings.js +57 -15
- package/dist/src/web-ui/app/components/tool-approval-card.d.ts +2 -1
- package/dist/src/web-ui/app/components/tool-approval-card.js +10 -2
- package/dist/src/web-ui/app/components/tool-approval-rejection-input.js +116 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +30 -38
- package/dist/src/web-ui/app/components/workspace-transitions.js +42 -0
- package/dist/src/web-ui/app/configuration-feature.js +34 -4
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +45 -29
- package/dist/src/web-ui/app/controllers/appearance-controller.js +105 -0
- package/dist/src/web-ui/app/controllers/automations-controller.js +9 -1
- package/dist/src/web-ui/app/controllers/composer-feature.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/composer-feature.js +10 -3
- package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/composer-queue-controller.js +9 -3
- package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +8 -2
- package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +10 -9
- package/dist/src/web-ui/app/controllers/environment-transition.js +2 -2
- package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +9 -7
- package/dist/src/web-ui/app/controllers/preference-view-sync.js +35 -0
- package/dist/src/web-ui/app/controllers/projects-controller.d.ts +4 -0
- package/dist/src/web-ui/app/controllers/projects-controller.js +64 -3
- package/dist/src/web-ui/app/controllers/reasoning-budget-controller.d.ts +17 -0
- package/dist/src/web-ui/app/controllers/reasoning-budget-controller.js +80 -0
- package/dist/src/web-ui/app/controllers/reasoning-budget-menu-events.js +45 -0
- package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +35 -40
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +6 -1
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +16 -3
- package/dist/src/web-ui/app/controllers/session-controller.js +34 -9
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +4 -3
- package/dist/src/web-ui/app/controllers/skills-controller.js +33 -16
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +1 -1
- package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +7 -1
- package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +2 -1
- package/dist/src/web-ui/app/controllers/tool-approval-controller.js +36 -3
- package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +8 -2
- package/dist/src/web-ui/app/controllers/workspace-route-controller.js +41 -10
- package/dist/src/web-ui/app/index.html +38 -32
- package/dist/src/web-ui/app/lib/color-palettes.d.ts +17 -0
- package/dist/src/web-ui/app/lib/color-palettes.js +20 -0
- package/dist/src/web-ui/app/lib/memory-activity-model.d.ts +12 -0
- package/dist/src/web-ui/app/lib/memory-activity-model.js +61 -0
- package/dist/src/web-ui/app/lib/navigation-display.d.ts +8 -0
- package/dist/src/web-ui/app/lib/navigation-display.js +12 -0
- package/dist/src/web-ui/app/lib/reasoning-controls.js +47 -6
- package/dist/src/web-ui/app/lib/reasoning-preference.d.ts +9 -0
- package/dist/src/web-ui/app/lib/reasoning-preference.js +75 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +4 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.js +4 -0
- package/dist/src/web-ui/app/lib/session-project-groups.js +28 -0
- package/dist/src/web-ui/app/lib/session-sidebar-order.js +7 -5
- package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.js +1 -0
- package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +1 -0
- package/dist/src/web-ui/app/lib/tool-activity-model.js +1 -0
- package/dist/src/web-ui/app/lib/tool-approval-rejection-drafts.js +45 -0
- package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +1 -1
- package/dist/src/web-ui/app/notifications-feature.js +10 -2
- package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
- package/dist/src/web-ui/app/projects-feature.js +40 -10
- package/dist/src/web-ui/app/runtime-onboarding-feature.js +1 -0
- package/dist/src/web-ui/app/schedules-feature.js +28 -5
- package/dist/src/web-ui/app/services/client-preferences.d.ts +4 -1
- package/dist/src/web-ui/app/services/client-preferences.js +2 -0
- package/dist/src/web-ui/app/services/conversation-reasoning-preferences.d.ts +11 -0
- package/dist/src/web-ui/app/services/conversation-reasoning-preferences.js +30 -0
- package/dist/src/web-ui/app/services/runtime-web-client/automations.js +6 -4
- package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +5 -0
- package/dist/src/web-ui/app/services/runtime-web-client/memory.js +21 -0
- package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +2 -1
- package/dist/src/web-ui/app/services/runtime-web-client/projects.js +4 -0
- package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +2 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +16 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
- package/dist/src/web-ui/app/services/session-sidebar-preferences.js +33 -13
- package/dist/src/web-ui/app/skills-feature.js +2 -3
- package/dist/src/web-ui/app/spark-chat-conversation.js +29 -3
- package/dist/src/web-ui/app/spark-chat-feature.js +13 -7
- package/dist/src/web-ui/app/styles/01-color-palettes.css +90 -0
- package/dist/src/web-ui/app/styles/11-product-links.css +6 -2
- package/dist/src/web-ui/app/styles/11-workspace-header-width.css +37 -25
- package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +56 -22
- package/dist/src/web-ui/app/styles/13-projects.css +56 -19
- package/dist/src/web-ui/app/styles/19-runtime-setup.css +16 -0
- package/dist/src/web-ui/app/styles/22-reasoning-budget.css +39 -0
- package/dist/src/web-ui/app/styles/27-conversation-memory.css +45 -0
- package/dist/src/web-ui/app/styles/27-conversation-skills.css +96 -0
- package/dist/src/web-ui/app/styles/28-tool-approval-card.css +38 -1
- package/dist/src/web-ui/app/styles/35-embedding-profiles.css +159 -0
- package/dist/src/web-ui/app/styles/54-spark-chat.css +62 -46
- package/dist/src/web-ui/app/styles/65-appearance.css +60 -0
- package/dist/src/web-ui/app/styles/66-navigation-display.css +30 -0
- package/dist/src/web-ui/app/styles/67-confirmation-dialog.css +32 -0
- package/dist/src/web-ui/app/styles.css +8 -0
- package/dist/src/web-ui/client-state/preference-shapes.js +6 -1
- package/dist/src/web-ui/client-state/preferences.js +8 -2
- package/dist/src/web-ui/client-state/reasoning-preference-shape.d.ts +1 -0
- package/dist/src/web-ui/client-state/reasoning-preference-shape.js +18 -0
- package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/api-router.js +11 -0
- package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.js +22 -0
- package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.d.ts +20 -0
- package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.js +47 -0
- package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +32 -0
- package/dist/src/web-ui/local-runtime/model-connection-inspection.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/model-connection-inspection.js +48 -0
- package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +2 -1
- package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
- package/dist/src/web-ui/local-runtime/model-setup-identity.js +1 -1
- package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +5 -2
- package/dist/src/web-ui/local-runtime/model-setup-input.js +29 -6
- package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +1 -1
- package/dist/src/web-ui/local-runtime/model-setup-provider.js +9 -6
- package/dist/src/web-ui/local-runtime/model-setup-retry.js +4 -1
- package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +2 -1
- package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +4 -1
- package/dist/src/web-ui/local-runtime/project-routes.js +10 -2
- package/dist/src/web-ui/local-runtime/request-execution.js +1 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-auth.d.ts +2 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-auth.js +20 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +3 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +6 -1
- package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +3 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-input.js +17 -5
- package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +4 -1
- package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +6 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +11 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +11 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +3 -2
- package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +25 -4
- package/dist/src/web-ui/local-runtime/runtime-setup-service.js +19 -9
- package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +3 -1
- package/dist/src/web-ui/local-runtime/setup-embedding-input.js +38 -6
- package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.js +53 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +23 -9
- package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +7 -2
- package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +5 -3
- package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +1 -0
- package/docs/configuration.md +10 -8
- package/docs/installation.md +11 -5
- package/docs/llamacpp.md +248 -0
- package/docs/long-term-memory.md +12 -0
- package/docs/running-locally.md +7 -1
- package/package.json +2 -1
- package/plugins/project-orientation/source/index.ts +2 -3
- package/plugins/project-orientation/source/inspection-failure.ts +1 -1
- package/plugins/project-orientation/source/project-target.ts +29 -0
- package/plugins/project-orientation/src/index.cjs +21 -2
- package/runtime.config.schema.json +140 -0
- package/src/runtime/README.md +50 -4
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { requiresProviderCredential } from "./runtime-setup-auth.js";
|
|
1
2
|
import { readFileSync } from "node:fs";
|
|
2
3
|
import { dirname, resolve } from "node:path";
|
|
3
4
|
import { buildRuntimeModelConfiguration } from "../../runtime/config/builders.js";
|
|
@@ -43,18 +44,21 @@ export function configuredSetupModel(source) {
|
|
|
43
44
|
const provider = policy?.providers?.[profile.provider];
|
|
44
45
|
if (!provider)
|
|
45
46
|
return undefined;
|
|
46
|
-
const apiKeyEnv = provider.apiKeyEnv?.trim() || "OPENAI_API_KEY";
|
|
47
|
+
const apiKeyEnv = provider.apiKeyEnv?.trim() || (provider.type === "openai" ? "OPENAI_API_KEY" : undefined);
|
|
47
48
|
return {
|
|
48
49
|
provider: provider.type,
|
|
49
50
|
model: profile.model,
|
|
50
51
|
contextWindowTokens: profile.contextWindowTokens,
|
|
52
|
+
supportsThinking: profile.supportsThinking,
|
|
53
|
+
reasoningBudget: profile.generation?.reasoningBudget,
|
|
54
|
+
requiresApiKey: requiresProviderCredential(provider),
|
|
51
55
|
apiKeyEnv,
|
|
52
56
|
baseUrl: configuredSetupBaseUrl(provider.baseUrl),
|
|
53
57
|
};
|
|
54
58
|
}
|
|
55
59
|
export function requiresConfiguredCredential(source, rootDir) {
|
|
56
60
|
const model = configuredSetupModel(source);
|
|
57
|
-
if (model?.
|
|
61
|
+
if (!model?.requiresApiKey)
|
|
58
62
|
return false;
|
|
59
63
|
return !readRuntimeSetupCredential(rootDir, model.apiKeyEnv);
|
|
60
64
|
}
|
|
@@ -4,17 +4,26 @@ export declare class RuntimeSetupRoutes {
|
|
|
4
4
|
private readonly service;
|
|
5
5
|
constructor(service: RuntimeSetupService);
|
|
6
6
|
status(): Promise<{
|
|
7
|
-
providers: {
|
|
7
|
+
providers: ({
|
|
8
8
|
id: string;
|
|
9
9
|
label: string;
|
|
10
|
+
description: string;
|
|
10
11
|
requiresApiKey: boolean;
|
|
11
12
|
credentialConfigured: boolean;
|
|
12
|
-
}
|
|
13
|
+
} | {
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
requiresApiKey: boolean;
|
|
17
|
+
credentialConfigured: boolean;
|
|
18
|
+
description?: undefined;
|
|
19
|
+
})[];
|
|
13
20
|
existingModel?: {
|
|
14
21
|
baseUrl?: string | undefined;
|
|
15
22
|
provider: string;
|
|
16
23
|
model: string;
|
|
17
24
|
contextWindowTokens: number | undefined;
|
|
25
|
+
supportsThinking: boolean | undefined;
|
|
26
|
+
reasoningBudget: import("../../shared/model-reasoning.js").ModelReasoningBudget | undefined;
|
|
18
27
|
} | undefined;
|
|
19
28
|
defaultContextWindowTokens: number;
|
|
20
29
|
editableConnection?: {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withHttpRequestAbortSignal } from "./request-abort.js";
|
|
1
2
|
import { assertConfigMutationRequest, ConfigMutationRequestError, } from "./config-mutation-request.js";
|
|
2
3
|
import { readBody, readJsonBody, sendJson } from "./http.js";
|
|
3
4
|
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
@@ -14,11 +15,11 @@ export class RuntimeSetupRoutes {
|
|
|
14
15
|
return this.service.finalize(connectionRevision);
|
|
15
16
|
}
|
|
16
17
|
async handle(params) {
|
|
17
|
-
if (
|
|
18
|
+
if (!["runtime/setup", "runtime/setup/connection"].includes(params.route))
|
|
18
19
|
return false;
|
|
19
20
|
params.response.setHeader("cache-control", "no-store");
|
|
20
21
|
try {
|
|
21
|
-
if (params.method === "GET") {
|
|
22
|
+
if (params.method === "GET" && params.route === "runtime/setup") {
|
|
22
23
|
sendJson(params.response, 200, {
|
|
23
24
|
ok: true,
|
|
24
25
|
setup: await this.service.status(),
|
|
@@ -34,6 +35,14 @@ export class RuntimeSetupRoutes {
|
|
|
34
35
|
}
|
|
35
36
|
assertConfigMutationRequest(params.request);
|
|
36
37
|
const body = readJsonBody(await readBody(params.request, { maxBytes: 16_384 }));
|
|
38
|
+
if (params.route === "runtime/setup/connection") {
|
|
39
|
+
const connection = await withHttpRequestAbortSignal({
|
|
40
|
+
request: params.request, response: params.response, reason: "model_connection_inspection_aborted",
|
|
41
|
+
run: (signal) => this.service.inspectConnection(body, signal),
|
|
42
|
+
});
|
|
43
|
+
sendJson(params.response, 200, { ok: true, connection });
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
37
46
|
sendJson(params.response, 200, {
|
|
38
47
|
ok: true,
|
|
39
48
|
...(await this.service.save(body)),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveRuntimeSetupCredentialEnvironment } from "./runtime-setup-auth.js";
|
|
1
2
|
import { createRuntimeSetupDraft, } from "./runtime-setup-draft.js";
|
|
2
3
|
import { withConfigFileTransaction, readConfigFileSnapshot, } from "../../runtime/adapters/config-file-transaction.js";
|
|
3
4
|
import { validateRuntimeSetupPlan } from "./runtime-setup-validation.js";
|
|
@@ -103,7 +104,7 @@ async function saveRuntimeSetupScaffold(params, transaction) {
|
|
|
103
104
|
const configDirectory = dirname(params.configPath);
|
|
104
105
|
const models = configMap(params.source.config.models);
|
|
105
106
|
const providers = configMap(models.providers);
|
|
106
|
-
const provider = buildProviderConfig(params.input.provider, params.input.baseUrl);
|
|
107
|
+
const provider = buildProviderConfig(params.input.provider, params.input.baseUrl, resolveRuntimeSetupCredentialEnvironment(params.input.provider, providers[params.input.provider], params.input.apiKey));
|
|
107
108
|
const ownedProviders = await recoverSetupProviderOwnership(params.source, params.recoveringDraft ? params.recoveryDraft : undefined, transaction.path);
|
|
108
109
|
const existingProvider = providers[params.input.provider];
|
|
109
110
|
requireCompatibleProvider(existingProvider, provider, Object.hasOwn(ownedProviders, params.input.provider));
|
|
@@ -134,7 +135,7 @@ async function saveRuntimeSetupScaffold(params, transaction) {
|
|
|
134
135
|
...runnerModels,
|
|
135
136
|
defaults: { ...configMap(runnerModels.defaults), profileId: "default" },
|
|
136
137
|
};
|
|
137
|
-
const modelConfig = buildModelConfig(modelTemplate, params.input.provider, params.input.model, params.input.contextWindowTokens);
|
|
138
|
+
const modelConfig = buildModelConfig(modelTemplate, params.input.provider, params.input.model, params.input.contextWindowTokens, params.input);
|
|
138
139
|
const rebasedRunner = rebaseRunnerInstructions(runnerTemplate, (file) => relative(dirname(runnerPath), join(params.rootDir, file)));
|
|
139
140
|
const runnerFiles = await planRunnerFile(runnerPath, rebasedRunner);
|
|
140
141
|
const plannedFiles = [
|
|
@@ -11,17 +11,26 @@ export declare class RuntimeSetupService {
|
|
|
11
11
|
constructor(options: RuntimeSetupServiceOptions);
|
|
12
12
|
private source;
|
|
13
13
|
status(): Promise<{
|
|
14
|
-
providers: {
|
|
14
|
+
providers: ({
|
|
15
15
|
id: string;
|
|
16
16
|
label: string;
|
|
17
|
+
description: string;
|
|
17
18
|
requiresApiKey: boolean;
|
|
18
19
|
credentialConfigured: boolean;
|
|
19
|
-
}
|
|
20
|
+
} | {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
requiresApiKey: boolean;
|
|
24
|
+
credentialConfigured: boolean;
|
|
25
|
+
description?: undefined;
|
|
26
|
+
})[];
|
|
20
27
|
existingModel?: {
|
|
21
28
|
baseUrl?: string | undefined;
|
|
22
29
|
provider: string;
|
|
23
30
|
model: string;
|
|
24
31
|
contextWindowTokens: number | undefined;
|
|
32
|
+
supportsThinking: boolean | undefined;
|
|
33
|
+
reasoningBudget: import("../../shared/model-reasoning.js").ModelReasoningBudget | undefined;
|
|
25
34
|
} | undefined;
|
|
26
35
|
defaultContextWindowTokens: number;
|
|
27
36
|
editableConnection?: {
|
|
@@ -32,20 +41,32 @@ export declare class RuntimeSetupService {
|
|
|
32
41
|
status: "required" | "ready";
|
|
33
42
|
configExists: boolean;
|
|
34
43
|
}>;
|
|
44
|
+
inspectConnection(body: Record<string, unknown>, signal: AbortSignal): Promise<{
|
|
45
|
+
models: readonly string[];
|
|
46
|
+
}>;
|
|
35
47
|
finalize(connectionRevision?: string): Promise<boolean>;
|
|
36
48
|
save(body: Record<string, unknown> | null): Promise<{
|
|
37
49
|
setup: {
|
|
38
|
-
providers: {
|
|
50
|
+
providers: ({
|
|
51
|
+
id: string;
|
|
52
|
+
label: string;
|
|
53
|
+
description: string;
|
|
54
|
+
requiresApiKey: boolean;
|
|
55
|
+
credentialConfigured: boolean;
|
|
56
|
+
} | {
|
|
39
57
|
id: string;
|
|
40
58
|
label: string;
|
|
41
59
|
requiresApiKey: boolean;
|
|
42
60
|
credentialConfigured: boolean;
|
|
43
|
-
|
|
61
|
+
description?: undefined;
|
|
62
|
+
})[];
|
|
44
63
|
existingModel?: {
|
|
45
64
|
baseUrl?: string | undefined;
|
|
46
65
|
provider: string;
|
|
47
66
|
model: string;
|
|
48
67
|
contextWindowTokens: number | undefined;
|
|
68
|
+
supportsThinking: boolean | undefined;
|
|
69
|
+
reasoningBudget: import("../../shared/model-reasoning.js").ModelReasoningBudget | undefined;
|
|
49
70
|
} | undefined;
|
|
50
71
|
defaultContextWindowTokens: number;
|
|
51
72
|
editableConnection?: {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { inspectModelSetupConnection } from "./model-connection-inspection.js";
|
|
2
|
+
import { resolveRuntimeSetupCredentialEnvironment } from "./runtime-setup-auth.js";
|
|
1
3
|
import { requireRuntimeSetupEditSettled } from "./runtime-setup-edit-recovery.js";
|
|
2
4
|
import { readDefaultContextWindowTokens } from "../../../scripts/runtime-setup-files.js";
|
|
3
5
|
import { initializeConfiguredRuntimeDirectories } from "../../../scripts/runtime-setup-directories.js";
|
|
@@ -51,6 +53,8 @@ export class RuntimeSetupService {
|
|
|
51
53
|
provider: existingModel.provider,
|
|
52
54
|
model: existingModel.model,
|
|
53
55
|
contextWindowTokens: existingModel.contextWindowTokens,
|
|
56
|
+
supportsThinking: existingModel.supportsThinking,
|
|
57
|
+
reasoningBudget: existingModel.reasoningBudget,
|
|
54
58
|
...(existingModel.baseUrl
|
|
55
59
|
? { baseUrl: existingModel.baseUrl }
|
|
56
60
|
: {}),
|
|
@@ -58,6 +62,14 @@ export class RuntimeSetupService {
|
|
|
58
62
|
}
|
|
59
63
|
: {}),
|
|
60
64
|
providers: [
|
|
65
|
+
{
|
|
66
|
+
id: "llamacpp",
|
|
67
|
+
label: "llama.cpp",
|
|
68
|
+
description: "A separately running llama-server with token reasoning controls",
|
|
69
|
+
requiresApiKey: existingModel?.provider === "llamacpp" && existingModel.requiresApiKey,
|
|
70
|
+
credentialConfigured: existingModel?.provider === "llamacpp" && Boolean(existingModel.apiKeyEnv) &&
|
|
71
|
+
await hasRuntimeSetupCredential(this.options.rootDir, existingModel.apiKeyEnv),
|
|
72
|
+
},
|
|
61
73
|
{
|
|
62
74
|
id: "ollama",
|
|
63
75
|
label: "Ollama",
|
|
@@ -68,11 +80,14 @@ export class RuntimeSetupService {
|
|
|
68
80
|
id: "openai",
|
|
69
81
|
label: "OpenAI",
|
|
70
82
|
requiresApiKey: true,
|
|
71
|
-
credentialConfigured: await hasRuntimeSetupCredential(this.options.rootDir, existingModel?.apiKeyEnv),
|
|
83
|
+
credentialConfigured: await hasRuntimeSetupCredential(this.options.rootDir, existingModel?.provider === "openai" ? existingModel.apiKeyEnv : undefined),
|
|
72
84
|
},
|
|
73
85
|
],
|
|
74
86
|
};
|
|
75
87
|
}
|
|
88
|
+
async inspectConnection(body, signal) {
|
|
89
|
+
return inspectModelSetupConnection({ rootDir: this.options.rootDir, configPath: this.source().path }, body, signal);
|
|
90
|
+
}
|
|
76
91
|
async finalize(connectionRevision) {
|
|
77
92
|
return withFileLock(join(this.options.rootDir, ".runtime-setup.lock"), async () => {
|
|
78
93
|
const source = this.source();
|
|
@@ -117,16 +132,11 @@ export class RuntimeSetupService {
|
|
|
117
132
|
}
|
|
118
133
|
const requestedProviders = setupConfigMap(setupConfigMap(source.config.models).providers);
|
|
119
134
|
const requestedProvider = setupConfigMap(requestedProviders[input.provider]);
|
|
120
|
-
|
|
121
|
-
if (editingDraft)
|
|
122
|
-
apiKeyEnv =
|
|
123
|
-
typeof requestedProvider.apiKeyEnv === "string"
|
|
124
|
-
? requestedProvider.apiKeyEnv
|
|
125
|
-
: undefined;
|
|
135
|
+
const apiKeyEnv = resolveRuntimeSetupCredentialEnvironment(input.provider, requestedProvider, input.apiKey);
|
|
126
136
|
const hasCredential = input.apiKey ||
|
|
127
137
|
(await hasRuntimeSetupCredential(this.options.rootDir, apiKeyEnv));
|
|
128
|
-
if (input.provider === "openai" && !hasCredential) {
|
|
129
|
-
throw new RuntimeSetupError("setup_credential_required", "Enter
|
|
138
|
+
if ((input.provider === "openai" || apiKeyEnv !== undefined) && !hasCredential) {
|
|
139
|
+
throw new RuntimeSetupError("setup_credential_required", "Enter the API key for this connection to finish setup.");
|
|
130
140
|
}
|
|
131
141
|
const configuredPath = this.options.getConfigPath();
|
|
132
142
|
const shouldUseLocalConfig = !source.exists && !configuredPath;
|
|
@@ -15,7 +15,7 @@ function hasOneProviderSelection(providerId, provider) {
|
|
|
15
15
|
return provider !== undefined;
|
|
16
16
|
}
|
|
17
17
|
function isSupportedProvider(provider) {
|
|
18
|
-
return provider === "openai" || provider === "ollama";
|
|
18
|
+
return (provider === "openai" || provider === "ollama" || provider === "llamacpp");
|
|
19
19
|
}
|
|
20
20
|
function isUsableModelIdentifier(model) {
|
|
21
21
|
if (!model || model.length > 256)
|
|
@@ -30,7 +30,15 @@ function isSafeCredential(apiKey) {
|
|
|
30
30
|
return !/[\u0000-\u0020\u007f'"`]/u.test(apiKey);
|
|
31
31
|
}
|
|
32
32
|
export function parseSetupEmbeddingInput(body) {
|
|
33
|
-
const allowed = [
|
|
33
|
+
const allowed = [
|
|
34
|
+
"providerId",
|
|
35
|
+
"provider",
|
|
36
|
+
"model",
|
|
37
|
+
"baseUrl",
|
|
38
|
+
"apiKey",
|
|
39
|
+
"newProviderId",
|
|
40
|
+
"useApiKey",
|
|
41
|
+
];
|
|
34
42
|
if (Object.keys(body).some((key) => !allowed.includes(key))) {
|
|
35
43
|
throw new RuntimeSetupError("invalid_embedding_input", "The embedding update contains unsupported fields.");
|
|
36
44
|
}
|
|
@@ -40,8 +48,9 @@ export function parseSetupEmbeddingInput(body) {
|
|
|
40
48
|
throw new RuntimeSetupError("invalid_embedding_provider", "Choose one configured provider or one provider type.");
|
|
41
49
|
}
|
|
42
50
|
if (provider && !isSupportedProvider(provider)) {
|
|
43
|
-
throw new RuntimeSetupError("invalid_embedding_provider", "Choose OpenAI or
|
|
51
|
+
throw new RuntimeSetupError("invalid_embedding_provider", "Choose OpenAI, Ollama or llama.cpp when adding a provider.");
|
|
44
52
|
}
|
|
53
|
+
const newConnection = parseNewLlamaEmbeddingConnection(body, provider);
|
|
45
54
|
const model = optionalInputString(body, "model");
|
|
46
55
|
if (!isUsableModelIdentifier(model)) {
|
|
47
56
|
throw new RuntimeSetupError("invalid_embedding_model", "Enter a model ID without spaces or control characters.");
|
|
@@ -51,8 +60,8 @@ export function parseSetupEmbeddingInput(body) {
|
|
|
51
60
|
throw new RuntimeSetupError("invalid_embedding_credential", "The API key contains unsupported characters.");
|
|
52
61
|
}
|
|
53
62
|
const address = optionalInputString(body, "baseUrl");
|
|
54
|
-
if (address && provider !== "ollama") {
|
|
55
|
-
throw new RuntimeSetupError("invalid_embedding_address", "An address can be supplied when adding an Ollama provider.");
|
|
63
|
+
if (address && provider !== "ollama" && provider !== "llamacpp") {
|
|
64
|
+
throw new RuntimeSetupError("invalid_embedding_address", "An address can be supplied when adding an Ollama or llama.cpp provider.");
|
|
56
65
|
}
|
|
57
66
|
let baseUrl;
|
|
58
67
|
try {
|
|
@@ -63,9 +72,32 @@ export function parseSetupEmbeddingInput(body) {
|
|
|
63
72
|
}
|
|
64
73
|
return {
|
|
65
74
|
...(providerId ? { providerId } : {}),
|
|
66
|
-
...(provider
|
|
75
|
+
...(provider
|
|
76
|
+
? { provider: provider }
|
|
77
|
+
: {}),
|
|
78
|
+
...newConnection,
|
|
67
79
|
model,
|
|
68
80
|
...(baseUrl ? { baseUrl } : {}),
|
|
69
81
|
...(apiKey ? { apiKey } : {}),
|
|
70
82
|
};
|
|
71
83
|
}
|
|
84
|
+
function parseNewLlamaEmbeddingConnection(body, provider) {
|
|
85
|
+
const newProviderId = optionalInputString(body, "newProviderId");
|
|
86
|
+
const useApiKey = body.useApiKey;
|
|
87
|
+
const hasConnectionIntent = newProviderId !== undefined || useApiKey !== undefined;
|
|
88
|
+
if (provider !== "llamacpp" && hasConnectionIntent)
|
|
89
|
+
throw new RuntimeSetupError("invalid_embedding_input", "New connection identity and authentication apply only to a new llama.cpp connection.");
|
|
90
|
+
if (provider !== "llamacpp")
|
|
91
|
+
return {};
|
|
92
|
+
const hasValidNewProviderId = typeof newProviderId === "string" &&
|
|
93
|
+
newProviderId.length <= 128 &&
|
|
94
|
+
/^[A-Za-z][A-Za-z0-9._-]*$/u.test(newProviderId) &&
|
|
95
|
+
!["__proto__", "prototype", "constructor"].includes(newProviderId);
|
|
96
|
+
if (!hasValidNewProviderId)
|
|
97
|
+
throw new RuntimeSetupError("invalid_embedding_provider", "Enter a connection ID starting with a letter and containing only letters, numbers, dots, underscores or hyphens.");
|
|
98
|
+
if (useApiKey !== undefined && typeof useApiKey !== "boolean")
|
|
99
|
+
throw new RuntimeSetupError("invalid_embedding_input", "The API key choice must be true or false.");
|
|
100
|
+
if (useApiKey === false && body.apiKey !== undefined)
|
|
101
|
+
throw new RuntimeSetupError("invalid_embedding_credential", "The API key conflicts with the no-authentication choice.");
|
|
102
|
+
return { newProviderId, ...(useApiKey !== undefined ? { useApiKey } : {}) };
|
|
103
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SetupEmbeddingInput } from "./setup-embedding-input.js";
|
|
2
|
+
/** A new embedding server has its own explicit, replayable connection identity. */
|
|
3
|
+
export declare function planNewLlamaEmbeddingProvider(providers: Record<string, unknown>, input: SetupEmbeddingInput): {
|
|
4
|
+
providerId: string;
|
|
5
|
+
provider: Record<string, unknown>;
|
|
6
|
+
};
|
|
7
|
+
/** A saved llama.cpp connection keeps its existing optional authentication binding. */
|
|
8
|
+
export declare function commitLlamaEmbeddingProvider(options: {
|
|
9
|
+
rootDir: string;
|
|
10
|
+
configPath: string;
|
|
11
|
+
}, provider: Record<string, unknown>, input: SetupEmbeddingInput, commit: () => Promise<unknown>): Promise<void>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { buildProviderConfig } from "../../../scripts/runtime-setup-files.js";
|
|
2
|
+
import { isRecord } from "../../runtime/config/utils.js";
|
|
3
|
+
import { hasProviderCredentialBinding, isolatedProviderCredentialName, } from "./provider-credential-identity.js";
|
|
4
|
+
import { requiresProviderCredential } from "./runtime-setup-auth.js";
|
|
5
|
+
import { assertRuntimeSetupCredentialFile, hasRuntimeSetupCredential, commitRuntimeSetupCredentials, } from "./runtime-setup-credentials.js";
|
|
6
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
7
|
+
/** A new embedding server has its own explicit, replayable connection identity. */
|
|
8
|
+
export function planNewLlamaEmbeddingProvider(providers, input) {
|
|
9
|
+
const providerId = input.newProviderId;
|
|
10
|
+
const useApiKey = input.useApiKey === true || Boolean(input.apiKey);
|
|
11
|
+
const apiKeyEnv = useApiKey
|
|
12
|
+
? isolatedProviderCredentialName(providerId)
|
|
13
|
+
: undefined;
|
|
14
|
+
const provider = buildProviderConfig("llamacpp", input.baseUrl, apiKeyEnv);
|
|
15
|
+
const existing = providers[providerId];
|
|
16
|
+
if (existing !== undefined) {
|
|
17
|
+
requireMatchingLlamaEmbeddingConnection(existing, provider);
|
|
18
|
+
return { providerId, provider: existing };
|
|
19
|
+
}
|
|
20
|
+
if (apiKeyEnv && hasProviderCredentialBinding(providers, apiKeyEnv))
|
|
21
|
+
throw new RuntimeSetupError("embedding_credential_conflict", "This connection's credential name is already used by another provider. Choose another connection ID.", 409);
|
|
22
|
+
return { providerId, provider };
|
|
23
|
+
}
|
|
24
|
+
function requireMatchingLlamaEmbeddingConnection(existing, requested) {
|
|
25
|
+
if (isRecord(existing) &&
|
|
26
|
+
existing.type === requested.type &&
|
|
27
|
+
existing.baseUrl === requested.baseUrl &&
|
|
28
|
+
existing.apiKeyEnv === requested.apiKeyEnv)
|
|
29
|
+
return;
|
|
30
|
+
throw new RuntimeSetupError("embedding_provider_conflict", "That connection ID already has different settings. Choose its saved connection or use another ID. Existing settings were preserved.", 409);
|
|
31
|
+
}
|
|
32
|
+
/** A saved llama.cpp connection keeps its existing optional authentication binding. */
|
|
33
|
+
export async function commitLlamaEmbeddingProvider(options, provider, input, commit) {
|
|
34
|
+
if (!requiresProviderCredential(provider)) {
|
|
35
|
+
if (input.apiKey)
|
|
36
|
+
throw new RuntimeSetupError("invalid_embedding_credential", "This saved connection has no API key binding. Add a separate connection to use authentication.");
|
|
37
|
+
await commit();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const apiKeyEnv = provider.apiKeyEnv;
|
|
41
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(apiKeyEnv))
|
|
42
|
+
throw new RuntimeSetupError("invalid_embedding_credential_environment", "The configured credential environment name is invalid. Its settings were preserved.");
|
|
43
|
+
await assertRuntimeSetupCredentialFile(options.rootDir);
|
|
44
|
+
if (!input.apiKey &&
|
|
45
|
+
!(await hasRuntimeSetupCredential(options.rootDir, apiKeyEnv)))
|
|
46
|
+
throw new RuntimeSetupError("embedding_credential_required", "Enter the API key for this llama.cpp connection.");
|
|
47
|
+
await commitRuntimeSetupCredentials({
|
|
48
|
+
...options,
|
|
49
|
+
apiKeyEnv,
|
|
50
|
+
apiKey: input.apiKey,
|
|
51
|
+
preserveExistingCredential: true,
|
|
52
|
+
}, commit);
|
|
53
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { planNewLlamaEmbeddingProvider, commitLlamaEmbeddingProvider, } from "./setup-embedding-llamacpp.js";
|
|
1
2
|
import { buildProviderConfig } from "../../../scripts/runtime-setup-files.js";
|
|
2
3
|
import { createFileLongTermMemoryOnboardingConfigRepository } from "../../runtime/adapters/long-term-memory/onboarding-config-repository.js";
|
|
3
4
|
import { isRecord } from "../../runtime/config/utils.js";
|
|
@@ -57,8 +58,10 @@ function requirePreservedProviderSettings(provider, input) {
|
|
|
57
58
|
if (input.baseUrl && input.baseUrl !== provider.baseUrl) {
|
|
58
59
|
throw new RuntimeSetupError("embedding_provider_conflict", "That provider already uses another address. Choose its saved connection or edit it in Settings.", 409);
|
|
59
60
|
}
|
|
60
|
-
if (input.apiKey &&
|
|
61
|
-
|
|
61
|
+
if (input.apiKey &&
|
|
62
|
+
provider.type !== "openai" &&
|
|
63
|
+
provider.type !== "llamacpp") {
|
|
64
|
+
throw new RuntimeSetupError("invalid_embedding_credential", "This connection does not support an API key.");
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
/** Adds only the requested provider; chat profiles and existing provider settings stay intact. */
|
|
@@ -66,14 +69,19 @@ export async function prepareSetupEmbeddingProvider(options, input) {
|
|
|
66
69
|
const repository = createFileLongTermMemoryOnboardingConfigRepository(options);
|
|
67
70
|
const snapshot = await repository.read();
|
|
68
71
|
const providers = readProviderMap(snapshot.config.models);
|
|
69
|
-
const
|
|
72
|
+
const llamaConnection = input.provider === "llamacpp"
|
|
73
|
+
? planNewLlamaEmbeddingProvider(providers, input)
|
|
74
|
+
: undefined;
|
|
75
|
+
const providerId = llamaConnection?.providerId ??
|
|
76
|
+
resolveSetupEmbeddingProviderId(providers, input);
|
|
70
77
|
const existing = providers[providerId];
|
|
71
78
|
if (input.providerId && !isRecord(existing)) {
|
|
72
|
-
throw new RuntimeSetupError("embedding_provider_not_configured", "Choose a configured provider or add an OpenAI or
|
|
79
|
+
throw new RuntimeSetupError("embedding_provider_not_configured", "Choose a configured provider or add an OpenAI, Ollama or llama.cpp connection.", 404);
|
|
73
80
|
}
|
|
74
|
-
const provider =
|
|
75
|
-
|
|
76
|
-
|
|
81
|
+
const provider = llamaConnection?.provider ??
|
|
82
|
+
(isRecord(existing)
|
|
83
|
+
? existing
|
|
84
|
+
: buildProviderConfig(input.provider, input.baseUrl));
|
|
77
85
|
const isolatedCredential = needsIsolatedEmbeddingCredential(existing, input, providerId);
|
|
78
86
|
if (isolatedCredential)
|
|
79
87
|
provider.apiKeyEnv = resolveIsolatedEmbeddingCredentialName(providers, providerId);
|
|
@@ -105,8 +113,14 @@ export async function prepareSetupEmbeddingProvider(options, input) {
|
|
|
105
113
|
preserveExistingCredential: true,
|
|
106
114
|
});
|
|
107
115
|
}
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
const persistProvider = async () => {
|
|
117
|
+
if (!isRecord(existing))
|
|
118
|
+
await repository.write(candidate, snapshot.config);
|
|
119
|
+
};
|
|
120
|
+
if (provider.type === "llamacpp")
|
|
121
|
+
await commitLlamaEmbeddingProvider({ rootDir: options.rootDir, configPath: snapshot.path }, provider, input, persistProvider);
|
|
122
|
+
else
|
|
123
|
+
await persistProvider();
|
|
110
124
|
return {
|
|
111
125
|
providerId,
|
|
112
126
|
savedProvider: { id: providerId, type: provider.type },
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
import {
|
|
2
|
+
import type { LongTermMemoryOnboardingResult } from "../../runtime/long-term-memory/onboarding/contracts.js";
|
|
3
|
+
type EmbeddingConnectionService = {
|
|
4
|
+
enable(body: Record<string, unknown>, signal: AbortSignal): Promise<Pick<LongTermMemoryOnboardingResult, "status" | "probe" | "restartRequired">>;
|
|
5
|
+
};
|
|
3
6
|
export declare class SetupEmbeddingRoutes {
|
|
4
7
|
private readonly service;
|
|
5
|
-
|
|
8
|
+
private readonly route;
|
|
9
|
+
constructor(service: EmbeddingConnectionService, route?: string);
|
|
6
10
|
handle(params: {
|
|
7
11
|
method: string;
|
|
8
12
|
route: string;
|
|
@@ -10,3 +14,4 @@ export declare class SetupEmbeddingRoutes {
|
|
|
10
14
|
response: ServerResponse;
|
|
11
15
|
}): Promise<boolean>;
|
|
12
16
|
}
|
|
17
|
+
export {};
|
|
@@ -2,14 +2,16 @@ import { assertConfigMutationRequest, ConfigMutationRequestError, } from "./conf
|
|
|
2
2
|
import { readBody, readJsonBody, sendJson } from "./http.js";
|
|
3
3
|
import { withHttpRequestAbortSignal } from "./request-abort.js";
|
|
4
4
|
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
5
|
-
import { SetupEmbeddingFailure
|
|
5
|
+
import { SetupEmbeddingFailure } from "./setup-embedding-service.js";
|
|
6
6
|
export class SetupEmbeddingRoutes {
|
|
7
7
|
service;
|
|
8
|
-
|
|
8
|
+
route;
|
|
9
|
+
constructor(service, route = "runtime/setup/embedding") {
|
|
9
10
|
this.service = service;
|
|
11
|
+
this.route = route;
|
|
10
12
|
}
|
|
11
13
|
async handle(params) {
|
|
12
|
-
if (params.route !==
|
|
14
|
+
if (params.route !== this.route)
|
|
13
15
|
return false;
|
|
14
16
|
params.response.setHeader("cache-control", "no-store");
|
|
15
17
|
try {
|
|
@@ -22,6 +22,7 @@ export declare class SetupEmbeddingService {
|
|
|
22
22
|
providerId?: string;
|
|
23
23
|
model?: string;
|
|
24
24
|
providers: readonly import("../../runtime/index.js").LongTermMemoryOnboardingProvider[];
|
|
25
|
+
embeddingProfiles: readonly import("../../runtime/index.js").SavedMemoryEmbeddingProfile[];
|
|
25
26
|
}>;
|
|
26
27
|
probe: Readonly<{
|
|
27
28
|
modelFingerprint: string;
|
package/docs/configuration.md
CHANGED
|
@@ -83,7 +83,7 @@ Provider configs should reference env var names:
|
|
|
83
83
|
}
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
Ollama and
|
|
86
|
+
Ollama, OpenAI and llama.cpp adapters are included. See [llama.cpp setup and reasoning budgets](llamacpp.md). A host may register another adapter
|
|
87
87
|
through `@abot-ai/runtime/model-gateway`; its config uses that adapter's `type` and
|
|
88
88
|
may place adapter-owned JSON-safe values under `settings`. Merely naming an
|
|
89
89
|
unknown type never selects a fallback provider.
|
|
@@ -610,13 +610,15 @@ The common slots and their first tuning targets are:
|
|
|
610
610
|
| Context compaction | `context.compact` | Structured format and preservation of facts that later steps still require; physical capacity remains profile-owned. |
|
|
611
611
|
| Literal tool payloads | `toolPayload.raw` | Literal-payload instructions and any intentional provider-native output controls. Verify the produced payload or artifact directly, not the model's description of it. |
|
|
612
612
|
|
|
613
|
-
New OpenAI profiles created through CLI setup
|
|
614
|
-
`
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
613
|
+
New OpenAI profiles created through CLI setup, Web onboarding, or model
|
|
614
|
+
addition set `timeoutMs` to `300000` (five minutes) in both
|
|
615
|
+
`calibration["context.compact"]` and `calibration["toolPayload.raw"]`. These
|
|
616
|
+
profile overrides take precedence over the shared 180-second compaction and
|
|
617
|
+
90-second literal-payload defaults; other steps retain their own timeouts.
|
|
618
|
+
Explicit template timeouts are preserved, and existing profiles are not
|
|
619
|
+
migrated automatically. To apply these settings to an existing GPT profile,
|
|
620
|
+
add `"timeoutMs": 300000` to each of those calibration objects, preserving
|
|
621
|
+
their other fields. This does not change reasoning effort.
|
|
620
622
|
|
|
621
623
|
`timeoutMs` addresses provider latency only; raising it does not improve model
|
|
622
624
|
reasoning. Top-level `contextWindowTokens` declares the concrete model
|
package/docs/installation.md
CHANGED
|
@@ -13,6 +13,7 @@ This guide covers three entry points:
|
|
|
13
13
|
- TypeScript-capable host project if using the library directly
|
|
14
14
|
- Optional: an installed and running Ollama service for Ollama model profiles
|
|
15
15
|
- Optional: OpenAI API key for OpenAI model profiles
|
|
16
|
+
- Optional: a running llama.cpp server for [llama.cpp model profiles](llamacpp.md)
|
|
16
17
|
|
|
17
18
|
## Prepare Ollama (If Selected)
|
|
18
19
|
|
|
@@ -64,12 +65,15 @@ npx abot start
|
|
|
64
65
|
|
|
65
66
|
Open [http://127.0.0.1:5177](http://127.0.0.1:5177). The command binds to
|
|
66
67
|
loopback by default. On a fresh installation, the setup wizard lets you select
|
|
67
|
-
OpenAI or
|
|
68
|
+
OpenAI, Ollama or llama.cpp, enter a concrete model ID, and save the connection. OpenAI
|
|
68
69
|
accepts the API key directly in the form and stores it privately in the
|
|
69
70
|
consumer's `.env`. The key is not returned to the browser or stored in runtime
|
|
70
71
|
JSON. Existing OpenAI configurations missing a key open the same completion flow.
|
|
71
72
|
|
|
72
|
-
For Ollama, the server must already be running with the selected model available.
|
|
73
|
+
For Ollama and llama.cpp, the server must already be running with the selected model available.
|
|
74
|
+
Every provider's model registration includes an explicit thinking-support checkbox.
|
|
75
|
+
llama.cpp additionally offers per-segment token budgets and a metadata-only
|
|
76
|
+
connection check; see [llama.cpp setup](llamacpp.md).
|
|
73
77
|
Its address is resolved from the ABot host, even when you use the UI from a phone.
|
|
74
78
|
Continue through the optional **Embedding** step to configure semantic memory,
|
|
75
79
|
or choose to set it up later. **Plugins** starts with all tools selected for a
|
|
@@ -93,7 +97,7 @@ managed by a separate process remains under that process's lifecycle; the UI
|
|
|
93
97
|
reports when saved changes require that owner to restart.
|
|
94
98
|
|
|
95
99
|
In the Web UI, open **Models → Add model** to add another model.
|
|
96
|
-
Choose a saved provider connection or create a new OpenAI/Ollama connection.
|
|
100
|
+
Choose a saved provider connection or create a new OpenAI/Ollama/llama.cpp connection.
|
|
97
101
|
Each provider card also has an **Add model** shortcut. Review the model, then
|
|
98
102
|
choose **Save and apply**. Saved API keys are reused; existing model profiles and
|
|
99
103
|
the default model are preserved. The added model is selected in the Models list.
|
|
@@ -133,8 +137,10 @@ npx abot memory enable --provider <provider-id> --model <embedding-model-id>
|
|
|
133
137
|
|
|
134
138
|
ABot does not install or choose the embedding model. The enable command performs
|
|
135
139
|
a real probe, writes config only after it succeeds, and reports that the Runtime
|
|
136
|
-
must be restarted. OpenAI users enter the embedding model id
|
|
137
|
-
users can discover model ids installed at the configured Ollama
|
|
140
|
+
must be restarted. OpenAI and llama.cpp users enter the embedding model id
|
|
141
|
+
manually; Ollama users can discover model ids installed at the configured Ollama
|
|
142
|
+
endpoint. For llama.cpp, use an embedding-enabled server and, if needed, a
|
|
143
|
+
[separate connection from chat](llamacpp.md#embeddings-and-semantic-memory).
|
|
138
144
|
|
|
139
145
|
See [Passive Long-Term Memory](long-term-memory.md) before enabling persistence.
|
|
140
146
|
|