codna 0.1.0__py3-none-any.whl
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.
- codna/__init__.py +8 -0
- codna/_wheel_guard.py +28 -0
- codna/admission_control.py +275 -0
- codna/agent-core/CLINE_FORK.md +55 -0
- codna/agent-core/CLINE_SDK_AZ_INTEGRATION_PLAN.md +191 -0
- codna/agent-core/CLINE_SDK_INTERFACE.md +655 -0
- codna/agent-core/CLINE_SDK_RESEARCH.md +104 -0
- codna/agent-core/package.json +12 -0
- codna/agent-core/run-server.mjs +87 -0
- codna/agent-core/run-server.stub.mjs +149 -0
- codna/agent-core/vendor/cline/.gitignore +3 -0
- codna/agent-core/vendor/cline/LICENSE +201 -0
- codna/agent-core/vendor/cline/NOTICE +24 -0
- codna/agent-core/vendor/cline/UPSTREAM_COMMIT.txt +1 -0
- codna/agent-core/vendor/cline/algenta/README.md +27 -0
- codna/agent-core/vendor/cline/algenta/acp-editor.ts +176 -0
- codna/agent-core/vendor/cline/algenta/adapter.ts +452 -0
- codna/agent-core/vendor/cline/algenta/algenta-plugin.ts +30 -0
- codna/agent-core/vendor/cline/algenta/artifacts.test.ts +133 -0
- codna/agent-core/vendor/cline/algenta/execution.test.ts +63 -0
- codna/agent-core/vendor/cline/algenta/fallback.test.ts +73 -0
- codna/agent-core/vendor/cline/algenta/fallback.ts +83 -0
- codna/agent-core/vendor/cline/algenta/fix-runner.ts +27 -0
- codna/agent-core/vendor/cline/algenta/http.test.ts +48 -0
- codna/agent-core/vendor/cline/algenta/mojo-gate.test.ts +76 -0
- codna/agent-core/vendor/cline/algenta/mojo-gate.ts +151 -0
- codna/agent-core/vendor/cline/algenta/policy.test.ts +260 -0
- codna/agent-core/vendor/cline/algenta/postbuild.sh +31 -0
- codna/agent-core/vendor/cline/algenta/proof-artifacts.test.ts +55 -0
- codna/agent-core/vendor/cline/algenta/proof-provider.ts +301 -0
- codna/agent-core/vendor/cline/algenta/proofs.ts +311 -0
- codna/agent-core/vendor/cline/algenta/provider-key.test.ts +197 -0
- codna/agent-core/vendor/cline/algenta/run-server.ts +645 -0
- codna/agent-core/vendor/cline/algenta/scheduled-agents.ts +430 -0
- codna/agent-core/vendor/cline/algenta/server/artifacts.ts +532 -0
- codna/agent-core/vendor/cline/algenta/server/contracts.ts +254 -0
- codna/agent-core/vendor/cline/algenta/server/execution.ts +284 -0
- codna/agent-core/vendor/cline/algenta/server/http.ts +146 -0
- codna/agent-core/vendor/cline/algenta/server/policy.ts +391 -0
- codna/agent-core/vendor/cline/algenta/server/state.ts +21 -0
- codna/agent-core/vendor/cline/algenta/server/utils.ts +508 -0
- codna/agent-core/vendor/cline/algenta/task-policy.ts +82 -0
- codna/agent-core/vendor/cline/algenta/telys-localize.test.ts +416 -0
- codna/agent-core/vendor/cline/algenta/telys-localize.ts +608 -0
- codna/agent-core/vendor/cline/algenta/telys-worker.test.ts +99 -0
- codna/agent-core/vendor/cline/algenta/telys-worker.ts +245 -0
- codna/agent-core/vendor/cline/algenta/tools.test.ts +59 -0
- codna/agent-core/vendor/cline/algenta/tools.ts +196 -0
- codna/agent-core/vendor/cline/algenta/write-scope.test.ts +26 -0
- codna/agent-core/vendor/cline/algenta/write-scope.ts +60 -0
- codna/agent-core/vendor/cline/biome.json +19 -0
- codna/agent-core/vendor/cline/bun.lock +1179 -0
- codna/agent-core/vendor/cline/package.json +60 -0
- codna/agent-core/vendor/cline/sdk/.cline/rules/worktree_dependency_hygiene.md +15 -0
- codna/agent-core/vendor/cline/sdk/.cline/skills/plugin.md +892 -0
- codna/agent-core/vendor/cline/sdk/.gitignore +69 -0
- codna/agent-core/vendor/cline/sdk/AGENTS.md +109 -0
- codna/agent-core/vendor/cline/sdk/ARCHITECTURE.md +525 -0
- codna/agent-core/vendor/cline/sdk/CHANGELOG.md +32 -0
- codna/agent-core/vendor/cline/sdk/CONTRIBUTING.md +196 -0
- codna/agent-core/vendor/cline/sdk/README.md +273 -0
- codna/agent-core/vendor/cline/sdk/biome.json +140 -0
- codna/agent-core/vendor/cline/sdk/examples/README.md +196 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/README.md +419 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/changelog-generator.cron.md +37 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/code-style-audit.cron.md +47 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/daily-code-review.cron.md +28 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/dead-code-finder.cron.md +58 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/dependency-check.cron.md +35 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/documentation-check.cron.md +66 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/events/local-manual-test.event.md +28 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/events/local-plugin-event.event.md +20 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-changelog-check.event.md +42 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-review.event.md +32 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-test-coverage.event.md +55 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/performance-baseline.cron.md +45 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/test-coverage-report.cron.md +41 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/type-check-strict.cron.md +44 -0
- codna/agent-core/vendor/cline/sdk/examples/cron/weekly-metrics-summary.cron.md +67 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.py +62 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.sh +17 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.ts +86 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.py +34 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.sh +16 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.ts +66 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_BlockDestructive.sh +25 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_InjectContext.py +116 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_InjectFileContext.sh +57 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_ModifyInput.ts +125 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_RequireReview.sh +19 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/README.md +435 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/SessionShutdown.sh +14 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/TaskComplete.sh +27 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/TaskStart.sh +14 -0
- codna/agent-core/vendor/cline/sdk/examples/hooks/custom-compaction-hook.example.ts +246 -0
- codna/agent-core/vendor/cline/sdk/examples/package.json +19 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/README.md +203 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/README.md +122 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/anvil.md +16 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/inquisitor.md +18 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/oracle.md +18 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/phantom.md +17 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/index.ts +831 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/package.json +39 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/api-design.md +63 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/code-review.md +61 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/debugging.md +62 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/documentation.md +83 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/migration.md +77 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/refactoring.md +58 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/test-generation.md +76 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/tsconfig.json +4 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/automation-events.ts +91 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/background-terminal.ts +444 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/custom-compaction.ts +225 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/env-blocker.ts +118 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/gitignore-read-files-guard.ts +270 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/mac-notify.ts +67 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/openrouter-provider.ts +144 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/typescript-lsp/README.md +106 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/typescript-lsp/index.ts +298 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/weather-metrics.ts +151 -0
- codna/agent-core/vendor/cline/sdk/examples/plugins/web-search.ts +324 -0
- codna/agent-core/vendor/cline/sdk/examples/tsconfig.json +58 -0
- codna/agent-core/vendor/cline/sdk/packages/README.md +44 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/README.md +278 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/bun.mts +29 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/package.json +45 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.provider-form.test.ts +210 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.test.ts +1427 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.ts +1558 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/src/index.ts +57 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.build.json +13 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.dev.json +13 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.json +9 -0
- codna/agent-core/vendor/cline/sdk/packages/agents/vitest.config.ts +10 -0
- codna/agent-core/vendor/cline/sdk/packages/core/README.md +110 -0
- codna/agent-core/vendor/cline/sdk/packages/core/bun.mts +75 -0
- codna/agent-core/vendor/cline/sdk/packages/core/docs/messages-contract-v1.md +148 -0
- codna/agent-core/vendor/cline/sdk/packages/core/fixtures/messages/success.messages.json +72 -0
- codna/agent-core/vendor/cline/sdk/packages/core/package.json +80 -0
- codna/agent-core/vendor/cline/sdk/packages/core/scripts/telemetry-smoke-host.ts +204 -0
- codna/agent-core/vendor/cline/sdk/packages/core/scripts/telemetry-smoke.ts +431 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/ClineCore.test.ts +607 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/ClineCore.ts +566 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/cline-account-service.test.ts +217 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/cline-account-service.ts +338 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/featurebase-token.test.ts +175 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/index.ts +24 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/rpc.test.ts +63 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/rpc.ts +185 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/account/types.ts +108 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/bounded-ttl-cache.test.ts +38 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/bounded-ttl-cache.ts +53 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/client.test.ts +93 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/client.ts +50 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/cline.test.ts +233 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/cline.ts +722 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/codex.test.ts +170 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/codex.ts +491 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/oca.test.ts +340 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/oca.ts +588 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/server.test.ts +319 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/server.ts +265 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/types.ts +110 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/utils.test.ts +128 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/auth/utils.ts +247 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/automation.ts +250 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/runtime-services.ts +75 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/start-input.ts +91 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/telemetry.ts +39 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/types.ts +274 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/cron-event-ingress.test.ts +255 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/cron-event-ingress.ts +357 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/index.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/index.ts +7 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/reports/cron-report-writer.ts +153 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/reports/index.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-materializer.test.ts +152 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-materializer.ts +100 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-runner.test.ts +342 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-runner.ts +547 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/index.ts +3 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/resource-limiter.ts +46 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/index.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/scheduler.test.ts +16 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/scheduler.ts +373 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/cron-service.ts +163 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/index.ts +3 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-command-service.ts +198 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-service.test.ts +213 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-service.ts +416 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-reconciler.test.ts +138 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-reconciler.ts +241 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-spec-parser.test.ts +198 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-spec-parser.ts +489 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-watcher.test.ts +87 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-watcher.ts +102 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/index.ts +3 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/cron-schema.ts +127 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/index.ts +2 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/sqlite-cron-store.test.ts +354 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/sqlite-cron-store.ts +1552 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/index.ts +46 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/runtime-commands.test.ts +185 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/runtime-commands.ts +92 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/skill-frontmatter-toggle.test.ts +109 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/skill-frontmatter-toggle.ts +83 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/unified-config-file-watcher.test.ts +193 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/unified-config-file-watcher.ts +496 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-config-loader.test.ts +424 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-config-loader.ts +628 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-plugin.ts +277 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-service.ts +128 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/agentic-compaction.ts +153 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/basic-compaction.ts +419 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction-shared.ts +511 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.live.test.ts +346 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.test.ts +1729 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.ts +430 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/index.ts +19 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/client.ts +579 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/config-loader.test.ts +402 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/config-loader.ts +446 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/index.ts +57 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/manager.test.ts +105 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/manager.ts +260 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/name-transform.ts +33 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/oauth.test.ts +79 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/oauth.ts +401 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/policies.ts +47 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/tools.ts +47 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/types.ts +135 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-config-loader.test.ts +480 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-config-loader.ts +313 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-load-report.ts +20 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-loader.test.ts +473 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-loader.ts +214 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-module-import.ts +682 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox-bootstrap.ts +781 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox.test.ts +810 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox.ts +640 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-targeting.ts +32 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/constants.ts +37 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/definitions.test.ts +1408 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/definitions.ts +863 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch-parser.ts +520 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch.test.ts +147 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch.ts +348 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/bash.test.ts +108 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/bash.ts +211 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/editor.test.ts +113 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/editor.ts +220 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/file-read.test.ts +167 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/file-read.ts +140 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/index.ts +87 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/search.ts +471 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/web-fetch.ts +259 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/helpers.ts +126 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/index.ts +183 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/model-tool-routing.test.ts +86 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/model-tool-routing.ts +134 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/presets.test.ts +72 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/presets.ts +190 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/runtime.test.ts +74 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/runtime.ts +261 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/schemas.ts +345 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/delegated-agent.ts +136 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/index.ts +5 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/multi-agent.lifecycle.test.ts +649 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/multi-agent.ts +1845 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/projections.ts +283 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/runtime.ts +54 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/spawn-agent-tool.test.ts +378 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/spawn-agent-tool.ts +203 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/subagent-prompts.ts +41 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/team-tools.test.ts +991 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/team-tools.ts +912 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/types.ts +358 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/checkpoint-hooks.test.ts +276 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/checkpoint-hooks.ts +291 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-extension.ts +15 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-config.test.ts +17 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-config.ts +117 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-hooks.test.ts +593 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-hooks.ts +1140 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/index.ts +34 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/subprocess-runner.ts +196 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/subprocess.ts +543 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/connect.test.ts +74 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/connect.ts +187 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/index.test.ts +994 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/index.ts +1087 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/session-client.test.ts +310 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/session-client.ts +734 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/ui-client.ts +128 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/entry.ts +129 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/index.test.ts +357 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/index.ts +345 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/runtime-handlers.ts +144 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/start-shared-server.ts +61 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/defaults.test.ts +122 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/defaults.ts +70 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/index.test.ts +91 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/index.ts +260 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/workspace.ts +19 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/index.ts +37 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/hub-runtime-host.test.ts +1485 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/hub-runtime-host.ts +1948 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/remote-runtime-host.ts +27 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/boundary.test.ts +1142 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/browser-websocket.test.ts +173 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/browser-websocket.ts +295 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/command-transport.ts +14 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/fetch-wiring.test.ts +102 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/approval-handlers.ts +133 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/capability-handlers.ts +278 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/client-handlers.ts +86 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/context.ts +211 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/run-handlers.test.ts +186 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/run-handlers.ts +337 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/session-event-projector.ts +355 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/session-handlers.ts +842 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-capability-tool-executors.test.ts +215 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-client-contributions.ts +687 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-notifications.ts +94 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-schedule-events.ts +20 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-logging.ts +69 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-options.ts +66 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-transport.ts +593 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-session-records.ts +99 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-websocket-server.ts +562 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/index.test.ts +358 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/index.ts +4 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/native-transport.ts +31 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/notification.test.ts +21 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/ui-events.test.ts +232 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/hub/settings.test.ts +143 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/index.ts +789 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/remote-config/integration.ts +133 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/index.ts +2 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/normalize-runtime-capabilities.ts +33 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/runtime-capabilities.ts +9 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-message-codec.test.ts +171 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-message-codec.ts +301 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-runtime-config-builder.test.ts +268 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-runtime-config-builder.ts +181 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/history.test.ts +573 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/history.ts +516 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/host.test.ts +297 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/host.ts +248 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/agent-event-bridge.ts +231 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/session-record.ts +52 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/session-service-invoker.ts +40 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/spawn-tool.ts +162 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/user-files.ts +18 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.e2e.test.ts +576 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.test.ts +5167 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.ts +1755 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host-support.test.ts +55 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host-support.ts +140 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host.ts +323 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/index.ts +24 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.team-persistence.test.ts +290 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.test.ts +887 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.ts +637 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-event-adapter.test.ts +901 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-event-adapter.ts +426 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-oauth-token-manager.test.ts +137 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-oauth-token-manager.ts +269 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-parity.test.ts +165 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime-orchestrator.test.ts +1900 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime-orchestrator.ts +1334 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime.ts +73 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/user-input-builder.ts +159 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/loop-detection.ts +162 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/mistake-tracker.ts +221 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/rules.test.ts +22 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/rules.ts +49 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/subprocess-sandbox.test.ts +81 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/subprocess-sandbox.ts +333 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/tool-approval.ts +102 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/turn-queue/pending-prompt-service.test.ts +168 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/turn-queue/pending-prompt-service.ts +381 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/agent-events.ts +321 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/config.ts +5 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/global-settings.test.ts +352 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/global-settings.ts +324 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/apihandler-agent-model-adapter.test.ts +229 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/apihandler-agent-model-adapter.ts +170 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/cline-recommended-models.ts +168 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/configured-provider-registry.ts +193 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/handler-factory.test.ts +288 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/handler-factory.ts +197 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-defaults.test.ts +260 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-defaults.ts +887 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-settings.test.ts +26 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-settings.ts +322 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-config.ts +43 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-registry.ts +172 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-types.ts +121 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.startup.test.ts +249 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.test.ts +543 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.ts +470 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-tools.ts +230 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-uninstall.test.ts +165 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-uninstall.ts +425 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-registry.ts +468 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-service.test.ts +1358 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-service.ts +948 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/model-source.ts +105 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/provider-config-fields.test.ts +137 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/provider-config-fields.ts +211 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-artifacts.ts +138 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-data.test.ts +307 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-data.ts +405 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-telemetry.ts +89 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/artifact-store.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/file-team-store.ts +250 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/index.ts +11 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-legacy-migration.test.ts +656 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-legacy-migration.ts +798 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-manager.test.ts +354 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-manager.ts +194 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/session-store.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/sqlite-session-store.ts +272 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/sqlite-team-store.ts +537 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/team-store.ts +36 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/ITelemetryAdapter.ts +94 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryAdapter.test.ts +157 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryAdapter.ts +348 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryProvider.test.ts +401 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryProvider.ts +545 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryLoggerSink.test.ts +42 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryLoggerSink.ts +121 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryService.test.ts +134 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryService.ts +139 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/core-events.test.ts +696 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/core-events.ts +680 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/distinct-id.test.ts +57 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/distinct-id.ts +69 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/index.ts +22 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/tool-context.ts +15 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/usage.test.ts +75 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/usage.ts +87 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/file-indexer.test.ts +156 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/file-indexer.ts +362 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/index.ts +7 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/mention-enricher.test.ts +106 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/mention-enricher.ts +122 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-manager.ts +100 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-manifest.ts +129 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-telemetry.test.ts +166 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-telemetry.ts +70 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/checkpoint-restore.test.ts +154 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/checkpoint-restore.ts +189 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/index.ts +32 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-graph.ts +92 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-manifest.ts +29 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-row.ts +199 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/file-session-service.ts +284 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/message-builder.test.ts +375 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/message-builder.ts +976 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/persistence-service.test.ts +553 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/persistence-service.ts +582 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/session-service.team-persistence.test.ts +48 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/session-service.ts +326 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-snapshot.ts +208 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-versioning-service.test.ts +195 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-versioning-service.ts +245 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/conversation-store.ts +77 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/session-manifest-store.ts +160 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/team-persistence-store.ts +176 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/index.ts +12 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/team-child-session-manager.ts +415 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/team-session-coordinator.ts +240 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/settings/index.ts +15 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/settings/settings-service.test.ts +303 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/settings/settings-service.ts +317 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/settings/types.ts +67 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/chat-schema.ts +90 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/common.ts +54 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/config.ts +220 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/events.ts +88 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/index.ts +26 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/provider-settings.ts +56 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/session.ts +134 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/sessions.ts +45 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types/storage.ts +56 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/types.ts +184 -0
- codna/agent-core/vendor/cline/sdk/packages/core/src/version.ts +3 -0
- codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.build.json +18 -0
- codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.dev.json +8 -0
- codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.json +24 -0
- codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.smoke.json +18 -0
- codna/agent-core/vendor/cline/sdk/packages/core/vitest.config.ts +9 -0
- codna/agent-core/vendor/cline/sdk/packages/core/vitest.e2e.config.ts +10 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/AGENTS.md +39 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/README.md +227 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/bun.mts +49 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/fixtures/usage.json +308 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/package.json +73 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/scripts/fix-esm-imports.ts +109 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/scripts/generate-models.ts +136 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/scripts/models/generate-models-dev.ts +24 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/scripts/tsconfig.json +14 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/README.md +165 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog-live.test.ts +275 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog-live.ts +186 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog.generated-access.ts +41 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog.generated.ts +22756 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/types.ts +97 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/index.browser.ts +33 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/index.ts +74 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/models.ts +31 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ai-sdk.test.ts +371 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ai-sdk.ts +1012 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/async.ts +7 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/billing.test.ts +28 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/billing.ts +23 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins-runtime.ts +101 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins.test.ts +137 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins.ts +1084 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/compat.test.ts +562 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/compat.ts +669 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/config.ts +429 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/factory-registry.ts +161 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/format.test.ts +43 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/format.ts +70 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/gateway.test.ts +3575 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/gateway.ts +310 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/handler.ts +91 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/http.ts +121 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ids.test.ts +143 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ids.ts +95 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/messages.ts +17 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/middleware/split-tool-images.test.ts +504 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/middleware/split-tool-images.ts +293 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/model-facts.ts +270 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/model-registry.ts +122 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/openai-codex-models.ts +35 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/provider-keys.ts +153 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/registry.ts +279 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/anthropic-compatible.test.ts +503 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/anthropic-compatible.ts +602 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/generic-compatible.ts +151 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/glm-thinking.ts +106 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/minimax-thinking.ts +78 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-option-rules.ts +546 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options-types.ts +92 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options.test.ts +1872 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options.ts +119 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/reasoning-codecs.ts +40 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/utils.ts +47 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/stream.ts +117 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/types.ts +77 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/anthropic.test.ts +90 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/anthropic.ts +39 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/bedrock.test.ts +201 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/bedrock.ts +171 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/community.test.ts +55 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/community.ts +207 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/google.ts +61 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/minimax-thinking.test.ts +69 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/minimax-thinking.ts +104 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/mistral.ts +31 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/openai-compatible.ts +49 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/openai.ts +24 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/types.ts +141 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/vertex.test.ts +125 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/vertex.ts +56 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers.browser.ts +5 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/providers.ts +106 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/services/langfuse-telemetry.test.ts +90 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/services/langfuse-telemetry.ts +187 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.example.json +254 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.openai-codex.example.json +19 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.openai-codex.reasoning.example.json +22 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.reasoning-disabled.example.json +423 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.reasoning.example.json +349 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.tools.example.json +199 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-config.test.ts +98 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-config.ts +193 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-minimax-routing.test.ts +264 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-reasoning.test.ts +290 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-runner.ts +47 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-tools.test.ts +265 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live.test.ts +350 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/README.md +31 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/anthropic-claude-sonnet-4-6.json +12 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/cline-anthropic-sonnet.json +12 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/openai-codex-gpt-5-4.json +11 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/openai-compatible-deepseek-v4-pro.json +12 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr.test.ts +450 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.build.json +19 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.dev.json +12 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.json +11 -0
- codna/agent-core/vendor/cline/sdk/packages/llms/vitest.config.ts +24 -0
- codna/agent-core/vendor/cline/sdk/packages/sdk/bun.mts +18 -0
- codna/agent-core/vendor/cline/sdk/packages/sdk/package.json +37 -0
- codna/agent-core/vendor/cline/sdk/packages/sdk/src/index.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/sdk/tsconfig.build.json +12 -0
- codna/agent-core/vendor/cline/sdk/packages/sdk/tsconfig.json +11 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/README.md +47 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/bun.mts +70 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/package.json +63 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/agent.ts +561 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/agents/index.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/agents/types.ts +1055 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/index.ts +31 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/schemas.ts +99 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/types.ts +187 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/connectors/events.ts +73 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/connectors/options.ts +190 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/cron/cron-spec-types.ts +104 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/cron/index.ts +13 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/db/index.ts +14 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/db/sqlite-db.test.ts +155 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/db/sqlite-db.ts +381 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/dispose.ts +31 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/context.ts +92 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/contribution-registry.test.ts +156 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/contribution-registry.ts +524 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/plugin.ts +1 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/hooks/contracts.ts +9 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/hooks/events.ts +327 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/hub.ts +723 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/index.browser.ts +355 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/index.ts +405 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/ai-sdk-format.test.ts +898 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/ai-sdk-format.ts +389 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/gateway.ts +202 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/messages.ts +168 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/model-info.ts +94 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/reasoning-effort.ts +73 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/requests.ts +12 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/tokens.ts +12 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/tools.ts +96 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/logging/logger.ts +45 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/error.ts +18 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/headers/utils.ts +28 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/json.test.ts +14 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/json.ts +86 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/shell.test.ts +46 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/shell.ts +32 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/string.ts +29 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/time.ts +39 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/zod.ts +23 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/cline.ts +117 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/format.test.ts +39 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/format.ts +99 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/system.ts +64 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/artifact-store.ts +70 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/blob-storage.ts +416 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/bundle.ts +181 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/constants.ts +5 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/index.ts +9 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/materializer.ts +165 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/paths.ts +33 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/runtime.test.ts +102 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/runtime.ts +236 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/schema.test.ts +977 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/schema.ts +262 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/telemetry.ts +124 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/index.ts +5 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/runtime.ts +429 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/team-progress.ts +71 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/build-env.test.ts +115 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/build-env.ts +183 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/cline-environment.test.ts +106 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/cline-environment.ts +88 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/hub-daemon-env.test.ts +20 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/hub-daemon-env.ts +7 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry-config.ts +58 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry.test.ts +66 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry.ts +295 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/hook-context.ts +45 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/index.ts +6 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/records.ts +41 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/runtime-config.ts +69 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/runtime-env.ts +8 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/session/workspace.ts +45 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/index.ts +47 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/path-resolution.test.ts +63 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/path-resolution.ts +114 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.home-dir.test.ts +61 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.test.ts +180 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.ts +588 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/team/index.ts +2 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/team/schema.ts +452 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/team/types.ts +235 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/tools/create.test.ts +201 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/tools/create.ts +130 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/types/auth.ts +41 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/types/index.ts +2 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/types/vcr.ts +14 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/vcr.test.ts +229 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/src/vcr.ts +900 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/tsconfig.build.json +7 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/tsconfig.json +9 -0
- codna/agent-core/vendor/cline/sdk/packages/shared/vitest.config.ts +9 -0
- codna/agent-core/vendor/cline/sdk/packages/tsconfig.base.json +22 -0
- codna/agent-core/vendor/cline/sdk/scripts/check-publish.ts +351 -0
- codna/agent-core/vendor/cline/sdk/scripts/ci-node-smoke.ts +155 -0
- codna/agent-core/vendor/cline/sdk/scripts/clean.ts +91 -0
- codna/agent-core/vendor/cline/sdk/scripts/release.ts +548 -0
- codna/agent-core/vendor/cline/sdk/scripts/run-vendored-tests.sh +44 -0
- codna/agent-core/vendor/cline/sdk/scripts/version.ts +120 -0
- codna/agent-core/vendor/cline/sdk/tsconfig.json +53 -0
- codna/agent_core_runtime.py +816 -0
- codna/cli.py +921 -0
- codna/cli_errors.py +50 -0
- codna/cline_agent.py +90 -0
- codna/codeunits.py +221 -0
- codna/codeunits_treesitter.py +148 -0
- codna/doctor.py +212 -0
- codna/doctor_output.py +61 -0
- codna/engine.py +149 -0
- codna/evasion.py +192 -0
- codna/evidence.py +163 -0
- codna/findings.py +272 -0
- codna/gate.py +132 -0
- codna/gitpush.py +57 -0
- codna/local_client.py +932 -0
- codna/local_mojo_daemon.py +568 -0
- codna/local_mojo_pool.py +861 -0
- codna/local_repository_shims.py +419 -0
- codna/local_runtime.py +650 -0
- codna/localfix.py +121 -0
- codna/manifest.py +164 -0
- codna/mcp_server.py +155 -0
- codna/memory.py +885 -0
- codna/netjail.py +68 -0
- codna/packaged_agent_runner.py +354 -0
- codna/packaged_git.py +378 -0
- codna/packaged_repository_advanced.py +618 -0
- codna/packaged_repository_backend.py +887 -0
- codna/patchgen.py +115 -0
- codna/policy.py +85 -0
- codna/refengine.py +132 -0
- codna/repo_backend.py +78 -0
- codna/repository_artifacts.py +291 -0
- codna/runtime/__init__.py +17 -0
- codna/runtime/config.py +394 -0
- codna/runtime/health.py +130 -0
- codna/runtime/local_stack.py +978 -0
- codna/runtime/ports.py +137 -0
- codna/runtime/processes.py +199 -0
- codna/runtime_config.py +94 -0
- codna/sandbox.py +111 -0
- codna/sarif.py +610 -0
- codna/secure.py +250 -0
- codna/supervisor.py +108 -0
- codna/worker.py +161 -0
- codna/worktree.py +73 -0
- codna/writer.py +169 -0
- codna-0.1.0.dist-info/METADATA +153 -0
- codna-0.1.0.dist-info/RECORD +761 -0
- codna-0.1.0.dist-info/WHEEL +5 -0
- codna-0.1.0.dist-info/entry_points.txt +2 -0
- codna-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-session `SessionRuntime` orchestrator.
|
|
3
|
+
*
|
|
4
|
+
* Owns all cross-turn state for one logical agent session:
|
|
5
|
+
*
|
|
6
|
+
* - `ConversationStore` — message transcript + session-started gate
|
|
7
|
+
* - `MistakeTracker` — per-session consecutive-mistake counter
|
|
8
|
+
* - `LoopDetectionTracker` — per-session repeated-tool-call detector
|
|
9
|
+
* - `MessageBuilder` — provider-message assembly cache
|
|
10
|
+
* - `AgentRuntimeHooks` — runtime-native hooks from config/extensions
|
|
11
|
+
* - `RuntimeEventAdapter` — per-run stateful `AgentRuntimeEvent`
|
|
12
|
+
* → legacy `AgentEvent` translator
|
|
13
|
+
* - listener registry — host subscribers see legacy `AgentEvent`s
|
|
14
|
+
* - pending tool set, abort — per-run lifecycle housekeeping
|
|
15
|
+
*
|
|
16
|
+
* A fresh `AgentRuntime` is instantiated per run via
|
|
17
|
+
* `createAgentRuntime(createAgentRuntimeConfig({...}))`. All
|
|
18
|
+
* session-level state outlives any one `AgentRuntime`, making
|
|
19
|
+
* OAuth-retry and run replay feasible.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import type { AgentRuntime } from "@cline/agents";
|
|
23
|
+
import { createAgentRuntime } from "@cline/agents";
|
|
24
|
+
import {
|
|
25
|
+
type AgentConfig,
|
|
26
|
+
type AgentEvent,
|
|
27
|
+
type AgentExtension,
|
|
28
|
+
type AgentExtensionRegistry,
|
|
29
|
+
type AgentExtensionRule,
|
|
30
|
+
type AgentFinishReason,
|
|
31
|
+
type AgentMessage,
|
|
32
|
+
type AgentResult,
|
|
33
|
+
type AgentRunResult,
|
|
34
|
+
type AgentRuntimeEvent,
|
|
35
|
+
type AgentRuntimeHooks,
|
|
36
|
+
type AgentRuntimePrepareTurnContext,
|
|
37
|
+
type AgentTool,
|
|
38
|
+
type BasicLogger,
|
|
39
|
+
type ContributionRegistry,
|
|
40
|
+
createContributionRegistry,
|
|
41
|
+
type ITelemetryService,
|
|
42
|
+
type LegacyAgentUsage,
|
|
43
|
+
type LoopDetectionConfig,
|
|
44
|
+
type Message,
|
|
45
|
+
type MessageWithMetadata,
|
|
46
|
+
type ModelInfo,
|
|
47
|
+
type ToolCallRecord,
|
|
48
|
+
} from "@cline/shared";
|
|
49
|
+
import {
|
|
50
|
+
createAgentModelFromConfig,
|
|
51
|
+
resolveKnownModelsFromConfig,
|
|
52
|
+
} from "../../services/llms/handler-factory";
|
|
53
|
+
import { CLINE_INTERNAL_TELEMETRY_METADATA_KEY } from "../../services/telemetry/tool-context";
|
|
54
|
+
import { MessageBuilder } from "../../session/services/message-builder";
|
|
55
|
+
import { ConversationStore } from "../../session/stores/conversation-store";
|
|
56
|
+
import {
|
|
57
|
+
agentMessagesToMessages,
|
|
58
|
+
agentMessagesToMessagesWithMetadata,
|
|
59
|
+
messagesToAgentMessages,
|
|
60
|
+
} from "../config/agent-message-codec";
|
|
61
|
+
import { createAgentRuntimeConfig } from "../config/agent-runtime-config-builder";
|
|
62
|
+
import { LoopDetectionTracker } from "../safety/loop-detection";
|
|
63
|
+
import { MistakeTracker } from "../safety/mistake-tracker";
|
|
64
|
+
import { RuntimeEventAdapter } from "./runtime-event-adapter";
|
|
65
|
+
|
|
66
|
+
function formatToolResultError(output: unknown): string {
|
|
67
|
+
if (typeof output === "string") {
|
|
68
|
+
return output;
|
|
69
|
+
}
|
|
70
|
+
if (output instanceof Error) {
|
|
71
|
+
return output.message;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
return JSON.stringify(output);
|
|
75
|
+
} catch {
|
|
76
|
+
return String(output);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async function resolveRuleContent(
|
|
81
|
+
rule: AgentExtensionRule,
|
|
82
|
+
): Promise<string | undefined> {
|
|
83
|
+
const content =
|
|
84
|
+
typeof rule.content === "function" ? await rule.content() : rule.content;
|
|
85
|
+
const trimmed = content.trim();
|
|
86
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function mergeSystemPromptRules(
|
|
90
|
+
systemPrompt: string,
|
|
91
|
+
rules: ReadonlyArray<string>,
|
|
92
|
+
): string {
|
|
93
|
+
const base = systemPrompt.trim();
|
|
94
|
+
const additional = rules
|
|
95
|
+
.map((rule) => rule.trim())
|
|
96
|
+
.filter(Boolean)
|
|
97
|
+
.join("\n\n");
|
|
98
|
+
if (base && additional) {
|
|
99
|
+
return `${base}\n\n${additional}`;
|
|
100
|
+
}
|
|
101
|
+
return base || additional;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function mergeRuntimeHooks(
|
|
105
|
+
layers: Array<Partial<AgentRuntimeHooks> | undefined>,
|
|
106
|
+
): Partial<AgentRuntimeHooks> {
|
|
107
|
+
const hooks = layers.filter(
|
|
108
|
+
(layer): layer is Partial<AgentRuntimeHooks> => layer !== undefined,
|
|
109
|
+
);
|
|
110
|
+
if (hooks.length === 0) {
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
beforeRun: async (ctx) => {
|
|
116
|
+
for (const hook of hooks) {
|
|
117
|
+
const result = await hook.beforeRun?.(ctx);
|
|
118
|
+
if (result?.stop) return result;
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
},
|
|
122
|
+
afterRun: async (ctx) => {
|
|
123
|
+
for (const hook of hooks) {
|
|
124
|
+
await hook.afterRun?.(ctx);
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
beforeModel: async (ctx) => {
|
|
128
|
+
let request = ctx.request;
|
|
129
|
+
let aggregate:
|
|
130
|
+
| Awaited<ReturnType<NonNullable<AgentRuntimeHooks["beforeModel"]>>>
|
|
131
|
+
| undefined;
|
|
132
|
+
for (const hook of hooks) {
|
|
133
|
+
const result = await hook.beforeModel?.({ ...ctx, request });
|
|
134
|
+
if (!result) continue;
|
|
135
|
+
if (result.stop) return result;
|
|
136
|
+
aggregate = {
|
|
137
|
+
...aggregate,
|
|
138
|
+
...result,
|
|
139
|
+
options: {
|
|
140
|
+
...(aggregate?.options ?? {}),
|
|
141
|
+
...(result.options ?? {}),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
request = {
|
|
145
|
+
...request,
|
|
146
|
+
...(result.messages ? { messages: result.messages } : {}),
|
|
147
|
+
...(result.tools ? { tools: result.tools } : {}),
|
|
148
|
+
...(result.options
|
|
149
|
+
? { options: { ...(request.options ?? {}), ...result.options } }
|
|
150
|
+
: {}),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return aggregate;
|
|
154
|
+
},
|
|
155
|
+
afterModel: async (ctx) => {
|
|
156
|
+
for (const hook of hooks) {
|
|
157
|
+
const result = await hook.afterModel?.(ctx);
|
|
158
|
+
if (result?.stop) return result;
|
|
159
|
+
}
|
|
160
|
+
return undefined;
|
|
161
|
+
},
|
|
162
|
+
beforeTool: async (ctx) => {
|
|
163
|
+
let input = ctx.input;
|
|
164
|
+
let aggregate:
|
|
165
|
+
| Awaited<ReturnType<NonNullable<AgentRuntimeHooks["beforeTool"]>>>
|
|
166
|
+
| undefined;
|
|
167
|
+
for (const hook of hooks) {
|
|
168
|
+
const result = await hook.beforeTool?.({ ...ctx, input });
|
|
169
|
+
if (!result) continue;
|
|
170
|
+
if (result.stop || result.skip) return result;
|
|
171
|
+
aggregate = { ...aggregate, ...result };
|
|
172
|
+
if (Object.hasOwn(result, "input")) {
|
|
173
|
+
input = result.input;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return aggregate;
|
|
177
|
+
},
|
|
178
|
+
afterTool: async (ctx) => {
|
|
179
|
+
let result = ctx.result;
|
|
180
|
+
let aggregate:
|
|
181
|
+
| Awaited<ReturnType<NonNullable<AgentRuntimeHooks["afterTool"]>>>
|
|
182
|
+
| undefined;
|
|
183
|
+
for (const hook of hooks) {
|
|
184
|
+
const next = await hook.afterTool?.({ ...ctx, result });
|
|
185
|
+
if (!next) continue;
|
|
186
|
+
if (next.stop) return next;
|
|
187
|
+
aggregate = { ...aggregate, ...next };
|
|
188
|
+
if (next.result) {
|
|
189
|
+
result = next.result;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return aggregate;
|
|
193
|
+
},
|
|
194
|
+
onEvent: async (event) => {
|
|
195
|
+
for (const hook of hooks) {
|
|
196
|
+
await hook.onEvent?.(event);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// =============================================================================
|
|
203
|
+
// Public types
|
|
204
|
+
// =============================================================================
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Listener invoked for every legacy `AgentEvent` produced by the
|
|
208
|
+
* session runtime. Use `subscribeEvents(listener)` — it returns an
|
|
209
|
+
* `unsubscribe` function.
|
|
210
|
+
*/
|
|
211
|
+
export type SessionEventListener = (event: AgentEvent) => void;
|
|
212
|
+
|
|
213
|
+
/** Subset of host-side deps needed by the session orchestrator. */
|
|
214
|
+
export interface SessionRuntimeOrchestratorDeps {
|
|
215
|
+
readonly logger?: BasicLogger;
|
|
216
|
+
readonly telemetry?: ITelemetryService;
|
|
217
|
+
/**
|
|
218
|
+
* Test hook: override the `AgentRuntime` factory. Production
|
|
219
|
+
* callers leave this undefined and get the real `createAgentRuntime`.
|
|
220
|
+
*/
|
|
221
|
+
readonly createAgentRuntimeImpl?: (
|
|
222
|
+
config: Parameters<typeof createAgentRuntime>[0],
|
|
223
|
+
) => AgentRuntime;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Connection overrides applied via `updateConnection`. */
|
|
227
|
+
export interface ConnectionOverrides {
|
|
228
|
+
providerId?: string;
|
|
229
|
+
modelId?: string;
|
|
230
|
+
apiKey?: string;
|
|
231
|
+
baseUrl?: string;
|
|
232
|
+
headers?: Record<string, string>;
|
|
233
|
+
providerConfig?: unknown;
|
|
234
|
+
reasoningEffort?: AgentConfig["reasoningEffort"];
|
|
235
|
+
thinking?: boolean;
|
|
236
|
+
thinkingBudgetTokens?: number;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// =============================================================================
|
|
240
|
+
// SessionRuntime orchestrator
|
|
241
|
+
// =============================================================================
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Per-session orchestrator. Construct once per agent session; call
|
|
245
|
+
* `run` / `continue` repeatedly. The class matches the subset of
|
|
246
|
+
* runtime-facing session surface.
|
|
247
|
+
*/
|
|
248
|
+
export class SessionRuntime {
|
|
249
|
+
private config: AgentConfig;
|
|
250
|
+
private readonly agentId: string;
|
|
251
|
+
private readonly parentAgentId?: string;
|
|
252
|
+
private readonly logger?: BasicLogger;
|
|
253
|
+
// Reserved for §3.4.4 telemetry parity (not yet consumed — §3.4.4
|
|
254
|
+
// listed as explicitly deferred until telemetry wiring is added).
|
|
255
|
+
// Typed as `readonly` to preserve the field slot for future use
|
|
256
|
+
// without re-touching the constructor.
|
|
257
|
+
readonly telemetry?: ITelemetryService;
|
|
258
|
+
private readonly conversation: ConversationStore;
|
|
259
|
+
private readonly mistakeTracker: MistakeTracker;
|
|
260
|
+
private readonly loopTracker: LoopDetectionTracker;
|
|
261
|
+
/**
|
|
262
|
+
* True when `execution.loopDetection === false` at construction
|
|
263
|
+
* time. Loop inspection is skipped entirely — the tracker still
|
|
264
|
+
* exists for API compatibility but is never fed.
|
|
265
|
+
*/
|
|
266
|
+
private readonly loopDetectionDisabled: boolean;
|
|
267
|
+
// Host-owned provider request preparation. This runs immediately
|
|
268
|
+
// before the model call so every loop iteration sees extension
|
|
269
|
+
// message builders and API-safe normalization.
|
|
270
|
+
readonly messageBuilder: MessageBuilder;
|
|
271
|
+
/**
|
|
272
|
+
* Contribution registry that hosts extension-provided tools,
|
|
273
|
+
* commands, message builders, and providers. Lazily initialized
|
|
274
|
+
* on first run (parity with legacy `Agent.ensureExtensionsInitialized`
|
|
275
|
+
* at `packages/agents/src/agent.ts:1122-1147`).
|
|
276
|
+
*/
|
|
277
|
+
private readonly contributionRegistry: ContributionRegistry<
|
|
278
|
+
AgentExtension,
|
|
279
|
+
AgentTool,
|
|
280
|
+
Message[]
|
|
281
|
+
>;
|
|
282
|
+
private extensionsInitialized = false;
|
|
283
|
+
private readonly listeners = new Set<SessionEventListener>();
|
|
284
|
+
private readonly createAgentRuntimeImpl: (
|
|
285
|
+
config: Parameters<typeof createAgentRuntime>[0],
|
|
286
|
+
) => AgentRuntime;
|
|
287
|
+
|
|
288
|
+
/** Stable run id for the active run. */
|
|
289
|
+
private activeRunId: string | null = null;
|
|
290
|
+
/** True while a run is in flight. `canStartRun()` is the negation. */
|
|
291
|
+
private running = false;
|
|
292
|
+
/** True once `abort()` has been requested for the active run. */
|
|
293
|
+
private abortRequested = false;
|
|
294
|
+
/** Last abort reason requested for the active run. */
|
|
295
|
+
private abortReason: string | undefined;
|
|
296
|
+
/** Reference to the current run's `AgentRuntime` so `abort` can forward. */
|
|
297
|
+
private activeRuntime: AgentRuntime | null = null;
|
|
298
|
+
/** Promise returned from the current run so shutdown can await its drain. */
|
|
299
|
+
private activeRunPromise: Promise<AgentResult> | null = null;
|
|
300
|
+
/** Per-run `Agent → AgentEvent` adapter; `reset()` each run. */
|
|
301
|
+
private readonly eventAdapter = new RuntimeEventAdapter();
|
|
302
|
+
/** Session-shutdown gate — rejects late runs. */
|
|
303
|
+
private shutdownCalled = false;
|
|
304
|
+
/** Running tally of tool-call records for `AgentResult.toolCalls`. */
|
|
305
|
+
private currentRunToolCalls: ToolCallRecord[] = [];
|
|
306
|
+
/** Aggregated usage across the current run. */
|
|
307
|
+
private currentRunUsage: LegacyAgentUsage = {
|
|
308
|
+
inputTokens: 0,
|
|
309
|
+
outputTokens: 0,
|
|
310
|
+
};
|
|
311
|
+
/** Tool-start timestamps for `ToolCallRecord.durationMs`. */
|
|
312
|
+
private toolStartedAt = new Map<string, Date>();
|
|
313
|
+
/** Tool-call input snapshot for `ToolCallRecord.input`. */
|
|
314
|
+
private toolInputs = new Map<string, unknown>();
|
|
315
|
+
/**
|
|
316
|
+
* Per-turn tool outcome counters used by the MistakeTracker wiring.
|
|
317
|
+
* Reset on every `turn-started` event; consumed on `turn-finished`
|
|
318
|
+
* to feed `mistakeTracker.record` when every tool call erred and no
|
|
319
|
+
* successful call landed. Matches legacy `agent.ts` tool-failure
|
|
320
|
+
* mistake-feed path (§3.4.6 + pre-Step-9 oracle lines 972-997).
|
|
321
|
+
*/
|
|
322
|
+
private currentTurnSuccessfulTools = 0;
|
|
323
|
+
private currentTurnFailedTools = 0;
|
|
324
|
+
private currentTurnFailureDetails: string[] = [];
|
|
325
|
+
/**
|
|
326
|
+
* Serial queue for `MistakeTracker.record(...)` + loop-detection
|
|
327
|
+
* side-effects fired from the sync `handleRuntimeEvent` stream. The
|
|
328
|
+
* tracker's `record()` is async but the runtime event stream is
|
|
329
|
+
* synchronous, so we chain tracker work onto a promise and await it
|
|
330
|
+
* in `executeRun` before returning the `AgentResult`.
|
|
331
|
+
*/
|
|
332
|
+
private activeTrackerWork: Promise<void> = Promise.resolve();
|
|
333
|
+
/** True when tracker logic has issued an abort for the active run. */
|
|
334
|
+
private trackerAbortInFlight = false;
|
|
335
|
+
|
|
336
|
+
constructor(config: AgentConfig, deps: SessionRuntimeOrchestratorDeps = {}) {
|
|
337
|
+
this.config = config;
|
|
338
|
+
this.agentId = `agent_${Date.now()}_${Math.random()
|
|
339
|
+
.toString(36)
|
|
340
|
+
.slice(2, 8)}`;
|
|
341
|
+
this.parentAgentId = config.parentAgentId;
|
|
342
|
+
this.logger = deps.logger ?? config.logger;
|
|
343
|
+
this.telemetry = deps.telemetry ?? config.telemetry;
|
|
344
|
+
this.createAgentRuntimeImpl =
|
|
345
|
+
deps.createAgentRuntimeImpl ?? createAgentRuntime;
|
|
346
|
+
|
|
347
|
+
this.conversation = new ConversationStore(config.initialMessages);
|
|
348
|
+
this.messageBuilder = new MessageBuilder();
|
|
349
|
+
this.contributionRegistry = createContributionRegistry<
|
|
350
|
+
AgentExtension,
|
|
351
|
+
AgentTool,
|
|
352
|
+
Message[]
|
|
353
|
+
>({
|
|
354
|
+
extensions: config.extensions ? [...config.extensions] : [],
|
|
355
|
+
setupContext: {
|
|
356
|
+
session: config.extensionContext?.session,
|
|
357
|
+
client: config.extensionContext?.client,
|
|
358
|
+
user: config.extensionContext?.user,
|
|
359
|
+
workspaceInfo: config.extensionContext?.workspace,
|
|
360
|
+
automation: config.extensionContext?.automation,
|
|
361
|
+
logger: config.extensionContext?.logger ?? this.logger,
|
|
362
|
+
telemetry: config.extensionContext?.telemetry ?? this.telemetry,
|
|
363
|
+
},
|
|
364
|
+
});
|
|
365
|
+
// Resolve + validate eagerly so `getExtensionRegistry()` is
|
|
366
|
+
// callable before the first run (legacy parity with
|
|
367
|
+
// `Agent` constructor at packages/agents/src/agent.ts:158-159).
|
|
368
|
+
// `setup()` is deferred to `ensureExtensionsInitialized` on
|
|
369
|
+
// the first run so async extension setup can't block the
|
|
370
|
+
// constructor.
|
|
371
|
+
this.contributionRegistry.resolve();
|
|
372
|
+
this.contributionRegistry.validate();
|
|
373
|
+
|
|
374
|
+
const maxMistakes = config.execution?.maxConsecutiveMistakes ?? 6;
|
|
375
|
+
this.mistakeTracker = new MistakeTracker({
|
|
376
|
+
maxConsecutiveMistakes: maxMistakes,
|
|
377
|
+
onLimitReached: config.onConsecutiveMistakeLimitReached,
|
|
378
|
+
emit: (event) => this.emitLegacyEvent(event),
|
|
379
|
+
log: (level, message, metadata) =>
|
|
380
|
+
leveledLog(this.logger, level, message, metadata),
|
|
381
|
+
agentId: this.agentId,
|
|
382
|
+
getConversationId: () => this.conversation.getConversationId(),
|
|
383
|
+
getActiveRunId: () => this.activeRunId ?? "",
|
|
384
|
+
appendRecoveryNotice: (message, _reason) => {
|
|
385
|
+
this.conversation.appendMessage({
|
|
386
|
+
role: "user",
|
|
387
|
+
content: [{ type: "text", text: message }],
|
|
388
|
+
});
|
|
389
|
+
},
|
|
390
|
+
});
|
|
391
|
+
const loopDetectionInput = config.execution?.loopDetection;
|
|
392
|
+
this.loopDetectionDisabled = loopDetectionInput === false;
|
|
393
|
+
const loopConfig: Partial<LoopDetectionConfig> | undefined =
|
|
394
|
+
loopDetectionInput === false || loopDetectionInput === undefined
|
|
395
|
+
? undefined
|
|
396
|
+
: loopDetectionInput;
|
|
397
|
+
this.loopTracker = new LoopDetectionTracker(loopConfig);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// -------------------------------------------------------------------
|
|
401
|
+
// Accessors & state mutators
|
|
402
|
+
// -------------------------------------------------------------------
|
|
403
|
+
|
|
404
|
+
getAgentId(): string {
|
|
405
|
+
return this.agentId;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
getConversationId(): string {
|
|
409
|
+
return this.conversation.getConversationId();
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
getMessages(): MessageWithMetadata[] {
|
|
413
|
+
return this.conversation.getMessages();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/** True when no run is currently active and the session is not shut down. */
|
|
417
|
+
canStartRun(): boolean {
|
|
418
|
+
return !this.running && !this.shutdownCalled;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Snapshot of the contribution registry (tools, commands, and other
|
|
423
|
+
* extension contributions).
|
|
424
|
+
*
|
|
425
|
+
* Before the first run, the registry is in the `validate` phase:
|
|
426
|
+
* extensions are validated but their `setup()` callbacks have not
|
|
427
|
+
* run yet, so the snapshot only reflects eagerly-declared
|
|
428
|
+
* contributions. After the first `run()`/`continue()`, the
|
|
429
|
+
* registry is initialized (§`ensureExtensionsInitialized`), and
|
|
430
|
+
* the snapshot reflects everything extensions registered via
|
|
431
|
+
* `api.registerTool` / `registerCommand` / `registerMessageBuilder`
|
|
432
|
+
* / `registerProvider` / `registerAutomationEventType`.
|
|
433
|
+
*/
|
|
434
|
+
getExtensionRegistry(): AgentExtensionRegistry<AgentTool, Message[]> {
|
|
435
|
+
return this.contributionRegistry.getRegistrySnapshot();
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/** Append additional tools to every subsequent turn's runtime config. */
|
|
439
|
+
addTools(tools: AgentTool[]): void {
|
|
440
|
+
if (tools.length === 0) {
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
const existing = new Set(this.config.tools.map((tool) => tool.name));
|
|
444
|
+
const merged = [...this.config.tools];
|
|
445
|
+
for (const tool of tools) {
|
|
446
|
+
if (!existing.has(tool.name)) {
|
|
447
|
+
merged.push(tool);
|
|
448
|
+
existing.add(tool.name);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
this.config = { ...this.config, tools: merged };
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/** Mutate provider / reasoning fields for subsequent runs. */
|
|
455
|
+
updateConnection(overrides: ConnectionOverrides): void {
|
|
456
|
+
const next: AgentConfig = { ...this.config };
|
|
457
|
+
if (overrides.providerId !== undefined)
|
|
458
|
+
next.providerId = overrides.providerId;
|
|
459
|
+
if (overrides.modelId !== undefined) next.modelId = overrides.modelId;
|
|
460
|
+
if (overrides.apiKey !== undefined) next.apiKey = overrides.apiKey;
|
|
461
|
+
if (overrides.baseUrl !== undefined) next.baseUrl = overrides.baseUrl;
|
|
462
|
+
if (overrides.headers !== undefined) next.headers = overrides.headers;
|
|
463
|
+
if (overrides.providerConfig !== undefined)
|
|
464
|
+
next.providerConfig = overrides.providerConfig;
|
|
465
|
+
if (overrides.reasoningEffort !== undefined)
|
|
466
|
+
next.reasoningEffort = overrides.reasoningEffort;
|
|
467
|
+
if (overrides.thinking !== undefined) next.thinking = overrides.thinking;
|
|
468
|
+
if (overrides.thinkingBudgetTokens !== undefined)
|
|
469
|
+
next.thinkingBudgetTokens = overrides.thinkingBudgetTokens;
|
|
470
|
+
this.config = next;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
clearHistory(): void {
|
|
474
|
+
this.conversation.clearHistory();
|
|
475
|
+
this.resetConversationBoundaryTrackers();
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
restore(messages: readonly MessageWithMetadata[]): void {
|
|
479
|
+
this.conversation.restore(messages);
|
|
480
|
+
this.resetConversationBoundaryTrackers();
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
private resetConversationBoundaryTrackers(): void {
|
|
484
|
+
this.mistakeTracker.reset();
|
|
485
|
+
this.loopTracker.reset();
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// -------------------------------------------------------------------
|
|
489
|
+
// Event subscription (legacy shape)
|
|
490
|
+
// -------------------------------------------------------------------
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* Subscribe to **legacy** `AgentEvent`s. The session runtime
|
|
494
|
+
* translates the new `AgentRuntimeEvent` stream via
|
|
495
|
+
* `RuntimeEventAdapter` before fanout, so consumers see the
|
|
496
|
+
* pre-swap shape.
|
|
497
|
+
*/
|
|
498
|
+
subscribeEvents(listener: SessionEventListener): () => void {
|
|
499
|
+
this.listeners.add(listener);
|
|
500
|
+
return () => {
|
|
501
|
+
this.listeners.delete(listener);
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// -------------------------------------------------------------------
|
|
506
|
+
// Abort / shutdown
|
|
507
|
+
// -------------------------------------------------------------------
|
|
508
|
+
|
|
509
|
+
abort(reason?: unknown): void {
|
|
510
|
+
const message =
|
|
511
|
+
typeof reason === "string"
|
|
512
|
+
? reason
|
|
513
|
+
: reason instanceof Error
|
|
514
|
+
? reason.message
|
|
515
|
+
: reason === undefined
|
|
516
|
+
? undefined
|
|
517
|
+
: String(reason);
|
|
518
|
+
this.abortRequested = true;
|
|
519
|
+
this.abortReason = message;
|
|
520
|
+
if (this.activeRunPromise) {
|
|
521
|
+
/**
|
|
522
|
+
* Why this exists in hub mode:
|
|
523
|
+
*
|
|
524
|
+
* The TUI and the runtime are not always in the same process. In hub
|
|
525
|
+
* mode, the visible TUI talks to a shared daemon over websocket. When the
|
|
526
|
+
* user sends a prompt, the TUI sends a "start this run" command to the
|
|
527
|
+
* daemon. The daemon starts the AgentRuntime and stores the promise for
|
|
528
|
+
* that run as `activeRunPromise`.
|
|
529
|
+
*
|
|
530
|
+
* If the user presses Escape, the TUI sends a separate "cancel the
|
|
531
|
+
* current run" command to the daemon. Cancelling a run means aborting the
|
|
532
|
+
* AgentRuntime. That is supposed to interrupt the provider stream or any
|
|
533
|
+
* other in-flight async work, and the normal way that interruption shows
|
|
534
|
+
* up in JavaScript is a rejected promise. That rejection is not a bug by
|
|
535
|
+
* itself. It is the expected result of the user saying "stop this
|
|
536
|
+
* request."
|
|
537
|
+
*
|
|
538
|
+
* The important detail is that the rejection is already handled by the
|
|
539
|
+
* code path that started the run. The original "start this run" command
|
|
540
|
+
* is still awaiting `sessionHost.send(...)`, and that await is what
|
|
541
|
+
* should eventually turn the run result or run error into a reply/event
|
|
542
|
+
* for the client.
|
|
543
|
+
*
|
|
544
|
+
* The problem we hit was a timing gap inside the daemon process. The
|
|
545
|
+
* separate cancel command can call `activeRuntime.abort(message)` while
|
|
546
|
+
* the original start command is still waiting elsewhere. The abort can
|
|
547
|
+
* make `activeRunPromise` reject immediately. If the runtime reports that
|
|
548
|
+
* rejection before the original start command observes it, Node/Bun can
|
|
549
|
+
* briefly classify it as an `unhandledRejection`.
|
|
550
|
+
*
|
|
551
|
+
* In the hub daemon, `unhandledRejection` is fatal. That is normally the
|
|
552
|
+
* right policy because real unhandled errors should not be ignored. But
|
|
553
|
+
* for this cancellation path it meant Escape could kill the daemon even
|
|
554
|
+
* though the run error was expected and the original start command was
|
|
555
|
+
* still responsible for handling it. After the daemon died, the next
|
|
556
|
+
* prompt looked like it started loading, then silently stalled because
|
|
557
|
+
* the TUI was talking to a dead runtime process.
|
|
558
|
+
*
|
|
559
|
+
* This `.catch()` is not the real application-level error handling. It is
|
|
560
|
+
* only a local safety observer attached before we trigger the abort, so
|
|
561
|
+
* the daemon does not mistake an expected cancellation rejection for a
|
|
562
|
+
* process crash. We do not replace `activeRunPromise`, await this catch,
|
|
563
|
+
* or convert the rejection into success. The original start command, and
|
|
564
|
+
* any other caller awaiting `run()` / `continue()`, still receives the
|
|
565
|
+
* same result or error it would have received without this observer.
|
|
566
|
+
*/
|
|
567
|
+
void this.activeRunPromise.catch(() => {});
|
|
568
|
+
}
|
|
569
|
+
this.activeRuntime?.abort(message);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
/** Shut the session down after any active run drains. */
|
|
573
|
+
async shutdown(_reason?: string, _timeoutMs?: number): Promise<void> {
|
|
574
|
+
if (this.running) {
|
|
575
|
+
if (!this.abortRequested || !this.activeRunPromise) {
|
|
576
|
+
throw new Error(
|
|
577
|
+
`SessionRuntime.shutdown called while a run is in progress (agentId=${this.agentId})`,
|
|
578
|
+
);
|
|
579
|
+
}
|
|
580
|
+
await this.activeRunPromise;
|
|
581
|
+
}
|
|
582
|
+
if (this.shutdownCalled) {
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
this.shutdownCalled = true;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// -------------------------------------------------------------------
|
|
589
|
+
// Run / continue
|
|
590
|
+
// -------------------------------------------------------------------
|
|
591
|
+
|
|
592
|
+
run(
|
|
593
|
+
userMessage: string,
|
|
594
|
+
userImages?: string[],
|
|
595
|
+
userFiles?: string[],
|
|
596
|
+
): Promise<AgentResult> {
|
|
597
|
+
this.conversation.resetForRun();
|
|
598
|
+
this.resetConversationBoundaryTrackers();
|
|
599
|
+
return this.executeRun({
|
|
600
|
+
userMessage,
|
|
601
|
+
userImages,
|
|
602
|
+
userFiles,
|
|
603
|
+
isContinue: false,
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
continue(
|
|
608
|
+
userMessage?: string,
|
|
609
|
+
userImages?: string[],
|
|
610
|
+
userFiles?: string[],
|
|
611
|
+
): Promise<AgentResult> {
|
|
612
|
+
return this.executeRun({
|
|
613
|
+
userMessage,
|
|
614
|
+
userImages,
|
|
615
|
+
userFiles,
|
|
616
|
+
isContinue: true,
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// -------------------------------------------------------------------
|
|
621
|
+
// Private implementation
|
|
622
|
+
// -------------------------------------------------------------------
|
|
623
|
+
|
|
624
|
+
private async composeSystemPrompt(): Promise<string> {
|
|
625
|
+
const rules: string[] = [];
|
|
626
|
+
for (const rule of this.contributionRegistry.getRegisteredRules()) {
|
|
627
|
+
const content = await resolveRuleContent(rule);
|
|
628
|
+
if (content) {
|
|
629
|
+
rules.push(content);
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
return mergeSystemPromptRules(this.config.systemPrompt, rules);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
private executeRun(input: {
|
|
636
|
+
userMessage?: string;
|
|
637
|
+
userImages?: string[];
|
|
638
|
+
userFiles?: string[];
|
|
639
|
+
isContinue: boolean;
|
|
640
|
+
}): Promise<AgentResult> {
|
|
641
|
+
let activePromise!: Promise<AgentResult>;
|
|
642
|
+
activePromise = this.executeRunInternal(input).finally(() => {
|
|
643
|
+
if (this.activeRunPromise === activePromise) {
|
|
644
|
+
this.activeRunPromise = null;
|
|
645
|
+
}
|
|
646
|
+
});
|
|
647
|
+
this.activeRunPromise = activePromise;
|
|
648
|
+
return activePromise;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
private async executeRunInternal(input: {
|
|
652
|
+
userMessage?: string;
|
|
653
|
+
userImages?: string[];
|
|
654
|
+
userFiles?: string[];
|
|
655
|
+
isContinue: boolean;
|
|
656
|
+
}): Promise<AgentResult> {
|
|
657
|
+
if (this.shutdownCalled) {
|
|
658
|
+
throw new Error(
|
|
659
|
+
`SessionRuntime.run called after shutdown (agentId=${this.agentId})`,
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
if (this.running) {
|
|
663
|
+
throw new Error(
|
|
664
|
+
`SessionRuntime state is "running"; call canStartRun() first (agentId=${this.agentId})`,
|
|
665
|
+
);
|
|
666
|
+
}
|
|
667
|
+
this.running = true;
|
|
668
|
+
this.abortRequested = false;
|
|
669
|
+
this.abortReason = undefined;
|
|
670
|
+
this.activeRunId = `run_${Date.now()}_${Math.random()
|
|
671
|
+
.toString(36)
|
|
672
|
+
.slice(2, 8)}`;
|
|
673
|
+
// Lazily initialize contribution-registry extensions on the
|
|
674
|
+
// first run, before runtime construction.
|
|
675
|
+
await this.ensureExtensionsInitialized();
|
|
676
|
+
this.eventAdapter.reset();
|
|
677
|
+
this.currentRunToolCalls = [];
|
|
678
|
+
this.currentRunUsage = { inputTokens: 0, outputTokens: 0 };
|
|
679
|
+
this.toolStartedAt.clear();
|
|
680
|
+
this.toolInputs.clear();
|
|
681
|
+
this.currentTurnSuccessfulTools = 0;
|
|
682
|
+
this.currentTurnFailedTools = 0;
|
|
683
|
+
this.currentTurnFailureDetails = [];
|
|
684
|
+
this.activeTrackerWork = Promise.resolve();
|
|
685
|
+
this.trackerAbortInFlight = false;
|
|
686
|
+
|
|
687
|
+
const startedAt = new Date();
|
|
688
|
+
const effectiveUserMessage = input.userMessage;
|
|
689
|
+
|
|
690
|
+
// Append the user turn (if any) to the conversation store. This
|
|
691
|
+
// must happen BEFORE we snapshot `initialMessages` below so the
|
|
692
|
+
// runtime sees the user message as part of its seed — we then
|
|
693
|
+
// pass an empty input to `runtime.run()` so the runtime does not
|
|
694
|
+
// append the message a second time (AgentRuntime.execute treats
|
|
695
|
+
// a falsy input as "no additional messages", per
|
|
696
|
+
// packages/agents/src/agent-runtime.ts normalizeInput path).
|
|
697
|
+
if (effectiveUserMessage !== undefined) {
|
|
698
|
+
const content = await buildUserTurnContent(
|
|
699
|
+
effectiveUserMessage,
|
|
700
|
+
input.userImages,
|
|
701
|
+
input.userFiles,
|
|
702
|
+
this.config.userFileContentLoader,
|
|
703
|
+
);
|
|
704
|
+
this.conversation.appendMessage({ role: "user", content });
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
// Build the AgentRuntime for this turn.
|
|
708
|
+
const systemPrompt = await this.composeSystemPrompt();
|
|
709
|
+
const agentModel = createAgentModelFromConfig(
|
|
710
|
+
this.config,
|
|
711
|
+
this.logger,
|
|
712
|
+
this.telemetry,
|
|
713
|
+
);
|
|
714
|
+
// Merge extension-contributed tools with the config-declared
|
|
715
|
+
// tools for this turn. Extensions register tools via
|
|
716
|
+
// `api.registerTool` during `setup()` — parity with legacy
|
|
717
|
+
// `Agent.ensureExtensionsInitialized` at pre-Step-9 `agent.ts:1140-1146`
|
|
718
|
+
// which merged `this.contributionRegistry.getRegisteredTools()`
|
|
719
|
+
// into `this.config.tools`. Dedupe by name so a config tool
|
|
720
|
+
// wins over a same-named extension tool (legacy behaviour:
|
|
721
|
+
// `validateTools` rejects duplicates; here we prefer the
|
|
722
|
+
// explicitly-declared config tool).
|
|
723
|
+
const extensionTools = this.contributionRegistry.getRegisteredTools();
|
|
724
|
+
const mergedToolsByName = new Map<string, AgentTool>();
|
|
725
|
+
for (const tool of extensionTools) {
|
|
726
|
+
mergedToolsByName.set(tool.name, tool);
|
|
727
|
+
}
|
|
728
|
+
for (const tool of this.config.tools) {
|
|
729
|
+
mergedToolsByName.set(tool.name, tool);
|
|
730
|
+
}
|
|
731
|
+
const conversationId = this.conversation.getConversationId();
|
|
732
|
+
const modelInfo = tryGetModelInfo(this.config);
|
|
733
|
+
const tools = Array.from(mergedToolsByName.values());
|
|
734
|
+
// Seed initialMessages with the full prior transcript (including
|
|
735
|
+
// the user message we just appended) so multi-turn history is
|
|
736
|
+
// preserved across runs. Fixes P1 #1: prior turns were silently
|
|
737
|
+
// lost because `createAgentRuntimeConfig` received no seed and
|
|
738
|
+
// `replaceMessages(runResult.messages)` downstream overwrote the
|
|
739
|
+
// conversation with just the current-turn trail.
|
|
740
|
+
const initialMessages = messagesToAgentMessages(
|
|
741
|
+
this.conversation.getMessages(),
|
|
742
|
+
);
|
|
743
|
+
const runtimeConfig = createAgentRuntimeConfig({
|
|
744
|
+
agentConfig: this.config,
|
|
745
|
+
sessionId: this.config.sessionId,
|
|
746
|
+
agentId: this.agentId,
|
|
747
|
+
conversationId,
|
|
748
|
+
parentAgentId: this.parentAgentId,
|
|
749
|
+
model: agentModel,
|
|
750
|
+
logger: this.logger,
|
|
751
|
+
telemetry: this.telemetry,
|
|
752
|
+
tools,
|
|
753
|
+
toolContextMetadata: {
|
|
754
|
+
modelSupportsImages:
|
|
755
|
+
modelInfo?.capabilities?.includes("images") ?? true,
|
|
756
|
+
...this.config.toolContextMetadata,
|
|
757
|
+
[CLINE_INTERNAL_TELEMETRY_METADATA_KEY]: this.telemetry,
|
|
758
|
+
},
|
|
759
|
+
hooks: this.createRuntimeHooks(),
|
|
760
|
+
prepareTurn: this.createRuntimePrepareTurn(modelInfo, tools),
|
|
761
|
+
initialMessages,
|
|
762
|
+
systemPrompt,
|
|
763
|
+
});
|
|
764
|
+
const runtime = this.createAgentRuntimeImpl(runtimeConfig);
|
|
765
|
+
this.activeRuntime = runtime;
|
|
766
|
+
if (this.abortRequested) {
|
|
767
|
+
runtime.abort(this.abortReason);
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// Subscribe to runtime events; fan out legacy events to listeners
|
|
771
|
+
// and keep private book-keeping for tool-call records / usage.
|
|
772
|
+
const unsubscribe = runtime.subscribe((event: AgentRuntimeEvent) => {
|
|
773
|
+
this.handleRuntimeEvent(event);
|
|
774
|
+
});
|
|
775
|
+
|
|
776
|
+
let runResult: AgentRunResult | undefined;
|
|
777
|
+
let thrownError: Error | undefined;
|
|
778
|
+
try {
|
|
779
|
+
// Pass empty input so AgentRuntime does not duplicate the
|
|
780
|
+
// user message we already seeded via `initialMessages`. The
|
|
781
|
+
// runtime's `normalizeInput` treats `""`/`undefined` as
|
|
782
|
+
// "no extra messages".
|
|
783
|
+
if (input.isContinue) {
|
|
784
|
+
runResult = await runtime.continue(undefined);
|
|
785
|
+
} else {
|
|
786
|
+
runResult = await runtime.run("");
|
|
787
|
+
}
|
|
788
|
+
} catch (error) {
|
|
789
|
+
thrownError = error instanceof Error ? error : new Error(String(error));
|
|
790
|
+
} finally {
|
|
791
|
+
unsubscribe();
|
|
792
|
+
// Drain any in-flight tracker work (mistake/loop side-effects
|
|
793
|
+
// queued from handleRuntimeEvent) before we clear state so a
|
|
794
|
+
// late abort can still reach the runtime if needed.
|
|
795
|
+
try {
|
|
796
|
+
await this.activeTrackerWork;
|
|
797
|
+
} catch (error) {
|
|
798
|
+
this.logger?.error?.(
|
|
799
|
+
"SessionRuntime tracker work failed during drain",
|
|
800
|
+
{ agentId: this.agentId, error },
|
|
801
|
+
);
|
|
802
|
+
}
|
|
803
|
+
this.activeRuntime = null;
|
|
804
|
+
this.running = false;
|
|
805
|
+
this.abortRequested = false;
|
|
806
|
+
this.abortReason = undefined;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
// Persist the runtime's message trail back into the conversation
|
|
810
|
+
// store so later turns see assistant output. The runtime state
|
|
811
|
+
// was seeded with the full transcript, so `runResult.messages`
|
|
812
|
+
// IS the complete new transcript (seed + newly-produced turn).
|
|
813
|
+
if (runResult && runResult.messages.length > 0) {
|
|
814
|
+
const replacement = agentMessagesToMessagesWithMetadata(
|
|
815
|
+
runResult.messages,
|
|
816
|
+
);
|
|
817
|
+
this.conversation.replaceMessages(replacement);
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
const endedAt = new Date();
|
|
821
|
+
try {
|
|
822
|
+
return this.buildLegacyResult({
|
|
823
|
+
runResult,
|
|
824
|
+
thrownError,
|
|
825
|
+
startedAt,
|
|
826
|
+
endedAt,
|
|
827
|
+
});
|
|
828
|
+
} finally {
|
|
829
|
+
this.activeRunId = null;
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* Initialize the contribution registry once per session. Runs
|
|
835
|
+
* extension `setup()` callbacks so they can `registerTool`,
|
|
836
|
+
* `registerCommand`, `registerMessageBuilder`, and
|
|
837
|
+
* `registerProvider`. Matches legacy `Agent.ensureExtensionsInitialized`
|
|
838
|
+
* at pre-Step-9 `agent.ts:1122-1147`:
|
|
839
|
+
*
|
|
840
|
+
* - on `hookErrorMode === "throw"`, setup failures propagate;
|
|
841
|
+
* - otherwise setup failures emit a recoverable `error` event
|
|
842
|
+
* via the legacy event channel and leave the registry
|
|
843
|
+
* partially initialized.
|
|
844
|
+
*
|
|
845
|
+
* Idempotent: subsequent calls are no-ops once the registry has
|
|
846
|
+
* been activated.
|
|
847
|
+
*/
|
|
848
|
+
private async ensureExtensionsInitialized(): Promise<void> {
|
|
849
|
+
if (this.extensionsInitialized) {
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
try {
|
|
853
|
+
await this.contributionRegistry.initialize();
|
|
854
|
+
} catch (error) {
|
|
855
|
+
if (this.config.hookErrorMode === "throw") {
|
|
856
|
+
throw error;
|
|
857
|
+
}
|
|
858
|
+
this.emitLegacyEvent({
|
|
859
|
+
type: "error",
|
|
860
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
861
|
+
recoverable: true,
|
|
862
|
+
iteration: 0,
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
this.extensionsInitialized = true;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
private createRuntimeHooks(): Partial<AgentRuntimeHooks> {
|
|
869
|
+
const hooks = mergeRuntimeHooks([
|
|
870
|
+
this.config.hooks,
|
|
871
|
+
...this.contributionRegistry
|
|
872
|
+
.getValidatedExtensions()
|
|
873
|
+
.map((extension) => extension.hooks),
|
|
874
|
+
]);
|
|
875
|
+
return {
|
|
876
|
+
...hooks,
|
|
877
|
+
beforeModel: async (ctx) => {
|
|
878
|
+
const control = await hooks.beforeModel?.(ctx);
|
|
879
|
+
if (control?.stop) {
|
|
880
|
+
return control;
|
|
881
|
+
}
|
|
882
|
+
const messages = control?.messages ?? ctx.request.messages;
|
|
883
|
+
const preparedMessages =
|
|
884
|
+
await this.prepareMessagesForModelRequest(messages);
|
|
885
|
+
return {
|
|
886
|
+
...control,
|
|
887
|
+
messages: preparedMessages,
|
|
888
|
+
};
|
|
889
|
+
},
|
|
890
|
+
};
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
private createRuntimePrepareTurn(
|
|
894
|
+
modelInfo: ModelInfo | undefined,
|
|
895
|
+
tools: AgentTool[],
|
|
896
|
+
):
|
|
897
|
+
| ((context: AgentRuntimePrepareTurnContext) => Promise<
|
|
898
|
+
| {
|
|
899
|
+
messages?: readonly AgentMessage[];
|
|
900
|
+
systemPrompt?: string;
|
|
901
|
+
}
|
|
902
|
+
| undefined
|
|
903
|
+
>)
|
|
904
|
+
| undefined {
|
|
905
|
+
const prepareTurn = this.config.prepareTurn;
|
|
906
|
+
if (!prepareTurn) {
|
|
907
|
+
return undefined;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
return async (context) => {
|
|
911
|
+
const messages = agentMessagesToMessagesWithMetadata(context.messages);
|
|
912
|
+
const apiMessages = await this.prepareProviderMessagesForApi(messages);
|
|
913
|
+
const result = await prepareTurn({
|
|
914
|
+
agentId: context.agentId,
|
|
915
|
+
conversationId:
|
|
916
|
+
context.conversationId ?? this.conversation.getConversationId(),
|
|
917
|
+
parentAgentId: context.parentAgentId ?? null,
|
|
918
|
+
iteration: context.iteration,
|
|
919
|
+
messages,
|
|
920
|
+
apiMessages,
|
|
921
|
+
abortSignal: context.signal ?? new AbortController().signal,
|
|
922
|
+
systemPrompt: context.systemPrompt ?? "",
|
|
923
|
+
tools,
|
|
924
|
+
model: {
|
|
925
|
+
id: this.config.modelId,
|
|
926
|
+
provider: this.config.providerId,
|
|
927
|
+
info: modelInfo,
|
|
928
|
+
},
|
|
929
|
+
emitStatusNotice: context.emitStatusNotice,
|
|
930
|
+
});
|
|
931
|
+
if (!result) {
|
|
932
|
+
return undefined;
|
|
933
|
+
}
|
|
934
|
+
return {
|
|
935
|
+
...(result.messages
|
|
936
|
+
? { messages: messagesToAgentMessages(result.messages) }
|
|
937
|
+
: {}),
|
|
938
|
+
...(result.systemPrompt !== undefined
|
|
939
|
+
? { systemPrompt: result.systemPrompt }
|
|
940
|
+
: {}),
|
|
941
|
+
};
|
|
942
|
+
};
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
private async prepareMessagesForModelRequest(
|
|
946
|
+
messages: readonly AgentMessage[],
|
|
947
|
+
): Promise<AgentMessage[]> {
|
|
948
|
+
const providerMessages = await this.prepareProviderMessagesForApi(
|
|
949
|
+
agentMessagesToMessages(messages),
|
|
950
|
+
);
|
|
951
|
+
return messagesToAgentMessages(providerMessages);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
private async prepareProviderMessagesForApi(
|
|
955
|
+
messages: MessageWithMetadata[],
|
|
956
|
+
): Promise<MessageWithMetadata[]> {
|
|
957
|
+
let providerMessages = messages;
|
|
958
|
+
const messageBuilders =
|
|
959
|
+
this.contributionRegistry.getRegistrySnapshot().messageBuilder;
|
|
960
|
+
for (const builder of messageBuilders) {
|
|
961
|
+
providerMessages = await builder.build(providerMessages);
|
|
962
|
+
}
|
|
963
|
+
return this.messageBuilder.buildForApi(providerMessages);
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
private handleRuntimeEvent(event: AgentRuntimeEvent): void {
|
|
967
|
+
// Track tool-call records before translation so the timing data
|
|
968
|
+
// is available to observers via `AgentResult.toolCalls`.
|
|
969
|
+
switch (event.type) {
|
|
970
|
+
case "message-added":
|
|
971
|
+
case "assistant-message": {
|
|
972
|
+
this.syncConversationFromRuntimeMessage(event.snapshot.messages, [
|
|
973
|
+
event.message,
|
|
974
|
+
]);
|
|
975
|
+
break;
|
|
976
|
+
}
|
|
977
|
+
case "turn-started": {
|
|
978
|
+
// Reset per-turn tool-outcome counters used by the
|
|
979
|
+
// MistakeTracker wiring. Parity with pre-Step-9
|
|
980
|
+
// agent.ts which accumulates per-iteration success/fail
|
|
981
|
+
// counts and feeds them into recordMistake at the
|
|
982
|
+
// turn boundary.
|
|
983
|
+
this.currentTurnSuccessfulTools = 0;
|
|
984
|
+
this.currentTurnFailedTools = 0;
|
|
985
|
+
this.currentTurnFailureDetails = [];
|
|
986
|
+
break;
|
|
987
|
+
}
|
|
988
|
+
case "tool-started": {
|
|
989
|
+
this.toolStartedAt.set(event.toolCall.toolCallId, new Date());
|
|
990
|
+
this.toolInputs.set(event.toolCall.toolCallId, event.toolCall.input);
|
|
991
|
+
// Loop-detection inspection: identical consecutive
|
|
992
|
+
// tool-call signatures trip the tracker. On "soft"
|
|
993
|
+
// verdict we append a recovery notice; on "hard"
|
|
994
|
+
// verdict we feed the mistake tracker with
|
|
995
|
+
// forceAtLimit:true and abort. Parity with pre-Step-9
|
|
996
|
+
// agent.ts L917-954.
|
|
997
|
+
this.inspectLoopForToolCall(
|
|
998
|
+
event.toolCall.toolName,
|
|
999
|
+
event.toolCall.input,
|
|
1000
|
+
event.iteration,
|
|
1001
|
+
);
|
|
1002
|
+
break;
|
|
1003
|
+
}
|
|
1004
|
+
case "tool-finished": {
|
|
1005
|
+
const startedAt = this.toolStartedAt.get(event.toolCall.toolCallId);
|
|
1006
|
+
const endedAt = new Date();
|
|
1007
|
+
const input = this.toolInputs.get(event.toolCall.toolCallId);
|
|
1008
|
+
this.toolStartedAt.delete(event.toolCall.toolCallId);
|
|
1009
|
+
this.toolInputs.delete(event.toolCall.toolCallId);
|
|
1010
|
+
const resultPart = event.message.content.find(
|
|
1011
|
+
(part) => part.type === "tool-result",
|
|
1012
|
+
);
|
|
1013
|
+
const isError =
|
|
1014
|
+
resultPart?.type === "tool-result" && resultPart.isError === true;
|
|
1015
|
+
const errorText = isError
|
|
1016
|
+
? formatToolResultError(
|
|
1017
|
+
resultPart?.type === "tool-result"
|
|
1018
|
+
? resultPart.output
|
|
1019
|
+
: undefined,
|
|
1020
|
+
)
|
|
1021
|
+
: undefined;
|
|
1022
|
+
const record: ToolCallRecord = {
|
|
1023
|
+
id: event.toolCall.toolCallId,
|
|
1024
|
+
name: event.toolCall.toolName,
|
|
1025
|
+
input,
|
|
1026
|
+
output:
|
|
1027
|
+
resultPart?.type === "tool-result" ? resultPart.output : undefined,
|
|
1028
|
+
error: errorText,
|
|
1029
|
+
durationMs:
|
|
1030
|
+
startedAt === undefined
|
|
1031
|
+
? 0
|
|
1032
|
+
: endedAt.getTime() - startedAt.getTime(),
|
|
1033
|
+
startedAt: startedAt ?? endedAt,
|
|
1034
|
+
endedAt,
|
|
1035
|
+
};
|
|
1036
|
+
this.currentRunToolCalls.push(record);
|
|
1037
|
+
// Per-turn success/failure bookkeeping for MistakeTracker.
|
|
1038
|
+
if (isError) {
|
|
1039
|
+
this.currentTurnFailedTools += 1;
|
|
1040
|
+
if (errorText) {
|
|
1041
|
+
this.currentTurnFailureDetails.push(
|
|
1042
|
+
`[${event.toolCall.toolName}] ${errorText}`,
|
|
1043
|
+
);
|
|
1044
|
+
}
|
|
1045
|
+
} else {
|
|
1046
|
+
this.currentTurnSuccessfulTools += 1;
|
|
1047
|
+
}
|
|
1048
|
+
break;
|
|
1049
|
+
}
|
|
1050
|
+
case "turn-finished": {
|
|
1051
|
+
// End-of-turn mistake evaluation: legacy parity (pre-Step-9
|
|
1052
|
+
// agent.ts L972-997). When some tool calls failed and the
|
|
1053
|
+
// turn had no successful tool calls, record a mistake;
|
|
1054
|
+
// reset on productive turns.
|
|
1055
|
+
const failed = this.currentTurnFailedTools;
|
|
1056
|
+
const succeeded = this.currentTurnSuccessfulTools;
|
|
1057
|
+
if (failed > 0 && succeeded === 0) {
|
|
1058
|
+
const details = this.currentTurnFailureDetails.join("; ");
|
|
1059
|
+
this.enqueueMistakeRecord({
|
|
1060
|
+
iteration: event.iteration,
|
|
1061
|
+
reason: "tool_execution_failed",
|
|
1062
|
+
details: `${failed} tool call(s) failed${
|
|
1063
|
+
details ? `: ${details}` : ""
|
|
1064
|
+
}`,
|
|
1065
|
+
});
|
|
1066
|
+
} else if (succeeded > 0) {
|
|
1067
|
+
// Productive turn — reset the tracker so transient
|
|
1068
|
+
// failures don't accumulate across unrelated turns.
|
|
1069
|
+
this.mistakeTracker.reset();
|
|
1070
|
+
}
|
|
1071
|
+
break;
|
|
1072
|
+
}
|
|
1073
|
+
case "usage-updated": {
|
|
1074
|
+
this.currentRunUsage = {
|
|
1075
|
+
inputTokens: event.usage.inputTokens,
|
|
1076
|
+
outputTokens: event.usage.outputTokens,
|
|
1077
|
+
cacheReadTokens:
|
|
1078
|
+
event.usage.cacheReadTokens > 0
|
|
1079
|
+
? event.usage.cacheReadTokens
|
|
1080
|
+
: undefined,
|
|
1081
|
+
cacheWriteTokens:
|
|
1082
|
+
event.usage.cacheWriteTokens > 0
|
|
1083
|
+
? event.usage.cacheWriteTokens
|
|
1084
|
+
: undefined,
|
|
1085
|
+
totalCost: event.usage.totalCost,
|
|
1086
|
+
};
|
|
1087
|
+
break;
|
|
1088
|
+
}
|
|
1089
|
+
default:
|
|
1090
|
+
break;
|
|
1091
|
+
}
|
|
1092
|
+
for (const legacy of this.eventAdapter.translate(event)) {
|
|
1093
|
+
this.emitLegacyEvent(legacy);
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
private syncConversationFromRuntimeMessage(
|
|
1098
|
+
snapshotMessages: readonly AgentMessage[],
|
|
1099
|
+
fallbackMessages: readonly AgentMessage[],
|
|
1100
|
+
): void {
|
|
1101
|
+
if (snapshotMessages.length > 0) {
|
|
1102
|
+
this.conversation.replaceMessages(
|
|
1103
|
+
agentMessagesToMessagesWithMetadata(snapshotMessages),
|
|
1104
|
+
);
|
|
1105
|
+
return;
|
|
1106
|
+
}
|
|
1107
|
+
if (fallbackMessages.length === 0) return;
|
|
1108
|
+
const existingIds = new Set(
|
|
1109
|
+
this.conversation
|
|
1110
|
+
.getMessages()
|
|
1111
|
+
.map((message) => message.id)
|
|
1112
|
+
.filter((id): id is string => typeof id === "string"),
|
|
1113
|
+
);
|
|
1114
|
+
const newMessages = agentMessagesToMessagesWithMetadata(
|
|
1115
|
+
fallbackMessages,
|
|
1116
|
+
).filter((message) => !message.id || !existingIds.has(message.id));
|
|
1117
|
+
if (newMessages.length === 0) return;
|
|
1118
|
+
this.conversation.replaceMessages([
|
|
1119
|
+
...this.conversation.getMessages(),
|
|
1120
|
+
...newMessages,
|
|
1121
|
+
]);
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
private emitLegacyEvent(event: AgentEvent): void {
|
|
1125
|
+
for (const listener of this.listeners) {
|
|
1126
|
+
try {
|
|
1127
|
+
listener(event);
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
this.logger?.error?.("SessionRuntime event listener threw", {
|
|
1130
|
+
agentId: this.agentId,
|
|
1131
|
+
error,
|
|
1132
|
+
});
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
/**
|
|
1138
|
+
* Feed the `LoopDetectionTracker` with a tool-call and react to
|
|
1139
|
+
* the returned verdict. Parity with pre-Step-9 agent.ts L917-954:
|
|
1140
|
+
*
|
|
1141
|
+
* - `"soft"` → append a recovery notice telling the model to
|
|
1142
|
+
* change approach;
|
|
1143
|
+
* - `"hard"` → feed `MistakeTracker.record` with
|
|
1144
|
+
* `forceAtLimit:true`. When the tracker returns
|
|
1145
|
+
* `action: "stop"`, append the stop notice and
|
|
1146
|
+
* abort the active runtime.
|
|
1147
|
+
*/
|
|
1148
|
+
private inspectLoopForToolCall(
|
|
1149
|
+
toolName: string,
|
|
1150
|
+
input: unknown,
|
|
1151
|
+
iteration: number,
|
|
1152
|
+
): void {
|
|
1153
|
+
if (this.trackerAbortInFlight || this.loopDetectionDisabled) {
|
|
1154
|
+
return;
|
|
1155
|
+
}
|
|
1156
|
+
const verdict = this.loopTracker.inspect({ name: toolName, input });
|
|
1157
|
+
if (verdict.kind === "ok") {
|
|
1158
|
+
return;
|
|
1159
|
+
}
|
|
1160
|
+
if (verdict.kind === "soft") {
|
|
1161
|
+
if (verdict.message) {
|
|
1162
|
+
this.conversation.appendMessage({
|
|
1163
|
+
role: "user",
|
|
1164
|
+
content: [{ type: "text", text: verdict.message }],
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
return;
|
|
1168
|
+
}
|
|
1169
|
+
// Hard escalation.
|
|
1170
|
+
this.enqueueMistakeRecord({
|
|
1171
|
+
iteration,
|
|
1172
|
+
reason: "tool_execution_failed",
|
|
1173
|
+
forceAtLimit: true,
|
|
1174
|
+
details:
|
|
1175
|
+
verdict.message ??
|
|
1176
|
+
`Detected repeated tool calls to \`${toolName}\`; stopping to avoid a loop.`,
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
/**
|
|
1181
|
+
* Enqueue a mistake-record onto the serial tracker work chain. The
|
|
1182
|
+
* runtime event stream is synchronous but `MistakeTracker.record`
|
|
1183
|
+
* is async — chaining onto a shared promise preserves ordering
|
|
1184
|
+
* (legacy parity) and lets `executeRun` await draining before
|
|
1185
|
+
* returning the `AgentResult`.
|
|
1186
|
+
*
|
|
1187
|
+
* When the tracker returns `action: "stop"`, append the stop notice
|
|
1188
|
+
* to the conversation and abort the active runtime so the run ends
|
|
1189
|
+
* with `finishReason: "aborted"`.
|
|
1190
|
+
*/
|
|
1191
|
+
private enqueueMistakeRecord(input: {
|
|
1192
|
+
iteration: number;
|
|
1193
|
+
reason: "api_error" | "invalid_tool_call" | "tool_execution_failed";
|
|
1194
|
+
details?: string;
|
|
1195
|
+
forceAtLimit?: boolean;
|
|
1196
|
+
}): void {
|
|
1197
|
+
if (this.trackerAbortInFlight) {
|
|
1198
|
+
return;
|
|
1199
|
+
}
|
|
1200
|
+
this.activeTrackerWork = this.activeTrackerWork.then(async () => {
|
|
1201
|
+
if (this.trackerAbortInFlight) {
|
|
1202
|
+
return;
|
|
1203
|
+
}
|
|
1204
|
+
const outcome = await this.mistakeTracker.record(input);
|
|
1205
|
+
if (outcome.action === "stop") {
|
|
1206
|
+
this.trackerAbortInFlight = true;
|
|
1207
|
+
this.conversation.appendMessage({
|
|
1208
|
+
role: "user",
|
|
1209
|
+
content: [{ type: "text", text: outcome.message }],
|
|
1210
|
+
});
|
|
1211
|
+
this.activeRuntime?.abort(outcome.reason ?? outcome.message);
|
|
1212
|
+
}
|
|
1213
|
+
});
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
private buildLegacyResult(input: {
|
|
1217
|
+
runResult: AgentRunResult | undefined;
|
|
1218
|
+
thrownError: Error | undefined;
|
|
1219
|
+
startedAt: Date;
|
|
1220
|
+
endedAt: Date;
|
|
1221
|
+
}): AgentResult {
|
|
1222
|
+
const { runResult, thrownError, startedAt, endedAt } = input;
|
|
1223
|
+
const durationMs = endedAt.getTime() - startedAt.getTime();
|
|
1224
|
+
const finishReason: AgentFinishReason = thrownError
|
|
1225
|
+
? "error"
|
|
1226
|
+
: deriveFinishReason(runResult);
|
|
1227
|
+
const text =
|
|
1228
|
+
runResult?.outputText ||
|
|
1229
|
+
(runResult?.status === "failed" ? runResult.error?.message : undefined) ||
|
|
1230
|
+
"";
|
|
1231
|
+
const usage: LegacyAgentUsage = runResult
|
|
1232
|
+
? {
|
|
1233
|
+
inputTokens: runResult.usage.inputTokens,
|
|
1234
|
+
outputTokens: runResult.usage.outputTokens,
|
|
1235
|
+
cacheReadTokens:
|
|
1236
|
+
runResult.usage.cacheReadTokens > 0
|
|
1237
|
+
? runResult.usage.cacheReadTokens
|
|
1238
|
+
: undefined,
|
|
1239
|
+
cacheWriteTokens:
|
|
1240
|
+
runResult.usage.cacheWriteTokens > 0
|
|
1241
|
+
? runResult.usage.cacheWriteTokens
|
|
1242
|
+
: undefined,
|
|
1243
|
+
totalCost: runResult.usage.totalCost,
|
|
1244
|
+
}
|
|
1245
|
+
: this.currentRunUsage;
|
|
1246
|
+
const messages = runResult
|
|
1247
|
+
? agentMessagesToMessagesWithMetadata(runResult.messages)
|
|
1248
|
+
: this.conversation.getMessages();
|
|
1249
|
+
const modelInfo = tryGetModelInfo(this.config);
|
|
1250
|
+
if (thrownError) {
|
|
1251
|
+
throw thrownError;
|
|
1252
|
+
}
|
|
1253
|
+
return {
|
|
1254
|
+
text,
|
|
1255
|
+
usage,
|
|
1256
|
+
messages,
|
|
1257
|
+
toolCalls: this.currentRunToolCalls,
|
|
1258
|
+
iterations: runResult?.iterations ?? 0,
|
|
1259
|
+
finishReason,
|
|
1260
|
+
model: {
|
|
1261
|
+
id: this.config.modelId,
|
|
1262
|
+
provider: this.config.providerId,
|
|
1263
|
+
info: modelInfo,
|
|
1264
|
+
},
|
|
1265
|
+
startedAt,
|
|
1266
|
+
endedAt,
|
|
1267
|
+
durationMs,
|
|
1268
|
+
};
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
// =============================================================================
|
|
1273
|
+
// Module-level helpers
|
|
1274
|
+
// =============================================================================
|
|
1275
|
+
|
|
1276
|
+
function leveledLog(
|
|
1277
|
+
logger: BasicLogger | undefined,
|
|
1278
|
+
level: "debug" | "info" | "warn" | "error",
|
|
1279
|
+
message: string,
|
|
1280
|
+
metadata?: Record<string, unknown>,
|
|
1281
|
+
): void {
|
|
1282
|
+
if (!logger) {
|
|
1283
|
+
return;
|
|
1284
|
+
}
|
|
1285
|
+
if (level === "debug") {
|
|
1286
|
+
logger.debug(message, metadata);
|
|
1287
|
+
return;
|
|
1288
|
+
}
|
|
1289
|
+
if (level === "error" && logger.error) {
|
|
1290
|
+
logger.error(message, metadata);
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
const severity: "info" | "warn" | "error" =
|
|
1294
|
+
level === "warn" ? "warn" : level === "error" ? "error" : "info";
|
|
1295
|
+
logger.log(message, { ...metadata, severity });
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
function deriveFinishReason(
|
|
1299
|
+
runResult: AgentRunResult | undefined,
|
|
1300
|
+
): AgentFinishReason {
|
|
1301
|
+
if (!runResult) {
|
|
1302
|
+
return "error";
|
|
1303
|
+
}
|
|
1304
|
+
switch (runResult.status) {
|
|
1305
|
+
case "completed":
|
|
1306
|
+
return "completed";
|
|
1307
|
+
case "aborted":
|
|
1308
|
+
return "aborted";
|
|
1309
|
+
case "failed":
|
|
1310
|
+
return "error";
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
async function buildUserTurnContent(
|
|
1315
|
+
userMessage: string,
|
|
1316
|
+
userImages: string[] | undefined,
|
|
1317
|
+
userFiles: string[] | undefined,
|
|
1318
|
+
loader: AgentConfig["userFileContentLoader"],
|
|
1319
|
+
): Promise<Message["content"]> {
|
|
1320
|
+
// Import lazily to avoid a circular-import hazard via runtime barrels.
|
|
1321
|
+
const { buildInitialUserContent } = await import("./user-input-builder");
|
|
1322
|
+
return buildInitialUserContent(userMessage, userImages, userFiles, loader);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
function tryGetModelInfo(config: AgentConfig): ModelInfo | undefined {
|
|
1326
|
+
if (config.knownModels?.[config.modelId]) {
|
|
1327
|
+
return config.knownModels[config.modelId];
|
|
1328
|
+
}
|
|
1329
|
+
const resolvedKnownModels = resolveKnownModelsFromConfig(config);
|
|
1330
|
+
if (resolvedKnownModels?.[config.modelId]) {
|
|
1331
|
+
return resolvedKnownModels[config.modelId];
|
|
1332
|
+
}
|
|
1333
|
+
return undefined;
|
|
1334
|
+
}
|