@lotagate/cli 0.1.23 → 0.1.25
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 +70 -3
- package/SECURITY.md +2 -0
- package/dist/application/agent/agent-history.d.ts +3 -0
- package/dist/application/agent/agent-history.js +5 -0
- package/dist/application/agent/agent-input-context.d.ts +12 -0
- package/dist/application/agent/agent-input-context.js +5 -0
- package/dist/application/agent/agent-limit.d.ts +3 -0
- package/dist/application/agent/agent-limit.js +1 -0
- package/dist/application/agent/agent-run-tracker.d.ts +30 -0
- package/dist/application/agent/agent-run-tracker.js +1 -0
- package/dist/application/agent/agent-runtime-context.d.ts +22 -0
- package/dist/application/agent/agent-runtime-context.js +1 -0
- package/dist/application/agent/agent-session-store.d.ts +19 -0
- package/dist/application/agent/agent-session-store.js +6 -0
- package/dist/application/agent/capability-profile.d.ts +55 -0
- package/dist/application/agent/capability-profile.js +1 -0
- package/dist/application/agent/cli-agent-execution-service.d.ts +110 -0
- package/dist/application/agent/cli-agent-execution-service.js +1 -0
- package/dist/application/agent/cli-agent-run-request.d.ts +12 -0
- package/dist/application/agent/cli-agent-run-request.js +0 -0
- package/dist/application/agent/context-compaction-persistence.d.ts +8 -0
- package/dist/application/agent/context-compaction-persistence.js +1 -0
- package/dist/application/agent/context-compaction.d.ts +21 -0
- package/dist/application/agent/context-compaction.js +7 -0
- package/dist/application/agent/interactive-agent-guidance.d.ts +5 -0
- package/dist/application/agent/interactive-agent-guidance.js +2 -0
- package/dist/application/agent/prompt-data-safety.d.ts +14 -0
- package/dist/application/agent/prompt-data-safety.js +4 -0
- package/dist/application/agent/scoped-tool-executor.d.ts +13 -0
- package/dist/application/agent/scoped-tool-executor.js +1 -0
- package/dist/application/agent/tool-catalog.d.ts +14 -0
- package/dist/application/agent/tool-catalog.js +1 -0
- package/dist/application/agent/tool-display.d.ts +7 -0
- package/dist/application/agent/tool-display.js +1 -0
- package/dist/application/agent/tool-hook-lifecycle.d.ts +19 -0
- package/dist/application/agent/tool-hook-lifecycle.js +1 -0
- package/dist/application/auth/authentication-service.d.ts +20 -0
- package/dist/application/auth/authentication-service.js +1 -0
- package/dist/application/chat/chat-service.d.ts +12 -0
- package/dist/application/chat/chat-service.js +1 -0
- package/dist/application/chat/pending-attachment-store.d.ts +12 -0
- package/dist/application/chat/pending-attachment-store.js +1 -0
- package/dist/application/commands/application-command-executor.d.ts +23 -0
- package/dist/application/commands/application-command-executor.js +3 -0
- package/dist/application/commands/cli-args.d.ts +6 -0
- package/dist/application/commands/cli-args.js +1 -0
- package/dist/application/commands/cli-command-services.d.ts +17 -0
- package/dist/application/commands/cli-command-services.js +33 -0
- package/dist/application/commands/command-cancellation.d.ts +6 -0
- package/dist/application/commands/command-cancellation.js +1 -0
- package/dist/application/commands/command-catalog.d.ts +6 -0
- package/dist/application/commands/command-catalog.js +1 -0
- package/dist/application/commands/command-contract.d.ts +60 -0
- package/dist/application/commands/command-contract.js +0 -0
- package/dist/application/commands/command-hints.d.ts +9 -0
- package/dist/application/commands/command-hints.js +1 -0
- package/dist/application/commands/command-output.d.ts +4 -0
- package/dist/application/commands/command-output.js +0 -0
- package/dist/application/commands/command-parser.d.ts +10 -0
- package/dist/application/commands/command-parser.js +1 -0
- package/dist/application/commands/command-presentation.d.ts +7 -0
- package/dist/application/commands/command-presentation.js +3 -0
- package/dist/application/commands/command-registry.d.ts +11 -0
- package/dist/application/commands/command-registry.js +1 -0
- package/dist/application/commands/command-runtime.d.ts +2 -0
- package/dist/application/commands/command-runtime.js +1 -0
- package/dist/application/commands/goal-command-handlers.d.ts +3 -0
- package/dist/application/commands/goal-command-handlers.js +7 -0
- package/dist/application/commands/media-command-handlers.d.ts +9 -0
- package/dist/application/commands/media-command-handlers.js +8 -0
- package/dist/application/commands/media-command-output.d.ts +11 -0
- package/dist/application/commands/media-command-output.js +1 -0
- package/dist/application/commands/memory-command-handler.d.ts +29 -0
- package/dist/application/commands/memory-command-handler.js +12 -0
- package/dist/application/commands/runtime-command-handlers.d.ts +7 -0
- package/dist/application/commands/runtime-command-handlers.js +14 -0
- package/dist/application/commands/stream-output.d.ts +4 -0
- package/dist/application/commands/stream-output.js +1 -0
- package/dist/application/commands/utility-commands.d.ts +6 -0
- package/dist/application/commands/utility-commands.js +10 -0
- package/dist/application/config/execution-config.d.ts +4 -0
- package/dist/application/config/execution-config.js +1 -0
- package/dist/application/extensions/extension-list-contract.d.ts +18 -0
- package/dist/application/extensions/extension-list-contract.js +0 -0
- package/dist/application/extensions/extension-list-formatters.d.ts +38 -0
- package/dist/application/extensions/extension-list-formatters.js +1 -0
- package/dist/application/extensions/extension-list-output.d.ts +3 -0
- package/dist/application/extensions/extension-list-output.js +3 -0
- package/dist/application/extensions/plugin-contribution-registry.d.ts +31 -0
- package/dist/application/extensions/plugin-contribution-registry.js +1 -0
- package/dist/application/extensions/plugin-detail-contract.d.ts +25 -0
- package/dist/application/extensions/plugin-detail-contract.js +0 -0
- package/dist/application/extensions/plugin-detail-service.d.ts +3 -0
- package/dist/application/extensions/plugin-detail-service.js +1 -0
- package/dist/application/extensions/skill-scope-store.d.ts +23 -0
- package/dist/application/extensions/skill-scope-store.js +1 -0
- package/dist/application/formatting/compact-number.d.ts +2 -0
- package/dist/application/formatting/compact-number.js +1 -0
- package/dist/application/formatting/compact-table.d.ts +22 -0
- package/dist/application/formatting/compact-table.js +2 -0
- package/dist/application/intent/completion-gate.d.ts +6 -0
- package/dist/application/intent/completion-gate.js +1 -0
- package/dist/application/intent/evidence-ledger.d.ts +21 -0
- package/dist/application/intent/evidence-ledger.js +1 -0
- package/dist/application/intent/evidence-recording-tool-executor.d.ts +16 -0
- package/dist/application/intent/evidence-recording-tool-executor.js +1 -0
- package/dist/application/intent/intent-compiler.d.ts +11 -0
- package/dist/application/intent/intent-compiler.js +2 -0
- package/dist/application/intent/intent-execution-gate.d.ts +11 -0
- package/dist/application/intent/intent-execution-gate.js +1 -0
- package/dist/application/intent/intent-host-context.d.ts +6 -0
- package/dist/application/intent/intent-host-context.js +1 -0
- package/dist/application/intent/intent-run-controller.d.ts +56 -0
- package/dist/application/intent/intent-run-controller.js +3 -0
- package/dist/application/intent/project-policy.d.ts +16 -0
- package/dist/application/intent/project-policy.js +1 -0
- package/dist/application/media/video-operation-poller.d.ts +5 -0
- package/dist/application/media/video-operation-poller.js +1 -0
- package/dist/application/memory/memory-capture-policy.d.ts +10 -0
- package/dist/application/memory/memory-capture-policy.js +1 -0
- package/dist/application/memory/memory-consolidation-service.d.ts +12 -0
- package/dist/application/memory/memory-consolidation-service.js +1 -0
- package/dist/application/memory/memory-context-assembler.d.ts +24 -0
- package/dist/application/memory/memory-context-assembler.js +1 -0
- package/dist/application/memory/memory-extractor.d.ts +21 -0
- package/dist/application/memory/memory-extractor.js +2 -0
- package/dist/application/memory/memory-service.d.ts +34 -0
- package/dist/application/memory/memory-service.js +1 -0
- package/dist/application/model/cached-model-catalog.d.ts +13 -0
- package/dist/application/model/cached-model-catalog.js +1 -0
- package/dist/application/model/initial-model-selection.d.ts +10 -0
- package/dist/application/model/initial-model-selection.js +1 -0
- package/dist/application/model/model-catalog-service.d.ts +6 -0
- package/dist/application/model/model-catalog-service.js +1 -0
- package/dist/application/model/model-context-window.d.ts +3 -0
- package/dist/application/model/model-context-window.js +1 -0
- package/dist/application/model/model-response-retry.d.ts +9 -0
- package/dist/application/model/model-response-retry.js +1 -0
- package/dist/application/orchestration/abortable-wait.d.ts +2 -0
- package/dist/application/orchestration/abortable-wait.js +1 -0
- package/dist/application/orchestration/cli-subagent-service.d.ts +73 -0
- package/dist/application/orchestration/cli-subagent-service.js +13 -0
- package/dist/application/orchestration/cli-turn-event-projector.d.ts +15 -0
- package/dist/application/orchestration/cli-turn-event-projector.js +1 -0
- package/dist/application/orchestration/cli-turn-events.d.ts +83 -0
- package/dist/application/orchestration/cli-turn-events.js +1 -0
- package/dist/application/orchestration/cli-turn-persistence.d.ts +6 -0
- package/dist/application/orchestration/cli-turn-persistence.js +1 -0
- package/dist/application/orchestration/goal-evaluator.d.ts +18 -0
- package/dist/application/orchestration/goal-evaluator.js +3 -0
- package/dist/application/orchestration/goal-input.d.ts +3 -0
- package/dist/application/orchestration/goal-input.js +1 -0
- package/dist/application/orchestration/goal-output.d.ts +2 -0
- package/dist/application/orchestration/goal-output.js +2 -0
- package/dist/application/orchestration/goal-runner.d.ts +22 -0
- package/dist/application/orchestration/goal-runner.js +10 -0
- package/dist/application/orchestration/goal-usage.d.ts +9 -0
- package/dist/application/orchestration/goal-usage.js +1 -0
- package/dist/application/orchestration/headless-agent-turn.d.ts +35 -0
- package/dist/application/orchestration/headless-agent-turn.js +4 -0
- package/dist/application/orchestration/subagent-coordinator.d.ts +41 -0
- package/dist/application/orchestration/subagent-coordinator.js +1 -0
- package/dist/application/orchestration/subagent-handoff.d.ts +3 -0
- package/dist/application/orchestration/subagent-handoff.js +3 -0
- package/dist/application/orchestration/subagent-tool-executor.d.ts +12 -0
- package/dist/application/orchestration/subagent-tool-executor.js +1 -0
- package/dist/application/orchestration/task-graph.d.ts +13 -0
- package/dist/application/orchestration/task-graph.js +1 -0
- package/dist/application/orchestration/task-scheduler.d.ts +18 -0
- package/dist/application/orchestration/task-scheduler.js +1 -0
- package/dist/application/project/project-trust-service.d.ts +13 -0
- package/dist/application/project/project-trust-service.js +1 -0
- package/dist/application/project-intelligence/project-intelligence-service.d.ts +14 -0
- package/dist/application/project-intelligence/project-intelligence-service.js +1 -0
- package/dist/application/protocol/browser-host-tool-executor.d.ts +41 -0
- package/dist/application/protocol/browser-host-tool-executor.js +2 -0
- package/dist/application/protocol/computer-host-tool-executor.d.ts +42 -0
- package/dist/application/protocol/computer-host-tool-executor.js +2 -0
- package/dist/application/protocol/desktop-agent-command.d.ts +9 -0
- package/dist/application/protocol/desktop-agent-command.js +3 -0
- package/dist/application/protocol/desktop-agent-request-parser.d.ts +186 -0
- package/dist/application/protocol/desktop-agent-request-parser.js +1 -0
- package/dist/application/protocol/desktop-approval-broker.d.ts +16 -0
- package/dist/application/protocol/desktop-approval-broker.js +1 -0
- package/dist/application/protocol/desktop-attachment-store.d.ts +16 -0
- package/dist/application/protocol/desktop-attachment-store.js +1 -0
- package/dist/application/protocol/desktop-command-catalog.d.ts +2 -0
- package/dist/application/protocol/desktop-command-catalog.js +1 -0
- package/dist/application/protocol/desktop-command-contract.d.ts +26 -0
- package/dist/application/protocol/desktop-command-contract.js +1 -0
- package/dist/application/protocol/desktop-command-executor.d.ts +17 -0
- package/dist/application/protocol/desktop-command-executor.js +1 -0
- package/dist/application/protocol/desktop-command-output.d.ts +15 -0
- package/dist/application/protocol/desktop-command-output.js +1 -0
- package/dist/application/protocol/desktop-execution-policy.d.ts +17 -0
- package/dist/application/protocol/desktop-execution-policy.js +1 -0
- package/dist/application/protocol/desktop-extension-request-handler.d.ts +14 -0
- package/dist/application/protocol/desktop-extension-request-handler.js +1 -0
- package/dist/application/protocol/desktop-extension-service.d.ts +44 -0
- package/dist/application/protocol/desktop-extension-service.js +3 -0
- package/dist/application/protocol/desktop-host-tool-executor.d.ts +63 -0
- package/dist/application/protocol/desktop-host-tool-executor.js +2 -0
- package/dist/application/protocol/desktop-intent-event-writer.d.ts +20 -0
- package/dist/application/protocol/desktop-intent-event-writer.js +1 -0
- package/dist/application/protocol/desktop-mcp-events.d.ts +10 -0
- package/dist/application/protocol/desktop-mcp-events.js +1 -0
- package/dist/application/protocol/desktop-orchestration-events.d.ts +2 -0
- package/dist/application/protocol/desktop-orchestration-events.js +2 -0
- package/dist/application/protocol/desktop-protocol-helpers.d.ts +13 -0
- package/dist/application/protocol/desktop-protocol-helpers.js +1 -0
- package/dist/application/protocol/document-host-tool-definitions.d.ts +4 -0
- package/dist/application/protocol/document-host-tool-definitions.js +1 -0
- package/dist/application/protocol/document-host-tool-executor.d.ts +49 -0
- package/dist/application/protocol/document-host-tool-executor.js +2 -0
- package/dist/application/protocol/json-line-writer.d.ts +9 -0
- package/dist/application/protocol/json-line-writer.js +2 -0
- package/dist/application/protocol/jsonl-agent-command.d.ts +3 -0
- package/dist/application/protocol/jsonl-agent-command.js +3 -0
- package/dist/application/protocol/jsonl-protocol.d.ts +82 -0
- package/dist/application/protocol/jsonl-protocol.js +2 -0
- package/dist/application/protocol/tool-image-content.d.ts +4 -0
- package/dist/application/protocol/tool-image-content.js +1 -0
- package/dist/application/security/delegated-worker-policy.d.ts +3 -0
- package/dist/application/security/delegated-worker-policy.js +1 -0
- package/dist/application/security/desktop-tool-scope-policy.d.ts +4 -0
- package/dist/application/security/desktop-tool-scope-policy.js +1 -0
- package/dist/application/security/tool-action-risk-analyzer.d.ts +13 -0
- package/dist/application/security/tool-action-risk-analyzer.js +1 -0
- package/dist/application/security/tool-approval-service.d.ts +37 -0
- package/dist/application/security/tool-approval-service.js +1 -0
- package/dist/application/security/tool-risk-classifier.d.ts +18 -0
- package/dist/application/security/tool-risk-classifier.js +1 -0
- package/dist/application/security/workspace-permission-policy.d.ts +10 -0
- package/dist/application/security/workspace-permission-policy.js +1 -0
- package/dist/application/session/project-session-access.d.ts +8 -0
- package/dist/application/session/project-session-access.js +1 -0
- package/dist/application/session/session-compaction-service.d.ts +10 -0
- package/dist/application/session/session-compaction-service.js +1 -0
- package/dist/application/session/session-turn-lifecycle.d.ts +5 -0
- package/dist/application/session/session-turn-lifecycle.js +1 -0
- package/dist/application/workspace/session-execution-workspace.d.ts +59 -0
- package/dist/application/workspace/session-execution-workspace.js +3 -0
- package/dist/application/workspace/workspace-file-index.d.ts +15 -0
- package/dist/application/workspace/workspace-file-index.js +1 -0
- package/dist/application/workspace/workspace-file-reference-resolver.d.ts +20 -0
- package/dist/application/workspace/workspace-file-reference-resolver.js +17 -0
- package/dist/application/workspace/workspace-instruction-loader.d.ts +8 -0
- package/dist/application/workspace/workspace-instruction-loader.js +1 -0
- package/dist/bootstrap/composition-root.d.ts +6 -0
- package/dist/bootstrap/composition-root.js +1 -0
- package/dist/bootstrap/global-cli-options.d.ts +6 -0
- package/dist/bootstrap/global-cli-options.js +1 -0
- package/dist/bootstrap/native-devtools-stub.d.ts +10 -0
- package/dist/bootstrap/native-devtools-stub.js +1 -0
- package/dist/bootstrap/native-entry.d.ts +1 -0
- package/dist/bootstrap/native-entry.js +2 -0
- package/dist/bootstrap/native-tiktoken.d.ts +4 -0
- package/dist/bootstrap/native-tiktoken.js +1 -0
- package/dist/bootstrap/runtime-factory.d.ts +41 -0
- package/dist/bootstrap/runtime-factory.js +1 -0
- package/dist/bootstrap/shutdown-manager.d.ts +11 -0
- package/dist/bootstrap/shutdown-manager.js +1 -0
- package/dist/bootstrap/startup-sequence.d.ts +5 -0
- package/dist/bootstrap/startup-sequence.js +1 -0
- package/dist/domain/auth/auth-profile.d.ts +14 -0
- package/dist/domain/auth/auth-profile.js +1 -0
- package/dist/domain/config/config-schema.d.ts +24 -0
- package/dist/domain/config/config-schema.js +1 -0
- package/dist/domain/errors/cli-command-hint.d.ts +5 -0
- package/dist/domain/errors/cli-command-hint.js +0 -0
- package/dist/domain/errors/cli-error.d.ts +35 -0
- package/dist/domain/errors/cli-error.js +1 -0
- package/dist/domain/errors/error-codes.d.ts +51 -0
- package/dist/domain/errors/error-codes.js +1 -0
- package/dist/domain/extensions/extension-scope.d.ts +3 -0
- package/dist/domain/extensions/extension-scope.js +1 -0
- package/dist/domain/extensions/extension-state.d.ts +5 -0
- package/dist/domain/extensions/extension-state.js +1 -0
- package/dist/domain/extensions/hook-manifest.d.ts +13 -0
- package/dist/domain/extensions/hook-manifest.js +1 -0
- package/dist/domain/extensions/host-tool-plugin-ids.d.ts +9 -0
- package/dist/domain/extensions/host-tool-plugin-ids.js +1 -0
- package/dist/domain/extensions/mcp-config.d.ts +35 -0
- package/dist/domain/extensions/mcp-config.js +1 -0
- package/dist/domain/extensions/plugin-agent-manifest.d.ts +8 -0
- package/dist/domain/extensions/plugin-agent-manifest.js +1 -0
- package/dist/domain/extensions/plugin-manifest.d.ts +23 -0
- package/dist/domain/extensions/plugin-manifest.js +1 -0
- package/dist/domain/extensions/skill-manifest.d.ts +10 -0
- package/dist/domain/extensions/skill-manifest.js +3 -0
- package/dist/domain/extensions/yaml-subset.d.ts +9 -0
- package/dist/domain/extensions/yaml-subset.js +2 -0
- package/dist/domain/filesystem/file-change-diff.d.ts +21 -0
- package/dist/domain/filesystem/file-change-diff.js +3 -0
- package/dist/domain/intent/intent-contract.d.ts +41 -0
- package/dist/domain/intent/intent-contract.js +1 -0
- package/dist/domain/media/gateway-media-contract.d.ts +23 -0
- package/dist/domain/media/gateway-media-contract.js +1 -0
- package/dist/domain/media/media-contract.d.ts +28 -0
- package/dist/domain/media/media-contract.js +0 -0
- package/dist/domain/media/media-execution-policy.d.ts +9 -0
- package/dist/domain/media/media-execution-policy.js +1 -0
- package/dist/domain/memory/memory-kinds.d.ts +15 -0
- package/dist/domain/memory/memory-kinds.js +1 -0
- package/dist/domain/memory/memory-retrieval-policy.d.ts +3 -0
- package/dist/domain/memory/memory-retrieval-policy.js +1 -0
- package/dist/domain/memory/memory-search.d.ts +33 -0
- package/dist/domain/memory/memory-search.js +2 -0
- package/dist/domain/memory/memory.d.ts +48 -0
- package/dist/domain/memory/memory.js +1 -0
- package/dist/domain/orchestration/goal.d.ts +58 -0
- package/dist/domain/orchestration/goal.js +1 -0
- package/dist/domain/orchestration/subagent-identity.d.ts +2 -0
- package/dist/domain/orchestration/subagent-identity.js +1 -0
- package/dist/domain/orchestration/subagent.d.ts +33 -0
- package/dist/domain/orchestration/subagent.js +0 -0
- package/dist/domain/orchestration/work-plan.d.ts +77 -0
- package/dist/domain/orchestration/work-plan.js +1 -0
- package/dist/domain/project/project-identity.d.ts +6 -0
- package/dist/domain/project/project-identity.js +1 -0
- package/dist/domain/runtime/assistant-delta-normalizer.d.ts +11 -0
- package/dist/domain/runtime/assistant-delta-normalizer.js +1 -0
- package/dist/domain/runtime/resource-limits.d.ts +75 -0
- package/dist/domain/runtime/resource-limits.js +1 -0
- package/dist/domain/session/attachment.d.ts +13 -0
- package/dist/domain/session/attachment.js +0 -0
- package/dist/domain/session/session-schema.d.ts +6 -0
- package/dist/domain/session/session-schema.js +1 -0
- package/dist/domain/session/session.d.ts +27 -0
- package/dist/domain/session/session.js +0 -0
- package/dist/domain/settings/settings-document.d.ts +8 -0
- package/dist/domain/settings/settings-document.js +1 -0
- package/dist/domain/validation/record-schema.d.ts +4 -0
- package/dist/domain/validation/record-schema.js +1 -0
- package/dist/domain/workspace/workspace-settings.d.ts +12 -0
- package/dist/domain/workspace/workspace-settings.js +1 -0
- package/dist/infrastructure/agent-sdk/agent-instance-factory.d.ts +22 -0
- package/dist/infrastructure/agent-sdk/agent-instance-factory.js +1 -0
- package/dist/infrastructure/agent-sdk/model-tool-name-mapper.d.ts +13 -0
- package/dist/infrastructure/agent-sdk/model-tool-name-mapper.js +1 -0
- package/dist/infrastructure/agent-sdk/tool-calling-completion-client.d.ts +4 -0
- package/dist/infrastructure/agent-sdk/tool-calling-completion-client.js +1 -0
- package/dist/infrastructure/agent-sdk/tool-calling-model-client.d.ts +11 -0
- package/dist/infrastructure/agent-sdk/tool-calling-model-client.js +1 -0
- package/dist/infrastructure/cache/cache-policy.d.ts +7 -0
- package/dist/infrastructure/cache/cache-policy.js +1 -0
- package/dist/infrastructure/cache/file-cache-store.d.ts +17 -0
- package/dist/infrastructure/cache/file-cache-store.js +2 -0
- package/dist/infrastructure/clipboard/clipboard-adapter-factory.d.ts +11 -0
- package/dist/infrastructure/clipboard/clipboard-adapter-factory.js +1 -0
- package/dist/infrastructure/clipboard/clipboard-policy.d.ts +8 -0
- package/dist/infrastructure/clipboard/clipboard-policy.js +1 -0
- package/dist/infrastructure/clipboard/clipboard-text-adapter-factory.d.ts +10 -0
- package/dist/infrastructure/clipboard/clipboard-text-adapter-factory.js +1 -0
- package/dist/infrastructure/clipboard/image-normalizer.d.ts +12 -0
- package/dist/infrastructure/clipboard/image-normalizer.js +1 -0
- package/dist/infrastructure/clipboard/windows-clipboard-adapter.d.ts +7 -0
- package/dist/infrastructure/clipboard/windows-clipboard-adapter.js +1 -0
- package/dist/infrastructure/clipboard/windows-clipboard-text-adapter.d.ts +7 -0
- package/dist/infrastructure/clipboard/windows-clipboard-text-adapter.js +1 -0
- package/dist/infrastructure/config/config-loader.d.ts +19 -0
- package/dist/infrastructure/config/config-loader.js +2 -0
- package/dist/infrastructure/config/environment-values.d.ts +2 -0
- package/dist/infrastructure/config/environment-values.js +1 -0
- package/dist/infrastructure/credentials/composite-credential-store.d.ts +11 -0
- package/dist/infrastructure/credentials/composite-credential-store.js +1 -0
- package/dist/infrastructure/credentials/encrypted-file-credential-store.d.ts +17 -0
- package/dist/infrastructure/credentials/encrypted-file-credential-store.js +3 -0
- package/dist/infrastructure/credentials/environment-credential-store.d.ts +11 -0
- package/dist/infrastructure/credentials/environment-credential-store.js +1 -0
- package/dist/infrastructure/credentials/secret-input.d.ts +7 -0
- package/dist/infrastructure/credentials/secret-input.js +3 -0
- package/dist/infrastructure/extensions/composite-mcp-config-store.d.ts +9 -0
- package/dist/infrastructure/extensions/composite-mcp-config-store.js +1 -0
- package/dist/infrastructure/extensions/extension-directory-reader.d.ts +2 -0
- package/dist/infrastructure/extensions/extension-directory-reader.js +1 -0
- package/dist/infrastructure/extensions/extension-integrity.d.ts +7 -0
- package/dist/infrastructure/extensions/extension-integrity.js +1 -0
- package/dist/infrastructure/extensions/extension-source-resolver.d.ts +6 -0
- package/dist/infrastructure/extensions/extension-source-resolver.js +1 -0
- package/dist/infrastructure/extensions/file-mcp-config-store.d.ts +15 -0
- package/dist/infrastructure/extensions/file-mcp-config-store.js +2 -0
- package/dist/infrastructure/extensions/hook-runtime.d.ts +18 -0
- package/dist/infrastructure/extensions/hook-runtime.js +1 -0
- package/dist/infrastructure/extensions/mcp-runtime.d.ts +51 -0
- package/dist/infrastructure/extensions/mcp-runtime.js +1 -0
- package/dist/infrastructure/extensions/plugin-agent-discovery.d.ts +4 -0
- package/dist/infrastructure/extensions/plugin-agent-discovery.js +1 -0
- package/dist/infrastructure/extensions/plugin-discovery.d.ts +5 -0
- package/dist/infrastructure/extensions/plugin-discovery.js +1 -0
- package/dist/infrastructure/extensions/plugin-manager.d.ts +23 -0
- package/dist/infrastructure/extensions/plugin-manager.js +2 -0
- package/dist/infrastructure/extensions/skill-discovery.d.ts +4 -0
- package/dist/infrastructure/extensions/skill-discovery.js +1 -0
- package/dist/infrastructure/extensions/skill-installer.d.ts +9 -0
- package/dist/infrastructure/extensions/skill-installer.js +1 -0
- package/dist/infrastructure/extensions/skill-manager.d.ts +22 -0
- package/dist/infrastructure/extensions/skill-manager.js +2 -0
- package/dist/infrastructure/extensions/skill-roots.d.ts +19 -0
- package/dist/infrastructure/extensions/skill-roots.js +1 -0
- package/dist/infrastructure/extensions/skill-tool-executor.d.ts +18 -0
- package/dist/infrastructure/extensions/skill-tool-executor.js +2 -0
- package/dist/infrastructure/filesystem/atomic-file-store.d.ts +17 -0
- package/dist/infrastructure/filesystem/atomic-file-store.js +1 -0
- package/dist/infrastructure/filesystem/bounded-file-reader.d.ts +6 -0
- package/dist/infrastructure/filesystem/bounded-file-reader.js +1 -0
- package/dist/infrastructure/filesystem/bounded-json-reader.d.ts +1 -0
- package/dist/infrastructure/filesystem/bounded-json-reader.js +1 -0
- package/dist/infrastructure/filesystem/fs-errors.d.ts +2 -0
- package/dist/infrastructure/filesystem/fs-errors.js +1 -0
- package/dist/infrastructure/filesystem/gateway-media-input-reader.d.ts +12 -0
- package/dist/infrastructure/filesystem/gateway-media-input-reader.js +1 -0
- package/dist/infrastructure/filesystem/local-filesystem-tool-executor.d.ts +22 -0
- package/dist/infrastructure/filesystem/local-filesystem-tool-executor.js +3 -0
- package/dist/infrastructure/filesystem/path-resolver.d.ts +20 -0
- package/dist/infrastructure/filesystem/path-resolver.js +1 -0
- package/dist/infrastructure/filesystem/workspace-media-artifact-store.d.ts +13 -0
- package/dist/infrastructure/filesystem/workspace-media-artifact-store.js +1 -0
- package/dist/infrastructure/logging/daily-rotating-file-writer.d.ts +26 -0
- package/dist/infrastructure/logging/daily-rotating-file-writer.js +2 -0
- package/dist/infrastructure/logging/log-redactor.d.ts +2 -0
- package/dist/infrastructure/logging/log-redactor.js +1 -0
- package/dist/infrastructure/logging/logging-policy.d.ts +6 -0
- package/dist/infrastructure/logging/logging-policy.js +1 -0
- package/dist/infrastructure/logging/structured-logger.d.ts +24 -0
- package/dist/infrastructure/logging/structured-logger.js +4 -0
- package/dist/infrastructure/memory/file-memory-store.d.ts +37 -0
- package/dist/infrastructure/memory/file-memory-store.js +11 -0
- package/dist/infrastructure/network/safe-media-downloader.d.ts +23 -0
- package/dist/infrastructure/network/safe-media-downloader.js +1 -0
- package/dist/infrastructure/platform/host-platform.d.ts +14 -0
- package/dist/infrastructure/platform/host-platform.js +1 -0
- package/dist/infrastructure/platform/host-process.d.ts +29 -0
- package/dist/infrastructure/platform/host-process.js +1 -0
- package/dist/infrastructure/platform/platform-paths.d.ts +25 -0
- package/dist/infrastructure/platform/platform-paths.js +1 -0
- package/dist/infrastructure/platform/process-termination.d.ts +4 -0
- package/dist/infrastructure/platform/process-termination.js +1 -0
- package/dist/infrastructure/platform/read-only-executable.d.ts +3 -0
- package/dist/infrastructure/platform/read-only-executable.js +1 -0
- package/dist/infrastructure/project/file-project-trust-store.d.ts +12 -0
- package/dist/infrastructure/project/file-project-trust-store.js +2 -0
- package/dist/infrastructure/sdk/chat-completion-adapter.d.ts +8 -0
- package/dist/infrastructure/sdk/chat-completion-adapter.js +1 -0
- package/dist/infrastructure/sdk/lotagate-client-factory.d.ts +3 -0
- package/dist/infrastructure/sdk/lotagate-client-factory.js +1 -0
- package/dist/infrastructure/sdk/model-catalog-adapter.d.ts +19 -0
- package/dist/infrastructure/sdk/model-catalog-adapter.js +1 -0
- package/dist/infrastructure/sdk/sdk-media-gateway-client.d.ts +20 -0
- package/dist/infrastructure/sdk/sdk-media-gateway-client.js +1 -0
- package/dist/infrastructure/sessions/file-goal-store.d.ts +21 -0
- package/dist/infrastructure/sessions/file-goal-store.js +1 -0
- package/dist/infrastructure/sessions/file-session-store.d.ts +47 -0
- package/dist/infrastructure/sessions/file-session-store.js +4 -0
- package/dist/infrastructure/sessions/project-session-paths.d.ts +17 -0
- package/dist/infrastructure/sessions/project-session-paths.js +1 -0
- package/dist/infrastructure/sessions/session-index.d.ts +16 -0
- package/dist/infrastructure/sessions/session-index.js +3 -0
- package/dist/infrastructure/sessions/session-journal.d.ts +22 -0
- package/dist/infrastructure/sessions/session-journal.js +6 -0
- package/dist/infrastructure/sessions/subagent-journal-store.d.ts +28 -0
- package/dist/infrastructure/sessions/subagent-journal-store.js +2 -0
- package/dist/infrastructure/shell/shell-tool-executor.d.ts +17 -0
- package/dist/infrastructure/shell/shell-tool-executor.js +2 -0
- package/dist/infrastructure/tokens/tiktoken-token-estimator.d.ts +18 -0
- package/dist/infrastructure/tokens/tiktoken-token-estimator.js +1 -0
- package/dist/infrastructure/workspace/workspace-settings-store.d.ts +9 -0
- package/dist/infrastructure/workspace/workspace-settings-store.js +4 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.js +3 -0
- package/dist/ports/cache-store.d.ts +10 -0
- package/dist/ports/cache-store.js +0 -0
- package/dist/ports/chat-model.d.ts +30 -0
- package/dist/ports/chat-model.js +0 -0
- package/dist/ports/clipboard-adapter.d.ts +7 -0
- package/dist/ports/clipboard-adapter.js +0 -0
- package/dist/ports/clipboard-text-adapter.d.ts +3 -0
- package/dist/ports/clipboard-text-adapter.js +0 -0
- package/dist/ports/credential-store.d.ts +7 -0
- package/dist/ports/credential-store.js +0 -0
- package/dist/ports/goal-store.d.ts +12 -0
- package/dist/ports/goal-store.js +0 -0
- package/dist/ports/logger.d.ts +8 -0
- package/dist/ports/logger.js +0 -0
- package/dist/ports/media-gateway-client.d.ts +54 -0
- package/dist/ports/media-gateway-client.js +0 -0
- package/dist/ports/memory-store.d.ts +26 -0
- package/dist/ports/memory-store.js +0 -0
- package/dist/ports/model-completion-client.d.ts +8 -0
- package/dist/ports/model-completion-client.js +0 -0
- package/dist/ports/model-diagnostics.d.ts +17 -0
- package/dist/ports/model-diagnostics.js +0 -0
- package/dist/ports/project-trust-store.d.ts +12 -0
- package/dist/ports/project-trust-store.js +0 -0
- package/dist/ports/session-store.d.ts +58 -0
- package/dist/ports/session-store.js +0 -0
- package/dist/ports/subagent-lifecycle.d.ts +31 -0
- package/dist/ports/subagent-lifecycle.js +0 -0
- package/dist/ports/tool-activity.d.ts +13 -0
- package/dist/ports/tool-activity.js +0 -0
- package/dist/presentation/themes/theme.d.ts +19 -0
- package/dist/presentation/themes/theme.js +1 -0
- package/dist/presentation/tui/agent-initialization-renderer.d.ts +4 -0
- package/dist/presentation/tui/agent-initialization-renderer.js +1 -0
- package/dist/presentation/tui/context-display.d.ts +21 -0
- package/dist/presentation/tui/context-display.js +2 -0
- package/dist/presentation/tui/formatters.d.ts +6 -0
- package/dist/presentation/tui/formatters.js +1 -0
- package/dist/presentation/tui/ink/choice-window.d.ts +5 -0
- package/dist/presentation/tui/ink/choice-window.js +1 -0
- package/dist/presentation/tui/ink/components/activity-animation.d.ts +3 -0
- package/dist/presentation/tui/ink/components/activity-animation.js +1 -0
- package/dist/presentation/tui/ink/components/activity-entry.d.ts +6 -0
- package/dist/presentation/tui/ink/components/activity-entry.js +1 -0
- package/dist/presentation/tui/ink/components/activity-status.d.ts +10 -0
- package/dist/presentation/tui/ink/components/activity-status.js +1 -0
- package/dist/presentation/tui/ink/components/choice-modal.d.ts +11 -0
- package/dist/presentation/tui/ink/components/choice-modal.js +1 -0
- package/dist/presentation/tui/ink/components/composer.d.ts +40 -0
- package/dist/presentation/tui/ink/components/composer.js +8 -0
- package/dist/presentation/tui/ink/components/file-diff.d.ts +6 -0
- package/dist/presentation/tui/ink/components/file-diff.js +1 -0
- package/dist/presentation/tui/ink/components/modal.d.ts +8 -0
- package/dist/presentation/tui/ink/components/modal.js +2 -0
- package/dist/presentation/tui/ink/components/shimmer-text.d.ts +8 -0
- package/dist/presentation/tui/ink/components/shimmer-text.js +1 -0
- package/dist/presentation/tui/ink/components/subagent-activity.d.ts +11 -0
- package/dist/presentation/tui/ink/components/subagent-activity.js +1 -0
- package/dist/presentation/tui/ink/components/transcript.d.ts +39 -0
- package/dist/presentation/tui/ink/components/transcript.js +5 -0
- package/dist/presentation/tui/ink/components/welcome-panel.d.ts +6 -0
- package/dist/presentation/tui/ink/components/welcome-panel.js +1 -0
- package/dist/presentation/tui/ink/lotagate-tui.d.ts +6 -0
- package/dist/presentation/tui/ink/lotagate-tui.js +2 -0
- package/dist/presentation/tui/ink/markdown-inline-renderer.d.ts +4 -0
- package/dist/presentation/tui/ink/markdown-inline-renderer.js +1 -0
- package/dist/presentation/tui/ink/markdown-inline.d.ts +13 -0
- package/dist/presentation/tui/ink/markdown-inline.js +1 -0
- package/dist/presentation/tui/ink/markdown-message.d.ts +6 -0
- package/dist/presentation/tui/ink/markdown-message.js +2 -0
- package/dist/presentation/tui/ink/markdown-table.d.ts +16 -0
- package/dist/presentation/tui/ink/markdown-table.js +1 -0
- package/dist/presentation/tui/ink/tui-bridge.d.ts +193 -0
- package/dist/presentation/tui/ink/tui-bridge.js +1 -0
- package/dist/presentation/tui/terminal-capabilities.d.ts +15 -0
- package/dist/presentation/tui/terminal-capabilities.js +1 -0
- package/dist/presentation/tui/terminal-mouse.d.ts +5 -0
- package/dist/presentation/tui/terminal-mouse.js +1 -0
- package/dist/presentation/tui/terminal-screen.d.ts +10 -0
- package/dist/presentation/tui/terminal-screen.js +1 -0
- package/dist/presentation/tui/tui-agent-event-runner.d.ts +29 -0
- package/dist/presentation/tui/tui-agent-event-runner.js +1 -0
- package/dist/presentation/tui/tui-application-contract.d.ts +10 -0
- package/dist/presentation/tui/tui-application-contract.js +1 -0
- package/dist/presentation/tui/tui-application.d.ts +64 -0
- package/dist/presentation/tui/tui-application.js +3 -0
- package/dist/presentation/tui/tui-clipboard-paste-handlers.d.ts +11 -0
- package/dist/presentation/tui/tui-clipboard-paste-handlers.js +1 -0
- package/dist/presentation/tui/tui-command-context.d.ts +3 -0
- package/dist/presentation/tui/tui-command-context.js +0 -0
- package/dist/presentation/tui/tui-command-executor.d.ts +38 -0
- package/dist/presentation/tui/tui-command-executor.js +4 -0
- package/dist/presentation/tui/tui-command-host-factory.d.ts +40 -0
- package/dist/presentation/tui/tui-command-host-factory.js +1 -0
- package/dist/presentation/tui/tui-context-compaction.d.ts +5 -0
- package/dist/presentation/tui/tui-context-compaction.js +1 -0
- package/dist/presentation/tui/tui-context-service.d.ts +34 -0
- package/dist/presentation/tui/tui-context-service.js +2 -0
- package/dist/presentation/tui/tui-extension-loader.d.ts +21 -0
- package/dist/presentation/tui/tui-extension-loader.js +1 -0
- package/dist/presentation/tui/tui-file-suggestions.d.ts +3 -0
- package/dist/presentation/tui/tui-file-suggestions.js +1 -0
- package/dist/presentation/tui/tui-goal-controller.d.ts +14 -0
- package/dist/presentation/tui/tui-goal-controller.js +1 -0
- package/dist/presentation/tui/tui-initial-model.d.ts +3 -0
- package/dist/presentation/tui/tui-initial-model.js +1 -0
- package/dist/presentation/tui/tui-lifecycle-actions.d.ts +13 -0
- package/dist/presentation/tui/tui-lifecycle-actions.js +1 -0
- package/dist/presentation/tui/tui-manual-compaction.d.ts +18 -0
- package/dist/presentation/tui/tui-manual-compaction.js +1 -0
- package/dist/presentation/tui/tui-media-model-selection.d.ts +12 -0
- package/dist/presentation/tui/tui-media-model-selection.js +1 -0
- package/dist/presentation/tui/tui-prompt-dispatcher.d.ts +16 -0
- package/dist/presentation/tui/tui-prompt-dispatcher.js +1 -0
- package/dist/presentation/tui/tui-skill-controller.d.ts +11 -0
- package/dist/presentation/tui/tui-skill-controller.js +3 -0
- package/dist/presentation/tui/tui-tool-approval.d.ts +22 -0
- package/dist/presentation/tui/tui-tool-approval.js +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +1 -0
- package/package.json +12 -10
- package/skills/architecture-review/SKILL.md +41 -14
- package/skills/code-review/SKILL.md +41 -12
- package/skills/debugging/SKILL.md +49 -12
- package/skills/documentation/SKILL.md +43 -9
- package/skills/feature-implementation/SKILL.md +58 -19
- package/skills/api-contract-review/SKILL.md +0 -17
- package/skills/database-review/SKILL.md +0 -17
- package/skills/dependency-review/SKILL.md +0 -16
- package/skills/frontend-review/SKILL.md +0 -18
- package/skills/incident-response/SKILL.md +0 -18
- package/skills/performance-review/SKILL.md +0 -17
- package/skills/refactor/SKILL.md +0 -23
- package/skills/release-readiness/SKILL.md +0 -16
- package/skills/security-review/SKILL.md +0 -16
- package/skills/test-plan/SKILL.md +0 -22
- package/skills/verify/SKILL.md +0 -13
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const _=2,x=1.2,S=.75;function b(e){const n=new Map,c={};let u=0;for(const r of e){const t=new Map;for(const s of h(r))t.set(s,(t.get(s)??0)+1);const o=Object.fromEntries(t.entries()),i=Object.values(o).reduce((s,m)=>s+m,0);c[r.id]={id:r.id,termFrequency:o,length:i},u+=i;for(const s of t.keys()){const m=n.get(s)??new Set;m.add(r.id),n.set(s,m)}}const a=Object.fromEntries([...n.entries()].map(([r,t])=>[r,[...t].sort()])),l=Object.fromEntries(Object.entries(a).map(([r,t])=>[r,t.length]));return{documents:c,postings:a,documentFrequency:l,averageDocumentLength:e.length===0?0:u/e.length}}function y(e,n,c){if(c.maximum<=0)return[];const u=d(c.text);if(u.length===0)return[];const a=new Set;for(const t of u)for(const o of n.postings[t]??[])a.add(o);const l=Object.keys(n.documents).length,r=[...a].flatMap(t=>{const o=e[t],i=n.documents[t];if(o===void 0||i===void 0||!g(o))return[];const s=M(i,u,n,l);return s>0?[{record:o,lexicalScore:s,rank:0}]:[]});return r.sort((t,o)=>o.lexicalScore-t.lexicalScore||o.record.updatedAt.localeCompare(t.record.updatedAt)||t.record.id.localeCompare(o.record.id)),r.slice(0,c.maximum).map((t,o)=>({...t,rank:o+1}))}function p(e){return e.normalize("NFKC").toLocaleLowerCase()}function d(e){const n=p(e),c=n.normalize("NFD").replace(/[\u0300-\u036f]/gu,"");return[...new Set([...f(n),...f(c)])]}function g(e,n=Date.now()){return e.state==="active"&&(e.expiresAt===void 0||Date.parse(e.expiresAt)>n)}function h(e){return d([e.statement,e.rationale??"",...e.topics].join(`
|
|
2
|
+
`))}function f(e){return e.split(/[^\p{L}\p{N}_-]+/u).filter(n=>n.length>=2)}function M(e,n,c,u){return c.averageDocumentLength<=0||e.length<=0?0:n.reduce((a,l)=>{const r=e.termFrequency[l]??0,t=c.documentFrequency[l]??0;if(r===0||t===0)return a;const o=Math.log(1+(u-t+.5)/(t+.5)),i=r+1.2*(1-.75+.75*e.length/c.averageDocumentLength);return a+o*r*(1.2+1)/i},0)}export{b as buildMemorySearchIndex,g as isMemoryRetrievable,p as normalizeSearchText,y as searchMemoryIndex,d as uniqueTokens};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type MemoryKind } from './memory-kinds.js';
|
|
2
|
+
export { MEMORY_KINDS, isMemoryKind } from './memory-kinds.js';
|
|
3
|
+
export type { MemoryKind } from './memory-kinds.js';
|
|
4
|
+
export declare const MEMORY_SCHEMA_VERSION: 2;
|
|
5
|
+
export declare const MEMORY_STATES: readonly ["active", "superseded", "expired"];
|
|
6
|
+
export declare const MEMORY_SOURCES: readonly ["user-explicit", "host-evidence", "model-inferred", "imported"];
|
|
7
|
+
export type MemoryState = typeof MEMORY_STATES[number];
|
|
8
|
+
export type MemorySource = typeof MEMORY_SOURCES[number];
|
|
9
|
+
export interface MemoryRecord {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly kind: MemoryKind;
|
|
12
|
+
readonly state: MemoryState;
|
|
13
|
+
readonly statement: string;
|
|
14
|
+
readonly rationale?: string;
|
|
15
|
+
readonly topics: readonly string[];
|
|
16
|
+
readonly source: MemorySource;
|
|
17
|
+
readonly evidenceRefs: readonly string[];
|
|
18
|
+
readonly supersedes: readonly string[];
|
|
19
|
+
readonly createdAt: string;
|
|
20
|
+
readonly updatedAt: string;
|
|
21
|
+
readonly expiresAt?: string;
|
|
22
|
+
readonly lastRetrievedAt?: string;
|
|
23
|
+
readonly retrievalCount: number;
|
|
24
|
+
}
|
|
25
|
+
export interface MemoryDraft {
|
|
26
|
+
readonly kind: MemoryKind;
|
|
27
|
+
readonly state?: MemoryState;
|
|
28
|
+
readonly statement: string;
|
|
29
|
+
readonly rationale?: string;
|
|
30
|
+
readonly topics?: readonly string[];
|
|
31
|
+
readonly source?: MemorySource;
|
|
32
|
+
readonly evidenceRefs?: readonly string[];
|
|
33
|
+
readonly supersedes?: readonly string[];
|
|
34
|
+
readonly expiresAt?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface MemoryBundle {
|
|
37
|
+
readonly schemaVersion: typeof MEMORY_SCHEMA_VERSION;
|
|
38
|
+
readonly exportedAt: string;
|
|
39
|
+
readonly records: readonly MemoryRecord[];
|
|
40
|
+
}
|
|
41
|
+
export declare function isMemoryState(value: unknown): value is MemoryState;
|
|
42
|
+
export declare function isMemorySource(value: unknown): value is MemorySource;
|
|
43
|
+
export declare function normalizeMemoryDraft(input: MemoryDraft): MemoryDraft;
|
|
44
|
+
export declare function normalizeMemoryRecord(value: unknown): MemoryRecord;
|
|
45
|
+
export declare function normalizeMemoryBundle(value: unknown): MemoryBundle;
|
|
46
|
+
export declare function memoryRecordFromDraft(id: string, draft: MemoryDraft, timestamp: string): MemoryRecord;
|
|
47
|
+
/** Returns the record state visible to callers without rewriting the journal. */
|
|
48
|
+
export declare function effectiveMemoryRecord(record: MemoryRecord, now?: number): MemoryRecord;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CliError as M}from"../errors/cli-error.js";import{CLI_ERROR_CODES as g}from"../errors/error-codes.js";import{RESOURCE_LIMITS as n}from"../runtime/resource-limits.js";import{findUnexpectedRecordKey as c,isRecord as f}from"../validation/record-schema.js";import{isMemoryKind as p}from"./memory-kinds.js";import{MEMORY_KINDS as U,isMemoryKind as q}from"./memory-kinds.js";const y=2,l=["active","superseded","expired"],w=["user-explicit","host-evidence","model-inferred","imported"];function u(e){return typeof e=="string"&&l.includes(e)}function A(e){return typeof e=="string"&&w.includes(e)}function S(e){const r=c(e,["kind","state","statement","rationale","topics","source","evidenceRefs","supersedes","expiresAt"]);if(r!==void 0)throw o(`Unsupported memory draft field: ${r}.`);return{kind:m(e.kind,p,"memory kind"),...e.state===void 0?{}:{state:m(e.state,u,"memory state")},statement:d(e.statement,n.memoryStatementBytes,"memory statement"),...e.rationale===void 0?{}:{rationale:d(e.rationale,n.memoryRationaleBytes,"memory rationale")},topics:x(e.topics??[]),source:e.source===void 0?"model-inferred":m(e.source,A,"memory source"),evidenceRefs:R(e.evidenceRefs??[]),supersedes:h(e.supersedes??[],"memory supersedes"),...e.expiresAt===void 0?{}:{expiresAt:s(e.expiresAt,"memory expiresAt")}}}function E(e){if(!f(e))throw o("Memory record must be an object.");const r=c(e,["id","kind","state","statement","rationale","topics","source","evidenceRefs","supersedes","createdAt","updatedAt","expiresAt","lastRetrievedAt","retrievalCount"]);if(r!==void 0)throw o(`Unsupported memory record field: ${r}.`);return{id:a(e.id),kind:m(e.kind,p,"memory kind"),state:m(e.state,u,"memory state"),statement:d(e.statement,n.memoryStatementBytes,"memory statement"),topics:x(e.topics),source:m(e.source,A,"memory source"),evidenceRefs:R(e.evidenceRefs),supersedes:h(e.supersedes,"memory supersedes"),createdAt:s(e.createdAt,"memory createdAt"),updatedAt:s(e.updatedAt,"memory updatedAt"),retrievalCount:b(e.retrievalCount,"memory retrievalCount"),...e.rationale===void 0?{}:{rationale:d(e.rationale,n.memoryRationaleBytes,"memory rationale")},...e.expiresAt===void 0?{}:{expiresAt:s(e.expiresAt,"memory expiresAt")},...e.lastRetrievedAt===void 0?{}:{lastRetrievedAt:s(e.lastRetrievedAt,"memory lastRetrievedAt")}}}function N(e){if(!f(e))throw o("Memory bundle must be an object.");const r=c(e,["schemaVersion","exportedAt","records"]);if(r!==void 0)throw o(`Unsupported memory bundle field: ${r}.`);if(e.schemaVersion!==y)throw o("Unsupported memory bundle schema version.");if(!Array.isArray(e.records)||e.records.length>n.memoryRecords)throw o("Memory bundle records are invalid or exceed the supported limit.");return{schemaVersion:y,exportedAt:s(e.exportedAt,"memory exportedAt"),records:e.records.map(i=>E(i))}}function $(e,r,i){const t=S(r);return{id:a(e),kind:t.kind,state:t.state??"active",statement:t.statement,topics:t.topics??[],source:t.source??"model-inferred",evidenceRefs:t.evidenceRefs??[],supersedes:t.supersedes??[],createdAt:s(i,"memory timestamp"),updatedAt:s(i,"memory timestamp"),retrievalCount:0,...t.rationale===void 0?{}:{rationale:t.rationale},...t.expiresAt===void 0?{}:{expiresAt:t.expiresAt}}}function B(e,r=Date.now()){return e.state==="active"&&e.expiresAt!==void 0&&Date.parse(e.expiresAt)<=r?{...e,state:"expired"}:e}function x(e){if(!Array.isArray(e)||e.length>n.memoryTopics||e.some(r=>typeof r!="string"))throw o("Memory topics are invalid.");return[...new Set(e.map(r=>r.trim()).filter(r=>r.length>0).map(r=>d(r,n.memoryTopicBytes,"memory topic")))].sort()}function R(e){if(!Array.isArray(e)||e.length>n.memoryEvidenceReferences||e.some(r=>typeof r!="string"))throw o("Memory evidence references are invalid.");return I(e,n.memoryEvidenceReferenceBytes,"memory evidence reference")}function h(e,r){if(!Array.isArray(e)||e.length>n.memorySupersedes||e.some(i=>typeof i!="string"))throw o(`${r} are invalid.`);return[...new Set(e.map(i=>a(i)))]}function I(e,r,i){return[...new Set(e.map(t=>t.trim()).map(t=>d(t,r,i)))]}function m(e,r,i){if(!r(e))throw o(`Invalid ${i}.`);return e}function d(e,r,i){if(typeof e!="string"||e.trim().length===0||Buffer.byteLength(e,"utf8")>r)throw o(`Invalid ${i}.`);return e.trim()}function a(e){if(typeof e!="string"||!/^[A-Za-z0-9_-]{1,128}$/u.test(e))throw o("Invalid memory id.");return e}function s(e,r){if(typeof e!="string"||Number.isNaN(Date.parse(e)))throw o(`Invalid ${r}.`);return e}function b(e,r){if(typeof e!="number"||!Number.isSafeInteger(e)||e<0)throw o(`Invalid ${r}.`);return e}function o(e){return new M(g.MEMORY_INVALID,e,{category:"memory",userMessage:e})}export{U as MEMORY_KINDS,y as MEMORY_SCHEMA_VERSION,w as MEMORY_SOURCES,l as MEMORY_STATES,B as effectiveMemoryRecord,q as isMemoryKind,A as isMemorySource,u as isMemoryState,$ as memoryRecordFromDraft,N as normalizeMemoryBundle,S as normalizeMemoryDraft,E as normalizeMemoryRecord};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type GoalStatus = 'active' | 'paused' | 'completed' | 'blocked' | 'budget_limited' | 'usage_limited';
|
|
2
|
+
export type GoalDecision = 'continue' | 'complete' | 'blocked' | 'budget_limited' | 'usage_limited';
|
|
3
|
+
export interface GoalEvaluation {
|
|
4
|
+
decision: GoalDecision;
|
|
5
|
+
reason: string;
|
|
6
|
+
evidence: readonly string[];
|
|
7
|
+
timestamp: string;
|
|
8
|
+
evaluatorModel?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GoalUsage {
|
|
11
|
+
inputTokens: number;
|
|
12
|
+
outputTokens: number;
|
|
13
|
+
totalTokens: number;
|
|
14
|
+
modelCalls: number;
|
|
15
|
+
estimated: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface GoalUsageDelta {
|
|
18
|
+
inputTokens?: number;
|
|
19
|
+
outputTokens?: number;
|
|
20
|
+
totalTokens?: number;
|
|
21
|
+
modelCalls?: number;
|
|
22
|
+
estimated?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface GoalState {
|
|
25
|
+
id: string;
|
|
26
|
+
sessionId: string;
|
|
27
|
+
objective: string;
|
|
28
|
+
status: GoalStatus;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
updatedAt: string;
|
|
31
|
+
startedAt: string;
|
|
32
|
+
turns: number;
|
|
33
|
+
evaluatorRuns: number;
|
|
34
|
+
usage: GoalUsage;
|
|
35
|
+
tokenBudget?: number;
|
|
36
|
+
maxTurns?: number;
|
|
37
|
+
maxDurationMs?: number;
|
|
38
|
+
lastEvaluation?: GoalEvaluation;
|
|
39
|
+
lastError?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface CreateGoalInput {
|
|
42
|
+
objective: string;
|
|
43
|
+
tokenBudget?: number;
|
|
44
|
+
maxTurns?: number;
|
|
45
|
+
maxDurationMs?: number;
|
|
46
|
+
}
|
|
47
|
+
export declare function validateGoalInput(input: CreateGoalInput): CreateGoalInput;
|
|
48
|
+
/** Identifies journal events that must carry a complete goal snapshot. */
|
|
49
|
+
export declare function isGoalEventType(value: string): boolean;
|
|
50
|
+
/** Validates the complete durable goal state before it controls execution limits. */
|
|
51
|
+
export declare function isGoalState(value: unknown): value is GoalState;
|
|
52
|
+
/** Validates the durable evaluator result embedded in a goal snapshot. */
|
|
53
|
+
export declare function isGoalEvaluation(value: unknown): value is GoalEvaluation;
|
|
54
|
+
/** Validates the data payload written by a durable goal lifecycle event. */
|
|
55
|
+
export declare function isPersistedGoalEventData(value: unknown): boolean;
|
|
56
|
+
export declare function transitionGoal(state: GoalState, status: GoalStatus): GoalState;
|
|
57
|
+
export declare function addGoalUsage(current: GoalUsage, delta: GoalUsageDelta): GoalUsage;
|
|
58
|
+
export declare const EMPTY_GOAL_USAGE: GoalUsage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{RESOURCE_LIMITS as n}from"../runtime/resource-limits.js";const m=new Set(["goal.created","goal.replaced","goal.paused","goal.resumed","goal.evaluated","goal.completed","goal.blocked","goal.budget_limited","goal.usage_limited","goal.usage_recorded","goal.cleared","goal.turn.started"]);function x(t){const e=t.objective.trim();if(e.length===0||e.length>16384||/[\0\r\n]/u.test(e))throw new Error("Goal objective must contain between 1 and 16384 printable characters.");for(const[i,r]of Object.entries(t))if(!(i==="objective"||r===void 0)&&(!Number.isSafeInteger(r)||r<=0))throw new Error(`Goal limit ${i} must be a positive integer.`);if(t.maxDurationMs!==void 0&&t.maxDurationMs>n.goalMaximumMaxDurationMs)throw new Error("Goal maxDurationMs cannot exceed 8 hours.");return{objective:e,...t.tokenBudget===void 0?{}:{tokenBudget:t.tokenBudget},...t.maxTurns===void 0?{}:{maxTurns:t.maxTurns},...t.maxDurationMs===void 0?{}:{maxDurationMs:t.maxDurationMs}}}function G(t){return m.has(t)}function c(t){return a(t)?typeof t.id=="string"&&typeof t.sessionId=="string"&&E(t.objective)&&p(t.status)&&d(t.createdAt)&&d(t.updatedAt)&&d(t.startedAt)&&o(t.turns)&&o(t.evaluatorRuns)&&b(t.usage)&&f(t.tokenBudget)&&f(t.maxTurns)&&y(t.maxDurationMs)&&T(t.lastEvaluation)&&(t.lastError===void 0||typeof t.lastError=="string"&&Buffer.byteLength(t.lastError,"utf8")<=n.goalReasonBytes):!1}function u(t){return a(t)?l(t.decision)&&typeof t.reason=="string"&&Buffer.byteLength(t.reason,"utf8")<=n.goalReasonBytes&&Array.isArray(t.evidence)&&t.evidence.length<=n.goalEvidenceItems&&t.evidence.every(e=>typeof e=="string"&&Buffer.byteLength(e,"utf8")<=n.goalEvidenceBytes)&&d(t.timestamp)&&(t.evaluatorModel===void 0||typeof t.evaluatorModel=="string"):!1}function M(t){return!a(t)||!c(t.goal)?!1:t.evaluation===void 0||u(t.evaluation)}function h(t,e){if(t.status==="completed"||t.status==="blocked"||t.status==="budget_limited"||t.status==="usage_limited")throw new Error(`Cannot transition a terminal goal from ${t.status}.`);if(e==="active"&&t.status!=="paused")throw new Error(`Cannot resume a goal from ${t.status}.`);if(e==="paused"&&t.status!=="active")throw new Error(`Cannot pause a goal from ${t.status}.`);return{...t,status:e,updatedAt:new Date().toISOString()}}function S(t,e){const i=s(t.inputTokens+(e.inputTokens??0)),r=s(t.outputTokens+(e.outputTokens??0)),g=s(t.totalTokens+(e.totalTokens??(e.inputTokens??0)+(e.outputTokens??0)));return{inputTokens:i,outputTokens:r,totalTokens:g,modelCalls:s(t.modelCalls+(e.modelCalls??0)),estimated:t.estimated||e.estimated===!0}}const _=Object.freeze({inputTokens:0,outputTokens:0,totalTokens:0,modelCalls:0,estimated:!1});function s(t){return Number.isSafeInteger(t)&&t>=0?t:Number.MAX_SAFE_INTEGER}function a(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function p(t){return t==="active"||t==="paused"||t==="completed"||t==="blocked"||t==="budget_limited"||t==="usage_limited"}function l(t){return t==="continue"||t==="complete"||t==="blocked"||t==="budget_limited"||t==="usage_limited"}function b(t){return a(t)?o(t.inputTokens)&&o(t.outputTokens)&&o(t.totalTokens)&&o(t.modelCalls)&&typeof t.estimated=="boolean":!1}function T(t){return t===void 0||u(t)}function f(t){return t===void 0||typeof t=="number"&&Number.isSafeInteger(t)&&t>0}function y(t){return t===void 0||typeof t=="number"&&Number.isSafeInteger(t)&&t>0&&t<=n.goalMaximumMaxDurationMs}function o(t){return typeof t=="number"&&Number.isSafeInteger(t)&&t>=0}function d(t){return typeof t=="string"&&Number.isFinite(Date.parse(t))}function E(t){return typeof t=="string"&&t.trim().length>0&&t.length<=n.goalObjectiveBytes&&!/[\0\r\n]/u.test(t)}export{_ as EMPTY_GOAL_USAGE,S as addGoalUsage,u as isGoalEvaluation,G as isGoalEventType,c as isGoalState,M as isPersistedGoalEventData,h as transitionGoal,x as validateGoalInput};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const t=["Atlas","Nova","Orion","Sage","Lyra","Ember","Aster","Coda"];function r(e){const a=Math.max(0,Math.floor(e)),n=t[a%t.length]??"Agent",o=Math.floor(a/t.length)+1;return o===1?n:`${n} ${o}`}export{r as subagentDisplayName};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type SubagentStatus = 'queued' | 'running' | 'completed' | 'completed_with_warning' | 'failed' | 'cancelled';
|
|
2
|
+
export type SubagentLimitReason = 'iteration' | 'timeout' | 'tokens' | 'tool_calls';
|
|
3
|
+
export type SubagentMode = 'research' | 'worker';
|
|
4
|
+
export interface SubagentHandoff {
|
|
5
|
+
readonly summary: string;
|
|
6
|
+
readonly filesInspected: readonly string[];
|
|
7
|
+
readonly filesChanged: readonly string[];
|
|
8
|
+
readonly commandsRun: readonly string[];
|
|
9
|
+
readonly verification: readonly string[];
|
|
10
|
+
readonly warnings: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface SubagentRequest {
|
|
13
|
+
readonly task: string;
|
|
14
|
+
readonly context?: string;
|
|
15
|
+
readonly model?: string;
|
|
16
|
+
readonly mode?: SubagentMode;
|
|
17
|
+
readonly background?: boolean;
|
|
18
|
+
readonly writeScope?: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export interface SubagentResult {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly displayName: string;
|
|
23
|
+
readonly task: string;
|
|
24
|
+
readonly status: SubagentStatus;
|
|
25
|
+
readonly mode: SubagentMode;
|
|
26
|
+
readonly model: string;
|
|
27
|
+
readonly summary: string;
|
|
28
|
+
readonly handoff: SubagentHandoff;
|
|
29
|
+
readonly toolsUsed: readonly string[];
|
|
30
|
+
readonly estimatedTokens?: number;
|
|
31
|
+
readonly limitReason?: SubagentLimitReason;
|
|
32
|
+
readonly durationMs: number;
|
|
33
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export declare const MAX_WORK_PLAN_STEPS = 10;
|
|
2
|
+
export type WorkItemStatus = 'queued' | 'active' | 'completed' | 'failed' | 'blocked';
|
|
3
|
+
export type WorkPlanStatus = 'active' | 'completed' | 'failed' | 'blocked';
|
|
4
|
+
export type WorkEvidenceKind = 'read' | 'diff' | 'test' | 'typecheck' | 'lint' | 'build' | 'runtime';
|
|
5
|
+
export interface WorkItem {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
description: string;
|
|
9
|
+
dependencies: readonly string[];
|
|
10
|
+
status: WorkItemStatus;
|
|
11
|
+
assignedAgent?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkPlanStep extends WorkItem {
|
|
14
|
+
index: number;
|
|
15
|
+
scope: readonly string[];
|
|
16
|
+
acceptanceCriteria: readonly string[];
|
|
17
|
+
verificationHints: readonly string[];
|
|
18
|
+
evidenceIds: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export interface WorkPlan {
|
|
21
|
+
id: string;
|
|
22
|
+
turnId: string;
|
|
23
|
+
goal: string;
|
|
24
|
+
language: string;
|
|
25
|
+
version: number;
|
|
26
|
+
status: WorkPlanStatus;
|
|
27
|
+
steps: readonly WorkPlanStep[];
|
|
28
|
+
createdAt: string;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface WorkEvidence {
|
|
32
|
+
id: string;
|
|
33
|
+
turnId: string;
|
|
34
|
+
planId: string;
|
|
35
|
+
stepId: string;
|
|
36
|
+
kind: WorkEvidenceKind;
|
|
37
|
+
summary: string;
|
|
38
|
+
status: 'passed' | 'failed' | 'informational';
|
|
39
|
+
command?: string;
|
|
40
|
+
paths?: readonly string[];
|
|
41
|
+
exitCode?: number;
|
|
42
|
+
createdAt: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SchedulerLimits {
|
|
45
|
+
maxConcurrency: number;
|
|
46
|
+
maxTasks: number;
|
|
47
|
+
maxDurationMs: number;
|
|
48
|
+
maxTokens?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface WorkPlanUpdateInput {
|
|
51
|
+
action: 'create' | 'replace' | 'step_status' | 'record_evidence' | 'complete' | 'fail' | 'block';
|
|
52
|
+
goal?: string;
|
|
53
|
+
language?: string;
|
|
54
|
+
steps?: readonly WorkPlanStepInput[];
|
|
55
|
+
stepId?: string;
|
|
56
|
+
status?: Exclude<WorkItemStatus, 'queued'>;
|
|
57
|
+
evidence?: WorkEvidenceInput;
|
|
58
|
+
reason?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface WorkPlanStepInput {
|
|
61
|
+
id: string;
|
|
62
|
+
title: string;
|
|
63
|
+
description: string;
|
|
64
|
+
dependencies?: readonly string[];
|
|
65
|
+
scope?: readonly string[];
|
|
66
|
+
acceptanceCriteria: readonly string[];
|
|
67
|
+
verificationHints?: readonly string[];
|
|
68
|
+
}
|
|
69
|
+
export interface WorkEvidenceInput {
|
|
70
|
+
stepId: string;
|
|
71
|
+
kind: WorkEvidenceKind;
|
|
72
|
+
summary: string;
|
|
73
|
+
status: WorkEvidence['status'];
|
|
74
|
+
command?: string;
|
|
75
|
+
paths?: readonly string[];
|
|
76
|
+
exitCode?: number;
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _=10;export{_ as MAX_WORK_PLAN_STEPS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import r from"node:crypto";function a(t,e){return r.createHash("sha256").update(`${t}\0${e??""}`,"utf8").digest("hex")}export{a as createProjectFingerprint};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repairs an SSE frame prefix only when a compatibility gateway attaches it
|
|
3
|
+
* directly to preceding assistant text. Prefixes after whitespace or at the
|
|
4
|
+
* beginning of a new line are preserved because they can be intentional text
|
|
5
|
+
* or code.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AssistantDeltaNormalizer {
|
|
8
|
+
private previousCharacter;
|
|
9
|
+
normalize(content: string): string;
|
|
10
|
+
private isAttachedToAssistantText;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
class n{previousCharacter;normalize(s){const t=s.replace(/data:\s+/gu,(e,a,r)=>this.isAttachedToAssistantText(r,a)?"":e);return t.length>0&&(this.previousCharacter=t.at(-1)),t}isAttachedToAssistantText(s,t){const e=t===0?this.previousCharacter:s.at(t-1);return e!==void 0&&!/\s/.test(e)}}export{n as AssistantDeltaNormalizer};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Centralized defensive limits for untrusted local, extension, and protocol data. */
|
|
2
|
+
export declare const RESOURCE_LIMITS: {
|
|
3
|
+
readonly processTerminationGraceMs: 500;
|
|
4
|
+
readonly processTerminationTimeoutMs: 2000;
|
|
5
|
+
readonly configFileBytes: number;
|
|
6
|
+
readonly workspaceSettingsBytes: number;
|
|
7
|
+
readonly mcpConfigBytes: number;
|
|
8
|
+
readonly sessionBundleBytes: number;
|
|
9
|
+
readonly sessionJournalBytes: number;
|
|
10
|
+
readonly sessionEvents: 100000;
|
|
11
|
+
readonly sessionTranscriptEntries: 50000;
|
|
12
|
+
readonly sessionAttachments: 32;
|
|
13
|
+
readonly sessionAttachmentTotalBytes: number;
|
|
14
|
+
readonly sessionTextBytes: number;
|
|
15
|
+
readonly memoryJournalBytes: number;
|
|
16
|
+
readonly memoryIndexBytes: number;
|
|
17
|
+
readonly memoryBundleBytes: number;
|
|
18
|
+
readonly memoryRecords: 2000;
|
|
19
|
+
readonly memoryStatementBytes: number;
|
|
20
|
+
readonly memoryRationaleBytes: number;
|
|
21
|
+
readonly memoryTopics: 16;
|
|
22
|
+
readonly memoryTopicBytes: 256;
|
|
23
|
+
readonly memorySupersedes: 16;
|
|
24
|
+
readonly memoryEvidenceReferences: 32;
|
|
25
|
+
readonly memoryEvidenceReferenceBytes: 512;
|
|
26
|
+
readonly memoryContextRecords: 12;
|
|
27
|
+
readonly jsonlLineBytes: number;
|
|
28
|
+
readonly desktopAttachmentChunkBytes: number;
|
|
29
|
+
readonly jsonlIdBytes: 256;
|
|
30
|
+
readonly jsonlPathBytes: 4096;
|
|
31
|
+
readonly jsonlPromptBytes: number;
|
|
32
|
+
readonly pendingAttachments: 16;
|
|
33
|
+
readonly pendingAttachmentTotalBytes: number;
|
|
34
|
+
readonly maxAttachmentBytes: number;
|
|
35
|
+
readonly clipboardTextBytes: number;
|
|
36
|
+
readonly clipboardTimeoutMs: 15000;
|
|
37
|
+
readonly instructionFileBytes: number;
|
|
38
|
+
readonly instructionTotalBytes: number;
|
|
39
|
+
readonly instructionFiles: 32;
|
|
40
|
+
readonly skillDocumentBytes: number;
|
|
41
|
+
readonly pluginManifestBytes: number;
|
|
42
|
+
readonly subagentTaskBytes: number;
|
|
43
|
+
readonly subagentContextBytes: number;
|
|
44
|
+
readonly subagentMaxWriteScopeItems: 32;
|
|
45
|
+
readonly subagentWriteScopeItemBytes: 512;
|
|
46
|
+
readonly subagentSummaryBytes: number;
|
|
47
|
+
readonly subagentMaxDurationMs: 1800000;
|
|
48
|
+
readonly subagentMaxTokens: 200000;
|
|
49
|
+
readonly subagentMaxConcurrent: 4;
|
|
50
|
+
readonly subagentMaxRetainedJobs: 32;
|
|
51
|
+
readonly subagentMaxIterations: 200;
|
|
52
|
+
readonly subagentMaxToolCallsPerTurn: 100;
|
|
53
|
+
readonly agentMaxIterations: 500;
|
|
54
|
+
readonly agentMaxToolCallsPerTurn: 1;
|
|
55
|
+
readonly subagentToolArgumentBytes: number;
|
|
56
|
+
readonly subagentToolResultBytes: number;
|
|
57
|
+
readonly goalObjectiveBytes: number;
|
|
58
|
+
readonly goalReasonBytes: number;
|
|
59
|
+
readonly goalEvidenceItems: 8;
|
|
60
|
+
readonly goalEvidenceBytes: number;
|
|
61
|
+
readonly goalDefaultMaxTurns: 100;
|
|
62
|
+
readonly goalMaximumMaxTurns: 10000;
|
|
63
|
+
readonly goalMaximumTokenBudget: 10000000;
|
|
64
|
+
readonly goalDefaultMaxDurationMs: number;
|
|
65
|
+
readonly goalMaximumMaxDurationMs: number;
|
|
66
|
+
readonly goalDefaultMaxEvaluatorRuns: 100;
|
|
67
|
+
readonly tuiTranscriptMessages: 2000;
|
|
68
|
+
readonly jsonlMaxInFlight: 4;
|
|
69
|
+
readonly workspaceReferenceCount: 32;
|
|
70
|
+
readonly workspaceReferenceInstructionBytes: number;
|
|
71
|
+
readonly logQueueEntries: 10000;
|
|
72
|
+
readonly logQueueBytes: number;
|
|
73
|
+
readonly internalProcessTimeoutMs: number;
|
|
74
|
+
readonly internalProcessOutputBytes: number;
|
|
75
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={processTerminationGraceMs:500,processTerminationTimeoutMs:2e3,configFileBytes:262144,workspaceSettingsBytes:262144,mcpConfigBytes:524288,sessionBundleBytes:20971520,sessionJournalBytes:20971520,sessionEvents:1e5,sessionTranscriptEntries:5e4,sessionAttachments:32,sessionAttachmentTotalBytes:52428800,sessionTextBytes:524288,memoryJournalBytes:8388608,memoryIndexBytes:8388608,memoryBundleBytes:8388608,memoryRecords:2e3,memoryStatementBytes:4096,memoryRationaleBytes:2048,memoryTopics:16,memoryTopicBytes:256,memorySupersedes:16,memoryEvidenceReferences:32,memoryEvidenceReferenceBytes:512,memoryContextRecords:12,jsonlLineBytes:1048576,desktopAttachmentChunkBytes:524288,jsonlIdBytes:256,jsonlPathBytes:4096,jsonlPromptBytes:524288,pendingAttachments:16,pendingAttachmentTotalBytes:52428800,maxAttachmentBytes:10485760,clipboardTextBytes:10485760,clipboardTimeoutMs:15e3,instructionFileBytes:131072,instructionTotalBytes:262144,instructionFiles:32,skillDocumentBytes:524288,pluginManifestBytes:262144,subagentTaskBytes:16384,subagentContextBytes:16384,subagentMaxWriteScopeItems:32,subagentWriteScopeItemBytes:512,subagentSummaryBytes:24576,subagentMaxDurationMs:18e5,subagentMaxTokens:2e5,subagentMaxConcurrent:4,subagentMaxRetainedJobs:32,subagentMaxIterations:200,subagentMaxToolCallsPerTurn:100,agentMaxIterations:500,agentMaxToolCallsPerTurn:1,subagentToolArgumentBytes:65536,subagentToolResultBytes:262144,goalObjectiveBytes:16384,goalReasonBytes:2048,goalEvidenceItems:8,goalEvidenceBytes:4096,goalDefaultMaxTurns:100,goalMaximumMaxTurns:1e4,goalMaximumTokenBudget:1e7,goalDefaultMaxDurationMs:72e5,goalMaximumMaxDurationMs:288e5,goalDefaultMaxEvaluatorRuns:100,tuiTranscriptMessages:2e3,jsonlMaxInFlight:4,workspaceReferenceCount:32,workspaceReferenceInstructionBytes:16384,logQueueEntries:1e4,logQueueBytes:4194304,internalProcessTimeoutMs:12e4,internalProcessOutputBytes:4194304};export{e as RESOURCE_LIMITS};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type AttachmentSource = 'clipboard' | 'file';
|
|
2
|
+
export interface Attachment {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
sizeBytes: number;
|
|
7
|
+
source: AttachmentSource;
|
|
8
|
+
storagePath?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AttachmentPayload {
|
|
11
|
+
attachment: Attachment;
|
|
12
|
+
bytes: Uint8Array;
|
|
13
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SessionEvent, SessionMetadata, TranscriptEntry } from './session.js';
|
|
2
|
+
/** Runtime validators for session data persisted in JSON files and journals. */
|
|
3
|
+
export declare function isSessionMetadata(value: unknown): value is SessionMetadata;
|
|
4
|
+
export declare function isSessionEvent(value: unknown): value is SessionEvent;
|
|
5
|
+
export declare function isTranscriptEntry(value: unknown): value is TranscriptEntry;
|
|
6
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function s(t){return n(t)?typeof t.id=="string"&&typeof t.projectFingerprint=="string"&&typeof t.cwd=="string"&&(typeof t.model=="string"||t.model===null)&&(typeof t.profile=="string"||t.profile===null)&&(t.status==="active"||t.status==="completed"||t.status==="failed"||t.status==="cancelled")&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&(t.name===void 0||typeof t.name=="string"):!1}function i(t){return n(t)?typeof t.type=="string"&&typeof t.timestamp=="string"&&typeof t.sessionId=="string"&&(t.runId===void 0||typeof t.runId=="string")&&(t.turnId===void 0||typeof t.turnId=="string")&&(t.data===void 0||n(t.data)):!1}function e(t){return!n(t)||typeof t.timestamp!="string"||typeof t.content!="string"||t.type!=="user"&&t.type!=="assistant"&&t.type!=="system"&&t.type!=="tool"?!1:(t.turnId===void 0||typeof t.turnId=="string")&&(t.attachmentIds===void 0||Array.isArray(t.attachmentIds)&&t.attachmentIds.every(r=>typeof r=="string"))}function n(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export{n as isRecord,i as isSessionEvent,s as isSessionMetadata,e as isTranscriptEntry};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type SessionStatus = 'active' | 'completed' | 'failed' | 'cancelled';
|
|
2
|
+
export interface SessionMetadata {
|
|
3
|
+
id: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
projectFingerprint: string;
|
|
6
|
+
cwd: string;
|
|
7
|
+
model: string | null;
|
|
8
|
+
profile: string | null;
|
|
9
|
+
status: SessionStatus;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
updatedAt: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SessionEvent {
|
|
14
|
+
type: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
sessionId: string;
|
|
17
|
+
runId?: string;
|
|
18
|
+
turnId?: string;
|
|
19
|
+
data?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface TranscriptEntry {
|
|
22
|
+
type: 'user' | 'assistant' | 'system' | 'tool';
|
|
23
|
+
timestamp: string;
|
|
24
|
+
content: string;
|
|
25
|
+
turnId?: string;
|
|
26
|
+
attachmentIds?: readonly string[];
|
|
27
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CliConfig } from '../config/config-schema.js';
|
|
2
|
+
import { type WorkspacePermissionPolicy } from '../workspace/workspace-settings.js';
|
|
3
|
+
export interface ValidatedSettingsDocument {
|
|
4
|
+
readonly config: Partial<CliConfig>;
|
|
5
|
+
readonly permissions?: WorkspacePermissionPolicy;
|
|
6
|
+
}
|
|
7
|
+
export declare function validateSettingsDocument(value: unknown): ValidatedSettingsDocument;
|
|
8
|
+
export declare function permissionsFromSettings(document: ValidatedSettingsDocument): WorkspacePermissionPolicy;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CliError as m}from"../errors/cli-error.js";import{CLI_ERROR_CODES as f}from"../errors/error-codes.js";import{CONFIG_SCHEMA_VERSION as p,CONFIGURABLE_KEYS as t,validateConfig as d}from"../config/config-schema.js";import{DEFAULT_WORKSPACE_SETTINGS as S,validateWorkspaceSettings as g}from"../workspace/workspace-settings.js";import{findUnexpectedRecordKey as E,isRecord as a}from"../validation/record-schema.js";const u=["schemaVersion",...t,"permissions"];function R(i){if(!a(i))throw r("Settings must be a JSON object.");const e=E(i,u);if(e!==void 0)throw r(`Unsupported settings field: \`${e}\`.`);const n={};for(const s of["schemaVersion",...t])i[s]!==void 0&&(n[s]=i[s]);const o=d(n);if(i.permissions===void 0)return{config:o};const c=g({schemaVersion:i.schemaVersion??p,permissions:i.permissions});return{config:o,permissions:c.permissions}}function V(i){return i.permissions??S.permissions}function r(i){return new m(f.CONFIG_SCHEMA_INVALID,i,{category:"config",userMessage:`Invalid settings: ${i}`})}export{V as permissionsFromSettings,R as validateSettingsDocument};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Narrows JSON-shaped values before schema-specific validation. */
|
|
2
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
3
|
+
/** Returns the first unsupported own property in a configuration object. */
|
|
4
|
+
export declare function findUnexpectedRecordKey(value: Record<string, unknown>, allowedKeys: readonly string[]): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function o(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function c(e,n){const r=new Set(n);return Object.keys(e).find(t=>!r.has(t))}export{c as findUnexpectedRecordKey,o as isRecord};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const WORKSPACE_SETTINGS_SCHEMA_VERSION = 1;
|
|
2
|
+
export interface WorkspacePermissionPolicy {
|
|
3
|
+
readonly allow: readonly string[];
|
|
4
|
+
readonly ask: readonly string[];
|
|
5
|
+
readonly deny: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
export interface WorkspaceSettings {
|
|
8
|
+
readonly schemaVersion: 1;
|
|
9
|
+
readonly permissions: WorkspacePermissionPolicy;
|
|
10
|
+
}
|
|
11
|
+
export declare const DEFAULT_WORKSPACE_SETTINGS: WorkspaceSettings;
|
|
12
|
+
export declare function validateWorkspaceSettings(value: unknown): WorkspaceSettings;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CliError as a}from"../errors/cli-error.js";import{CLI_ERROR_CODES as m}from"../errors/error-codes.js";import{findUnexpectedRecordKey as d,isRecord as p}from"../validation/record-schema.js";const o=1,f={schemaVersion:o,permissions:{allow:[],ask:[],deny:[]}};function g(s){if(!p(s))throw r("Workspace settings must be a JSON object.");if(c(s,["schemaVersion","permissions"],"workspace settings"),s.schemaVersion!==void 0&&s.schemaVersion!==o)throw r("Unsupported workspace settings schema version.");const n=s.permissions===void 0?f.permissions:w(s.permissions);return{schemaVersion:o,permissions:n}}function w(s){if(!p(s))throw r("Workspace permissions must be a JSON object.");return c(s,["allow","ask","deny"],"workspace permissions"),{allow:i(s.allow,"permissions.allow"),ask:i(s.ask,"permissions.ask"),deny:i(s.deny,"permissions.deny")}}function i(s,n){if(s===void 0)return[];if(!Array.isArray(s)||s.some(e=>typeof e!="string"||e.trim().length===0||e.length>256))throw r(`${n} must be an array of non-empty strings (max 256 characters each).`);return[...new Set(s.map(e=>e.trim()))]}function r(s){return new a(m.CONFIG_SCHEMA_INVALID,s,{category:"config",userMessage:`Invalid workspace settings: ${s}`})}function c(s,n,e){const t=d(s,n);if(t!==void 0)throw r(`Unsupported ${e} field: \`${t}\`.`)}export{f as DEFAULT_WORKSPACE_SETTINGS,o as WORKSPACE_SETTINGS_SCHEMA_VERSION,g as validateWorkspaceSettings};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LotaGateAgent, type LotaGateAgentOptions, type ToolAuthorizationRule, type ToolAuthorizationEvent } from '@lotagate/agent-sdk';
|
|
2
|
+
import { type ToolExecutor } from '@lotagate/agent-sdk';
|
|
3
|
+
import type { LotaGate } from '@lotagate/sdk';
|
|
4
|
+
import type { ModelCallSummary } from '../../ports/model-diagnostics.js';
|
|
5
|
+
import type { HostPlatformContext } from '../platform/host-platform.js';
|
|
6
|
+
export interface AgentInstanceOptions extends Omit<LotaGateAgentOptions, 'modelClient'> {
|
|
7
|
+
client: LotaGate;
|
|
8
|
+
onModelComplete?: (summary: ModelCallSummary) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function createAgentInstance(options: AgentInstanceOptions): LotaGateAgent;
|
|
11
|
+
export interface LocalAgentInstanceOptions extends Omit<AgentInstanceOptions, 'toolExecutor'> {
|
|
12
|
+
platform?: HostPlatformContext;
|
|
13
|
+
toolExecutors?: readonly ToolExecutor[];
|
|
14
|
+
allowedTools?: readonly string[];
|
|
15
|
+
deniedTools?: readonly string[];
|
|
16
|
+
requireApproval?: boolean;
|
|
17
|
+
approvalHandler?: NonNullable<LotaGateAgentOptions['toolPolicy']>['approvalHandler'];
|
|
18
|
+
authorizationRules?: readonly ToolAuthorizationRule[];
|
|
19
|
+
authorizationObserver?: (event: ToolAuthorizationEvent) => void | Promise<void>;
|
|
20
|
+
onModelComplete?: (summary: ModelCallSummary) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare function createLocalAgentInstance(options: LocalAgentInstanceOptions): LotaGateAgent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{LotaGateAgent as f}from"@lotagate/agent-sdk";import{CompositeToolExecutor as m}from"@lotagate/agent-sdk";import{LocalFilesystemToolExecutor as s}from"../filesystem/local-filesystem-tool-executor.js";import{ShellToolExecutor as x}from"../shell/shell-tool-executor.js";import{createToolCallingModelClient as C}from"./tool-calling-model-client.js";function g(n){const{client:t,onModelComplete:e,...o}=n;return new f({...o,modelClient:C(t,e===void 0?{}:{onComplete:e})})}function v(n){const{toolExecutors:t,platform:e,allowedTools:o,deniedTools:l,requireApproval:r,approvalHandler:i,authorizationRules:d,authorizationObserver:a,onModelComplete:u,...c}=n,p=new m([...t??[new s,new x({...e===void 0?{}:{platform:e}})]]);return g({...c,...u===void 0?{}:{onModelComplete:u},toolExecutor:p,toolPolicy:{...o===void 0?{}:{allowedTools:o},...l===void 0?{}:{deniedTools:l},...r===void 0?{}:{requireApproval:r},...i===void 0?{}:{approvalHandler:i},...d===void 0?{}:{authorizationRules:d},...a===void 0?{}:{authorizationObserver:a}}})}export{g as createAgentInstance,v as createLocalAgentInstance};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ChatCompletionChunk, ChatCompletionRequest, ChatCompletionResponse, ToolDefinition } from '@lotagate/sdk';
|
|
2
|
+
export interface ModelToolNameMap {
|
|
3
|
+
toProviderName(name: string): string;
|
|
4
|
+
toInternalName(name: string): string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates a stable, provider-safe alias map while keeping the CLI's canonical
|
|
8
|
+
* names available to executors, policies, and UI events.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createModelToolNameMap(tools: readonly ToolDefinition[] | undefined): ModelToolNameMap;
|
|
11
|
+
export declare function mapRequestToolNames<T extends ChatCompletionRequest>(request: T, nameMap: ModelToolNameMap): T;
|
|
12
|
+
export declare function mapResponseToolNames(response: ChatCompletionResponse, nameMap: ModelToolNameMap): ChatCompletionResponse;
|
|
13
|
+
export declare function mapChunkToolNames(chunk: ChatCompletionChunk, nameMap: ModelToolNameMap): ChatCompletionChunk;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const u=/^[A-Za-z0-9_-]+$/u,c=64;function _(n){const t=new Map,e=new Map;for(const o of[...new Set((n??[]).flatMap(d))]){const i=l(o),a=e.get(i);if(a!==void 0&&a!==o)throw new Error(`Tool names "${a}" and "${o}" normalize to the same provider name "${i}".`);t.set(o,i),e.set(i,o)}return{toProviderName:o=>t.get(o)??l(o),toInternalName:o=>e.get(o)??o}}function g(n,t){const e={...n,messages:n.messages.map(o=>!("tool_calls"in o)||o.tool_calls===void 0?o:{...o,tool_calls:o.tool_calls.map(i=>r(i,t.toProviderName))}),...n.tools===void 0?{}:{tools:n.tools.map(o=>m(o,t.toProviderName))}};return n.tool_choice!==void 0&&(e.tool_choice=f(n.tool_choice,t.toProviderName)),n.toolChoice!==void 0&&(e.toolChoice=f(n.toolChoice,t.toProviderName)),n.toolConfig!==void 0&&(e.toolConfig=f(n.toolConfig,t.toProviderName)),e}function p(n,t){return{...n,choices:n.choices.map(e=>({...e,message:e.message.tool_calls===void 0?e.message:{...e.message,tool_calls:e.message.tool_calls.map(o=>r(o,t.toInternalName))}}))}}function N(n,t){return{...n,choices:n.choices.map(e=>({...e,delta:e.delta.tool_calls===void 0?e.delta:{...e.delta,tool_calls:e.delta.tool_calls.map(o=>r(o,t.toInternalName))}}))}}function l(n){const t=n.replace(/[^A-Za-z0-9_-]+/gu,"_");if(t.length<=64&&u.test(t))return t;const e=s(n).slice(0,8);return`${t.slice(0,64-e.length-1)}_${e}`}function s(n){let t=2166136261;for(const e of n)t^=e.codePointAt(0)??0,t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function m(n,t){return"function"in n&&n.function!==void 0?{...n,function:{...n.function,name:t(n.function.name)}}:"functionDeclarations"in n?{...n,functionDeclarations:n.functionDeclarations.map(e=>({...e,name:t(e.name)}))}:"name"in n?{...n,name:t(n.name)}:n}function r(n,t){return{...n,function:{...n.function,name:t(n.function.name)}}}function f(n,t){return typeof n=="string"?n:"function"in n&&n.function!==void 0?{...n,function:{...n.function,name:t(n.function.name)}}:"name"in n&&typeof n.name=="string"?{...n,name:t(n.name)}:"functionCallingConfig"in n&&n.functionCallingConfig.allowedFunctionNames!==void 0?{...n,functionCallingConfig:{...n.functionCallingConfig,allowedFunctionNames:n.functionCallingConfig.allowedFunctionNames.map(t)}}:n}function d(n){return"function"in n&&n.function!==void 0?[n.function.name]:"name"in n&&typeof n.name=="string"?[n.name]:"functionDeclarations"in n?n.functionDeclarations.map(t=>t.name):[]}export{_ as createModelToolNameMap,N as mapChunkToolNames,g as mapRequestToolNames,p as mapResponseToolNames};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { LotaGate } from '@lotagate/sdk';
|
|
2
|
+
import type { ModelCompletionClient } from '../../ports/model-completion-client.js';
|
|
3
|
+
/** Reuses the agent model boundary for non-streaming host-owned completions. */
|
|
4
|
+
export declare function createToolCallingCompletionClient(client: LotaGate): ModelCompletionClient;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createToolCallingModelClient as l}from"./tool-calling-model-client.js";function i(e){const n=l(e);return{chat:{completions:{create:async(o,r)=>{const t=await n.chat.completions.create({...o,stream:!1},r);if(a(t))throw new Error("The completion adapter returned a streaming response unexpectedly.");return t}}}}}function a(e){return typeof e=="object"&&e!==null&&Symbol.asyncIterator in e}export{i as createToolCallingCompletionClient};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type LotaGate } from '@lotagate/sdk';
|
|
2
|
+
import type { LotaGateAgentOptions } from '@lotagate/agent-sdk';
|
|
3
|
+
import type { ModelCallObserver } from '../../ports/model-diagnostics.js';
|
|
4
|
+
type AgentModelClient = LotaGateAgentOptions['modelClient'];
|
|
5
|
+
/**
|
|
6
|
+
* Adapts the published SDK client to the Agent SDK model port and makes the
|
|
7
|
+
* intended tool-calling mode explicit for gateways that do not infer it from
|
|
8
|
+
* the presence of `tools` alone.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createToolCallingModelClient(client: LotaGate, diagnostics?: ModelCallObserver): AgentModelClient;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"@lotagate/sdk";import{AssistantDeltaNormalizer as q}from"../../domain/runtime/assistant-delta-normalizer.js";import{createModelToolNameMap as nn,mapChunkToolNames as tn,mapRequestToolNames as U,mapResponseToolNames as z}from"./model-tool-name-mapper.js";import{isRetryableModelResponseError as en,MODEL_RESPONSE_MAX_RETRIES as on,retryModelStream as rn}from"../../application/model/model-response-retry.js";const W=on;function kn(n,t={}){return{chat:{completions:{create:((e,s)=>{const r=nn(e.tools),i=e.tools!==void 0&&e.tools.length>0?1:void 0;if(e.stream===!0){const l=U(v({...e,stream:!0}),r),f=cn(e)?ln(n,l,s,i):rn({create:async()=>await n.chat.completions.create(l,s),isObservable:un,...s?.signal===void 0?{}:{signal:s.signal}});return an(n,l,e.tools,s,f,e.model,t,r,i)}const a=U(v({...e,stream:!1}),r);return sn(n.chat.completions.create(a,s),e.model,t,r,i)})}}}}async function sn(n,t,o,e,s){const r=O(z(w(await n),e),s),i=r.choices[0]?.message;return o.onComplete?.({model:t,stream:!1,contentLength:$(i?.content),toolCallCount:i?.tool_calls?.length??0,toolNames:(i?.tool_calls??[]).map(a=>a.function.name),...r.usage===void 0?{}:{usage:k(r.usage)},...r.choices[0]?.finish_reason===void 0?{}:{finishReason:r.choices[0].finish_reason}}),r}async function*an(n,t,o,e,s,r,i,a,l){let f=0,c;const d=new Set,m=new Set,_=new dn(o);let S=!1,b,x,M=!1;const Z=new q;try{for await(const C of s){const h=tn(fn(C,Z),a),p=_.consume(h).chunk,y=p.choices[0];p.usage!==void 0&&(b=k(p.usage));const I=$(y?.delta.content);if(f+=I,c=y?.finish_reason??c,I>0&&(S=!0),y?.finish_reason==="tool_calls"&&!M){const J=_.flush(p);if(!S&&B(J)){const R=z(w(await N(n,t,e,l)),a);R.usage!==void 0&&(b=k(R.usage)),G(R,m,d),c=R.choices[0]?.finish_reason??c,yield T(R);return}const L=P(J,l);K(L,m,d),M=!0,yield p,yield L}else yield p;x=p}if(!M&&x!==void 0&&_.hasCalls()){const C=_.flush(x);if(!S&&B(C)){const g=z(w(await N(n,t,e,l)),a);g.usage!==void 0&&(b=k(g.usage)),G(g,m,d),c=g.choices[0]?.finish_reason??c,yield T(g);return}const h=P(C,l);K(h,m,d),M=!0,yield h}}catch(C){if(!S&&!M&&Y(C)&&e?.signal?.aborted!==!0){const h=z(w(await N(n,t,e,l)),a);h.usage!==void 0&&(b=k(h.usage));const g=h.choices[0]?.message,p=$(g?.content);f+=p;for(const y of g?.tool_calls??[])y.id.length>0&&m.add(y.id),y.function.name.length>0&&d.add(y.function.name);c=h.choices[0]?.finish_reason??c,yield T(h);return}throw C}finally{i.onComplete?.({model:r,stream:!0,contentLength:f,toolCallCount:m.size||d.size,toolNames:[...d],...c===void 0?{}:{finishReason:c},...b===void 0?{}:{usage:b}})}}async function N(n,t,o,e){const s=v({...t,stream:!1});for(let r=0;;r+=1)try{const i=w(await n.chat.completions.create(s,o));if(r<W&&B(i))continue;return O(i,e)}catch(i){if(r>=W||!Y(i)||o?.signal?.aborted===!0)throw i}}async function*ln(n,t,o,e){yield T(await N(n,t,o,e))}function v(n){return n.tools===void 0||n.tools.length===0?n:{...n,tool_choice:"auto"}}function cn(n){const t=n.messages.at(-1);return t!==void 0&&"role"in t&&t.role==="tool"}function un(n){return n.choices.some(t=>{const o=t.delta.content,e=t.delta.tool_calls,s=t.delta;return typeof o=="string"&&o.length>0||Array.isArray(o)&&o.length>0||Array.isArray(e)&&e.length>0||u(s.function_call)})}function O(n,t){return t===void 0?n:{...n,choices:n.choices.map(o=>{const e=o.message.tool_calls;return e===void 0||e.length<=t?o:{...o,message:{...o.message,tool_calls:e.slice(0,t)}}})}}function P(n,t){return t===void 0?n:{...n,choices:n.choices.map(o=>{const e=o.delta.tool_calls;return e===void 0||e.length<=t?o:{...o,delta:{...o.delta,tool_calls:e.slice(0,t)}}})}}function T(n){const t=w(n),o=t.choices[0],e=o?.message;return{id:t.id,object:"chat.completion.chunk",created:t.created,model:t.model,choices:[{index:o?.index??0,delta:{role:"assistant",content:F(e?.content),...e?.tool_calls===void 0?{}:{tool_calls:e.tool_calls.map((s,r)=>({...s,index:r}))}},...o?.finish_reason===void 0?{}:{finish_reason:o.finish_reason}}],...t.usage===void 0?{}:{usage:t.usage}}}function fn(n,t){return{...n,choices:n.choices.map(o=>{const e=o.delta.content,r=Array.isArray(e)?t.normalize(F(e)):typeof e=="string"?t.normalize(e):e,i=o.delta,a=[...Array.isArray(e)?H(e):[],...Q(i.function_call,0)];return r===e&&a.length===0?o:{...o,delta:{...o.delta,...r===e?{}:{content:r},...a.length===0?{}:{tool_calls:[...o.delta.tool_calls??[],...a]}}}})}}class dn{knownNames;calls=new Map;order=[];keysByPosition=new Map;constructor(t){this.knownNames=new Set((t??[]).flatMap(o=>Cn(o)))}consume(t){let o=!1;const e=t.choices.map(s=>{const r=s.delta.tool_calls;if(r===void 0||r.length===0)return s;o=!0,r.forEach((a,l)=>{u(a)&&this.append(a,l)});const i={...s.delta};return delete i.tool_calls,{...s,delta:i}});return{chunk:{...t,choices:e},hadToolCalls:o}}hasCalls(){return this.order.length>0}flush(t){const o=this.order.map((i,a)=>{const l=this.calls.get(i);return{id:l.id||`tool-call-${a}`,type:l.type,function:{name:l.name,arguments:l.arguments},...l.providerMetadata===void 0?{}:{provider_metadata:l.providerMetadata}}}),e=new Set,s=o.filter(i=>{const a=`${i.function.name}\0${i.function.arguments}`;return e.has(a)?!1:(e.add(a),!0)}),r=t.choices.map((i,a)=>a===0?{...i,delta:{...i.delta,tool_calls:s}}:i);return{...t,choices:r}}append(t,o){const e=E(t),s=gn(t),r=j(t),i=X(t),a=A(t),l=hn(t,o),f=this.keysByPosition.get(l)??mn(e,l);this.keysByPosition.set(l,f);const c=this.calls.get(f),d=pn(c?.name??"",r,this.knownNames),m=yn(c?.arguments??"",i);if(c===void 0){this.calls.set(f,{id:e,type:s,name:d,arguments:m,...a===void 0?{}:{providerMetadata:a}}),this.order.push(f);return}const _=c.providerMetadata??a;this.calls.set(f,{id:c.id.length===0&&e.length>0?e:c.id,type:s||c.type,name:c.name+d,arguments:m,..._===void 0?{}:{providerMetadata:_}})}}function A(n){if(!u(n))return;const t=n.provider_metadata??n.providerMetadata;if(u(t))return t;const o=n.thoughtSignature??n.thought_signature;return typeof o=="string"&&o.length>0?{google:{thought_signature:o}}:void 0}function hn(n,t){const o=n.index;return typeof o=="number"&&Number.isInteger(o)?o:t}function mn(n,t){return n.length>0?`id:${n}`:`index:${t}`}function E(n){const t=n;return u(t)&&typeof t.id=="string"?t.id:""}function gn(n){const t=n;return u(t)&&typeof t.type=="string"&&t.type.length>0?t.type:"function"}function j(n){const t=n;return u(t)&&u(t.function)&&typeof t.function.name=="string"?t.function.name:""}function X(n){const t=n;return u(t)&&u(t.function)&&typeof t.function.arguments=="string"?t.function.arguments:""}function pn(n,t,o){return t.length===0||t===n?"":o!==void 0&&o.has(t)&&t.startsWith(n)||t.startsWith(n)&&n.length>0?t.slice(n.length):t}function yn(n,t){if(t.length===0)return n;if(n.length===0||t===n)return n.length===0?t:n;if(t.startsWith(n))return t;const o=_n(n,t);return o!==void 0?o:n+t}function B(n){const t=n.choices[0];return((t!==void 0&&"message"in t?t.message.tool_calls:t?.delta.tool_calls)??[]).some(e=>D(X(e))===void 0)}function _n(n,t){if(n.length===0||t.length===0)return;const o=D(n),e=D(t);if(!(o===void 0||e===void 0))return JSON.stringify({...o,...e})}function D(n){try{const t=JSON.parse(n);return u(t)?t:void 0}catch{return}}function K(n,t,o){for(const e of n.choices[0]?.delta.tool_calls??[]){const s=E(e),r=j(e);s.length>0&&t.add(s),r.length>0&&o.add(r)}}function G(n,t,o){for(const e of n.choices[0]?.message?.tool_calls??[]){const s=E(e),r=j(e);s.length>0&&t.add(s),r.length>0&&o.add(r)}}function Cn(n){return"function"in n&&typeof n.function.name=="string"?[n.function.name]:"name"in n&&typeof n.name=="string"?[n.name]:"functionDeclarations"in n?n.functionDeclarations.flatMap(t=>typeof t.name=="string"?[t.name]:[]):[]}function w(n){return{...n,choices:n.choices.map(t=>({...t,message:An(t.message)}))}}function An(n){const t=n,o=[...Array.isArray(n.content)?H(n.content):[],...Q(t.function_call,0)],e=Array.isArray(n.content)?F(n.content):typeof n.content=="string"?n.content:void 0,s=e??null,r=Array.isArray(n.content)||typeof n.content=="string"&&e!==n.content;return!r&&o.length===0?n:{...n,...r?{content:s}:{},...o.length===0?{}:{tool_calls:[...n.tool_calls??[],...o]}}}function H(n){const t=[];for(const[o,e]of n.entries())if(!(typeof e!="object"||e===null)){if("functionCall"in e&&u(e.functionCall)&&typeof e.functionCall.name=="string"){const s=e.functionCall.args;t.push({id:typeof e.functionCall.id=="string"&&e.functionCall.id.length>0?e.functionCall.id:`provider-call-${o}`,type:"function",function:{name:e.functionCall.name,arguments:V(s)},...A(e)===void 0?{}:{provider_metadata:A(e)}});continue}if("tool_use"in e&&u(e.tool_use)&&typeof e.tool_use.name=="string"){const s=e.tool_use.input;t.push({id:typeof e.tool_use.id=="string"&&e.tool_use.id.length>0?e.tool_use.id:`provider-call-${o}`,type:"function",function:{name:e.tool_use.name,arguments:JSON.stringify(s??{})},...A(e)===void 0?{}:{provider_metadata:A(e)}})}}return t}function Q(n,t){if(!u(n)||typeof n.name!="string")return[];const o=n.arguments;return[{id:typeof n.id=="string"&&n.id.length>0?n.id:`provider-call-${t}`,type:"function",function:{name:n.name,arguments:V(o)},...A(n)===void 0?{}:{provider_metadata:A(n)}}]}function V(n){if(n===void 0)return"";if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return""}}function u(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Y(n){return en(n)}function F(n){return typeof n=="string"?n:Array.isArray(n)?n.reduce((t,o)=>{if(typeof o!="object"||o===null||!("text"in o))return t;const e=o.text;return t+(typeof e=="string"?e:"")},""):""}function $(n){return typeof n=="string"?n.length:Array.isArray(n)?n.reduce((t,o)=>{if(typeof o!="object"||o===null||!("text"in o))return t;const e=o.text;return t+(typeof e=="string"?e.length:0)},0):0}function k(n){return{...typeof n.prompt_tokens=="number"?{promptTokens:n.prompt_tokens}:{},...typeof n.completion_tokens=="number"?{completionTokens:n.completion_tokens}:{},...typeof n.total_tokens=="number"?{totalTokens:n.total_tokens}:{}}}export{kn as createToolCallingModelClient};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(e=process.env){return{enabled:o(e.LOTAGATE_CACHE_ENABLED,!0),modelCatalogTtlMs:r(e.LOTAGATE_MODEL_CACHE_TTL_SECONDS,300,1,86400)*1e3,maxEntryBytes:r(e.LOTAGATE_CACHE_MAX_ENTRY_BYTES,5*1024*1024,1024,50*1024*1024),maxTotalBytes:r(e.LOTAGATE_CACHE_MAX_BYTES,50*1024*1024,1*1024*1024,500*1024*1024)}}function o(e,t){return e===void 0?t:e.trim().toLowerCase()==="true"?!0:e.trim().toLowerCase()==="false"?!1:t}import{readBoundedEnvironmentInteger as r}from"../config/environment-values.js";export{n as resolveCachePolicy};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CacheStore, CacheWriteOptions } from '../../ports/cache-store.js';
|
|
2
|
+
import type { CachePolicy } from './cache-policy.js';
|
|
3
|
+
export declare class FileCacheStore implements CacheStore {
|
|
4
|
+
private readonly root;
|
|
5
|
+
private readonly policy;
|
|
6
|
+
private readonly now;
|
|
7
|
+
private prunePromise;
|
|
8
|
+
constructor(root: string, policy: CachePolicy, now?: () => number);
|
|
9
|
+
get<T>(namespace: string, key: string): Promise<T | undefined>;
|
|
10
|
+
set<T>(namespace: string, key: string, value: T, options: CacheWriteOptions): Promise<void>;
|
|
11
|
+
delete(namespace: string, key: string): Promise<void>;
|
|
12
|
+
clear(namespace?: string): Promise<void>;
|
|
13
|
+
prune(): Promise<void>;
|
|
14
|
+
private schedulePrune;
|
|
15
|
+
private namespacePath;
|
|
16
|
+
private filePath;
|
|
17
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import m from"node:crypto";import p from"node:fs";import a from"node:fs/promises";import c from"node:path";import{atomicWriteFile as y,withFileLock as w}from"../filesystem/atomic-file-store.js";import{isFileNotFound as u}from"../filesystem/fs-errors.js";import{readJsonFileBounded as l}from"../filesystem/bounded-json-reader.js";class v{root;policy;now;prunePromise;constructor(t,i,r=Date.now){this.root=t,this.policy=i,this.now=r;try{p.mkdirSync(t,{recursive:!0,mode:448})}catch{}}async get(t,i){if(!this.policy.enabled)return;const r=this.filePath(t,i);try{const e=await l(r,this.policy.maxEntryBytes);if(e.schemaVersion!==1||e.namespace!==t||e.keyHash!==f(t,i)||typeof e.expiresAt!="string")return;if(Date.parse(e.expiresAt)<=this.now()){await this.delete(t,i);return}return e.value}catch(e){u(e)||await this.delete(t,i).catch(()=>{});return}}async set(t,i,r,e){if(!this.policy.enabled||e.ttlMs<=0)return;const s={schemaVersion:1,namespace:t,keyHash:f(t,i),createdAt:new Date(this.now()).toISOString(),expiresAt:new Date(this.now()+e.ttlMs).toISOString(),value:r},n=`${JSON.stringify(s)}
|
|
2
|
+
`;if(Buffer.byteLength(n,"utf8")>this.policy.maxEntryBytes)return;const h=this.filePath(t,i);await w(h,()=>y(h,n)),this.schedulePrune()}async delete(t,i){await a.rm(this.filePath(t,i),{force:!0})}async clear(t){await a.rm(t===void 0?this.root:this.namespacePath(t),{recursive:!0,force:!0})}async prune(){if(!this.policy.enabled)return;const t=await d(this.root),i=[];for(const e of t)try{const s=await a.stat(e),n=await l(e,this.policy.maxEntryBytes);if(n.schemaVersion!==1||typeof n.expiresAt!="string"||Date.parse(n.expiresAt)<=this.now()){await a.rm(e,{force:!0});continue}i.push({filePath:e,size:s.size,modifiedAt:s.mtimeMs})}catch{await a.rm(e,{force:!0})}let r=i.reduce((e,s)=>e+s.size,0);for(const e of i.sort((s,n)=>s.modifiedAt-n.modifiedAt)){if(r<=this.policy.maxTotalBytes)break;await a.rm(e.filePath,{force:!0}),r-=e.size}}schedulePrune(){this.prunePromise===void 0&&(this.prunePromise=this.prune().catch(()=>{}).finally(()=>{this.prunePromise=void 0}))}namespacePath(t){return c.join(this.root,P(t))}filePath(t,i){return c.join(this.namespacePath(t),`${f(t,i)}.json`)}}function f(o,t){return m.createHash("sha256").update(`${o}\0${t}`).digest("hex")}function P(o){return Buffer.from(o,"utf8").toString("base64url")}async function d(o){try{const t=await a.readdir(o,{withFileTypes:!0}),i=[];for(const r of t){const e=c.join(o,r.name);r.isDirectory()?i.push(...await d(e)):r.isFile()&&r.name.endsWith(".json")&&i.push(e)}return i}catch(t){if(u(t))return[];throw t}}export{v as FileCacheStore};
|