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.
Files changed (761) hide show
  1. codna/__init__.py +8 -0
  2. codna/_wheel_guard.py +28 -0
  3. codna/admission_control.py +275 -0
  4. codna/agent-core/CLINE_FORK.md +55 -0
  5. codna/agent-core/CLINE_SDK_AZ_INTEGRATION_PLAN.md +191 -0
  6. codna/agent-core/CLINE_SDK_INTERFACE.md +655 -0
  7. codna/agent-core/CLINE_SDK_RESEARCH.md +104 -0
  8. codna/agent-core/package.json +12 -0
  9. codna/agent-core/run-server.mjs +87 -0
  10. codna/agent-core/run-server.stub.mjs +149 -0
  11. codna/agent-core/vendor/cline/.gitignore +3 -0
  12. codna/agent-core/vendor/cline/LICENSE +201 -0
  13. codna/agent-core/vendor/cline/NOTICE +24 -0
  14. codna/agent-core/vendor/cline/UPSTREAM_COMMIT.txt +1 -0
  15. codna/agent-core/vendor/cline/algenta/README.md +27 -0
  16. codna/agent-core/vendor/cline/algenta/acp-editor.ts +176 -0
  17. codna/agent-core/vendor/cline/algenta/adapter.ts +452 -0
  18. codna/agent-core/vendor/cline/algenta/algenta-plugin.ts +30 -0
  19. codna/agent-core/vendor/cline/algenta/artifacts.test.ts +133 -0
  20. codna/agent-core/vendor/cline/algenta/execution.test.ts +63 -0
  21. codna/agent-core/vendor/cline/algenta/fallback.test.ts +73 -0
  22. codna/agent-core/vendor/cline/algenta/fallback.ts +83 -0
  23. codna/agent-core/vendor/cline/algenta/fix-runner.ts +27 -0
  24. codna/agent-core/vendor/cline/algenta/http.test.ts +48 -0
  25. codna/agent-core/vendor/cline/algenta/mojo-gate.test.ts +76 -0
  26. codna/agent-core/vendor/cline/algenta/mojo-gate.ts +151 -0
  27. codna/agent-core/vendor/cline/algenta/policy.test.ts +260 -0
  28. codna/agent-core/vendor/cline/algenta/postbuild.sh +31 -0
  29. codna/agent-core/vendor/cline/algenta/proof-artifacts.test.ts +55 -0
  30. codna/agent-core/vendor/cline/algenta/proof-provider.ts +301 -0
  31. codna/agent-core/vendor/cline/algenta/proofs.ts +311 -0
  32. codna/agent-core/vendor/cline/algenta/provider-key.test.ts +197 -0
  33. codna/agent-core/vendor/cline/algenta/run-server.ts +645 -0
  34. codna/agent-core/vendor/cline/algenta/scheduled-agents.ts +430 -0
  35. codna/agent-core/vendor/cline/algenta/server/artifacts.ts +532 -0
  36. codna/agent-core/vendor/cline/algenta/server/contracts.ts +254 -0
  37. codna/agent-core/vendor/cline/algenta/server/execution.ts +284 -0
  38. codna/agent-core/vendor/cline/algenta/server/http.ts +146 -0
  39. codna/agent-core/vendor/cline/algenta/server/policy.ts +391 -0
  40. codna/agent-core/vendor/cline/algenta/server/state.ts +21 -0
  41. codna/agent-core/vendor/cline/algenta/server/utils.ts +508 -0
  42. codna/agent-core/vendor/cline/algenta/task-policy.ts +82 -0
  43. codna/agent-core/vendor/cline/algenta/telys-localize.test.ts +416 -0
  44. codna/agent-core/vendor/cline/algenta/telys-localize.ts +608 -0
  45. codna/agent-core/vendor/cline/algenta/telys-worker.test.ts +99 -0
  46. codna/agent-core/vendor/cline/algenta/telys-worker.ts +245 -0
  47. codna/agent-core/vendor/cline/algenta/tools.test.ts +59 -0
  48. codna/agent-core/vendor/cline/algenta/tools.ts +196 -0
  49. codna/agent-core/vendor/cline/algenta/write-scope.test.ts +26 -0
  50. codna/agent-core/vendor/cline/algenta/write-scope.ts +60 -0
  51. codna/agent-core/vendor/cline/biome.json +19 -0
  52. codna/agent-core/vendor/cline/bun.lock +1179 -0
  53. codna/agent-core/vendor/cline/package.json +60 -0
  54. codna/agent-core/vendor/cline/sdk/.cline/rules/worktree_dependency_hygiene.md +15 -0
  55. codna/agent-core/vendor/cline/sdk/.cline/skills/plugin.md +892 -0
  56. codna/agent-core/vendor/cline/sdk/.gitignore +69 -0
  57. codna/agent-core/vendor/cline/sdk/AGENTS.md +109 -0
  58. codna/agent-core/vendor/cline/sdk/ARCHITECTURE.md +525 -0
  59. codna/agent-core/vendor/cline/sdk/CHANGELOG.md +32 -0
  60. codna/agent-core/vendor/cline/sdk/CONTRIBUTING.md +196 -0
  61. codna/agent-core/vendor/cline/sdk/README.md +273 -0
  62. codna/agent-core/vendor/cline/sdk/biome.json +140 -0
  63. codna/agent-core/vendor/cline/sdk/examples/README.md +196 -0
  64. codna/agent-core/vendor/cline/sdk/examples/cron/README.md +419 -0
  65. codna/agent-core/vendor/cline/sdk/examples/cron/changelog-generator.cron.md +37 -0
  66. codna/agent-core/vendor/cline/sdk/examples/cron/code-style-audit.cron.md +47 -0
  67. codna/agent-core/vendor/cline/sdk/examples/cron/daily-code-review.cron.md +28 -0
  68. codna/agent-core/vendor/cline/sdk/examples/cron/dead-code-finder.cron.md +58 -0
  69. codna/agent-core/vendor/cline/sdk/examples/cron/dependency-check.cron.md +35 -0
  70. codna/agent-core/vendor/cline/sdk/examples/cron/documentation-check.cron.md +66 -0
  71. codna/agent-core/vendor/cline/sdk/examples/cron/events/local-manual-test.event.md +28 -0
  72. codna/agent-core/vendor/cline/sdk/examples/cron/events/local-plugin-event.event.md +20 -0
  73. codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-changelog-check.event.md +42 -0
  74. codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-review.event.md +32 -0
  75. codna/agent-core/vendor/cline/sdk/examples/cron/events/pr-test-coverage.event.md +55 -0
  76. codna/agent-core/vendor/cline/sdk/examples/cron/performance-baseline.cron.md +45 -0
  77. codna/agent-core/vendor/cline/sdk/examples/cron/test-coverage-report.cron.md +41 -0
  78. codna/agent-core/vendor/cline/sdk/examples/cron/type-check-strict.cron.md +44 -0
  79. codna/agent-core/vendor/cline/sdk/examples/cron/weekly-metrics-summary.cron.md +67 -0
  80. codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.py +62 -0
  81. codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.sh +17 -0
  82. codna/agent-core/vendor/cline/sdk/examples/hooks/PostToolUse.ts +86 -0
  83. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.py +34 -0
  84. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.sh +16 -0
  85. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse.ts +66 -0
  86. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_BlockDestructive.sh +25 -0
  87. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_InjectContext.py +116 -0
  88. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_InjectFileContext.sh +57 -0
  89. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_ModifyInput.ts +125 -0
  90. codna/agent-core/vendor/cline/sdk/examples/hooks/PreToolUse_RequireReview.sh +19 -0
  91. codna/agent-core/vendor/cline/sdk/examples/hooks/README.md +435 -0
  92. codna/agent-core/vendor/cline/sdk/examples/hooks/SessionShutdown.sh +14 -0
  93. codna/agent-core/vendor/cline/sdk/examples/hooks/TaskComplete.sh +27 -0
  94. codna/agent-core/vendor/cline/sdk/examples/hooks/TaskStart.sh +14 -0
  95. codna/agent-core/vendor/cline/sdk/examples/hooks/custom-compaction-hook.example.ts +246 -0
  96. codna/agent-core/vendor/cline/sdk/examples/package.json +19 -0
  97. codna/agent-core/vendor/cline/sdk/examples/plugins/README.md +203 -0
  98. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/README.md +122 -0
  99. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/anvil.md +16 -0
  100. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/inquisitor.md +18 -0
  101. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/oracle.md +18 -0
  102. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/agents/phantom.md +17 -0
  103. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/index.ts +831 -0
  104. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/package.json +39 -0
  105. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/api-design.md +63 -0
  106. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/code-review.md +61 -0
  107. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/debugging.md +62 -0
  108. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/documentation.md +83 -0
  109. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/migration.md +77 -0
  110. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/refactoring.md +58 -0
  111. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/skills/test-generation.md +76 -0
  112. codna/agent-core/vendor/cline/sdk/examples/plugins/agents-squad/tsconfig.json +4 -0
  113. codna/agent-core/vendor/cline/sdk/examples/plugins/automation-events.ts +91 -0
  114. codna/agent-core/vendor/cline/sdk/examples/plugins/background-terminal.ts +444 -0
  115. codna/agent-core/vendor/cline/sdk/examples/plugins/custom-compaction.ts +225 -0
  116. codna/agent-core/vendor/cline/sdk/examples/plugins/env-blocker.ts +118 -0
  117. codna/agent-core/vendor/cline/sdk/examples/plugins/gitignore-read-files-guard.ts +270 -0
  118. codna/agent-core/vendor/cline/sdk/examples/plugins/mac-notify.ts +67 -0
  119. codna/agent-core/vendor/cline/sdk/examples/plugins/openrouter-provider.ts +144 -0
  120. codna/agent-core/vendor/cline/sdk/examples/plugins/typescript-lsp/README.md +106 -0
  121. codna/agent-core/vendor/cline/sdk/examples/plugins/typescript-lsp/index.ts +298 -0
  122. codna/agent-core/vendor/cline/sdk/examples/plugins/weather-metrics.ts +151 -0
  123. codna/agent-core/vendor/cline/sdk/examples/plugins/web-search.ts +324 -0
  124. codna/agent-core/vendor/cline/sdk/examples/tsconfig.json +58 -0
  125. codna/agent-core/vendor/cline/sdk/packages/README.md +44 -0
  126. codna/agent-core/vendor/cline/sdk/packages/agents/README.md +278 -0
  127. codna/agent-core/vendor/cline/sdk/packages/agents/bun.mts +29 -0
  128. codna/agent-core/vendor/cline/sdk/packages/agents/package.json +45 -0
  129. codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.provider-form.test.ts +210 -0
  130. codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.test.ts +1427 -0
  131. codna/agent-core/vendor/cline/sdk/packages/agents/src/agent-runtime.ts +1558 -0
  132. codna/agent-core/vendor/cline/sdk/packages/agents/src/index.ts +57 -0
  133. codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.build.json +13 -0
  134. codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.dev.json +13 -0
  135. codna/agent-core/vendor/cline/sdk/packages/agents/tsconfig.json +9 -0
  136. codna/agent-core/vendor/cline/sdk/packages/agents/vitest.config.ts +10 -0
  137. codna/agent-core/vendor/cline/sdk/packages/core/README.md +110 -0
  138. codna/agent-core/vendor/cline/sdk/packages/core/bun.mts +75 -0
  139. codna/agent-core/vendor/cline/sdk/packages/core/docs/messages-contract-v1.md +148 -0
  140. codna/agent-core/vendor/cline/sdk/packages/core/fixtures/messages/success.messages.json +72 -0
  141. codna/agent-core/vendor/cline/sdk/packages/core/package.json +80 -0
  142. codna/agent-core/vendor/cline/sdk/packages/core/scripts/telemetry-smoke-host.ts +204 -0
  143. codna/agent-core/vendor/cline/sdk/packages/core/scripts/telemetry-smoke.ts +431 -0
  144. codna/agent-core/vendor/cline/sdk/packages/core/src/ClineCore.test.ts +607 -0
  145. codna/agent-core/vendor/cline/sdk/packages/core/src/ClineCore.ts +566 -0
  146. codna/agent-core/vendor/cline/sdk/packages/core/src/account/cline-account-service.test.ts +217 -0
  147. codna/agent-core/vendor/cline/sdk/packages/core/src/account/cline-account-service.ts +338 -0
  148. codna/agent-core/vendor/cline/sdk/packages/core/src/account/featurebase-token.test.ts +175 -0
  149. codna/agent-core/vendor/cline/sdk/packages/core/src/account/index.ts +24 -0
  150. codna/agent-core/vendor/cline/sdk/packages/core/src/account/rpc.test.ts +63 -0
  151. codna/agent-core/vendor/cline/sdk/packages/core/src/account/rpc.ts +185 -0
  152. codna/agent-core/vendor/cline/sdk/packages/core/src/account/types.ts +108 -0
  153. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/bounded-ttl-cache.test.ts +38 -0
  154. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/bounded-ttl-cache.ts +53 -0
  155. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/client.test.ts +93 -0
  156. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/client.ts +50 -0
  157. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/cline.test.ts +233 -0
  158. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/cline.ts +722 -0
  159. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/codex.test.ts +170 -0
  160. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/codex.ts +491 -0
  161. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/oca.test.ts +340 -0
  162. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/oca.ts +588 -0
  163. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/server.test.ts +319 -0
  164. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/server.ts +265 -0
  165. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/types.ts +110 -0
  166. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/utils.test.ts +128 -0
  167. codna/agent-core/vendor/cline/sdk/packages/core/src/auth/utils.ts +247 -0
  168. codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/automation.ts +250 -0
  169. codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/runtime-services.ts +75 -0
  170. codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/start-input.ts +91 -0
  171. codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/telemetry.ts +39 -0
  172. codna/agent-core/vendor/cline/sdk/packages/core/src/cline-core/types.ts +274 -0
  173. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/cron-event-ingress.test.ts +255 -0
  174. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/cron-event-ingress.ts +357 -0
  175. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/events/index.ts +1 -0
  176. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/index.ts +7 -0
  177. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/reports/cron-report-writer.ts +153 -0
  178. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/reports/index.ts +1 -0
  179. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-materializer.test.ts +152 -0
  180. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-materializer.ts +100 -0
  181. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-runner.test.ts +342 -0
  182. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/cron-runner.ts +547 -0
  183. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/index.ts +3 -0
  184. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/runner/resource-limiter.ts +46 -0
  185. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/index.ts +1 -0
  186. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/scheduler.test.ts +16 -0
  187. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/schedule/scheduler.ts +373 -0
  188. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/cron-service.ts +163 -0
  189. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/index.ts +3 -0
  190. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-command-service.ts +198 -0
  191. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-service.test.ts +213 -0
  192. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/service/schedule-service.ts +416 -0
  193. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-reconciler.test.ts +138 -0
  194. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-reconciler.ts +241 -0
  195. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-spec-parser.test.ts +198 -0
  196. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-spec-parser.ts +489 -0
  197. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-watcher.test.ts +87 -0
  198. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/cron-watcher.ts +102 -0
  199. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/specs/index.ts +3 -0
  200. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/cron-schema.ts +127 -0
  201. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/index.ts +2 -0
  202. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/sqlite-cron-store.test.ts +354 -0
  203. codna/agent-core/vendor/cline/sdk/packages/core/src/cron/store/sqlite-cron-store.ts +1552 -0
  204. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/index.ts +46 -0
  205. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/runtime-commands.test.ts +185 -0
  206. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/runtime-commands.ts +92 -0
  207. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/skill-frontmatter-toggle.test.ts +109 -0
  208. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/skill-frontmatter-toggle.ts +83 -0
  209. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/unified-config-file-watcher.test.ts +193 -0
  210. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/unified-config-file-watcher.ts +496 -0
  211. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-config-loader.test.ts +424 -0
  212. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-config-loader.ts +628 -0
  213. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-plugin.ts +277 -0
  214. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/config/user-instruction-service.ts +128 -0
  215. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/agentic-compaction.ts +153 -0
  216. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/basic-compaction.ts +419 -0
  217. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction-shared.ts +511 -0
  218. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.live.test.ts +346 -0
  219. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.test.ts +1729 -0
  220. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/context/compaction.ts +430 -0
  221. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/index.ts +19 -0
  222. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/client.ts +579 -0
  223. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/config-loader.test.ts +402 -0
  224. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/config-loader.ts +446 -0
  225. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/index.ts +57 -0
  226. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/manager.test.ts +105 -0
  227. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/manager.ts +260 -0
  228. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/name-transform.ts +33 -0
  229. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/oauth.test.ts +79 -0
  230. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/oauth.ts +401 -0
  231. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/policies.ts +47 -0
  232. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/tools.ts +47 -0
  233. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/mcp/types.ts +135 -0
  234. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-config-loader.test.ts +480 -0
  235. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-config-loader.ts +313 -0
  236. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-load-report.ts +20 -0
  237. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-loader.test.ts +473 -0
  238. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-loader.ts +214 -0
  239. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-module-import.ts +682 -0
  240. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox-bootstrap.ts +781 -0
  241. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox.test.ts +810 -0
  242. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-sandbox.ts +640 -0
  243. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/plugin/plugin-targeting.ts +32 -0
  244. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/constants.ts +37 -0
  245. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/definitions.test.ts +1408 -0
  246. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/definitions.ts +863 -0
  247. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch-parser.ts +520 -0
  248. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch.test.ts +147 -0
  249. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/apply-patch.ts +348 -0
  250. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/bash.test.ts +108 -0
  251. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/bash.ts +211 -0
  252. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/editor.test.ts +113 -0
  253. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/editor.ts +220 -0
  254. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/file-read.test.ts +167 -0
  255. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/file-read.ts +140 -0
  256. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/index.ts +87 -0
  257. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/search.ts +471 -0
  258. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/executors/web-fetch.ts +259 -0
  259. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/helpers.ts +126 -0
  260. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/index.ts +183 -0
  261. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/model-tool-routing.test.ts +86 -0
  262. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/model-tool-routing.ts +134 -0
  263. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/presets.test.ts +72 -0
  264. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/presets.ts +190 -0
  265. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/runtime.test.ts +74 -0
  266. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/runtime.ts +261 -0
  267. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/schemas.ts +345 -0
  268. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/delegated-agent.ts +136 -0
  269. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/index.ts +5 -0
  270. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/multi-agent.lifecycle.test.ts +649 -0
  271. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/multi-agent.ts +1845 -0
  272. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/projections.ts +283 -0
  273. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/runtime.ts +54 -0
  274. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/spawn-agent-tool.test.ts +378 -0
  275. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/spawn-agent-tool.ts +203 -0
  276. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/subagent-prompts.ts +41 -0
  277. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/team-tools.test.ts +991 -0
  278. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/team/team-tools.ts +912 -0
  279. codna/agent-core/vendor/cline/sdk/packages/core/src/extensions/tools/types.ts +358 -0
  280. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/checkpoint-hooks.test.ts +276 -0
  281. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/checkpoint-hooks.ts +291 -0
  282. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-extension.ts +15 -0
  283. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-config.test.ts +17 -0
  284. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-config.ts +117 -0
  285. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-hooks.test.ts +593 -0
  286. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/hook-file-hooks.ts +1140 -0
  287. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/index.ts +34 -0
  288. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/subprocess-runner.ts +196 -0
  289. codna/agent-core/vendor/cline/sdk/packages/core/src/hooks/subprocess.ts +543 -0
  290. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/connect.test.ts +74 -0
  291. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/connect.ts +187 -0
  292. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/index.test.ts +994 -0
  293. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/index.ts +1087 -0
  294. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/session-client.test.ts +310 -0
  295. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/session-client.ts +734 -0
  296. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/client/ui-client.ts +128 -0
  297. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/entry.ts +129 -0
  298. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/index.test.ts +357 -0
  299. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/index.ts +345 -0
  300. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/runtime-handlers.ts +144 -0
  301. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/daemon/start-shared-server.ts +61 -0
  302. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/defaults.test.ts +122 -0
  303. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/defaults.ts +70 -0
  304. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/index.test.ts +91 -0
  305. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/index.ts +260 -0
  306. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/discovery/workspace.ts +19 -0
  307. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/index.ts +37 -0
  308. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/hub-runtime-host.test.ts +1485 -0
  309. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/hub-runtime-host.ts +1948 -0
  310. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/runtime-host/remote-runtime-host.ts +27 -0
  311. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/boundary.test.ts +1142 -0
  312. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/browser-websocket.test.ts +173 -0
  313. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/browser-websocket.ts +295 -0
  314. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/command-transport.ts +14 -0
  315. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/fetch-wiring.test.ts +102 -0
  316. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/approval-handlers.ts +133 -0
  317. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/capability-handlers.ts +278 -0
  318. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/client-handlers.ts +86 -0
  319. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/context.ts +211 -0
  320. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/run-handlers.test.ts +186 -0
  321. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/run-handlers.ts +337 -0
  322. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/session-event-projector.ts +355 -0
  323. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/handlers/session-handlers.ts +842 -0
  324. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-capability-tool-executors.test.ts +215 -0
  325. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-client-contributions.ts +687 -0
  326. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-notifications.ts +94 -0
  327. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-schedule-events.ts +20 -0
  328. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-logging.ts +69 -0
  329. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-options.ts +66 -0
  330. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-server-transport.ts +593 -0
  331. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-session-records.ts +99 -0
  332. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/hub-websocket-server.ts +562 -0
  333. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/index.test.ts +358 -0
  334. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/index.ts +4 -0
  335. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/native-transport.ts +31 -0
  336. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/notification.test.ts +21 -0
  337. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/server/ui-events.test.ts +232 -0
  338. codna/agent-core/vendor/cline/sdk/packages/core/src/hub/settings.test.ts +143 -0
  339. codna/agent-core/vendor/cline/sdk/packages/core/src/index.ts +789 -0
  340. codna/agent-core/vendor/cline/sdk/packages/core/src/remote-config/integration.ts +133 -0
  341. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/index.ts +2 -0
  342. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/normalize-runtime-capabilities.ts +33 -0
  343. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/capabilities/runtime-capabilities.ts +9 -0
  344. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-message-codec.test.ts +171 -0
  345. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-message-codec.ts +301 -0
  346. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-runtime-config-builder.test.ts +268 -0
  347. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/config/agent-runtime-config-builder.ts +181 -0
  348. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/history.test.ts +573 -0
  349. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/history.ts +516 -0
  350. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/host.test.ts +297 -0
  351. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/host.ts +248 -0
  352. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/agent-event-bridge.ts +231 -0
  353. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/session-record.ts +52 -0
  354. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/session-service-invoker.ts +40 -0
  355. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/spawn-tool.ts +162 -0
  356. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local/user-files.ts +18 -0
  357. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.e2e.test.ts +576 -0
  358. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.test.ts +5167 -0
  359. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/local-runtime-host.ts +1755 -0
  360. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host-support.test.ts +55 -0
  361. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host-support.ts +140 -0
  362. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/host/runtime-host.ts +323 -0
  363. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/index.ts +24 -0
  364. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.team-persistence.test.ts +290 -0
  365. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.test.ts +887 -0
  366. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-builder.ts +637 -0
  367. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-event-adapter.test.ts +901 -0
  368. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-event-adapter.ts +426 -0
  369. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-oauth-token-manager.test.ts +137 -0
  370. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-oauth-token-manager.ts +269 -0
  371. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/runtime-parity.test.ts +165 -0
  372. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime-orchestrator.test.ts +1900 -0
  373. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime-orchestrator.ts +1334 -0
  374. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/session-runtime.ts +73 -0
  375. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/orchestration/user-input-builder.ts +159 -0
  376. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/loop-detection.ts +162 -0
  377. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/mistake-tracker.ts +221 -0
  378. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/rules.test.ts +22 -0
  379. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/safety/rules.ts +49 -0
  380. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/subprocess-sandbox.test.ts +81 -0
  381. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/subprocess-sandbox.ts +333 -0
  382. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/tools/tool-approval.ts +102 -0
  383. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/turn-queue/pending-prompt-service.test.ts +168 -0
  384. codna/agent-core/vendor/cline/sdk/packages/core/src/runtime/turn-queue/pending-prompt-service.ts +381 -0
  385. codna/agent-core/vendor/cline/sdk/packages/core/src/services/agent-events.ts +321 -0
  386. codna/agent-core/vendor/cline/sdk/packages/core/src/services/config.ts +5 -0
  387. codna/agent-core/vendor/cline/sdk/packages/core/src/services/global-settings.test.ts +352 -0
  388. codna/agent-core/vendor/cline/sdk/packages/core/src/services/global-settings.ts +324 -0
  389. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/apihandler-agent-model-adapter.test.ts +229 -0
  390. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/apihandler-agent-model-adapter.ts +170 -0
  391. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/cline-recommended-models.ts +168 -0
  392. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/configured-provider-registry.ts +193 -0
  393. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/handler-factory.test.ts +288 -0
  394. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/handler-factory.ts +197 -0
  395. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-defaults.test.ts +260 -0
  396. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-defaults.ts +887 -0
  397. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-settings.test.ts +26 -0
  398. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/provider-settings.ts +322 -0
  399. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-config.ts +43 -0
  400. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-registry.ts +172 -0
  401. codna/agent-core/vendor/cline/sdk/packages/core/src/services/llms/runtime-types.ts +121 -0
  402. codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.startup.test.ts +249 -0
  403. codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.test.ts +543 -0
  404. codna/agent-core/vendor/cline/sdk/packages/core/src/services/local-runtime-bootstrap.ts +470 -0
  405. codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-tools.ts +230 -0
  406. codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-uninstall.test.ts +165 -0
  407. codna/agent-core/vendor/cline/sdk/packages/core/src/services/plugin-uninstall.ts +425 -0
  408. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-registry.ts +468 -0
  409. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-service.test.ts +1358 -0
  410. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/local-provider-service.ts +948 -0
  411. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/model-source.ts +105 -0
  412. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/provider-config-fields.test.ts +137 -0
  413. codna/agent-core/vendor/cline/sdk/packages/core/src/services/providers/provider-config-fields.ts +211 -0
  414. codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-artifacts.ts +138 -0
  415. codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-data.test.ts +307 -0
  416. codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-data.ts +405 -0
  417. codna/agent-core/vendor/cline/sdk/packages/core/src/services/session-telemetry.ts +89 -0
  418. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/artifact-store.ts +1 -0
  419. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/file-team-store.ts +250 -0
  420. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/index.ts +11 -0
  421. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-legacy-migration.test.ts +656 -0
  422. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-legacy-migration.ts +798 -0
  423. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-manager.test.ts +354 -0
  424. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/provider-settings-manager.ts +194 -0
  425. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/session-store.ts +1 -0
  426. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/sqlite-session-store.ts +272 -0
  427. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/sqlite-team-store.ts +537 -0
  428. codna/agent-core/vendor/cline/sdk/packages/core/src/services/storage/team-store.ts +36 -0
  429. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/ITelemetryAdapter.ts +94 -0
  430. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryAdapter.test.ts +157 -0
  431. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryAdapter.ts +348 -0
  432. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryProvider.test.ts +401 -0
  433. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/OpenTelemetryProvider.ts +545 -0
  434. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryLoggerSink.test.ts +42 -0
  435. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryLoggerSink.ts +121 -0
  436. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryService.test.ts +134 -0
  437. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/TelemetryService.ts +139 -0
  438. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/core-events.test.ts +696 -0
  439. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/core-events.ts +680 -0
  440. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/distinct-id.test.ts +57 -0
  441. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/distinct-id.ts +69 -0
  442. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/index.ts +22 -0
  443. codna/agent-core/vendor/cline/sdk/packages/core/src/services/telemetry/tool-context.ts +15 -0
  444. codna/agent-core/vendor/cline/sdk/packages/core/src/services/usage.test.ts +75 -0
  445. codna/agent-core/vendor/cline/sdk/packages/core/src/services/usage.ts +87 -0
  446. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/file-indexer.test.ts +156 -0
  447. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/file-indexer.ts +362 -0
  448. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/index.ts +7 -0
  449. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/mention-enricher.test.ts +106 -0
  450. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/mention-enricher.ts +122 -0
  451. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-manager.ts +100 -0
  452. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-manifest.ts +129 -0
  453. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-telemetry.test.ts +166 -0
  454. codna/agent-core/vendor/cline/sdk/packages/core/src/services/workspace/workspace-telemetry.ts +70 -0
  455. codna/agent-core/vendor/cline/sdk/packages/core/src/session/checkpoint-restore.test.ts +154 -0
  456. codna/agent-core/vendor/cline/sdk/packages/core/src/session/checkpoint-restore.ts +189 -0
  457. codna/agent-core/vendor/cline/sdk/packages/core/src/session/index.ts +32 -0
  458. codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-graph.ts +92 -0
  459. codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-manifest.ts +29 -0
  460. codna/agent-core/vendor/cline/sdk/packages/core/src/session/models/session-row.ts +199 -0
  461. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/file-session-service.ts +284 -0
  462. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/message-builder.test.ts +375 -0
  463. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/message-builder.ts +976 -0
  464. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/persistence-service.test.ts +553 -0
  465. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/persistence-service.ts +582 -0
  466. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/session-service.team-persistence.test.ts +48 -0
  467. codna/agent-core/vendor/cline/sdk/packages/core/src/session/services/session-service.ts +326 -0
  468. codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-snapshot.ts +208 -0
  469. codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-versioning-service.test.ts +195 -0
  470. codna/agent-core/vendor/cline/sdk/packages/core/src/session/session-versioning-service.ts +245 -0
  471. codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/conversation-store.ts +77 -0
  472. codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/session-manifest-store.ts +160 -0
  473. codna/agent-core/vendor/cline/sdk/packages/core/src/session/stores/team-persistence-store.ts +176 -0
  474. codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/index.ts +12 -0
  475. codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/team-child-session-manager.ts +415 -0
  476. codna/agent-core/vendor/cline/sdk/packages/core/src/session/team/team-session-coordinator.ts +240 -0
  477. codna/agent-core/vendor/cline/sdk/packages/core/src/settings/index.ts +15 -0
  478. codna/agent-core/vendor/cline/sdk/packages/core/src/settings/settings-service.test.ts +303 -0
  479. codna/agent-core/vendor/cline/sdk/packages/core/src/settings/settings-service.ts +317 -0
  480. codna/agent-core/vendor/cline/sdk/packages/core/src/settings/types.ts +67 -0
  481. codna/agent-core/vendor/cline/sdk/packages/core/src/types/chat-schema.ts +90 -0
  482. codna/agent-core/vendor/cline/sdk/packages/core/src/types/common.ts +54 -0
  483. codna/agent-core/vendor/cline/sdk/packages/core/src/types/config.ts +220 -0
  484. codna/agent-core/vendor/cline/sdk/packages/core/src/types/events.ts +88 -0
  485. codna/agent-core/vendor/cline/sdk/packages/core/src/types/index.ts +26 -0
  486. codna/agent-core/vendor/cline/sdk/packages/core/src/types/provider-settings.ts +56 -0
  487. codna/agent-core/vendor/cline/sdk/packages/core/src/types/session.ts +134 -0
  488. codna/agent-core/vendor/cline/sdk/packages/core/src/types/sessions.ts +45 -0
  489. codna/agent-core/vendor/cline/sdk/packages/core/src/types/storage.ts +56 -0
  490. codna/agent-core/vendor/cline/sdk/packages/core/src/types.ts +184 -0
  491. codna/agent-core/vendor/cline/sdk/packages/core/src/version.ts +3 -0
  492. codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.build.json +18 -0
  493. codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.dev.json +8 -0
  494. codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.json +24 -0
  495. codna/agent-core/vendor/cline/sdk/packages/core/tsconfig.smoke.json +18 -0
  496. codna/agent-core/vendor/cline/sdk/packages/core/vitest.config.ts +9 -0
  497. codna/agent-core/vendor/cline/sdk/packages/core/vitest.e2e.config.ts +10 -0
  498. codna/agent-core/vendor/cline/sdk/packages/llms/AGENTS.md +39 -0
  499. codna/agent-core/vendor/cline/sdk/packages/llms/README.md +227 -0
  500. codna/agent-core/vendor/cline/sdk/packages/llms/bun.mts +49 -0
  501. codna/agent-core/vendor/cline/sdk/packages/llms/fixtures/usage.json +308 -0
  502. codna/agent-core/vendor/cline/sdk/packages/llms/package.json +73 -0
  503. codna/agent-core/vendor/cline/sdk/packages/llms/scripts/fix-esm-imports.ts +109 -0
  504. codna/agent-core/vendor/cline/sdk/packages/llms/scripts/generate-models.ts +136 -0
  505. codna/agent-core/vendor/cline/sdk/packages/llms/scripts/models/generate-models-dev.ts +24 -0
  506. codna/agent-core/vendor/cline/sdk/packages/llms/scripts/tsconfig.json +14 -0
  507. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/README.md +165 -0
  508. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog-live.test.ts +275 -0
  509. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog-live.ts +186 -0
  510. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog.generated-access.ts +41 -0
  511. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/catalog.generated.ts +22756 -0
  512. codna/agent-core/vendor/cline/sdk/packages/llms/src/catalog/types.ts +97 -0
  513. codna/agent-core/vendor/cline/sdk/packages/llms/src/index.browser.ts +33 -0
  514. codna/agent-core/vendor/cline/sdk/packages/llms/src/index.ts +74 -0
  515. codna/agent-core/vendor/cline/sdk/packages/llms/src/models.ts +31 -0
  516. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ai-sdk.test.ts +371 -0
  517. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ai-sdk.ts +1012 -0
  518. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/async.ts +7 -0
  519. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/billing.test.ts +28 -0
  520. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/billing.ts +23 -0
  521. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins-runtime.ts +101 -0
  522. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins.test.ts +137 -0
  523. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/builtins.ts +1084 -0
  524. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/compat.test.ts +562 -0
  525. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/compat.ts +669 -0
  526. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/config.ts +429 -0
  527. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/factory-registry.ts +161 -0
  528. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/format.test.ts +43 -0
  529. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/format.ts +70 -0
  530. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/gateway.test.ts +3575 -0
  531. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/gateway.ts +310 -0
  532. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/handler.ts +91 -0
  533. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/http.ts +121 -0
  534. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ids.test.ts +143 -0
  535. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/ids.ts +95 -0
  536. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/messages.ts +17 -0
  537. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/middleware/split-tool-images.test.ts +504 -0
  538. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/middleware/split-tool-images.ts +293 -0
  539. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/model-facts.ts +270 -0
  540. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/model-registry.ts +122 -0
  541. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/openai-codex-models.ts +35 -0
  542. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/provider-keys.ts +153 -0
  543. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/registry.ts +279 -0
  544. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/anthropic-compatible.test.ts +503 -0
  545. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/anthropic-compatible.ts +602 -0
  546. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/generic-compatible.ts +151 -0
  547. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/glm-thinking.ts +106 -0
  548. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/minimax-thinking.ts +78 -0
  549. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-option-rules.ts +546 -0
  550. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options-types.ts +92 -0
  551. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options.test.ts +1872 -0
  552. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/provider-options.ts +119 -0
  553. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/reasoning-codecs.ts +40 -0
  554. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/routing/utils.ts +47 -0
  555. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/stream.ts +117 -0
  556. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/types.ts +77 -0
  557. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/anthropic.test.ts +90 -0
  558. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/anthropic.ts +39 -0
  559. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/bedrock.test.ts +201 -0
  560. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/bedrock.ts +171 -0
  561. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/community.test.ts +55 -0
  562. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/community.ts +207 -0
  563. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/google.ts +61 -0
  564. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/minimax-thinking.test.ts +69 -0
  565. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/minimax-thinking.ts +104 -0
  566. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/mistral.ts +31 -0
  567. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/openai-compatible.ts +49 -0
  568. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/openai.ts +24 -0
  569. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/types.ts +141 -0
  570. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/vertex.test.ts +125 -0
  571. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers/vendors/vertex.ts +56 -0
  572. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers.browser.ts +5 -0
  573. codna/agent-core/vendor/cline/sdk/packages/llms/src/providers.ts +106 -0
  574. codna/agent-core/vendor/cline/sdk/packages/llms/src/services/langfuse-telemetry.test.ts +90 -0
  575. codna/agent-core/vendor/cline/sdk/packages/llms/src/services/langfuse-telemetry.ts +187 -0
  576. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.example.json +254 -0
  577. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.openai-codex.example.json +19 -0
  578. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.openai-codex.reasoning.example.json +22 -0
  579. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.reasoning-disabled.example.json +423 -0
  580. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.reasoning.example.json +349 -0
  581. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/live-providers.tools.example.json +199 -0
  582. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-config.test.ts +98 -0
  583. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-config.ts +193 -0
  584. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-minimax-routing.test.ts +264 -0
  585. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-reasoning.test.ts +290 -0
  586. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-runner.ts +47 -0
  587. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live-tools.test.ts +265 -0
  588. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-live.test.ts +350 -0
  589. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/README.md +31 -0
  590. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/anthropic-claude-sonnet-4-6.json +12 -0
  591. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/cline-anthropic-sonnet.json +12 -0
  592. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/openai-codex-gpt-5-4.json +11 -0
  593. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr/openai-compatible-deepseek-v4-pro.json +12 -0
  594. codna/agent-core/vendor/cline/sdk/packages/llms/src/tests/provider-vcr.test.ts +450 -0
  595. codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.build.json +19 -0
  596. codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.dev.json +12 -0
  597. codna/agent-core/vendor/cline/sdk/packages/llms/tsconfig.json +11 -0
  598. codna/agent-core/vendor/cline/sdk/packages/llms/vitest.config.ts +24 -0
  599. codna/agent-core/vendor/cline/sdk/packages/sdk/bun.mts +18 -0
  600. codna/agent-core/vendor/cline/sdk/packages/sdk/package.json +37 -0
  601. codna/agent-core/vendor/cline/sdk/packages/sdk/src/index.ts +1 -0
  602. codna/agent-core/vendor/cline/sdk/packages/sdk/tsconfig.build.json +12 -0
  603. codna/agent-core/vendor/cline/sdk/packages/sdk/tsconfig.json +11 -0
  604. codna/agent-core/vendor/cline/sdk/packages/shared/README.md +47 -0
  605. codna/agent-core/vendor/cline/sdk/packages/shared/bun.mts +70 -0
  606. codna/agent-core/vendor/cline/sdk/packages/shared/package.json +63 -0
  607. codna/agent-core/vendor/cline/sdk/packages/shared/src/agent.ts +561 -0
  608. codna/agent-core/vendor/cline/sdk/packages/shared/src/agents/index.ts +1 -0
  609. codna/agent-core/vendor/cline/sdk/packages/shared/src/agents/types.ts +1055 -0
  610. codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/index.ts +31 -0
  611. codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/schemas.ts +99 -0
  612. codna/agent-core/vendor/cline/sdk/packages/shared/src/automation/types.ts +187 -0
  613. codna/agent-core/vendor/cline/sdk/packages/shared/src/connectors/events.ts +73 -0
  614. codna/agent-core/vendor/cline/sdk/packages/shared/src/connectors/options.ts +190 -0
  615. codna/agent-core/vendor/cline/sdk/packages/shared/src/cron/cron-spec-types.ts +104 -0
  616. codna/agent-core/vendor/cline/sdk/packages/shared/src/cron/index.ts +13 -0
  617. codna/agent-core/vendor/cline/sdk/packages/shared/src/db/index.ts +14 -0
  618. codna/agent-core/vendor/cline/sdk/packages/shared/src/db/sqlite-db.test.ts +155 -0
  619. codna/agent-core/vendor/cline/sdk/packages/shared/src/db/sqlite-db.ts +381 -0
  620. codna/agent-core/vendor/cline/sdk/packages/shared/src/dispose.ts +31 -0
  621. codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/context.ts +92 -0
  622. codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/contribution-registry.test.ts +156 -0
  623. codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/contribution-registry.ts +524 -0
  624. codna/agent-core/vendor/cline/sdk/packages/shared/src/extensions/plugin.ts +1 -0
  625. codna/agent-core/vendor/cline/sdk/packages/shared/src/hooks/contracts.ts +9 -0
  626. codna/agent-core/vendor/cline/sdk/packages/shared/src/hooks/events.ts +327 -0
  627. codna/agent-core/vendor/cline/sdk/packages/shared/src/hub.ts +723 -0
  628. codna/agent-core/vendor/cline/sdk/packages/shared/src/index.browser.ts +355 -0
  629. codna/agent-core/vendor/cline/sdk/packages/shared/src/index.ts +405 -0
  630. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/ai-sdk-format.test.ts +898 -0
  631. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/ai-sdk-format.ts +389 -0
  632. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/gateway.ts +202 -0
  633. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/messages.ts +168 -0
  634. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/model-info.ts +94 -0
  635. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/reasoning-effort.ts +73 -0
  636. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/requests.ts +12 -0
  637. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/tokens.ts +12 -0
  638. codna/agent-core/vendor/cline/sdk/packages/shared/src/llms/tools.ts +96 -0
  639. codna/agent-core/vendor/cline/sdk/packages/shared/src/logging/logger.ts +45 -0
  640. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/error.ts +18 -0
  641. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/headers/utils.ts +28 -0
  642. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/json.test.ts +14 -0
  643. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/json.ts +86 -0
  644. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/shell.test.ts +46 -0
  645. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/shell.ts +32 -0
  646. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/string.ts +29 -0
  647. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/time.ts +39 -0
  648. codna/agent-core/vendor/cline/sdk/packages/shared/src/parse/zod.ts +23 -0
  649. codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/cline.ts +117 -0
  650. codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/format.test.ts +39 -0
  651. codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/format.ts +99 -0
  652. codna/agent-core/vendor/cline/sdk/packages/shared/src/prompt/system.ts +64 -0
  653. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/artifact-store.ts +70 -0
  654. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/blob-storage.ts +416 -0
  655. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/bundle.ts +181 -0
  656. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/constants.ts +5 -0
  657. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/index.ts +9 -0
  658. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/materializer.ts +165 -0
  659. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/paths.ts +33 -0
  660. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/runtime.test.ts +102 -0
  661. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/runtime.ts +236 -0
  662. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/schema.test.ts +977 -0
  663. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/schema.ts +262 -0
  664. codna/agent-core/vendor/cline/sdk/packages/shared/src/remote-config/telemetry.ts +124 -0
  665. codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/index.ts +5 -0
  666. codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/runtime.ts +429 -0
  667. codna/agent-core/vendor/cline/sdk/packages/shared/src/rpc/team-progress.ts +71 -0
  668. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/build-env.test.ts +115 -0
  669. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/build-env.ts +183 -0
  670. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/cline-environment.test.ts +106 -0
  671. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/cline-environment.ts +88 -0
  672. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/hub-daemon-env.test.ts +20 -0
  673. codna/agent-core/vendor/cline/sdk/packages/shared/src/runtime/hub-daemon-env.ts +7 -0
  674. codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry-config.ts +58 -0
  675. codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry.test.ts +66 -0
  676. codna/agent-core/vendor/cline/sdk/packages/shared/src/services/telemetry.ts +295 -0
  677. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/hook-context.ts +45 -0
  678. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/index.ts +6 -0
  679. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/records.ts +41 -0
  680. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/runtime-config.ts +69 -0
  681. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/runtime-env.ts +8 -0
  682. codna/agent-core/vendor/cline/sdk/packages/shared/src/session/workspace.ts +45 -0
  683. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/index.ts +47 -0
  684. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/path-resolution.test.ts +63 -0
  685. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/path-resolution.ts +114 -0
  686. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.home-dir.test.ts +61 -0
  687. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.test.ts +180 -0
  688. codna/agent-core/vendor/cline/sdk/packages/shared/src/storage/paths.ts +588 -0
  689. codna/agent-core/vendor/cline/sdk/packages/shared/src/team/index.ts +2 -0
  690. codna/agent-core/vendor/cline/sdk/packages/shared/src/team/schema.ts +452 -0
  691. codna/agent-core/vendor/cline/sdk/packages/shared/src/team/types.ts +235 -0
  692. codna/agent-core/vendor/cline/sdk/packages/shared/src/tools/create.test.ts +201 -0
  693. codna/agent-core/vendor/cline/sdk/packages/shared/src/tools/create.ts +130 -0
  694. codna/agent-core/vendor/cline/sdk/packages/shared/src/types/auth.ts +41 -0
  695. codna/agent-core/vendor/cline/sdk/packages/shared/src/types/index.ts +2 -0
  696. codna/agent-core/vendor/cline/sdk/packages/shared/src/types/vcr.ts +14 -0
  697. codna/agent-core/vendor/cline/sdk/packages/shared/src/vcr.test.ts +229 -0
  698. codna/agent-core/vendor/cline/sdk/packages/shared/src/vcr.ts +900 -0
  699. codna/agent-core/vendor/cline/sdk/packages/shared/tsconfig.build.json +7 -0
  700. codna/agent-core/vendor/cline/sdk/packages/shared/tsconfig.json +9 -0
  701. codna/agent-core/vendor/cline/sdk/packages/shared/vitest.config.ts +9 -0
  702. codna/agent-core/vendor/cline/sdk/packages/tsconfig.base.json +22 -0
  703. codna/agent-core/vendor/cline/sdk/scripts/check-publish.ts +351 -0
  704. codna/agent-core/vendor/cline/sdk/scripts/ci-node-smoke.ts +155 -0
  705. codna/agent-core/vendor/cline/sdk/scripts/clean.ts +91 -0
  706. codna/agent-core/vendor/cline/sdk/scripts/release.ts +548 -0
  707. codna/agent-core/vendor/cline/sdk/scripts/run-vendored-tests.sh +44 -0
  708. codna/agent-core/vendor/cline/sdk/scripts/version.ts +120 -0
  709. codna/agent-core/vendor/cline/sdk/tsconfig.json +53 -0
  710. codna/agent_core_runtime.py +816 -0
  711. codna/cli.py +921 -0
  712. codna/cli_errors.py +50 -0
  713. codna/cline_agent.py +90 -0
  714. codna/codeunits.py +221 -0
  715. codna/codeunits_treesitter.py +148 -0
  716. codna/doctor.py +212 -0
  717. codna/doctor_output.py +61 -0
  718. codna/engine.py +149 -0
  719. codna/evasion.py +192 -0
  720. codna/evidence.py +163 -0
  721. codna/findings.py +272 -0
  722. codna/gate.py +132 -0
  723. codna/gitpush.py +57 -0
  724. codna/local_client.py +932 -0
  725. codna/local_mojo_daemon.py +568 -0
  726. codna/local_mojo_pool.py +861 -0
  727. codna/local_repository_shims.py +419 -0
  728. codna/local_runtime.py +650 -0
  729. codna/localfix.py +121 -0
  730. codna/manifest.py +164 -0
  731. codna/mcp_server.py +155 -0
  732. codna/memory.py +885 -0
  733. codna/netjail.py +68 -0
  734. codna/packaged_agent_runner.py +354 -0
  735. codna/packaged_git.py +378 -0
  736. codna/packaged_repository_advanced.py +618 -0
  737. codna/packaged_repository_backend.py +887 -0
  738. codna/patchgen.py +115 -0
  739. codna/policy.py +85 -0
  740. codna/refengine.py +132 -0
  741. codna/repo_backend.py +78 -0
  742. codna/repository_artifacts.py +291 -0
  743. codna/runtime/__init__.py +17 -0
  744. codna/runtime/config.py +394 -0
  745. codna/runtime/health.py +130 -0
  746. codna/runtime/local_stack.py +978 -0
  747. codna/runtime/ports.py +137 -0
  748. codna/runtime/processes.py +199 -0
  749. codna/runtime_config.py +94 -0
  750. codna/sandbox.py +111 -0
  751. codna/sarif.py +610 -0
  752. codna/secure.py +250 -0
  753. codna/supervisor.py +108 -0
  754. codna/worker.py +161 -0
  755. codna/worktree.py +73 -0
  756. codna/writer.py +169 -0
  757. codna-0.1.0.dist-info/METADATA +153 -0
  758. codna-0.1.0.dist-info/RECORD +761 -0
  759. codna-0.1.0.dist-info/WHEEL +5 -0
  760. codna-0.1.0.dist-info/entry_points.txt +2 -0
  761. 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
+ }