@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,5 +1,5 @@
|
|
|
1
1
|
import type { ModelStep } from "../../../shared/model-steps.js";
|
|
2
|
-
import type { SemanticCompactionCheckpoint, SemanticCompactionCheckpointBinding, SemanticCompactionSource } from "./contracts.js";
|
|
2
|
+
import type { SemanticCompactionCheckpoint, SemanticCompactionCheckpointBinding, SemanticCompactionDigest, SemanticCompactionSource } from "./contracts.js";
|
|
3
3
|
import type { BoundRequestModelInvocationContext, RequestExecutionSeed } from "../../request/contracts.js";
|
|
4
4
|
import type { SuperCompactionFailureOwner } from "../super-compaction-failure-owner.js";
|
|
5
5
|
export type SemanticCompactionGenerationParams = Readonly<{
|
|
@@ -11,6 +11,8 @@ export type SemanticCompactionGenerationParams = Readonly<{
|
|
|
11
11
|
/** Invocation-local freshness binding; never part of a saved checkpoint. */
|
|
12
12
|
boundSteeringVersion?: number;
|
|
13
13
|
previous?: SemanticCompactionCheckpoint;
|
|
14
|
+
/** Verified EA predecessor evidence only; exclusive with previous and never persisted. */
|
|
15
|
+
inheritedSourceDigests?: readonly SemanticCompactionDigest[];
|
|
14
16
|
/** Model step that will consume the checkpoint. */
|
|
15
17
|
consumer?: ModelStep;
|
|
16
18
|
sources: readonly SemanticCompactionSource[];
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { SEMANTIC_COMPACTION_EVIDENCE_SCOPE } from "./evidence-scope.js";
|
|
2
|
-
import {
|
|
2
|
+
import { resolveSemanticCompactionInstructions } from "./execution-evidence-instructions.js";
|
|
3
3
|
import { bindSemanticCompactionSourceSlots } from "./source-slots.js";
|
|
4
|
+
import { resolvePriorCompactionSourceDigests } from "./inherited-source-digests.js";
|
|
4
5
|
export function buildSemanticCompactionMessages(params) {
|
|
5
6
|
return [
|
|
6
7
|
Object.freeze({
|
|
7
8
|
role: "system",
|
|
8
|
-
content:
|
|
9
|
+
content: resolveSemanticCompactionInstructions(params.binding.allowedConsumers),
|
|
9
10
|
}),
|
|
10
11
|
Object.freeze({
|
|
11
12
|
role: "user",
|
|
@@ -15,12 +16,14 @@ export function buildSemanticCompactionMessages(params) {
|
|
|
15
16
|
currentRequest: params.request.prompt,
|
|
16
17
|
active: projectActiveAssignment(params),
|
|
17
18
|
...(params.previous
|
|
19
|
+
? { previousContinuation: params.previous.continuation }
|
|
20
|
+
: {}),
|
|
21
|
+
...(resolvePriorCompactionSourceDigests(params).length > 0
|
|
18
22
|
? {
|
|
19
|
-
|
|
20
|
-
previousSourceDigests: bindSemanticCompactionSourceSlots(params.previous.sourceDigests),
|
|
23
|
+
previousSourceDigests: bindSemanticCompactionSourceSlots(resolvePriorCompactionSourceDigests(params)),
|
|
21
24
|
}
|
|
22
25
|
: {}),
|
|
23
|
-
newSources: bindSemanticCompactionSourceSlots(params.sources, params.
|
|
26
|
+
newSources: bindSemanticCompactionSourceSlots(params.sources, resolvePriorCompactionSourceDigests(params).length),
|
|
24
27
|
}),
|
|
25
28
|
}),
|
|
26
29
|
];
|
|
@@ -30,7 +33,7 @@ export function buildSemanticCompactionSliceMessages(params, slice, state) {
|
|
|
30
33
|
Object.freeze({
|
|
31
34
|
role: "system",
|
|
32
35
|
content: [
|
|
33
|
-
|
|
36
|
+
resolveSemanticCompactionInstructions(params.binding.allowedConsumers),
|
|
34
37
|
"The supplied source is one exact contiguous UTF-8 range of a larger canonical source.",
|
|
35
38
|
"Return all replacement source digests and one replacement continuation. For the sliced source, preserve every previously supplied range plus this range; do not treat ranges as separate sources. partialSourceFold is the latest summary of the covered ranges and replaces the older checkpoint for this generation.",
|
|
36
39
|
].join("\n"),
|
|
@@ -42,11 +45,13 @@ export function buildSemanticCompactionSliceMessages(params, slice, state) {
|
|
|
42
45
|
evidenceScope: SEMANTIC_COMPACTION_EVIDENCE_SCOPE,
|
|
43
46
|
currentRequest: params.request.prompt,
|
|
44
47
|
active: projectActiveAssignment(params),
|
|
45
|
-
...(params.
|
|
48
|
+
...(resolvePriorCompactionSourceDigests(params).length > 0 && !state
|
|
46
49
|
? {
|
|
47
50
|
previousCheckpoint: {
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
...(params.previous
|
|
52
|
+
? { continuation: params.previous.continuation }
|
|
53
|
+
: {}),
|
|
54
|
+
sourceDigests: bindSemanticCompactionSourceSlots(resolvePriorCompactionSourceDigests(params)),
|
|
50
55
|
},
|
|
51
56
|
}
|
|
52
57
|
: {}),
|
|
@@ -59,7 +64,7 @@ export function buildSemanticCompactionSliceMessages(params, slice, state) {
|
|
|
59
64
|
},
|
|
60
65
|
}
|
|
61
66
|
: {}),
|
|
62
|
-
sourceSlice: bindSemanticCompactionSourceSlots([slice], params.
|
|
67
|
+
sourceSlice: bindSemanticCompactionSourceSlots([slice], resolvePriorCompactionSourceDigests(params).length)[0],
|
|
63
68
|
}),
|
|
64
69
|
}),
|
|
65
70
|
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SemanticCompactionCheckpoint, type SemanticCompactionDigest, type SemanticCompactionSource } from "./contracts.js";
|
|
2
|
+
import type { SemanticCompactionGenerationParams } from "./generation-contracts.js";
|
|
3
|
+
/** The EA owner validates predecessor lineage; generation verifies its exact sources. */
|
|
4
|
+
export declare function assertInheritedCompactionSourceDigests(params: SemanticCompactionGenerationParams): void;
|
|
5
|
+
/** Inherited evidence carries no old objective-dependent continuation. */
|
|
6
|
+
export declare function resolvePriorCompactionSourceDigests(params: SemanticCompactionGenerationParams): readonly SemanticCompactionDigest[];
|
|
7
|
+
/** After the first fold, only the real candidate bound to the new objective survives. */
|
|
8
|
+
export declare function projectCompactionBatchParams(params: SemanticCompactionGenerationParams, previous: SemanticCompactionCheckpoint | undefined, sources: readonly SemanticCompactionSource[]): SemanticCompactionGenerationParams;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { createSemanticCompactionSha256Fingerprint, isSemanticCompactionSha256Fingerprint, SEMANTIC_COMPACTION_ID_MAX_LENGTH, } from "./contracts.js";
|
|
2
|
+
/** The EA owner validates predecessor lineage; generation verifies its exact sources. */
|
|
3
|
+
export function assertInheritedCompactionSourceDigests(params) {
|
|
4
|
+
const inherited = params.inheritedSourceDigests;
|
|
5
|
+
if (inherited === undefined)
|
|
6
|
+
return;
|
|
7
|
+
if (params.previous !== undefined)
|
|
8
|
+
throw new Error("context_compaction_inheritance_previous_conflict");
|
|
9
|
+
if (!hasExclusiveExecutionCompactionConsumers(params.binding.allowedConsumers))
|
|
10
|
+
throw new Error("context_compaction_inheritance_consumer_invalid");
|
|
11
|
+
if (!Number.isSafeInteger(params.sourceRevision) || params.sourceRevision < 0)
|
|
12
|
+
throw new Error("context_compaction_inheritance_revision_invalid");
|
|
13
|
+
if (!Array.isArray(inherited) || inherited.length === 0)
|
|
14
|
+
throw new Error("context_compaction_inheritance_sources_invalid");
|
|
15
|
+
const store = params.request.contextCompactionStore;
|
|
16
|
+
if (!store)
|
|
17
|
+
throw new Error("context_compaction_store_required");
|
|
18
|
+
const newSourceRefs = new Set(params.sources.map(({ sourceRef }) => sourceRef));
|
|
19
|
+
const inheritedRefs = new Set();
|
|
20
|
+
for (const digest of inherited) {
|
|
21
|
+
if (!isWellFormedInheritedSourceDigest(digest))
|
|
22
|
+
throw new Error("context_compaction_inheritance_digest_invalid");
|
|
23
|
+
if (inheritedRefs.has(digest.sourceRef) || newSourceRefs.has(digest.sourceRef))
|
|
24
|
+
throw new Error("context_compaction_inheritance_source_overlap");
|
|
25
|
+
const source = store.materializeSource(digest.sourceRef, digest.sourceFingerprint);
|
|
26
|
+
if (!hasExactInheritedSourceIdentity(source, digest))
|
|
27
|
+
throw new Error("context_compaction_inheritance_source_missing");
|
|
28
|
+
inheritedRefs.add(digest.sourceRef);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Inherited evidence carries no old objective-dependent continuation. */
|
|
32
|
+
export function resolvePriorCompactionSourceDigests(params) {
|
|
33
|
+
return params.previous?.sourceDigests ?? params.inheritedSourceDigests ?? [];
|
|
34
|
+
}
|
|
35
|
+
/** After the first fold, only the real candidate bound to the new objective survives. */
|
|
36
|
+
export function projectCompactionBatchParams(params, previous, sources) {
|
|
37
|
+
return Object.freeze({
|
|
38
|
+
...params,
|
|
39
|
+
previous,
|
|
40
|
+
inheritedSourceDigests: previous ? undefined : params.inheritedSourceDigests,
|
|
41
|
+
sources,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function hasExclusiveExecutionCompactionConsumers(consumers) {
|
|
45
|
+
if (consumers.length === 0)
|
|
46
|
+
return false;
|
|
47
|
+
return consumers.every(isExecutionCompactionConsumer);
|
|
48
|
+
}
|
|
49
|
+
function isExecutionCompactionConsumer(consumer) {
|
|
50
|
+
return consumer === "execution.decision" || consumer === "execution.response";
|
|
51
|
+
}
|
|
52
|
+
function isWellFormedInheritedSourceDigest(digest) {
|
|
53
|
+
if (!digest || typeof digest !== "object")
|
|
54
|
+
return false;
|
|
55
|
+
if (typeof digest.sourceRef !== "string")
|
|
56
|
+
return false;
|
|
57
|
+
if (!digest.sourceRef.trim())
|
|
58
|
+
return false;
|
|
59
|
+
if (digest.sourceRef !== digest.sourceRef.trim())
|
|
60
|
+
return false;
|
|
61
|
+
if (digest.sourceRef.length > SEMANTIC_COMPACTION_ID_MAX_LENGTH)
|
|
62
|
+
return false;
|
|
63
|
+
if (!isSemanticCompactionSha256Fingerprint(digest.sourceFingerprint))
|
|
64
|
+
return false;
|
|
65
|
+
if (typeof digest.digest !== "string" || !digest.digest.trim())
|
|
66
|
+
return false;
|
|
67
|
+
return digest.digest === digest.digest.trim();
|
|
68
|
+
}
|
|
69
|
+
function hasExactInheritedSourceIdentity(source, digest) {
|
|
70
|
+
if (!source || source.sourceRef !== digest.sourceRef)
|
|
71
|
+
return false;
|
|
72
|
+
if (source.sourceFingerprint !== digest.sourceFingerprint)
|
|
73
|
+
return false;
|
|
74
|
+
return (createSemanticCompactionSha256Fingerprint(source.content) ===
|
|
75
|
+
digest.sourceFingerprint);
|
|
76
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { resolveModelContextAdmission } from "../../model/model-context-budget.js";
|
|
2
|
+
import { assertInheritedCompactionSourceDigests, resolvePriorCompactionSourceDigests, } from "./inherited-source-digests.js";
|
|
2
3
|
const CHECKPOINT_CONTEXT_WINDOW_SHARE = 0.3;
|
|
3
4
|
/** A shared checkpoint must fit every declared consumer, starting with its caller. */
|
|
4
5
|
export function prepareReplacementCompactionBudget(params, sources = params.sources) {
|
|
5
|
-
|
|
6
|
+
assertInheritedCompactionSourceDigests(params);
|
|
7
|
+
const expectedSources = Object.freeze([...resolvePriorCompactionSourceDigests(params), ...sources].map(({ sourceRef, sourceFingerprint }) => Object.freeze({ sourceRef, sourceFingerprint })));
|
|
6
8
|
const allowedConsumers = [...new Set(params.binding.allowedConsumers)];
|
|
7
9
|
const consumer = params.consumer ??
|
|
8
10
|
(allowedConsumers.length === 1 ? allowedConsumers[0] : undefined);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { assertInheritedCompactionSourceDigests, projectCompactionBatchParams, resolvePriorCompactionSourceDigests, } from "./inherited-source-digests.js";
|
|
1
2
|
import { registerSemanticCompactionSources } from "./generation-source-registration.js";
|
|
2
3
|
import { projectConfiguredStepMessages } from "../../config/runner/step-instructions.js";
|
|
3
4
|
import { assessRequestMessagesBudget, resolveRequestBudgetInputTokens, } from "../request-context-budget.js";
|
|
@@ -46,7 +47,7 @@ export async function generateSemanticCompactionCandidate(params) {
|
|
|
46
47
|
modelStep: CONTEXT_COMPACTION_MODEL_STEP,
|
|
47
48
|
scopeId: params.scopeId,
|
|
48
49
|
sourceRevision: params.sourceRevision,
|
|
49
|
-
previousCoveredSourceCount: params.
|
|
50
|
+
previousCoveredSourceCount: resolvePriorCompactionSourceDigests(params).length,
|
|
50
51
|
newSourceCount: params.sources.length,
|
|
51
52
|
inputCharacterCount: prepared.messages.reduce((total, message) => total + message.content.length, 0),
|
|
52
53
|
});
|
|
@@ -78,7 +79,7 @@ export async function generateSemanticCompactionCandidate(params) {
|
|
|
78
79
|
coveredSourceCount: candidate.sourceDigests.length,
|
|
79
80
|
replacementCheckpoint: true,
|
|
80
81
|
digestMode: "rolling_replacement",
|
|
81
|
-
previousDigestCharacters: semanticCompactionDigestTotalLength(params
|
|
82
|
+
previousDigestCharacters: semanticCompactionDigestTotalLength(resolvePriorCompactionSourceDigests(params)),
|
|
82
83
|
replacementDigestCharacters: semanticCompactionDigestTotalLength(candidate.sourceDigests),
|
|
83
84
|
durationMs: Date.now() - startedAt,
|
|
84
85
|
});
|
|
@@ -102,6 +103,7 @@ export async function generateSemanticCompactionCandidate(params) {
|
|
|
102
103
|
* returned checkpoint still contains exactly one digest for the full source.
|
|
103
104
|
*/
|
|
104
105
|
export async function generateSemanticCompactionCandidateBatched(params) {
|
|
106
|
+
assertInheritedCompactionSourceDigests(params);
|
|
105
107
|
registerSemanticCompactionSources(params);
|
|
106
108
|
let candidate = params.previous;
|
|
107
109
|
let nextSourceIndex = 0;
|
|
@@ -109,11 +111,7 @@ export async function generateSemanticCompactionCandidateBatched(params) {
|
|
|
109
111
|
let selectedParams;
|
|
110
112
|
for (let endSourceIndex = Math.min(params.sources.length, nextSourceIndex + SEMANTIC_COMPACTION_BATCH_SOURCE_MAX_COUNT); endSourceIndex > nextSourceIndex; endSourceIndex -= 1) {
|
|
111
113
|
const batch = Object.freeze(params.sources.slice(nextSourceIndex, endSourceIndex));
|
|
112
|
-
const batchParams =
|
|
113
|
-
...params,
|
|
114
|
-
...(candidate ? { previous: candidate } : { previous: undefined }),
|
|
115
|
-
sources: batch,
|
|
116
|
-
});
|
|
114
|
+
const batchParams = projectCompactionBatchParams(params, candidate, batch);
|
|
117
115
|
if ((await assessSemanticCompactionInputForAdmission(batchParams)).fits) {
|
|
118
116
|
selectedParams = batchParams;
|
|
119
117
|
break;
|
|
@@ -125,11 +123,7 @@ export async function generateSemanticCompactionCandidateBatched(params) {
|
|
|
125
123
|
continue;
|
|
126
124
|
}
|
|
127
125
|
const source = params.sources[nextSourceIndex];
|
|
128
|
-
const slicedParams = Object.freeze(
|
|
129
|
-
...params,
|
|
130
|
-
...(candidate ? { previous: candidate } : { previous: undefined }),
|
|
131
|
-
sources: Object.freeze([source]),
|
|
132
|
-
});
|
|
126
|
+
const slicedParams = projectCompactionBatchParams(params, candidate, Object.freeze([source]));
|
|
133
127
|
candidate = await generateSemanticCompactionSlicedSource(slicedParams, source);
|
|
134
128
|
nextSourceIndex += 1;
|
|
135
129
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const COMPUTER_USE_SKILL = Object.freeze({
|
|
2
2
|
skillId: "computer-use",
|
|
3
3
|
name: "Computer Use",
|
|
4
|
-
description: "
|
|
4
|
+
description: "Tasks requiring observation or interaction with a graphical desktop application.",
|
|
5
5
|
content: `# Computer Use
|
|
6
6
|
|
|
7
7
|
Use this reference when completing the current task requires observing or interacting with a desktop application. It is procedural documentation under the user's request, your assigned objective and existing permissions. It does not make a desktop available or authorize additional actions. Use the currently offered tool schemas for exact inputs and supported operations.
|
|
@@ -7,13 +7,31 @@ export const TECHNICAL_WORK_SKILL = Object.freeze({
|
|
|
7
7
|
Use this guidance for building, changing, debugging or verifying software, scripts and configuration. Apply only what the current request or assigned task needs. It adds no work, permissions or tool availability.
|
|
8
8
|
|
|
9
9
|
## Ground the work
|
|
10
|
-
Identify the requested outcome and acceptance criteria.
|
|
10
|
+
Identify the requested outcome and acceptance criteria. Ground decisions in the relevant implementation, interfaces, data and existing checks. Reuse available context before fetching more. Distinguish observed facts from assumptions; obtain focused observations when essential details are missing.
|
|
11
|
+
|
|
12
|
+
## Plan around outcomes
|
|
13
|
+
- Plan the requested outcomes, not a standard development ceremony. Include only work needed to satisfy the request; do not add exploration, review or validation phases by habit.
|
|
14
|
+
- Give each planned outcome a clear completion condition. Identify the smallest relevant verification needed, if any, and what uncertainty it resolves. Avoid open-ended instructions such as "validate the project" or "check all files."
|
|
15
|
+
- Keep focused verification with the implementation it supports. Create a separate verification task only for an explicit requirement or a concrete risk not covered by those checks, such as integration between components. State its scope and completion condition.
|
|
16
|
+
- Build on established facts and completed work. Do not schedule re-reading successfully written content or repeating valid checks without a specific information gap, relevant change or uncertain result.
|
|
17
|
+
- In delegated work, request the changes made, checks performed, their results and remaining gaps. Evaluate that evidence before commissioning another inspection; retrieve only what is missing for the next decision.
|
|
18
|
+
- Extend the plan only for a concrete unmet requirement, failed check or newly discovered risk—not merely because more inspection is possible.
|
|
19
|
+
|
|
20
|
+
## Read selectively
|
|
21
|
+
- Treat file reads, tool calls and returned text as expensive resources. Before reading, identify the concrete information gap it must resolve. Skip reads whose answer is already available in context.
|
|
22
|
+
- Reuse content already available in context, including the portions you successfully wrote or patched. Treat it as current unless there is evidence of a subsequent change. Do not re-read it merely to confirm a successful edit, refresh your memory or prepare the final report. Read again only where needed content is missing or incomplete, a tool result is uncertain, or there is evidence of an intervening change.
|
|
23
|
+
- For follow-up tasks, start from known files, symbols and sections rather than restarting exploration. Retrieve only the relevant sections and enough surrounding context to understand dependencies and edit safely.
|
|
24
|
+
- Prefer available targeted retrieval tools: read a known range directly; use scoped symbol/text search when the location is unknown. Reuse sufficient search output without fetching the same content again. Do not search again for locations already known.
|
|
25
|
+
- Expand scope only for a specific unresolved question or dependency. Whole-file reads are justified when broader context is necessary, not simply because a file is involved. Batch related lookups when supported and prefer one sufficient bounded retrieval over many tiny calls.
|
|
11
26
|
|
|
12
27
|
## Make focused changes
|
|
13
28
|
Choose the smallest coherent change that meets the request. Preserve unrelated work and reuse established patterns. Use offered capabilities and confirmed prerequisites; do not assume a particular operating system, runtime or dependency is available.
|
|
14
29
|
|
|
15
30
|
## Verify proportionately
|
|
16
|
-
|
|
31
|
+
A successful write establishes the saved content, not its correctness. Avoiding redundant reads does not replace relevant verification.
|
|
32
|
+
- Default to focused code checks and relevant existing unit/integration tests.
|
|
33
|
+
- Perform browser interaction testing only when the user explicitly requests that level of testing. Without that request, do not run browser interaction checks, browser end-to-end tests or UI/responsive audits, and do not create a DOM mock, simulated browser or custom interaction harness as a substitute. A request to build a working, connected or responsive product does not authorize these checks.
|
|
34
|
+
- New test infrastructure also requires an explicit user request. Keep verification within the requested scope; do not add interaction testing to turn an unverified browser outcome into a successful one. Do not present unrequested browser testing as an unmet acceptance criterion or a reason to continue working.
|
|
17
35
|
- Check unknown prerequisites before dependent verification.
|
|
18
36
|
- Use small, independently diagnostic checks; reuse passing results until relevant changes.
|
|
19
37
|
- Diagnose a failed check before changing the product.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const WHAT_CAN_I_DO_SKILL = Object.freeze({
|
|
2
|
+
skillId: "what-can-i-do",
|
|
3
|
+
name: "What Can I Do?",
|
|
4
|
+
description: "ABot abilities, tools and plugins overview; not requests to perform a task.",
|
|
5
|
+
content: `# What Can I Do?
|
|
6
|
+
|
|
7
|
+
Explain what ABot can help the user accomplish, in the user's language. Give a short, practical overview suited to their question. Include useful actions as well as conversational help; a generic description of a language model misses ABot's purpose.
|
|
8
|
+
|
|
9
|
+
## Useful work
|
|
10
|
+
ABot combines writing, explanation, translation, summarization and coding assistance with actions through enabled tools. Depending on the configured tools and permissions, supported work includes:
|
|
11
|
+
|
|
12
|
+
- Research public websites and recent news, compare sources and prepare a sourced summary.
|
|
13
|
+
- Read, search, create and edit files within the configured workspace; save useful results as documents or project files.
|
|
14
|
+
- Inspect code and configuration, develop scripts, and run supported commands or checks.
|
|
15
|
+
- Work with connected desktop applications through Computer Use, with explicit approval for the target and task.
|
|
16
|
+
- Schedule recurring tasks or build reusable automation drafts in ABot Studio.
|
|
17
|
+
|
|
18
|
+
Choose a few relevant examples rather than reciting every area. Distinguish writing an explanation or draft from actually searching, saving, scheduling or operating an application.
|
|
19
|
+
|
|
20
|
+
## Describe the current installation honestly
|
|
21
|
+
The examples above describe supported uses of ABot, not a verified inventory of this installation. Current request metadata and discovery results determine which tools are enabled. Availability does not prove a connected account, permission, successful execution or unrestricted computer/file access.
|
|
22
|
+
|
|
23
|
+
For a broad introduction, describe these areas with a brief qualification that actions depend on enabled tools. If the user asks for the exact current tools or plugins, use supplied current metadata or the offered capability_brief / describe_available_tools discovery operation when the current role can invoke it. If that information is unavailable, state the limit; do not invent a list or conclude that no tools exist.
|
|
24
|
+
|
|
25
|
+
Explaining an ability does not authorize demonstrating it. Do not inspect a desktop, change files, activate an automation or load unrelated Skills merely to introduce yourself. Keep any separately requested action within its normal workflow and permissions.
|
|
26
|
+
`,
|
|
27
|
+
});
|
|
@@ -2,6 +2,7 @@ import { SKILL_CREATOR } from "./builtins/skill-creator.js";
|
|
|
2
2
|
import { ABOT_STUDIO_SKILL } from "./builtins/abot-studio.js";
|
|
3
3
|
import { COMPUTER_USE_SKILL } from "./builtins/computer-use.js";
|
|
4
4
|
import { TECHNICAL_WORK_SKILL } from "./builtins/technical-work.js";
|
|
5
|
+
import { WHAT_CAN_I_DO_SKILL } from "./builtins/what-can-i-do.js";
|
|
5
6
|
import { createKnowledgeSkillStore } from "./store.js";
|
|
6
7
|
/** Packaged read-only documents; independent of installed or enabled plugins. */
|
|
7
8
|
export const builtinKnowledgeSkillStore = createKnowledgeSkillStore([
|
|
@@ -9,4 +10,5 @@ export const builtinKnowledgeSkillStore = createKnowledgeSkillStore([
|
|
|
9
10
|
COMPUTER_USE_SKILL,
|
|
10
11
|
SKILL_CREATOR,
|
|
11
12
|
TECHNICAL_WORK_SKILL,
|
|
13
|
+
WHAT_CAN_I_DO_SKILL,
|
|
12
14
|
]);
|
|
@@ -157,6 +157,9 @@ export declare function createLocalRuntimeApplication(config?: RuntimeConfig, op
|
|
|
157
157
|
}>[];
|
|
158
158
|
models: {
|
|
159
159
|
provider?: string | undefined;
|
|
160
|
+
reasoningControls?: {
|
|
161
|
+
budgetTokens: boolean;
|
|
162
|
+
} | undefined;
|
|
160
163
|
id: string;
|
|
161
164
|
label: string;
|
|
162
165
|
}[];
|
|
@@ -289,6 +292,8 @@ export declare function createLocalRuntimeApplication(config?: RuntimeConfig, op
|
|
|
289
292
|
};
|
|
290
293
|
projects: Readonly<{
|
|
291
294
|
list: () => Promise<readonly import("./projects/contracts.js").RuntimeProject[]>;
|
|
295
|
+
catalog: () => Promise<import("./projects/contracts.js").RuntimeProjectCatalog>;
|
|
296
|
+
delete: (projectId: string) => Promise<void>;
|
|
292
297
|
get: (id: string) => Promise<import("./projects/contracts.js").RuntimeProject | null>;
|
|
293
298
|
create: (input: {
|
|
294
299
|
name?: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RuntimeEnvironmentServices } from "../composition.js";
|
|
2
2
|
export declare const LOCAL_SESSION_METHODS: readonly ["getOrCreateSession", "createAssistantConversation", "getAllSessions", "listSessions", "getSessionById", "getSessionSnapshot", "getRequestReplayById", "updateSessionTitle", "updateSessionRuntimeMode", "appendMessage", "appendContextEntry", "upsertArtifactPaths", "startRequestStream", "appendRequestEvent", "deleteSession", "deleteSessionWithStats", "resetSession", "clearSessionMessages", "deleteMessage", "deleteMessageWithStats", "compareAndSwapSessionMemoryCheckpoint"];
|
|
3
|
-
export declare const LOCAL_PROJECT_METHODS: readonly ["list", "get", "create", "browseFolders", "createSession"];
|
|
3
|
+
export declare const LOCAL_PROJECT_METHODS: readonly ["list", "catalog", "delete", "get", "create", "browseFolders", "createSession"];
|
|
4
4
|
export declare const LOCAL_ATTACHMENT_METHODS: readonly ["saveAttachment", "validateAttachmentReferences", "resolveAttachment", "deleteAttachment", "deleteSessionAttachments"];
|
|
5
5
|
export declare const LOCAL_SCHEDULER_METHODS: readonly ["tick", "create", "list", "get", "update", "pause", "resume", "cancel", "runNow", "deleteSession", "listRuns"];
|
|
6
6
|
export declare const LOCAL_AUTOMATION_METHODS: readonly ["list", "create", "createDraftPlan", "applyDraftPlan", "getDraft", "deleteDraft", "archive", "restore", "getPublishedDefinition", "updateDraft", "getSavedAgent", "listSavedAgents", "saveAgentFromDraft", "validate", "catalog", "getGrant", "replaceGrant", "publish", "activate", "pause", "runNow", "listRuns", "getRun", "getStepEvidence", "stopRun", "rerun"];
|
|
@@ -153,6 +153,9 @@ export declare function createLocalServiceClients(call: LocalRuntimeCallHandler)
|
|
|
153
153
|
}>[];
|
|
154
154
|
models: {
|
|
155
155
|
provider?: string | undefined;
|
|
156
|
+
reasoningControls?: {
|
|
157
|
+
budgetTokens: boolean;
|
|
158
|
+
} | undefined;
|
|
156
159
|
id: string;
|
|
157
160
|
label: string;
|
|
158
161
|
}[];
|
|
@@ -285,6 +288,8 @@ export declare function createLocalServiceClients(call: LocalRuntimeCallHandler)
|
|
|
285
288
|
};
|
|
286
289
|
projects: Readonly<{
|
|
287
290
|
list: () => Promise<readonly import("../projects/contracts.js").RuntimeProject[]>;
|
|
291
|
+
catalog: () => Promise<import("../projects/contracts.js").RuntimeProjectCatalog>;
|
|
292
|
+
delete: (projectId: string) => Promise<void>;
|
|
288
293
|
get: (id: string) => Promise<import("../projects/contracts.js").RuntimeProject | null>;
|
|
289
294
|
create: (input: {
|
|
290
295
|
name?: string;
|
|
@@ -293,6 +293,7 @@ export class SavedRequestApprovals {
|
|
|
293
293
|
text: snapshot.originalPrompt,
|
|
294
294
|
agentMode: snapshot.seed.agentMode,
|
|
295
295
|
modelPreference: snapshot.seed.modelPreference,
|
|
296
|
+
reasoningPreference: snapshot.seed.reasoningPreference,
|
|
296
297
|
toolPermissionMode: snapshot.seed.toolPermissionMode,
|
|
297
298
|
}, {
|
|
298
299
|
...options,
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { listSavedEmbeddingProfiles, matchingEmbeddingProfileLabel, readSavedEmbeddingProfiles } from "./saved-profiles.js";
|
|
1
2
|
import { isRecord } from "../../config/utils.js";
|
|
2
3
|
export const DEFAULT_MEMORY_EMBEDDING_PROFILE_ID = "memory-embedding";
|
|
3
4
|
export function projectOnboardingStatus(config) {
|
|
4
5
|
const memory = isRecord(config.longTermMemory) ? config.longTermMemory : {};
|
|
5
6
|
const profileId = readText(memory.embeddingProfileId);
|
|
6
|
-
const embeddingProfiles =
|
|
7
|
+
const embeddingProfiles = readSavedEmbeddingProfiles(config);
|
|
7
8
|
const profile = profileId ? embeddingProfiles[profileId] : undefined;
|
|
8
9
|
const providerId = isRecord(profile) ? readText(profile.provider) : undefined;
|
|
9
10
|
const model = isRecord(profile) ? readText(profile.model) : undefined;
|
|
@@ -11,6 +12,7 @@ export function projectOnboardingStatus(config) {
|
|
|
11
12
|
enabled: memory.enabled === true,
|
|
12
13
|
emitClientEvents: memory.emitClientEvents === true,
|
|
13
14
|
providers: listConfiguredProviders(config),
|
|
15
|
+
embeddingProfiles: listSavedEmbeddingProfiles(config),
|
|
14
16
|
...(profileId ? { profileId } : {}),
|
|
15
17
|
...(providerId ? { providerId } : {}),
|
|
16
18
|
...(model ? { model } : {}),
|
|
@@ -21,7 +23,7 @@ export function buildEnabledMemoryConfig(params) {
|
|
|
21
23
|
const memory = isRecord(params.config.longTermMemory)
|
|
22
24
|
? params.config.longTermMemory
|
|
23
25
|
: {};
|
|
24
|
-
const profiles =
|
|
26
|
+
const profiles = readSavedEmbeddingProfiles(params.config);
|
|
25
27
|
const existingProfile = profiles[params.profileId];
|
|
26
28
|
const existingOptions = readMatchingProfileOptions({
|
|
27
29
|
profile: existingProfile,
|
|
@@ -35,7 +37,7 @@ export function buildEnabledMemoryConfig(params) {
|
|
|
35
37
|
embeddingProfiles: {
|
|
36
38
|
...profiles,
|
|
37
39
|
[params.profileId]: {
|
|
38
|
-
label: "Long-term memory embeddings",
|
|
40
|
+
label: matchingEmbeddingProfileLabel(existingProfile, params.providerId, params.model) ?? "Long-term memory embeddings",
|
|
39
41
|
provider: params.providerId,
|
|
40
42
|
model: params.model,
|
|
41
43
|
...(existingOptions ? { options: existingOptions } : {}),
|
|
@@ -89,10 +91,6 @@ export function requireConfiguredProvider(config, providerId) {
|
|
|
89
91
|
throw new Error(`long_term_memory_provider_not_configured:${providerId}`);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
|
-
function readEmbeddingProfiles(config) {
|
|
93
|
-
const models = isRecord(config.models) ? config.models : {};
|
|
94
|
-
return isRecord(models.embeddingProfiles) ? models.embeddingProfiles : {};
|
|
95
|
-
}
|
|
96
94
|
function readText(value) {
|
|
97
95
|
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
98
96
|
}
|
|
@@ -3,6 +3,21 @@ export type LongTermMemoryOnboardingProvider = Readonly<{
|
|
|
3
3
|
id: string;
|
|
4
4
|
type: string;
|
|
5
5
|
}>;
|
|
6
|
+
export type SavedMemoryEmbeddingProfile = Readonly<{
|
|
7
|
+
id: string;
|
|
8
|
+
label: string;
|
|
9
|
+
providerId: string;
|
|
10
|
+
model: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type LongTermMemoryEmbeddingProfileSaveResult = Readonly<{
|
|
13
|
+
status: LongTermMemoryOnboardingStatus;
|
|
14
|
+
profileId: string;
|
|
15
|
+
configPath: string;
|
|
16
|
+
backupPath?: string;
|
|
17
|
+
}>;
|
|
18
|
+
export type LongTermMemoryEmbeddingProfileRemoveResult = LongTermMemoryEmbeddingProfileSaveResult & Readonly<{
|
|
19
|
+
removed: true;
|
|
20
|
+
}>;
|
|
6
21
|
export type LongTermMemoryOnboardingStatus = Readonly<{
|
|
7
22
|
enabled: boolean;
|
|
8
23
|
emitClientEvents: boolean;
|
|
@@ -10,6 +25,7 @@ export type LongTermMemoryOnboardingStatus = Readonly<{
|
|
|
10
25
|
providerId?: string;
|
|
11
26
|
model?: string;
|
|
12
27
|
providers: readonly LongTermMemoryOnboardingProvider[];
|
|
28
|
+
embeddingProfiles: readonly SavedMemoryEmbeddingProfile[];
|
|
13
29
|
}>;
|
|
14
30
|
export type LongTermMemoryOnboardingResult = Readonly<{
|
|
15
31
|
status: LongTermMemoryOnboardingStatus;
|
|
@@ -48,5 +64,15 @@ export type LongTermMemoryOnboardingService = Readonly<{
|
|
|
48
64
|
emitClientEvents?: boolean;
|
|
49
65
|
abortSignal?: AbortSignal;
|
|
50
66
|
}>): Promise<LongTermMemoryOnboardingResult>;
|
|
67
|
+
saveProfile(input: Readonly<{
|
|
68
|
+
providerId: string;
|
|
69
|
+
model: string;
|
|
70
|
+
label: string;
|
|
71
|
+
abortSignal?: AbortSignal;
|
|
72
|
+
}>): Promise<LongTermMemoryEmbeddingProfileSaveResult>;
|
|
73
|
+
removeProfile(input: Readonly<{
|
|
74
|
+
profileId: string;
|
|
75
|
+
abortSignal?: AbortSignal;
|
|
76
|
+
}>): Promise<LongTermMemoryEmbeddingProfileRemoveResult>;
|
|
51
77
|
disable(): Promise<LongTermMemoryOnboardingResult>;
|
|
52
78
|
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readEmbeddingProfileId(value: string | undefined): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DEFAULT_MEMORY_EMBEDDING_PROFILE_ID } from "./configuration.js";
|
|
2
|
+
const PROFILE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/u;
|
|
3
|
+
export function readEmbeddingProfileId(value) {
|
|
4
|
+
const profileId = value?.trim() || DEFAULT_MEMORY_EMBEDDING_PROFILE_ID;
|
|
5
|
+
if (!PROFILE_ID_PATTERN.test(profileId))
|
|
6
|
+
throw new Error("long_term_memory_embedding_profile_id_invalid");
|
|
7
|
+
return profileId;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RuntimeConfigFile } from "../../config/types.js";
|
|
2
|
+
import type { SavedMemoryEmbeddingProfile } from "./contracts.js";
|
|
3
|
+
export declare function readSavedEmbeddingProfiles(config: RuntimeConfigFile): Record<string, unknown>;
|
|
4
|
+
export declare function listSavedEmbeddingProfiles(config: RuntimeConfigFile): readonly SavedMemoryEmbeddingProfile[];
|
|
5
|
+
/** A saved choice is independent of the active memory binding and credentials. */
|
|
6
|
+
export declare function buildSavedEmbeddingProfile(params: {
|
|
7
|
+
config: RuntimeConfigFile;
|
|
8
|
+
providerId: string;
|
|
9
|
+
model: string;
|
|
10
|
+
label: string;
|
|
11
|
+
}): {
|
|
12
|
+
config: RuntimeConfigFile;
|
|
13
|
+
profileId: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function matchingEmbeddingProfileLabel(profile: unknown, providerId: string, model: string): string | undefined;
|
|
16
|
+
/** Remove a saved choice, never its provider or stored memory data. */
|
|
17
|
+
export declare function buildRemovedEmbeddingProfile(config: RuntimeConfigFile, profileId: string): RuntimeConfigFile;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { isRecord } from "../../config/utils.js";
|
|
3
|
+
export function readSavedEmbeddingProfiles(config) {
|
|
4
|
+
const models = isRecord(config.models) ? config.models : {};
|
|
5
|
+
return isRecord(models.embeddingProfiles) ? models.embeddingProfiles : {};
|
|
6
|
+
}
|
|
7
|
+
export function listSavedEmbeddingProfiles(config) {
|
|
8
|
+
return Object.freeze(Object.entries(readSavedEmbeddingProfiles(config)).flatMap(([id, profile]) => {
|
|
9
|
+
if (!isRecord(profile))
|
|
10
|
+
return [];
|
|
11
|
+
if (typeof profile.provider !== "string")
|
|
12
|
+
return [];
|
|
13
|
+
if (typeof profile.model !== "string")
|
|
14
|
+
return [];
|
|
15
|
+
return [Object.freeze({
|
|
16
|
+
id,
|
|
17
|
+
label: typeof profile.label === "string" ? profile.label : id,
|
|
18
|
+
providerId: profile.provider,
|
|
19
|
+
model: profile.model,
|
|
20
|
+
})];
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
/** A saved choice is independent of the active memory binding and credentials. */
|
|
24
|
+
export function buildSavedEmbeddingProfile(params) {
|
|
25
|
+
const models = isRecord(params.config.models) ? params.config.models : {};
|
|
26
|
+
const profiles = readSavedEmbeddingProfiles(params.config);
|
|
27
|
+
const profileId = `embedding-${randomUUID()}`;
|
|
28
|
+
return {
|
|
29
|
+
profileId,
|
|
30
|
+
config: {
|
|
31
|
+
...params.config,
|
|
32
|
+
models: {
|
|
33
|
+
...models,
|
|
34
|
+
embeddingProfiles: {
|
|
35
|
+
...profiles,
|
|
36
|
+
[profileId]: { label: params.label, provider: params.providerId, model: params.model },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function matchingEmbeddingProfileLabel(profile, providerId, model) {
|
|
43
|
+
if (!isRecord(profile))
|
|
44
|
+
return undefined;
|
|
45
|
+
if (profile.provider !== providerId)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (profile.model !== model)
|
|
48
|
+
return undefined;
|
|
49
|
+
return typeof profile.label === "string" ? profile.label : undefined;
|
|
50
|
+
}
|
|
51
|
+
class SavedEmbeddingProfileRemovalError extends Error {
|
|
52
|
+
statusCode;
|
|
53
|
+
constructor(message, statusCode) {
|
|
54
|
+
super(message);
|
|
55
|
+
this.statusCode = statusCode;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function hasConfiguredMemoryProfile(config, profileId) {
|
|
59
|
+
if (!isRecord(config.longTermMemory))
|
|
60
|
+
return false;
|
|
61
|
+
const selected = config.longTermMemory.embeddingProfileId;
|
|
62
|
+
return typeof selected === "string" && selected.trim() === profileId;
|
|
63
|
+
}
|
|
64
|
+
function requireRemovableSavedProfile(config, profileId) {
|
|
65
|
+
if (!Object.hasOwn(readSavedEmbeddingProfiles(config), profileId))
|
|
66
|
+
throw new SavedEmbeddingProfileRemovalError("The saved embedding profile no longer exists.", 404);
|
|
67
|
+
if (hasConfiguredMemoryProfile(config, profileId))
|
|
68
|
+
throw new SavedEmbeddingProfileRemovalError("Choose another memory profile before removing this one.", 409);
|
|
69
|
+
}
|
|
70
|
+
/** Remove a saved choice, never its provider or stored memory data. */
|
|
71
|
+
export function buildRemovedEmbeddingProfile(config, profileId) {
|
|
72
|
+
requireRemovableSavedProfile(config, profileId);
|
|
73
|
+
const models = isRecord(config.models) ? config.models : {};
|
|
74
|
+
const profiles = { ...readSavedEmbeddingProfiles(config) };
|
|
75
|
+
delete profiles[profileId];
|
|
76
|
+
return { ...config, models: { ...models, embeddingProfiles: profiles } };
|
|
77
|
+
}
|