@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,17 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readInheritedCompactionCheckpoint } from "./model-step-compaction-inheritance.js";
|
|
2
|
+
import { projectCheckpointMessages, scanCompactionSources, createResultSourceOverrideMap } from "./model-step-compaction-projection.js";
|
|
2
3
|
import { createVerifiedCompactionProjection } from "./verified-compaction-projection.js";
|
|
3
|
-
import { SEMANTIC_COMPACTION_EVIDENCE_SCOPE } from "./semantic-compaction/evidence-scope.js";
|
|
4
4
|
import { readOperationSupervisionEvidenceBinding } from "./operation-supervision-evidence-binding.js";
|
|
5
5
|
import { projectOperationSupervisionEvidenceClosure } from "./operation-supervision-evidence-projection.js";
|
|
6
6
|
import { superWorkerCompactionFailureOwner } from "./super-worker-compaction-failure.js";
|
|
7
7
|
import { withSuperCompactionFailure, } from "./super-compaction-failure-owner.js";
|
|
8
8
|
import { resolveSuperWorkerCompactionProjection } from "./super-worker-compaction-projection.js";
|
|
9
9
|
import { CompactionSourceInvariantError } from "./compaction-source-invariant.js";
|
|
10
|
-
import { CORE_SKILL_READ_MESSAGE_KIND, coreSkillReadSourceRef } from "./core-skill-read-context.js";
|
|
11
|
-
import { projectRequestToolResultsCheckpointMessage } from "./request-tool-results-checkpoint.js";
|
|
12
|
-
import { OPERATION_SUPERVISION_EVIDENCE_MESSAGE_KIND } from "./operation-supervision-evidence.js";
|
|
13
10
|
import { SEMANTIC_COMPACTION_CONTEXT_LANE, assertValidSemanticCompactionCheckpoint, createSemanticCompactionSha256Fingerprint, generateSemanticCompactionCandidateBatched, sameSemanticCompactionCheckpointBinding, } from "./semantic-compaction/index.js";
|
|
14
|
-
const PAYLOAD_CONTEXT_PREFIX = "Canonical runtime context:\n";
|
|
15
11
|
export function createModelStepCompactionController(request, options) {
|
|
16
12
|
if (!options.call.objective) {
|
|
17
13
|
throw new Error("context_compaction_active_objective_required");
|
|
@@ -36,6 +32,13 @@ export function createModelStepCompactionController(request, options) {
|
|
|
36
32
|
if (!store) {
|
|
37
33
|
throw new Error("context_compaction_store_required");
|
|
38
34
|
}
|
|
35
|
+
const inherited = readInheritedCompactionCheckpoint({
|
|
36
|
+
checkpoint: options.inheritedCheckpoint,
|
|
37
|
+
store,
|
|
38
|
+
binding,
|
|
39
|
+
scopeId,
|
|
40
|
+
sourceRevision: options.sourceRevision,
|
|
41
|
+
});
|
|
39
42
|
const verifiedProjection = createVerifiedCompactionProjection();
|
|
40
43
|
let projectedCheckpoint;
|
|
41
44
|
const reconcileEvidence = (messages, checkpoint) => projectOperationSupervisionEvidenceClosure(messages, {
|
|
@@ -80,8 +83,9 @@ export function createModelStepCompactionController(request, options) {
|
|
|
80
83
|
async prepare(messages, context) {
|
|
81
84
|
const { sidecar, failureOwner, overrides: resultSourceOverrides, } = sourceProjection(messages);
|
|
82
85
|
const previous = withSuperCompactionFailure(failureOwner, () => readPrevious(messages));
|
|
86
|
+
const evidence = previous ?? inherited;
|
|
83
87
|
const scanned = scanCompactionSources(messages, scopeId, resultSourceOverrides, sidecar);
|
|
84
|
-
const covered = new Map(
|
|
88
|
+
const covered = new Map(evidence?.sourceDigests.map((source) => [source.sourceRef, source]) ??
|
|
85
89
|
[]);
|
|
86
90
|
const newSources = withSuperCompactionFailure(failureOwner, () => scanned
|
|
87
91
|
.map(({ source }) => source)
|
|
@@ -101,7 +105,7 @@ export function createModelStepCompactionController(request, options) {
|
|
|
101
105
|
if (!hasNewCompactionSources) {
|
|
102
106
|
return Object.freeze({
|
|
103
107
|
kind: "unavailable",
|
|
104
|
-
reason:
|
|
108
|
+
reason: evidence ? "no_new_sources" : "no_eligible_sources",
|
|
105
109
|
});
|
|
106
110
|
}
|
|
107
111
|
const candidate = await generateSemanticCompactionCandidateBatched({
|
|
@@ -113,13 +117,16 @@ export function createModelStepCompactionController(request, options) {
|
|
|
113
117
|
boundSteeringVersion: context?.boundSteeringVersion,
|
|
114
118
|
consumer: options.consumer,
|
|
115
119
|
...(previous ? { previous } : {}),
|
|
120
|
+
...(!previous && inherited
|
|
121
|
+
? { inheritedSourceDigests: inherited.sourceDigests }
|
|
122
|
+
: {}),
|
|
116
123
|
sources: newSources,
|
|
117
124
|
...(sidecar || failureOwner
|
|
118
125
|
? { registrationMode: "atomic" }
|
|
119
126
|
: {}),
|
|
120
127
|
...(failureOwner ? { failureOwner } : {}),
|
|
121
128
|
});
|
|
122
|
-
const preparedMessages = withSuperCompactionFailure(failureOwner, () => reconcileEvidence(projectCheckpointMessages(messages, scopeId, candidate, resultSourceOverrides, failureOwner !== undefined), candidate));
|
|
129
|
+
const preparedMessages = withSuperCompactionFailure(failureOwner, () => reconcileEvidence(projectCheckpointMessages(messages, scopeId, candidate, resultSourceOverrides, failureOwner !== undefined, undefined, { replacesScopeId: inherited?.scopeId }), candidate));
|
|
123
130
|
return Object.freeze({
|
|
124
131
|
kind: "prepared",
|
|
125
132
|
preparation: Object.freeze({
|
|
@@ -140,14 +147,18 @@ export function createModelStepCompactionController(request, options) {
|
|
|
140
147
|
verifiedProjection.clear();
|
|
141
148
|
const { failureOwner, overrides: resultSourceOverrides } = sourceProjection(messages);
|
|
142
149
|
const previous = withSuperCompactionFailure(failureOwner, () => readPrevious(messages));
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
150
|
+
const evidence = previous ?? inherited;
|
|
151
|
+
projectedCheckpoint = evidence;
|
|
152
|
+
return withSuperCompactionFailure(failureOwner, () => reconcileEvidence(evidence
|
|
153
|
+
? projectCheckpointMessages(messages, scopeId, evidence, resultSourceOverrides, failureOwner !== undefined, verifiedProjection.record, {
|
|
154
|
+
includeContinuation: previous !== undefined,
|
|
155
|
+
replacesScopeId: inherited?.scopeId,
|
|
156
|
+
})
|
|
157
|
+
: [...messages], evidence));
|
|
147
158
|
},
|
|
148
159
|
hasExhaustedVerifiedCompactionSources(messages) {
|
|
149
160
|
const ownProjection = projectedCheckpoint !== undefined &&
|
|
150
|
-
store.get(scopeId) === projectedCheckpoint &&
|
|
161
|
+
store.get(projectedCheckpoint.scopeId) === projectedCheckpoint &&
|
|
151
162
|
verifiedProjection.contains(messages);
|
|
152
163
|
if (!ownProjection && !options.hasVerifiedCompactedEvidence?.(messages))
|
|
153
164
|
return false;
|
|
@@ -159,305 +170,3 @@ export function createModelStepCompactionController(request, options) {
|
|
|
159
170
|
},
|
|
160
171
|
});
|
|
161
172
|
}
|
|
162
|
-
function projectCheckpointMessages(messages, scopeId, checkpoint, resultSourceOverrides, superOwned = false, recordVerifiedProjection) {
|
|
163
|
-
const scanned = scanCompactionSources(messages, scopeId, resultSourceOverrides);
|
|
164
|
-
const covered = new Map(checkpoint.sourceDigests.map((source) => [source.sourceRef, source]));
|
|
165
|
-
const removable = new Set();
|
|
166
|
-
let insertionIndex = messages.length;
|
|
167
|
-
const checkpointEmbedded = messages.some(isCheckpointCarrierMessage);
|
|
168
|
-
for (const { index, source } of scanned) {
|
|
169
|
-
const exact = covered.get(source.sourceRef);
|
|
170
|
-
if (exact?.sourceFingerprint === source.sourceFingerprint) {
|
|
171
|
-
if (!isCheckpointCarrierMessage(messages[index])) {
|
|
172
|
-
removable.add(index);
|
|
173
|
-
insertionIndex = Math.min(insertionIndex, index);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
messages.forEach((message, index) => {
|
|
178
|
-
if (isCheckpointMessage(message, scopeId)) {
|
|
179
|
-
removable.add(index);
|
|
180
|
-
insertionIndex = Math.min(insertionIndex, index);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
const checkpointMessage = buildCheckpointMessage(checkpoint);
|
|
184
|
-
if (checkpoint.sourceDigests.length > 0 && !checkpointEmbedded)
|
|
185
|
-
recordVerifiedProjection?.(checkpointMessage);
|
|
186
|
-
const projected = [];
|
|
187
|
-
let inserted = false;
|
|
188
|
-
messages.forEach((message, index) => {
|
|
189
|
-
const requestToolResults = projectRequestToolResultsCheckpointMessage(message, checkpoint, resultSourceOverrides);
|
|
190
|
-
const payloadContext = projectPayloadContextCheckpointMessage(message, checkpoint, resultSourceOverrides, superOwned);
|
|
191
|
-
if (!checkpointEmbedded && !inserted && index === insertionIndex) {
|
|
192
|
-
projected.push(checkpointMessage);
|
|
193
|
-
inserted = true;
|
|
194
|
-
}
|
|
195
|
-
if (!removable.has(index)) {
|
|
196
|
-
const carrier = requestToolResults ?? payloadContext;
|
|
197
|
-
if (checkpoint.sourceDigests.length > 0 && carrier)
|
|
198
|
-
recordVerifiedProjection?.(carrier);
|
|
199
|
-
projected.push(requestToolResults ?? payloadContext ?? message);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
if (!checkpointEmbedded && !inserted)
|
|
203
|
-
projected.push(checkpointMessage);
|
|
204
|
-
return projected;
|
|
205
|
-
}
|
|
206
|
-
function scanCompactionSources(messages, scopeId, resultSourceOverrides, sidecar) {
|
|
207
|
-
const sources = [];
|
|
208
|
-
messages.forEach((message, index) => {
|
|
209
|
-
if (isCheckpointMessage(message, scopeId) ||
|
|
210
|
-
readOperationSupervisionEvidenceBinding(message))
|
|
211
|
-
return;
|
|
212
|
-
for (const source of resolveMessageSources(message, resultSourceOverrides, sidecar)) {
|
|
213
|
-
sources.push(Object.freeze({ index, source }));
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
return Object.freeze(sources);
|
|
217
|
-
}
|
|
218
|
-
function resolveMessageSources(message, resultSourceOverrides, sidecar) {
|
|
219
|
-
if (message.role === "tool") {
|
|
220
|
-
return Object.freeze([
|
|
221
|
-
resultSourceOverrides.get(`tool-result:${message.toolCallId}`) ??
|
|
222
|
-
createMessageSource(`tool-result:${message.toolCallId}`, message),
|
|
223
|
-
]);
|
|
224
|
-
}
|
|
225
|
-
if (message.role === "assistant" && message.toolCalls) {
|
|
226
|
-
return Object.freeze([
|
|
227
|
-
createMessageSource(`tool-action:${createSemanticCompactionSha256Fingerprint(message.toolCalls.map(({ callId }) => callId).join("\n")).slice("sha256:".length)}`, message),
|
|
228
|
-
]);
|
|
229
|
-
}
|
|
230
|
-
if (!message.content)
|
|
231
|
-
return Object.freeze([]);
|
|
232
|
-
const payloadContext = parsePayloadContextRecord(message.content);
|
|
233
|
-
if (payloadContext) {
|
|
234
|
-
return Object.freeze(readRecordArray(payloadContext.settledCapabilityResults).flatMap((result) => {
|
|
235
|
-
const source = resolveScannableResultSource(result, "payload-result", resultSourceOverrides, sidecar);
|
|
236
|
-
return source ? [source] : [];
|
|
237
|
-
}));
|
|
238
|
-
}
|
|
239
|
-
const record = parseJsonRecord(message.content);
|
|
240
|
-
if (record?.kind === CORE_SKILL_READ_MESSAGE_KIND) {
|
|
241
|
-
const read = record.read;
|
|
242
|
-
const document = record.document;
|
|
243
|
-
const readId = readNonEmptyString(read?.readId);
|
|
244
|
-
return readId ? Object.freeze([createMessageSource(coreSkillReadSourceRef(readId, readNonEmptyString(document?.skillId)), message)]) : Object.freeze([]);
|
|
245
|
-
}
|
|
246
|
-
if (record?.kind === OPERATION_SUPERVISION_EVIDENCE_MESSAGE_KIND) {
|
|
247
|
-
return Object.freeze([
|
|
248
|
-
createMessageSource(hashedMessageSourceRef("operation-supervision-evidence", message.content), message),
|
|
249
|
-
]);
|
|
250
|
-
}
|
|
251
|
-
if (record?.kind === "runtime_request_tool_results_v1") {
|
|
252
|
-
return Object.freeze(readRecordArray(record.results).flatMap((result) => {
|
|
253
|
-
const source = resolveScannableResultSource(result, undefined, resultSourceOverrides, sidecar);
|
|
254
|
-
return source ? [source] : [];
|
|
255
|
-
}));
|
|
256
|
-
}
|
|
257
|
-
if (record?.kind === "runtime_child_result") {
|
|
258
|
-
const resultRef = readNonEmptyString(record.resultRef);
|
|
259
|
-
return resultRef
|
|
260
|
-
? Object.freeze([
|
|
261
|
-
createMessageSource(`child-result:${resultRef}`, message),
|
|
262
|
-
])
|
|
263
|
-
: Object.freeze([]);
|
|
264
|
-
}
|
|
265
|
-
if (record?.kind === "runtime_execution_agent_auditor_evidence_v1") {
|
|
266
|
-
return Object.freeze([
|
|
267
|
-
createMessageSource(hashedMessageSourceRef("role-evidence", message.content), message),
|
|
268
|
-
]);
|
|
269
|
-
}
|
|
270
|
-
const header = parseJsonRecord(message.content.split("\n", 1)[0] ?? "");
|
|
271
|
-
if (header?.kind === "runtime_reviewer_evidence_v1") {
|
|
272
|
-
const evidenceRef = readNonEmptyString(header.evidenceRef);
|
|
273
|
-
return Object.freeze([
|
|
274
|
-
createMessageSource(evidenceRef
|
|
275
|
-
? `reviewer-evidence:${evidenceRef}`
|
|
276
|
-
: hashedMessageSourceRef("reviewer-evidence", message.content), message),
|
|
277
|
-
]);
|
|
278
|
-
}
|
|
279
|
-
return Object.freeze([]);
|
|
280
|
-
}
|
|
281
|
-
function createMessageSource(sourceRef, message) {
|
|
282
|
-
const content = JSON.stringify(message);
|
|
283
|
-
return Object.freeze({
|
|
284
|
-
sourceRef,
|
|
285
|
-
sourceFingerprint: createSemanticCompactionSha256Fingerprint(content),
|
|
286
|
-
content,
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
function hashedMessageSourceRef(prefix, content) {
|
|
290
|
-
return `${prefix}:${createSemanticCompactionSha256Fingerprint(content).slice("sha256:".length)}`;
|
|
291
|
-
}
|
|
292
|
-
function isCheckpointMessage(message, scopeId) {
|
|
293
|
-
if (!message.content)
|
|
294
|
-
return false;
|
|
295
|
-
const record = parseJsonRecord(message.content);
|
|
296
|
-
return (record?.kind === "runtime_semantic_compaction_checkpoint_v2" &&
|
|
297
|
-
record.scopeId === scopeId);
|
|
298
|
-
}
|
|
299
|
-
function isCheckpointCarrierMessage(message) {
|
|
300
|
-
return (parseJsonRecord(message.content)?.kind ===
|
|
301
|
-
"runtime_request_tool_results_v1" ||
|
|
302
|
-
parsePayloadContextRecord(message.content) !== undefined);
|
|
303
|
-
}
|
|
304
|
-
function projectPayloadContextCheckpointMessage(message, checkpoint, resultSourceOverrides, superOwned) {
|
|
305
|
-
const context = parsePayloadContextRecord(message.content);
|
|
306
|
-
if (!context)
|
|
307
|
-
return undefined;
|
|
308
|
-
if (message.role !== "user" || message.attachments?.length) {
|
|
309
|
-
throw new Error("context_compaction_payload_context_invalid");
|
|
310
|
-
}
|
|
311
|
-
const previousProjection = parseRecord(context.semanticCheckpoint);
|
|
312
|
-
const previousScopeId = readNonEmptyString(previousProjection?.scopeId);
|
|
313
|
-
if (previousScopeId && previousScopeId !== checkpoint.scopeId) {
|
|
314
|
-
throw new Error("context_compaction_checkpoint_scope_conflict");
|
|
315
|
-
}
|
|
316
|
-
const covered = new Map(checkpoint.sourceDigests.map((source) => [source.sourceRef, source]));
|
|
317
|
-
const coveredResults = new Map();
|
|
318
|
-
for (const receipt of readRecordArray(previousProjection?.coveredResults)) {
|
|
319
|
-
const executionId = readNonEmptyString(receipt.executionId);
|
|
320
|
-
const fingerprint = readNonEmptyString(receipt.sourceFingerprint);
|
|
321
|
-
const source = executionId
|
|
322
|
-
? resolveResultSource(receipt, "payload-result", resultSourceOverrides)
|
|
323
|
-
: undefined;
|
|
324
|
-
const exact = source ? covered.get(source.sourceRef) : undefined;
|
|
325
|
-
if (!executionId ||
|
|
326
|
-
!fingerprint ||
|
|
327
|
-
exact?.sourceFingerprint !== fingerprint) {
|
|
328
|
-
throw new Error("context_compaction_checkpoint_receipt_invalid");
|
|
329
|
-
}
|
|
330
|
-
coveredResults.set(executionId, receipt);
|
|
331
|
-
}
|
|
332
|
-
const remainingResults = [];
|
|
333
|
-
for (const result of readRecordArray(context.settledCapabilityResults)) {
|
|
334
|
-
const executionId = readNonEmptyString(result.executionId);
|
|
335
|
-
const source = resolveResultSource(result, "payload-result", resultSourceOverrides);
|
|
336
|
-
const exact = source ? covered.get(source.sourceRef) : undefined;
|
|
337
|
-
if (!executionId || !source || !exact) {
|
|
338
|
-
remainingResults.push(result);
|
|
339
|
-
continue;
|
|
340
|
-
}
|
|
341
|
-
if (source.sourceFingerprint !== exact.sourceFingerprint) {
|
|
342
|
-
if (superOwned) {
|
|
343
|
-
throw new CompactionSourceInvariantError("context_compaction_source_identity_conflict", source.sourceRef);
|
|
344
|
-
}
|
|
345
|
-
throw new Error("context_compaction_source_identity_conflict");
|
|
346
|
-
}
|
|
347
|
-
const { referenceData: _referenceData, adapterResult: _adapterResult, ...receipt } = result;
|
|
348
|
-
coveredResults.set(executionId, Object.freeze({
|
|
349
|
-
...receipt,
|
|
350
|
-
sourceFingerprint: exact.sourceFingerprint,
|
|
351
|
-
}));
|
|
352
|
-
}
|
|
353
|
-
return Object.freeze({
|
|
354
|
-
role: "user",
|
|
355
|
-
content: `${PAYLOAD_CONTEXT_PREFIX}${JSON.stringify({
|
|
356
|
-
...context,
|
|
357
|
-
semanticCheckpoint: {
|
|
358
|
-
kind: checkpoint.kind,
|
|
359
|
-
evidenceScope: SEMANTIC_COMPACTION_EVIDENCE_SCOPE,
|
|
360
|
-
scopeId: checkpoint.scopeId,
|
|
361
|
-
roleId: checkpoint.roleId,
|
|
362
|
-
callId: checkpoint.callId,
|
|
363
|
-
checkpointSourceRevision: checkpoint.sourceRevision,
|
|
364
|
-
presenceEffect: "passive_role_continuation_not_user_intent_or_completion",
|
|
365
|
-
coveredSources: checkpoint.sourceDigests.map(({ sourceRef, sourceFingerprint, digest }) => ({
|
|
366
|
-
sourceRef,
|
|
367
|
-
sourceFingerprint,
|
|
368
|
-
digest,
|
|
369
|
-
})),
|
|
370
|
-
continuation: checkpoint.continuation,
|
|
371
|
-
coveredResults: [...coveredResults.values()],
|
|
372
|
-
},
|
|
373
|
-
settledCapabilityResults: remainingResults,
|
|
374
|
-
})}`,
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
function parseJsonRecord(value) {
|
|
378
|
-
try {
|
|
379
|
-
const decoded = JSON.parse(value);
|
|
380
|
-
return decoded && typeof decoded === "object" && !Array.isArray(decoded)
|
|
381
|
-
? decoded
|
|
382
|
-
: undefined;
|
|
383
|
-
}
|
|
384
|
-
catch {
|
|
385
|
-
return undefined;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
function createResultSourceOverrideMap(sources) {
|
|
389
|
-
const overrides = new Map();
|
|
390
|
-
for (const source of sources) {
|
|
391
|
-
if (!source.sourceRef.trim() ||
|
|
392
|
-
!source.content ||
|
|
393
|
-
createSemanticCompactionSha256Fingerprint(source.content) !==
|
|
394
|
-
source.sourceFingerprint ||
|
|
395
|
-
overrides.has(source.sourceRef)) {
|
|
396
|
-
throw new Error("context_compaction_source_override_invalid");
|
|
397
|
-
}
|
|
398
|
-
overrides.set(source.sourceRef, source);
|
|
399
|
-
}
|
|
400
|
-
return overrides;
|
|
401
|
-
}
|
|
402
|
-
function resolveResultSource(result, sourceRefPrefix, overrides) {
|
|
403
|
-
const executionId = readNonEmptyString(result.executionId);
|
|
404
|
-
if (!executionId)
|
|
405
|
-
return undefined;
|
|
406
|
-
const sourceRef = sourceRefPrefix
|
|
407
|
-
? `${sourceRefPrefix}:${executionId}`
|
|
408
|
-
: executionId;
|
|
409
|
-
const override = overrides.get(executionId) ?? overrides.get(sourceRef);
|
|
410
|
-
if (override)
|
|
411
|
-
return override;
|
|
412
|
-
const content = JSON.stringify(result);
|
|
413
|
-
return Object.freeze({
|
|
414
|
-
sourceRef,
|
|
415
|
-
sourceFingerprint: createSemanticCompactionSha256Fingerprint(content),
|
|
416
|
-
content,
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
/**
|
|
420
|
-
* A summary-only receipt is a passive index entry, not a second representation
|
|
421
|
-
* of the exact evidence body. Only exact evidence (or a canonical override)
|
|
422
|
-
* can become a semantic-compaction source.
|
|
423
|
-
*/
|
|
424
|
-
function resolveScannableResultSource(result, sourceRefPrefix, overrides, sidecar) {
|
|
425
|
-
const executionId = readNonEmptyString(result.executionId);
|
|
426
|
-
if (!executionId)
|
|
427
|
-
return undefined;
|
|
428
|
-
if (sidecar && !sidecar.eligibleExecutionIds.includes(executionId))
|
|
429
|
-
return undefined;
|
|
430
|
-
const sourceRef = sourceRefPrefix
|
|
431
|
-
? `${sourceRefPrefix}:${executionId}`
|
|
432
|
-
: executionId;
|
|
433
|
-
if (!overrides.has(executionId) &&
|
|
434
|
-
!overrides.has(sourceRef) &&
|
|
435
|
-
!readNonEmptyString(result.referenceData) &&
|
|
436
|
-
!parseRecord(result.adapterResult)) {
|
|
437
|
-
return undefined;
|
|
438
|
-
}
|
|
439
|
-
return resolveResultSource(result, sourceRefPrefix, overrides);
|
|
440
|
-
}
|
|
441
|
-
function parseRecord(value) {
|
|
442
|
-
return value && typeof value === "object" && !Array.isArray(value)
|
|
443
|
-
? value
|
|
444
|
-
: undefined;
|
|
445
|
-
}
|
|
446
|
-
function parsePayloadContextRecord(value) {
|
|
447
|
-
return value.startsWith(PAYLOAD_CONTEXT_PREFIX)
|
|
448
|
-
? parseJsonRecord(value.slice(PAYLOAD_CONTEXT_PREFIX.length))
|
|
449
|
-
: undefined;
|
|
450
|
-
}
|
|
451
|
-
function readRecordArray(value) {
|
|
452
|
-
return Array.isArray(value)
|
|
453
|
-
? value.flatMap((entry) => {
|
|
454
|
-
const record = parseRecord(entry);
|
|
455
|
-
return record ? [record] : [];
|
|
456
|
-
})
|
|
457
|
-
: [];
|
|
458
|
-
}
|
|
459
|
-
function readNonEmptyString(value) {
|
|
460
|
-
return typeof value === "string" && value.trim().length > 0
|
|
461
|
-
? value.trim()
|
|
462
|
-
: undefined;
|
|
463
|
-
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { projectCompactedCapabilityResultReceipt } from "./compacted-capability-result-receipt.js";
|
|
1
2
|
import { createCapabilityResultCompactionSource } from "./capability-result-compaction-source.js";
|
|
2
3
|
import { matchesCompactedExecutionResult } from "./execution-compacted-evidence.js";
|
|
3
4
|
import { traceDebug } from "../observability/debug-logger.js";
|
|
@@ -28,6 +29,11 @@ export function resolveCompactedOperationSupervisionEvidence(executionId, eviden
|
|
|
28
29
|
return undefined;
|
|
29
30
|
if (!matchesRegisteredSupervisionResult(source, executionId, evidence))
|
|
30
31
|
return undefined;
|
|
32
|
+
// Only verified output aliases can be replaced; independent summary facts stay.
|
|
33
|
+
const compactedReceipt = projectCompactedCapabilityResultReceipt({
|
|
34
|
+
...receipt,
|
|
35
|
+
adapterResult: evidence.adapterResult,
|
|
36
|
+
});
|
|
31
37
|
traceDebug("runtime.context.compaction", "supervision.evidence_reused", {
|
|
32
38
|
requestId: context.requestId,
|
|
33
39
|
modelStep: context.consumer,
|
|
@@ -51,7 +57,7 @@ export function resolveCompactedOperationSupervisionEvidence(executionId, eviden
|
|
|
51
57
|
declaredEffect: receipt.declaredEffect,
|
|
52
58
|
outcome: receipt.outcome,
|
|
53
59
|
observedEffect: receipt.observedEffect,
|
|
54
|
-
summary:
|
|
60
|
+
summary: compactedReceipt.summary,
|
|
55
61
|
}),
|
|
56
62
|
});
|
|
57
63
|
}
|
|
@@ -28,3 +28,5 @@ export declare function projectRequestContext(params: {
|
|
|
28
28
|
}): RequestContextProjection;
|
|
29
29
|
/** Returns the latest complete visible user-to-assistant turn, if one exists. */
|
|
30
30
|
export declare function projectLatestCompleteConversationTurn(historyMessages: readonly RequestHistoryMessage[]): readonly [RequestHistoryMessage, RequestHistoryMessage] | undefined;
|
|
31
|
+
/** Returns one latest settled turn: a complete pair or a trusted assistant initiative. */
|
|
32
|
+
export declare function projectLatestSettledConversationTurn(historyMessages: readonly RequestHistoryMessage[]): readonly RequestHistoryMessage[] | undefined;
|
|
@@ -188,6 +188,22 @@ export function projectLatestCompleteConversationTurn(historyMessages) {
|
|
|
188
188
|
}
|
|
189
189
|
return undefined;
|
|
190
190
|
}
|
|
191
|
+
/** Returns one latest settled turn: a complete pair or a trusted assistant initiative. */
|
|
192
|
+
export function projectLatestSettledConversationTurn(historyMessages) {
|
|
193
|
+
const turns = collectConversationTurns(historyMessages);
|
|
194
|
+
for (let index = turns.length - 1; index >= 0; index -= 1) {
|
|
195
|
+
const turn = turns[index];
|
|
196
|
+
if (!isSettledConversationTurn(turn))
|
|
197
|
+
continue;
|
|
198
|
+
return Object.freeze([...turn.source]);
|
|
199
|
+
}
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
function isSettledConversationTurn(turn) {
|
|
203
|
+
// The canonical collector emits only a pending user, a completed pair, or
|
|
204
|
+
// a singleton trusted assistant initiative; only the pending user is unsettled.
|
|
205
|
+
return turn.source.at(-1)?.role === "assistant";
|
|
206
|
+
}
|
|
191
207
|
function collectConversationTurns(historyMessages) {
|
|
192
208
|
const visibleMessages = historyMessages.filter((message) => message.grounding !== "tool_observation" &&
|
|
193
209
|
message.content.trim().length > 0);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CheckpointProjectionOptions } from "./semantic-compaction/checkpoint-message.js";
|
|
1
2
|
import type { ChatMessage } from "../../model-gateway/types.js";
|
|
2
3
|
import { type SemanticCompactionCheckpoint, type SemanticCompactionSource } from "./semantic-compaction/contracts.js";
|
|
3
|
-
export declare function projectRequestToolResultsCheckpointMessage(message: ChatMessage, checkpoint: SemanticCompactionCheckpoint, resultSourceOverrides: ReadonlyMap<string, SemanticCompactionSource
|
|
4
|
+
export declare function projectRequestToolResultsCheckpointMessage(message: ChatMessage, checkpoint: SemanticCompactionCheckpoint, resultSourceOverrides: ReadonlyMap<string, SemanticCompactionSource>, options?: CheckpointProjectionOptions): ChatMessage | undefined;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { projectCompactedRegisteredOutputSummary } from "./compacted-capability-result-receipt.js";
|
|
1
2
|
import { CompactionSourceInvariantError } from "./compaction-source-invariant.js";
|
|
2
3
|
import { readSuperWorkerCompactionSidecar } from "./super-worker-compaction-sidecar.js";
|
|
3
4
|
import { bindRequestToolResultsMessage, readBoundRequestToolResultsView, } from "./request-tool-results-message-binding.js";
|
|
4
5
|
import { SEMANTIC_COMPACTION_EVIDENCE_SCOPE } from "./semantic-compaction/evidence-scope.js";
|
|
5
6
|
import { createSemanticCompactionSha256Fingerprint, } from "./semantic-compaction/contracts.js";
|
|
6
|
-
export function projectRequestToolResultsCheckpointMessage(message, checkpoint, resultSourceOverrides) {
|
|
7
|
+
export function projectRequestToolResultsCheckpointMessage(message, checkpoint, resultSourceOverrides, options = {}) {
|
|
7
8
|
const record = parseJsonRecord(message.content);
|
|
8
9
|
if (record?.kind !== "runtime_request_tool_results_v1")
|
|
9
10
|
return undefined;
|
|
@@ -12,7 +13,9 @@ export function projectRequestToolResultsCheckpointMessage(message, checkpoint,
|
|
|
12
13
|
}
|
|
13
14
|
const previousProjection = parseRecord(record.semanticCheckpoint);
|
|
14
15
|
const previousScopeId = readNonEmptyString(previousProjection?.scopeId);
|
|
15
|
-
if (previousScopeId &&
|
|
16
|
+
if (previousScopeId &&
|
|
17
|
+
previousScopeId !== checkpoint.scopeId &&
|
|
18
|
+
previousScopeId !== options.replacesScopeId) {
|
|
16
19
|
throw new Error("context_compaction_checkpoint_scope_conflict");
|
|
17
20
|
}
|
|
18
21
|
const view = readBoundRequestToolResultsView(message);
|
|
@@ -35,7 +38,7 @@ export function projectRequestToolResultsCheckpointMessage(message, checkpoint,
|
|
|
35
38
|
throw new CompactionSourceInvariantError("context_compaction_checkpoint_receipt_invalid", executionId);
|
|
36
39
|
throw new Error("context_compaction_checkpoint_receipt_invalid");
|
|
37
40
|
}
|
|
38
|
-
coveredResults.set(executionId, receipt);
|
|
41
|
+
coveredResults.set(executionId, projectCoveredResultSummary(receipt, source, fingerprint));
|
|
39
42
|
}
|
|
40
43
|
const remainingResults = [];
|
|
41
44
|
for (const result of readRecordArray(record.results)) {
|
|
@@ -53,7 +56,7 @@ export function projectRequestToolResultsCheckpointMessage(message, checkpoint,
|
|
|
53
56
|
}
|
|
54
57
|
const { referenceData: _referenceData, adapterResult: _adapterResult, ...receipt } = result;
|
|
55
58
|
coveredResults.set(executionId, Object.freeze({
|
|
56
|
-
...receipt,
|
|
59
|
+
...projectCoveredResultSummary(receipt, source, exact.sourceFingerprint),
|
|
57
60
|
sourceFingerprint: exact.sourceFingerprint,
|
|
58
61
|
}));
|
|
59
62
|
}
|
|
@@ -68,13 +71,20 @@ export function projectRequestToolResultsCheckpointMessage(message, checkpoint,
|
|
|
68
71
|
roleId: checkpoint.roleId,
|
|
69
72
|
callId: checkpoint.callId,
|
|
70
73
|
checkpointSourceRevision: checkpoint.sourceRevision,
|
|
71
|
-
|
|
74
|
+
...(options.includeContinuation === false
|
|
75
|
+
? { authority: "passive_source_evidence" }
|
|
76
|
+
: {}),
|
|
77
|
+
presenceEffect: options.includeContinuation === false
|
|
78
|
+
? "passive_source_evidence_not_current_intent_or_completion"
|
|
79
|
+
: "passive_role_continuation_not_user_intent_or_completion",
|
|
72
80
|
coveredSources: checkpoint.sourceDigests.map(({ sourceRef, sourceFingerprint, digest }) => ({
|
|
73
81
|
sourceRef,
|
|
74
82
|
sourceFingerprint,
|
|
75
83
|
digest,
|
|
76
84
|
})),
|
|
77
|
-
|
|
85
|
+
...(options.includeContinuation === false
|
|
86
|
+
? {}
|
|
87
|
+
: { continuation: checkpoint.continuation }),
|
|
78
88
|
coveredResults: [...coveredResults.values()],
|
|
79
89
|
},
|
|
80
90
|
results: remainingResults,
|
|
@@ -124,3 +134,22 @@ function resolveResultSource(result, _prefix, overrides) {
|
|
|
124
134
|
content,
|
|
125
135
|
};
|
|
126
136
|
}
|
|
137
|
+
/** Read aliases only from exact source bytes, including previously covered receipts. */
|
|
138
|
+
function projectCoveredResultSummary(receipt, source, fingerprint) {
|
|
139
|
+
if (!source || source.sourceFingerprint !== fingerprint)
|
|
140
|
+
return receipt;
|
|
141
|
+
const canonical = parseJsonRecord(source.content);
|
|
142
|
+
if (!canonical || canonical.executionId !== receipt.executionId)
|
|
143
|
+
return receipt;
|
|
144
|
+
if (typeof receipt.summary !== "string")
|
|
145
|
+
return receipt;
|
|
146
|
+
const adapter = parseRecord(canonical.adapterResult);
|
|
147
|
+
const result = adapter?.kind === "registered_tool_execution_result_v1"
|
|
148
|
+
? parseRecord(adapter.result)
|
|
149
|
+
: undefined;
|
|
150
|
+
const output = typeof result?.output === "string" ? result.output : undefined;
|
|
151
|
+
return {
|
|
152
|
+
...receipt,
|
|
153
|
+
summary: projectCompactedRegisteredOutputSummary(receipt.summary, output),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { projectCompactedCapabilityResultReceipt } from "./compacted-capability-result-receipt.js";
|
|
1
2
|
import { projectCurrentRequestToolResults } from "./request-tool-results-supersession.js";
|
|
2
3
|
export { projectCurrentRequestToolResults } from "./request-tool-results-supersession.js";
|
|
3
4
|
import { bindSuperWorkerCompactionSources } from "./super-worker-compaction-sidecar.js";
|
|
@@ -92,7 +93,8 @@ export function buildCompactedRequestToolResultsMessage(view, checkpoint, integr
|
|
|
92
93
|
const coveredResults = modelVisibleResults
|
|
93
94
|
.filter(({ executionId }) => coveredExecutionIds.has(executionId))
|
|
94
95
|
.map((result) => {
|
|
95
|
-
const { referenceData: _referenceData,
|
|
96
|
+
const { referenceData: _referenceData, ...sourceReceipt } = result;
|
|
97
|
+
const receipt = projectCompactedCapabilityResultReceipt(sourceReceipt);
|
|
96
98
|
return Object.freeze({
|
|
97
99
|
...receipt,
|
|
98
100
|
sourceFingerprint: digestByExecutionId.get(result.executionId)
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { ChatMessage } from "../../../model-gateway/types.js";
|
|
2
2
|
import type { SemanticCompactionCheckpoint } from "./contracts.js";
|
|
3
|
-
export
|
|
3
|
+
export type CheckpointProjectionOptions = Readonly<{
|
|
4
|
+
includeContinuation?: boolean;
|
|
5
|
+
replacesScopeId?: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function buildCheckpointMessage(checkpoint: SemanticCompactionCheckpoint, options?: CheckpointProjectionOptions): ChatMessage;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { SEMANTIC_COMPACTION_EVIDENCE_SCOPE } from "./evidence-scope.js";
|
|
2
|
-
export function buildCheckpointMessage(checkpoint) {
|
|
2
|
+
export function buildCheckpointMessage(checkpoint, options = {}) {
|
|
3
3
|
return Object.freeze({
|
|
4
4
|
role: "user",
|
|
5
5
|
content: JSON.stringify({
|
|
6
6
|
kind: checkpoint.kind,
|
|
7
7
|
evidenceScope: SEMANTIC_COMPACTION_EVIDENCE_SCOPE,
|
|
8
|
-
authority:
|
|
9
|
-
|
|
8
|
+
authority: options.includeContinuation === false
|
|
9
|
+
? "passive_source_evidence"
|
|
10
|
+
: "runtime_role_continuation",
|
|
11
|
+
presenceEffect: options.includeContinuation === false
|
|
12
|
+
? "passive_source_evidence_not_current_intent_or_completion"
|
|
13
|
+
: "passive_continuity_not_user_intent_routing_or_completion",
|
|
10
14
|
scopeId: checkpoint.scopeId,
|
|
11
15
|
roleId: checkpoint.roleId,
|
|
12
16
|
callId: checkpoint.callId,
|
|
@@ -16,7 +20,9 @@ export function buildCheckpointMessage(checkpoint) {
|
|
|
16
20
|
sourceFingerprint,
|
|
17
21
|
digest,
|
|
18
22
|
})),
|
|
19
|
-
|
|
23
|
+
...(options.includeContinuation === false
|
|
24
|
+
? {}
|
|
25
|
+
: { continuation: checkpoint.continuation }),
|
|
20
26
|
}),
|
|
21
27
|
});
|
|
22
28
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ModelStep } from "../../../shared/model-steps.js";
|
|
2
|
+
export declare const EXECUTION_AGENT_COMPACTION_REQUIREMENTS: string;
|
|
3
|
+
/** Extend only checkpoints bound exclusively to Execution Agent consumers. */
|
|
4
|
+
export declare function resolveSemanticCompactionInstructions(allowedConsumers: readonly ModelStep[]): string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SEMANTIC_COMPACTION_INSTRUCTIONS } from "./prompt.js";
|
|
2
|
+
export const EXECUTION_AGENT_COMPACTION_REQUIREMENTS = [
|
|
3
|
+
"Compress the record; do not advance the task. Preserve source-established facts, decisions, failures, and progress. Update pending work only from supplied outcomes. Do not review correctness, perform unfinished analysis, infer new defects or requirements, or propose actions. Compression omissions are information limits, not new work. The execution agent alone decides what happens next.",
|
|
4
|
+
"Distinguish successful retrieval or a completed source change from completion of the analysis, implementation or transformation that depends on it. Preserve supplied results and exact task-relevant identifiers, interfaces and relationships needed for that unfinished work, including names, keys, selectors, signatures and their associations. A read/write receipt or description of what a source contains cannot replace those concrete facts.",
|
|
5
|
+
"If task-relevant detail still cannot fit after removing repetition and using compact records, identify exactly which task-relevant facts, identifiers or relationships were omitted and their sourceRef or supplied location in findings. Distinguish detail omitted by compaction from detail absent in the original source. A sourceRef names provenance; it does not mean the original content remains visible to the owner. Do not claim that a summary preserves full contents or completes unfinished work.",
|
|
6
|
+
"",
|
|
7
|
+
"Identifier preservation is a hard requirement of this compaction. Never omit or rename any explicit identifier supplied in a source or a previous digest.",
|
|
8
|
+
"Identifiers include paths and resource names, declared symbols and function names, object fields and schema keys, DOM IDs, CSS classes and selectors, data attributes, storage keys, and exact enum or sentinel values that participate in an interface.",
|
|
9
|
+
"Deduplicate repeated occurrences into concise rows or grouped dictionaries: source/location | exact identifiers | role or binding | associated value or condition. Preserve exact spelling and keep each identifier bound to its own source and meaning. A list of disconnected names is insufficient.",
|
|
10
|
+
"Preserve the supplied relationships between identifiers, including keys used to join or select records, DOM-to-code bindings, selector-to-markup associations, and literal values that cross file or interface boundaries. Do not invent a relationship that the source does not establish.",
|
|
11
|
+
"Remove narrative, repeated receipts, examples and duplicated explanations before shortening identifier records. Carry these records forward on subsequent compactions; an earlier compact representation is not permission to drop its identifiers or relationships.",
|
|
12
|
+
"Use the unchanged response schema and shared checkpoint token budget. Missing or renamed identifiers, lost bindings, or an over-budget checkpoint are failures of this preservation requirement; do not claim complete preservation when any of these occurs.",
|
|
13
|
+
"",
|
|
14
|
+
"",
|
|
15
|
+
"The purpose of this checkpoint is to enable the owner to continue the current request efficiently, not to produce the shortest possible account. Omitting a fact needed for the unfinished work can force another read and another compaction, increasing total runtime and token use.",
|
|
16
|
+
"Preserve a compact working representation of the supplied implementation and data contracts. Alongside exact identifiers, retain top-level data shape, field meanings and types, required or empty values, normalization rules, function inputs and outputs, identifier-to-value bindings, and the relationships by which one part uses another. Names without these associations are not a usable substitute.",
|
|
17
|
+
"Use concise source-bound rows, maps or compact pseudocode to retain those contracts. Prefer precise interface and behavior facts over appearance descriptions, repeated receipts or narrative about what was inspected. Keep existing identifier-preservation requirements and the same shared token budget; repeated occurrences can share a compact representation without losing their source associations.",
|
|
18
|
+
"Before returning, check the facts needed to continue the current request against the supplied sources. Do not unnecessarily discard facts that would require recovering those same sources merely because of your summary. Distinguish truly unavailable information from information supplied here.",
|
|
19
|
+
"",
|
|
20
|
+
].join("\n");
|
|
21
|
+
/** Extend only checkpoints bound exclusively to Execution Agent consumers. */
|
|
22
|
+
export function resolveSemanticCompactionInstructions(allowedConsumers) {
|
|
23
|
+
if (!hasExclusiveExecutionAgentConsumers(allowedConsumers)) {
|
|
24
|
+
return SEMANTIC_COMPACTION_INSTRUCTIONS;
|
|
25
|
+
}
|
|
26
|
+
return [
|
|
27
|
+
SEMANTIC_COMPACTION_INSTRUCTIONS,
|
|
28
|
+
EXECUTION_AGENT_COMPACTION_REQUIREMENTS,
|
|
29
|
+
].join("\n");
|
|
30
|
+
}
|
|
31
|
+
function hasExclusiveExecutionAgentConsumers(allowedConsumers) {
|
|
32
|
+
if (allowedConsumers.length === 0)
|
|
33
|
+
return false;
|
|
34
|
+
return allowedConsumers.every(isExecutionAgentConsumer);
|
|
35
|
+
}
|
|
36
|
+
function isExecutionAgentConsumer(consumer) {
|
|
37
|
+
return consumer === "execution.decision" || consumer === "execution.response";
|
|
38
|
+
}
|