savant-code 0.0.17 → 0.0.19

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 (1591) hide show
  1. package/.agents/skills/coding-csharp/SKILL.md +82 -0
  2. package/.agents/skills/coding-go/SKILL.md +76 -0
  3. package/.agents/skills/coding-java/SKILL.md +79 -0
  4. package/.agents/skills/coding-python/SKILL.md +87 -0
  5. package/.agents/skills/coding-rust/SKILL.md +83 -0
  6. package/.agents/skills/coding-typescript/SKILL.md +90 -0
  7. package/.agents/skills/release-workflow/SKILL.md +69 -0
  8. package/.bun-version +1 -0
  9. package/.commandcode/settings.json +11 -0
  10. package/.commandcode/taste/workflow/taste.md +6 -0
  11. package/.env.example +95 -0
  12. package/.gitattributes +43 -0
  13. package/.githooks/pre-push +35 -0
  14. package/.github/workflows/build-release-binaries.yml +163 -0
  15. package/.markdownlint.json +42 -0
  16. package/.markdownlintignore +21 -0
  17. package/.prettierignore +9 -0
  18. package/.prettierrc +23 -0
  19. package/.savantignore +3 -0
  20. package/AGENTS.md +97 -0
  21. package/ARCHITECTURE.md +241 -0
  22. package/CHANGELOG.md +2631 -0
  23. package/CONTRIBUTING.md +88 -0
  24. package/ECHO-freebuff.md +22 -0
  25. package/ECHO.md +722 -0
  26. package/FREEREADME.md +35 -0
  27. package/LEARNINGS.md +345 -0
  28. package/NOTICE +15 -0
  29. package/README.md +550 -348
  30. package/README.zh-CN.md +479 -0
  31. package/SECURITY.md +8 -0
  32. package/VERSION +1 -0
  33. package/WINDOWS.md +238 -0
  34. package/agents/README.md +41 -0
  35. package/agents/base-chat.ts +44 -0
  36. package/agents/basher.ts +107 -0
  37. package/agents/browser-use/browser-use.test.ts +211 -0
  38. package/agents/browser-use/browser-use.ts +259 -0
  39. package/agents/constants.ts +1 -0
  40. package/agents/context-pruner.ts +1076 -0
  41. package/agents/detective/detective.ts +168 -0
  42. package/agents/editor/best-of-n/best-of-n-selector2.ts +148 -0
  43. package/agents/editor/best-of-n/editor-implementor-gpt-5.ts +7 -0
  44. package/agents/editor/best-of-n/editor-implementor-opus.ts +7 -0
  45. package/agents/editor/best-of-n/editor-implementor.ts +196 -0
  46. package/agents/editor/best-of-n/editor-multi-prompt.ts +265 -0
  47. package/agents/file-explorer/directory-lister.ts +92 -0
  48. package/agents/file-explorer/glob-matcher.ts +96 -0
  49. package/agents/forge/forge.ts +146 -0
  50. package/agents/librarian/librarian.test.ts +289 -0
  51. package/agents/librarian/librarian.ts +158 -0
  52. package/agents/package.json +11 -0
  53. package/agents/recorder/recorder.ts +104 -0
  54. package/agents/researcher/researcher-docs.ts +32 -0
  55. package/agents/researcher/researcher-web.ts +40 -0
  56. package/agents/savant/savant-analyze.ts +11 -0
  57. package/agents/savant/savant-free-deepseek-flash.ts +13 -0
  58. package/agents/savant/savant-free-deepseek.ts +13 -0
  59. package/agents/savant/savant-free-evals.ts +9 -0
  60. package/agents/savant/savant-free-glm.ts +13 -0
  61. package/agents/savant/savant-free-kimi.ts +13 -0
  62. package/agents/savant/savant-free-mimo-pro.ts +13 -0
  63. package/agents/savant/savant-free-mimo.ts +13 -0
  64. package/agents/savant/savant-free-minimax-m3.ts +13 -0
  65. package/agents/savant/savant-free.ts +9 -0
  66. package/agents/savant/savant-scaffold.ts +15 -0
  67. package/agents/savant/savant.ts +706 -0
  68. package/agents/scout/scout.ts +305 -0
  69. package/agents/scribe/scribe.ts +54 -0
  70. package/agents/thinker/thinker-gemini.ts +26 -0
  71. package/agents/thinker/thinker-gpt.ts +21 -0
  72. package/agents/thinker/thinker-with-files-gemini.ts +66 -0
  73. package/agents/thinker/thinker.ts +99 -0
  74. package/agents/tmux-cli.ts +724 -0
  75. package/agents/tsconfig.json +12 -0
  76. package/agents/types/agent-definition.ts +1 -0
  77. package/agents/types/secret-agent-definition.ts +103 -0
  78. package/agents/types/tools.ts +465 -0
  79. package/agents/types/util-types.ts +167 -0
  80. package/agents/verifier/verifier.ts +80 -0
  81. package/art/savant-redesign.md +7 -0
  82. package/art/savant-text-graf.md +5 -0
  83. package/art/savant_ascii.md +88 -0
  84. package/assets/banner.png +0 -0
  85. package/bun.lock +1979 -0
  86. package/bunfig.toml +7 -0
  87. package/cli/README.md +111 -0
  88. package/cli/bunfig.toml +2 -0
  89. package/cli/cli_exit +1 -0
  90. package/cli/package.json +66 -0
  91. package/cli/release/README.md +348 -0
  92. package/{index.js → cli/release/index.js} +0 -0
  93. package/cli/release/package.json +56 -0
  94. package/cli/release-core/README.md +20 -0
  95. package/cli/release-core/package.json +4 -0
  96. package/cli/release-core/prepare-package.js +31 -0
  97. package/cli/release-staging/README.md +70 -0
  98. package/cli/release-staging/index.js +42 -0
  99. package/cli/release-staging/package.json +43 -0
  100. package/cli/scripts/build-binary.ts +469 -0
  101. package/cli/scripts/clean.ts +16 -0
  102. package/cli/scripts/prebuild-agents.ts +250 -0
  103. package/cli/scripts/release.ts +103 -0
  104. package/cli/scripts/smoke-binary.ts +280 -0
  105. package/cli/scripts/test-sdk-file-hooks.sh +87 -0
  106. package/cli/scripts/validate-cli-with-tmux.sh +43 -0
  107. package/cli/src/__tests__/README.md +256 -0
  108. package/cli/src/__tests__/bash-mode.test.ts +442 -0
  109. package/cli/src/__tests__/cli-args.test.ts +241 -0
  110. package/cli/src/__tests__/e2e/first-time-login.test.ts +173 -0
  111. package/cli/src/__tests__/e2e/logout-relogin-flow.test.ts +110 -0
  112. package/cli/src/__tests__/e2e/returning-user-auth.test.ts +111 -0
  113. package/cli/src/__tests__/e2e-cli.test.ts +185 -0
  114. package/cli/src/__tests__/helpers/mock-api-client.ts +64 -0
  115. package/cli/src/__tests__/helpers/terminal-watchdog-fixture.ts +50 -0
  116. package/cli/src/__tests__/home-directory-detection.test.ts +213 -0
  117. package/cli/src/__tests__/integration/agent-toolnames-validation.test.ts +63 -0
  118. package/cli/src/__tests__/integration/api-integration.test.ts +289 -0
  119. package/cli/src/__tests__/integration/credentials-storage.test.ts +453 -0
  120. package/cli/src/__tests__/integration/local-agents.test.ts +1187 -0
  121. package/cli/src/__tests__/integration/login-flow-instrumentation.test.ts +146 -0
  122. package/cli/src/__tests__/integration/login-polling-working.test.ts +287 -0
  123. package/cli/src/__tests__/integration/usage-refresh-on-completion.test.ts +177 -0
  124. package/cli/src/__tests__/integration-tmux.test.ts +186 -0
  125. package/cli/src/__tests__/mocks/hover-toggle-controller.ts +71 -0
  126. package/cli/src/__tests__/path-completion.test.ts +243 -0
  127. package/cli/src/__tests__/project-files-chat-id.test.ts +34 -0
  128. package/cli/src/__tests__/release/proxy-http-get.test.ts +670 -0
  129. package/cli/src/__tests__/release/wrapper-safety.test.ts +177 -0
  130. package/cli/src/__tests__/rerender-perf.integration.test.ts +283 -0
  131. package/cli/src/__tests__/terminal-reset-sequences.test.ts +36 -0
  132. package/cli/src/__tests__/terminal-watchdog.test.ts +114 -0
  133. package/cli/src/__tests__/test-utils.ts +266 -0
  134. package/cli/src/__tests__/tmux-poc.ts +150 -0
  135. package/cli/src/__tests__/unit/agent-mode-toggle.test.ts +138 -0
  136. package/cli/src/__tests__/unit/copy-button.test.tsx +188 -0
  137. package/cli/src/__tests__/unit/create-run-config.test.ts +77 -0
  138. package/cli/src/__tests__/unit/publish-confirmation.test.ts +70 -0
  139. package/cli/src/__tests__/unit/segmented-control.test.ts +167 -0
  140. package/cli/src/__tests__/utils/env.test.ts +210 -0
  141. package/cli/src/__tests__/utils/project-picker.test.ts +39 -0
  142. package/cli/src/agents/bundled-agents.generated.d.ts +14 -0
  143. package/cli/src/agents/bundled-agents.generated.ts +1962 -0
  144. package/cli/src/app.tsx +383 -0
  145. package/cli/src/chat.tsx +2008 -0
  146. package/cli/src/cli-args.ts +183 -0
  147. package/cli/src/commands/__tests__/bash-command.test.ts +449 -0
  148. package/cli/src/commands/__tests__/command-args.test.ts +325 -0
  149. package/cli/src/commands/__tests__/copy-conversation.test.ts +240 -0
  150. package/cli/src/commands/__tests__/dev-command.test.ts +128 -0
  151. package/cli/src/commands/__tests__/diagnostics-command.test.ts +35 -0
  152. package/cli/src/commands/__tests__/image.test.ts +99 -0
  153. package/cli/src/commands/__tests__/init.test.ts +479 -0
  154. package/cli/src/commands/__tests__/loop-command.test.ts +89 -0
  155. package/cli/src/commands/__tests__/new-command-rotates-chat.test.ts +87 -0
  156. package/cli/src/commands/__tests__/permissions-command.test.ts +93 -0
  157. package/cli/src/commands/__tests__/process-diagnostics.test.ts +54 -0
  158. package/cli/src/commands/__tests__/prompt-builders.test.ts +69 -0
  159. package/cli/src/commands/__tests__/registry-gating.test.ts +125 -0
  160. package/cli/src/commands/__tests__/rewind-command.test.ts +227 -0
  161. package/cli/src/commands/__tests__/router-connect-chatgpt.test.ts +72 -0
  162. package/cli/src/commands/__tests__/router-input.test.ts +302 -0
  163. package/cli/src/commands/__tests__/router-provider-setup.test.ts +180 -0
  164. package/cli/src/commands/__tests__/savant-free-command-aliases.test.ts +56 -0
  165. package/cli/src/commands/ads.ts +45 -0
  166. package/cli/src/commands/command-registry.ts +1112 -0
  167. package/cli/src/commands/copy-conversation.ts +386 -0
  168. package/cli/src/commands/goal.ts +87 -0
  169. package/cli/src/commands/health-command.ts +61 -0
  170. package/cli/src/commands/help.ts +13 -0
  171. package/cli/src/commands/image.ts +20 -0
  172. package/cli/src/commands/init.ts +121 -0
  173. package/cli/src/commands/loop.ts +182 -0
  174. package/cli/src/commands/process-diagnostics.ts +120 -0
  175. package/cli/src/commands/prompt-builders.ts +140 -0
  176. package/cli/src/commands/publish.ts +261 -0
  177. package/cli/src/commands/rewind.ts +130 -0
  178. package/cli/src/commands/router-utils.ts +80 -0
  179. package/cli/src/commands/router.ts +589 -0
  180. package/cli/src/commands/telemetry.ts +68 -0
  181. package/cli/src/commands/usage.ts +26 -0
  182. package/cli/src/components/__tests__/ad-banner.test.tsx +84 -0
  183. package/cli/src/components/__tests__/block-helpers.test.tsx +139 -0
  184. package/cli/src/components/__tests__/clickable.test.tsx +39 -0
  185. package/cli/src/components/__tests__/grid-layout.integration.test.tsx +365 -0
  186. package/cli/src/components/__tests__/grid-layout.test.tsx +1033 -0
  187. package/cli/src/components/__tests__/markdown-content.test.tsx +163 -0
  188. package/cli/src/components/__tests__/message-block.completion.test.tsx +104 -0
  189. package/cli/src/components/__tests__/message-block.streaming.test.tsx +78 -0
  190. package/cli/src/components/__tests__/message-with-agents.test.tsx +571 -0
  191. package/cli/src/components/__tests__/multiline-input.test.tsx +1129 -0
  192. package/cli/src/components/__tests__/selectable-list.test.ts +232 -0
  193. package/cli/src/components/__tests__/shimmer-text.test.tsx +32 -0
  194. package/cli/src/components/__tests__/status-indicator.test.tsx +184 -0
  195. package/cli/src/components/__tests__/user-error-banner.test.tsx +100 -0
  196. package/cli/src/components/ad-banner.tsx +351 -0
  197. package/cli/src/components/agent-checklist.tsx +385 -0
  198. package/cli/src/components/agent-mode-toggle.tsx +294 -0
  199. package/cli/src/components/ask-user/__tests__/multiple-choice-form.test.ts +432 -0
  200. package/cli/src/components/ask-user/__tests__/validation.test.ts +213 -0
  201. package/cli/src/components/ask-user/components/accordion-question.tsx +153 -0
  202. package/cli/src/components/ask-user/components/custom-answer-input.tsx +66 -0
  203. package/cli/src/components/ask-user/components/options-list.tsx +139 -0
  204. package/cli/src/components/ask-user/components/question-header.tsx +80 -0
  205. package/cli/src/components/ask-user/components/question-option.tsx +94 -0
  206. package/cli/src/components/ask-user/constants.ts +35 -0
  207. package/cli/src/components/ask-user/index.tsx +660 -0
  208. package/cli/src/components/ask-user/utils/validation.ts +85 -0
  209. package/cli/src/components/attachment-card.tsx +67 -0
  210. package/cli/src/components/blocks/agent-block-grid.tsx +58 -0
  211. package/cli/src/components/blocks/agent-branch-item.tsx +230 -0
  212. package/cli/src/components/blocks/agent-branch-wrapper.tsx +524 -0
  213. package/cli/src/components/blocks/agent-list-branch.tsx +77 -0
  214. package/cli/src/components/blocks/ask-user-branch.tsx +98 -0
  215. package/cli/src/components/blocks/block-helpers.tsx +257 -0
  216. package/cli/src/components/blocks/blocks-renderer.tsx +296 -0
  217. package/cli/src/components/blocks/content-with-markdown.tsx +34 -0
  218. package/cli/src/components/blocks/copy-button.tsx +106 -0
  219. package/cli/src/components/blocks/copyable-block.tsx +47 -0
  220. package/cli/src/components/blocks/image-block.tsx +128 -0
  221. package/cli/src/components/blocks/implementor-row.tsx +453 -0
  222. package/cli/src/components/blocks/markdown-content.tsx +360 -0
  223. package/cli/src/components/blocks/markdown-renderables.tsx +347 -0
  224. package/cli/src/components/blocks/single-block.tsx +210 -0
  225. package/cli/src/components/blocks/thinking-block.tsx +77 -0
  226. package/cli/src/components/blocks/tool-block-group.tsx +72 -0
  227. package/cli/src/components/blocks/tool-branch.tsx +196 -0
  228. package/cli/src/components/blocks/user-content-copy.tsx +171 -0
  229. package/cli/src/components/bottom-banner.tsx +145 -0
  230. package/cli/src/components/build-mode-buttons.tsx +110 -0
  231. package/cli/src/components/button.tsx +75 -0
  232. package/cli/src/components/chat-header.tsx +11 -0
  233. package/cli/src/components/chat-history-screen.tsx +417 -0
  234. package/cli/src/components/chat-input-bar.tsx +535 -0
  235. package/cli/src/components/chatgpt-connect-banner.tsx +234 -0
  236. package/cli/src/components/clickable.tsx +149 -0
  237. package/cli/src/components/collapse-button.tsx +36 -0
  238. package/cli/src/components/command-palette.tsx +166 -0
  239. package/cli/src/components/copy-button.tsx +219 -0
  240. package/cli/src/components/dialog.tsx +111 -0
  241. package/cli/src/components/elapsed-timer.tsx +56 -0
  242. package/cli/src/components/error-boundary.tsx +63 -0
  243. package/cli/src/components/feedback-container.tsx +206 -0
  244. package/cli/src/components/feedback-icon-button.tsx +89 -0
  245. package/cli/src/components/feedback-input-mode.tsx +352 -0
  246. package/cli/src/components/file-attachment-card.tsx +89 -0
  247. package/cli/src/components/grid-layout.tsx +83 -0
  248. package/cli/src/components/help-banner.tsx +136 -0
  249. package/cli/src/components/highlighted-text.tsx +52 -0
  250. package/cli/src/components/image-card.tsx +167 -0
  251. package/cli/src/components/image-thumbnail.tsx +112 -0
  252. package/cli/src/components/input-cursor.tsx +77 -0
  253. package/cli/src/components/input-mode-banner.tsx +70 -0
  254. package/cli/src/components/load-previous-button.tsx +48 -0
  255. package/cli/src/components/login-modal.tsx +450 -0
  256. package/cli/src/components/message-block.tsx +337 -0
  257. package/cli/src/components/message-footer.tsx +269 -0
  258. package/cli/src/components/message-with-agents.tsx +594 -0
  259. package/cli/src/components/mode-divider.tsx +43 -0
  260. package/cli/src/components/model-picker.tsx +371 -0
  261. package/cli/src/components/multiline-input.tsx +1276 -0
  262. package/cli/src/components/out-of-credits-banner.tsx +155 -0
  263. package/cli/src/components/pending-attachments-banner.tsx +125 -0
  264. package/cli/src/components/pending-bash-message.tsx +57 -0
  265. package/cli/src/components/progress-bar.tsx +81 -0
  266. package/cli/src/components/project-picker-screen.tsx +469 -0
  267. package/cli/src/components/provider-picker.tsx +139 -0
  268. package/cli/src/components/publish-confirmation.tsx +514 -0
  269. package/cli/src/components/publish-container.tsx +737 -0
  270. package/cli/src/components/raised-pill.tsx +89 -0
  271. package/cli/src/components/renderers/plan-box.tsx +70 -0
  272. package/cli/src/components/review-screen.tsx +114 -0
  273. package/cli/src/components/rewind-picker.tsx +276 -0
  274. package/cli/src/components/right-sidebar.tsx +296 -0
  275. package/cli/src/components/savant-free-active-session-summary.tsx +63 -0
  276. package/cli/src/components/savant-free-landing-screen.tsx +756 -0
  277. package/cli/src/components/savant-free-model-selector.tsx +815 -0
  278. package/cli/src/components/savant-free-referral-banner.tsx +423 -0
  279. package/cli/src/components/savant-free-superseded-screen.tsx +62 -0
  280. package/cli/src/components/savant-ui/animation/pulse.tsx +26 -0
  281. package/cli/src/components/savant-ui/animation/typewriter.tsx +40 -0
  282. package/cli/src/components/savant-ui/branding.tsx +59 -0
  283. package/cli/src/components/savant-ui/data-display/badge.tsx +52 -0
  284. package/cli/src/components/savant-ui/data-display/code-block.tsx +55 -0
  285. package/cli/src/components/savant-ui/data-display/key-value.tsx +34 -0
  286. package/cli/src/components/savant-ui/data-display/sparkline.tsx +42 -0
  287. package/cli/src/components/savant-ui/data-display/timeline.tsx +44 -0
  288. package/cli/src/components/savant-ui/data-display/tree-view.tsx +55 -0
  289. package/cli/src/components/savant-ui/echo/__tests__/sidebar-collapse.test.tsx +90 -0
  290. package/cli/src/components/savant-ui/echo/agent-stack.tsx +72 -0
  291. package/cli/src/components/savant-ui/echo/agent-status.tsx +66 -0
  292. package/cli/src/components/savant-ui/echo/fid-card.tsx +89 -0
  293. package/cli/src/components/savant-ui/echo/fid-list.tsx +68 -0
  294. package/cli/src/components/savant-ui/echo/loop-status-panel.tsx +64 -0
  295. package/cli/src/components/savant-ui/echo/perfection-loop.tsx +118 -0
  296. package/cli/src/components/savant-ui/echo/phase-indicator.tsx +68 -0
  297. package/cli/src/components/savant-ui/echo/phase-info.ts +72 -0
  298. package/cli/src/components/savant-ui/echo/token-meter.tsx +39 -0
  299. package/cli/src/components/savant-ui/feedback/alert.tsx +45 -0
  300. package/cli/src/components/savant-ui/feedback/cost-tracker.tsx +54 -0
  301. package/cli/src/components/savant-ui/feedback/progress-bar.tsx +71 -0
  302. package/cli/src/components/savant-ui/feedback/spinner.tsx +40 -0
  303. package/cli/src/components/savant-ui/icon-theme-keys.ts +67 -0
  304. package/cli/src/components/savant-ui/icon.tsx +53 -0
  305. package/cli/src/components/savant-ui/index.ts +75 -0
  306. package/cli/src/components/savant-ui/input/select.tsx +26 -0
  307. package/cli/src/components/savant-ui/input/toggle.tsx +28 -0
  308. package/cli/src/components/savant-ui/layout/grid.tsx +52 -0
  309. package/cli/src/components/savant-ui/layout/header.tsx +28 -0
  310. package/cli/src/components/savant-ui/navigation/stepper.tsx +41 -0
  311. package/cli/src/components/savant-ui/primitives/key-hint.tsx +45 -0
  312. package/cli/src/components/savant-ui/primitives/key-value-row.tsx +41 -0
  313. package/cli/src/components/savant-ui/primitives/panel.tsx +42 -0
  314. package/cli/src/components/savant-ui/primitives/separator.tsx +34 -0
  315. package/cli/src/components/savant-ui/primitives/sidebar-section.tsx +64 -0
  316. package/cli/src/components/savant-ui/primitives/spacer.tsx +13 -0
  317. package/cli/src/components/savant-ui/primitives/stack.tsx +35 -0
  318. package/cli/src/components/savant-ui/theme.ts +45 -0
  319. package/cli/src/components/scroll-to-bottom-button.tsx +34 -0
  320. package/cli/src/components/segmented-control.tsx +199 -0
  321. package/cli/src/components/selectable-list.tsx +249 -0
  322. package/cli/src/components/selected-chips.tsx +86 -0
  323. package/cli/src/components/separator.tsx +40 -0
  324. package/cli/src/components/session-ended-banner.tsx +183 -0
  325. package/cli/src/components/shimmer-text.tsx +254 -0
  326. package/cli/src/components/status-bar.tsx +279 -0
  327. package/cli/src/components/subscription-limit-banner.tsx +269 -0
  328. package/cli/src/components/suggested-prompts.tsx +184 -0
  329. package/cli/src/components/suggestion-menu.tsx +219 -0
  330. package/cli/src/components/terminal-command-display.tsx +152 -0
  331. package/cli/src/components/terminal-link.tsx +97 -0
  332. package/cli/src/components/text-attachment-card.tsx +77 -0
  333. package/cli/src/components/thinking.tsx +108 -0
  334. package/cli/src/components/toast.tsx +109 -0
  335. package/cli/src/components/tools/__tests__/apply-patch.test.tsx +97 -0
  336. package/cli/src/components/tools/__tests__/code-search.test.tsx +45 -0
  337. package/cli/src/components/tools/__tests__/gravity-index.test.ts +76 -0
  338. package/cli/src/components/tools/__tests__/render-ui.test.tsx +556 -0
  339. package/cli/src/components/tools/__tests__/run-terminal-command.test.ts +274 -0
  340. package/cli/src/components/tools/__tests__/tool-call-item.test.tsx +73 -0
  341. package/cli/src/components/tools/apply-patch.tsx +101 -0
  342. package/cli/src/components/tools/code-search.tsx +50 -0
  343. package/cli/src/components/tools/composio.tsx +140 -0
  344. package/cli/src/components/tools/diff-viewer.tsx +21 -0
  345. package/cli/src/components/tools/glob.tsx +66 -0
  346. package/cli/src/components/tools/gravity-index.tsx +80 -0
  347. package/cli/src/components/tools/list-directory.tsx +66 -0
  348. package/cli/src/components/tools/read-docs.tsx +36 -0
  349. package/cli/src/components/tools/read-files.tsx +97 -0
  350. package/cli/src/components/tools/read-subtree.tsx +40 -0
  351. package/cli/src/components/tools/read-url.tsx +32 -0
  352. package/cli/src/components/tools/registry.ts +131 -0
  353. package/cli/src/components/tools/render-ui.tsx +466 -0
  354. package/cli/src/components/tools/run-terminal-command.tsx +86 -0
  355. package/cli/src/components/tools/skill.tsx +26 -0
  356. package/cli/src/components/tools/str-replace.tsx +77 -0
  357. package/cli/src/components/tools/suggest-followups.tsx +373 -0
  358. package/cli/src/components/tools/task-completed.tsx +16 -0
  359. package/cli/src/components/tools/tool-call-item.tsx +163 -0
  360. package/cli/src/components/tools/types.ts +100 -0
  361. package/cli/src/components/tools/web-search.tsx +32 -0
  362. package/cli/src/components/tools/write-file.tsx +20 -0
  363. package/cli/src/components/tools/write-todos.tsx +105 -0
  364. package/cli/src/components/top-banner.tsx +187 -0
  365. package/cli/src/components/usage-banner.tsx +296 -0
  366. package/cli/src/components/user-error-banner.tsx +54 -0
  367. package/cli/src/components/validation-error-popover.tsx +191 -0
  368. package/cli/src/data/slash-commands.ts +306 -0
  369. package/cli/src/hooks/__tests__/holds-live-savant-free-slot.test.ts +49 -0
  370. package/cli/src/hooks/__tests__/run-outcome.test.ts +178 -0
  371. package/cli/src/hooks/__tests__/session-fetch-signal.test.ts +45 -0
  372. package/cli/src/hooks/__tests__/use-activity-query.test.ts +810 -0
  373. package/cli/src/hooks/__tests__/use-ask-user-bridge.test.ts +175 -0
  374. package/cli/src/hooks/__tests__/use-auth-query.test.ts +21 -0
  375. package/cli/src/hooks/__tests__/use-chat-messages-collapse.test.ts +96 -0
  376. package/cli/src/hooks/__tests__/use-connection-status.test.ts +112 -0
  377. package/cli/src/hooks/__tests__/use-directory-browser.test.ts +215 -0
  378. package/cli/src/hooks/__tests__/use-gravity-ad.test.ts +73 -0
  379. package/cli/src/hooks/__tests__/use-grid-layout.test.ts +346 -0
  380. package/cli/src/hooks/__tests__/use-input-history.test.ts +704 -0
  381. package/cli/src/hooks/__tests__/use-loop-scheduler.test.ts +247 -0
  382. package/cli/src/hooks/__tests__/use-path-tab-completion.test.ts +324 -0
  383. package/cli/src/hooks/__tests__/use-queue-controls.test.ts +68 -0
  384. package/cli/src/hooks/__tests__/use-searchable-list.test.ts +364 -0
  385. package/cli/src/hooks/__tests__/use-send-message-timer.test.ts +146 -0
  386. package/cli/src/hooks/__tests__/use-suggestion-engine-mention.test.ts +364 -0
  387. package/cli/src/hooks/__tests__/use-suggestion-engine.test.ts +485 -0
  388. package/cli/src/hooks/__tests__/use-terminal-focus.test.ts +66 -0
  389. package/cli/src/hooks/__tests__/use-terminal-layout.test.ts +675 -0
  390. package/cli/src/hooks/__tests__/use-timeout.test.ts +330 -0
  391. package/cli/src/hooks/__tests__/use-usage-query.test.ts +526 -0
  392. package/cli/src/hooks/__tests__/use-user-details-query.test.ts +225 -0
  393. package/cli/src/hooks/helpers/__tests__/send-message.test.ts +1851 -0
  394. package/cli/src/hooks/helpers/send-message.ts +553 -0
  395. package/cli/src/hooks/run-outcome.ts +64 -0
  396. package/cli/src/hooks/stream-state.ts +106 -0
  397. package/cli/src/hooks/use-activity-query.ts +696 -0
  398. package/cli/src/hooks/use-agent-validation.ts +80 -0
  399. package/cli/src/hooks/use-ask-user-bridge.ts +102 -0
  400. package/cli/src/hooks/use-auth-query.ts +261 -0
  401. package/cli/src/hooks/use-auth-state.ts +155 -0
  402. package/cli/src/hooks/use-chat-input.ts +87 -0
  403. package/cli/src/hooks/use-chat-keyboard.ts +325 -0
  404. package/cli/src/hooks/use-chat-messages.ts +273 -0
  405. package/cli/src/hooks/use-chat-state.ts +219 -0
  406. package/cli/src/hooks/use-chat-streaming.ts +270 -0
  407. package/cli/src/hooks/use-chat-ui.ts +136 -0
  408. package/cli/src/hooks/use-clipboard.ts +154 -0
  409. package/cli/src/hooks/use-connection-status.ts +156 -0
  410. package/cli/src/hooks/use-directory-browser.ts +88 -0
  411. package/cli/src/hooks/use-elapsed-time.ts +116 -0
  412. package/cli/src/hooks/use-event.ts +36 -0
  413. package/cli/src/hooks/use-exit-handler.ts +108 -0
  414. package/cli/src/hooks/use-fetch-login-url.ts +65 -0
  415. package/cli/src/hooks/use-fids.ts +48 -0
  416. package/cli/src/hooks/use-fingerprint.ts +64 -0
  417. package/cli/src/hooks/use-gravity-ad.ts +688 -0
  418. package/cli/src/hooks/use-grid-layout.ts +78 -0
  419. package/cli/src/hooks/use-input-history.ts +173 -0
  420. package/cli/src/hooks/use-login-keyboard-handlers.ts +74 -0
  421. package/cli/src/hooks/use-login-polling.ts +120 -0
  422. package/cli/src/hooks/use-logo.tsx +178 -0
  423. package/cli/src/hooks/use-loop-scheduler.ts +481 -0
  424. package/cli/src/hooks/use-message-queue.ts +301 -0
  425. package/cli/src/hooks/use-now.ts +20 -0
  426. package/cli/src/hooks/use-path-tab-completion.ts +88 -0
  427. package/cli/src/hooks/use-publish-mutation.ts +60 -0
  428. package/cli/src/hooks/use-queue-controls.ts +70 -0
  429. package/cli/src/hooks/use-queue-ui.ts +55 -0
  430. package/cli/src/hooks/use-savant-free-ctrl-c-exit.ts +23 -0
  431. package/cli/src/hooks/use-savant-free-session-progress.ts +34 -0
  432. package/cli/src/hooks/use-savant-free-session.ts +679 -0
  433. package/cli/src/hooks/use-savant-free-streak-query.ts +72 -0
  434. package/cli/src/hooks/use-scaffold-confirm.ts +62 -0
  435. package/cli/src/hooks/use-scaffold-revert-subscriber.ts +66 -0
  436. package/cli/src/hooks/use-scroll-management.ts +182 -0
  437. package/cli/src/hooks/use-searchable-list.ts +99 -0
  438. package/cli/src/hooks/use-send-message.ts +1038 -0
  439. package/cli/src/hooks/use-sheen-animation.tsx +88 -0
  440. package/cli/src/hooks/use-subscription-query.ts +106 -0
  441. package/cli/src/hooks/use-suggestion-engine.ts +793 -0
  442. package/cli/src/hooks/use-terminal-breakpoints.ts +77 -0
  443. package/cli/src/hooks/use-terminal-dimensions.ts +50 -0
  444. package/cli/src/hooks/use-terminal-focus.ts +146 -0
  445. package/cli/src/hooks/use-terminal-layout.ts +189 -0
  446. package/cli/src/hooks/use-theme.tsx +140 -0
  447. package/cli/src/hooks/use-timeout.ts +88 -0
  448. package/cli/src/hooks/use-toast.ts +114 -0
  449. package/cli/src/hooks/use-update-preference.ts +77 -0
  450. package/cli/src/hooks/use-usage-monitor.ts +59 -0
  451. package/cli/src/hooks/use-usage-query.ts +138 -0
  452. package/cli/src/hooks/use-user-details-query.ts +104 -0
  453. package/cli/src/hooks/use-why-did-you-update.ts +178 -0
  454. package/cli/src/index.tsx +484 -0
  455. package/cli/src/init/__tests__/init-direnv.test.ts +597 -0
  456. package/cli/src/init/init-app.ts +54 -0
  457. package/cli/src/init/init-direnv.ts +133 -0
  458. package/cli/src/login/constants.ts +71 -0
  459. package/cli/src/login/login-flow.ts +224 -0
  460. package/cli/src/login/plain-login.ts +107 -0
  461. package/cli/src/login/utils.ts +183 -0
  462. package/cli/src/native/ripgrep.ts +82 -0
  463. package/cli/src/polyfills/bun-strip-ansi.ts +12 -0
  464. package/cli/src/pre-init/load-dev-env.ts +98 -0
  465. package/cli/src/pre-init/tree-sitter-wasm.ts +98 -0
  466. package/cli/src/project-files.ts +102 -0
  467. package/cli/src/state/__tests__/chat-store-focus.test.ts +22 -0
  468. package/cli/src/state/__tests__/feedback-store.test.ts +260 -0
  469. package/cli/src/state/chat-history-store.ts +27 -0
  470. package/cli/src/state/chat-store.ts +791 -0
  471. package/cli/src/state/feedback-store.ts +162 -0
  472. package/cli/src/state/gateway-catalog-store.ts +45 -0
  473. package/cli/src/state/login-store.ts +150 -0
  474. package/cli/src/state/message-block-store.ts +143 -0
  475. package/cli/src/state/model-picker-store.ts +67 -0
  476. package/cli/src/state/provider-picker-store.ts +53 -0
  477. package/cli/src/state/publish-store.ts +141 -0
  478. package/cli/src/state/review-store.ts +24 -0
  479. package/cli/src/state/rewind-picker-store.ts +74 -0
  480. package/cli/src/state/savant-free-model-store.ts +59 -0
  481. package/cli/src/state/savant-free-session-store.ts +32 -0
  482. package/cli/src/test-setup.ts +20 -0
  483. package/cli/src/testing/env.ts +46 -0
  484. package/cli/src/types/chat-state.ts +15 -0
  485. package/cli/src/types/chat.ts +242 -0
  486. package/cli/src/types/contracts/send-message.ts +16 -0
  487. package/cli/src/types/env.ts +107 -0
  488. package/cli/src/types/function-params.ts +35 -0
  489. package/cli/src/types/opentui-augmentation.d.ts +11 -0
  490. package/cli/src/types/react19-compat.d.ts +19 -0
  491. package/cli/src/types/savant-free-session.ts +17 -0
  492. package/cli/src/types/store.ts +112 -0
  493. package/cli/src/types/theme-system.ts +194 -0
  494. package/cli/src/types/utils.ts +3 -0
  495. package/cli/src/utils/__tests__/activity-tracker.test.ts +440 -0
  496. package/cli/src/utils/__tests__/agent-display.test.ts +139 -0
  497. package/cli/src/utils/__tests__/analytics-client.test.ts +311 -0
  498. package/cli/src/utils/__tests__/anonymous-id.test.ts +74 -0
  499. package/cli/src/utils/__tests__/arrays.test.ts +264 -0
  500. package/cli/src/utils/__tests__/bash-context-processor.test.ts +38 -0
  501. package/cli/src/utils/__tests__/block-processor.test.ts +690 -0
  502. package/cli/src/utils/__tests__/chat-history.test.ts +247 -0
  503. package/cli/src/utils/__tests__/chat-input-key-intercept.test.ts +40 -0
  504. package/cli/src/utils/__tests__/chat-layout.test.ts +32 -0
  505. package/cli/src/utils/__tests__/chat-meta.test.ts +160 -0
  506. package/cli/src/utils/__tests__/chatgpt-oauth.test.ts +50 -0
  507. package/cli/src/utils/__tests__/clipboard.test.ts +998 -0
  508. package/cli/src/utils/__tests__/code-search-summary.test.ts +84 -0
  509. package/cli/src/utils/__tests__/collapse-helpers.test.ts +1272 -0
  510. package/cli/src/utils/__tests__/error-handling.test.ts +611 -0
  511. package/cli/src/utils/__tests__/feedback-helpers.test.ts +452 -0
  512. package/cli/src/utils/__tests__/feedback-submission.test.ts +26 -0
  513. package/cli/src/utils/__tests__/fetch-usage.test.ts +355 -0
  514. package/cli/src/utils/__tests__/fingerprint.test.ts +147 -0
  515. package/cli/src/utils/__tests__/format-elapsed-time.test.ts +103 -0
  516. package/cli/src/utils/__tests__/format-timeout.test.ts +87 -0
  517. package/cli/src/utils/__tests__/image-dimensions.test.ts +243 -0
  518. package/cli/src/utils/__tests__/image-processor.test.ts +250 -0
  519. package/cli/src/utils/__tests__/implementor-helpers.test.ts +1457 -0
  520. package/cli/src/utils/__tests__/keyboard-actions.test.ts +686 -0
  521. package/cli/src/utils/__tests__/layout-helpers.test.ts +36 -0
  522. package/cli/src/utils/__tests__/lazy-response-ads.test.ts +167 -0
  523. package/cli/src/utils/__tests__/logger-sanitize-secrets.test.ts +80 -0
  524. package/cli/src/utils/__tests__/markdown-renderer.test.tsx +518 -0
  525. package/cli/src/utils/__tests__/markdown-streaming.test.ts +64 -0
  526. package/cli/src/utils/__tests__/message-block-helpers.test.ts +1197 -0
  527. package/cli/src/utils/__tests__/message-updater.test.ts +659 -0
  528. package/cli/src/utils/__tests__/ollama-onboarding.test.ts +239 -0
  529. package/cli/src/utils/__tests__/openrouter-models.test.ts +295 -0
  530. package/cli/src/utils/__tests__/osc-timeout-scenarios.test.ts +172 -0
  531. package/cli/src/utils/__tests__/pending-attachments.test.ts +278 -0
  532. package/cli/src/utils/__tests__/provider-setup.test.ts +183 -0
  533. package/cli/src/utils/__tests__/run-state-storage.test.ts +741 -0
  534. package/cli/src/utils/__tests__/savant-code-api.test.ts +634 -0
  535. package/cli/src/utils/__tests__/savant-free-instance-owner.test.ts +69 -0
  536. package/cli/src/utils/__tests__/savant-free-model-navigation.test.ts +104 -0
  537. package/cli/src/utils/__tests__/savant-free-premium-reset.test.ts +81 -0
  538. package/cli/src/utils/__tests__/savant-free-referral-cache.test.ts +67 -0
  539. package/cli/src/utils/__tests__/savant-free-session-display.test.ts +23 -0
  540. package/cli/src/utils/__tests__/savant-free-streak-line.test.ts +76 -0
  541. package/cli/src/utils/__tests__/sdk-event-handlers.test.ts +615 -0
  542. package/cli/src/utils/__tests__/send-message-helpers.test.ts +1875 -0
  543. package/cli/src/utils/__tests__/send-message-timer.test.ts +68 -0
  544. package/cli/src/utils/__tests__/settings.test.ts +138 -0
  545. package/cli/src/utils/__tests__/strings.test.ts +210 -0
  546. package/cli/src/utils/__tests__/syntax-theme.test.ts +91 -0
  547. package/cli/src/utils/__tests__/terminal-color-detection.test.ts +425 -0
  548. package/cli/src/utils/__tests__/terminal-enter-detection.test.ts +77 -0
  549. package/cli/src/utils/__tests__/text-layout.test.ts +82 -0
  550. package/cli/src/utils/__tests__/think-tag-parser.test.ts +159 -0
  551. package/cli/src/utils/__tests__/trace-writer.test.ts +193 -0
  552. package/cli/src/utils/__tests__/trim-chat-logs.test.ts +79 -0
  553. package/cli/src/utils/__tests__/usage-banner-state.test.ts +298 -0
  554. package/cli/src/utils/__tests__/validation-error-formatting.test.ts +126 -0
  555. package/cli/src/utils/__tests__/write-file-atomic.test.ts +130 -0
  556. package/cli/src/utils/active-run.ts +22 -0
  557. package/cli/src/utils/activity-tracker.ts +66 -0
  558. package/cli/src/utils/agent-display.ts +87 -0
  559. package/cli/src/utils/agent-helpers.ts +47 -0
  560. package/cli/src/utils/ai-message-id.ts +12 -0
  561. package/cli/src/utils/analytics.ts +407 -0
  562. package/cli/src/utils/anonymous-id.ts +87 -0
  563. package/cli/src/utils/arrays.ts +117 -0
  564. package/cli/src/utils/auth.ts +258 -0
  565. package/cli/src/utils/bash-context-processor.ts +47 -0
  566. package/cli/src/utils/bash-messages.ts +108 -0
  567. package/cli/src/utils/block-margins.ts +35 -0
  568. package/cli/src/utils/block-operations.ts +548 -0
  569. package/cli/src/utils/block-processor.ts +212 -0
  570. package/cli/src/utils/chat-history.ts +265 -0
  571. package/cli/src/utils/chat-input-key-intercept.ts +52 -0
  572. package/cli/src/utils/chat-layout.ts +44 -0
  573. package/cli/src/utils/chat-meta.ts +101 -0
  574. package/cli/src/utils/chat-scroll-accel.ts +151 -0
  575. package/cli/src/utils/chatgpt-oauth.ts +350 -0
  576. package/cli/src/utils/clipboard-image.ts +610 -0
  577. package/cli/src/utils/clipboard.ts +307 -0
  578. package/cli/src/utils/code-search-summary.ts +69 -0
  579. package/cli/src/utils/collapse-helpers.ts +265 -0
  580. package/cli/src/utils/config-dir.ts +30 -0
  581. package/cli/src/utils/constants.ts +159 -0
  582. package/cli/src/utils/create-event-handler-state.ts +79 -0
  583. package/cli/src/utils/create-run-config.ts +160 -0
  584. package/cli/src/utils/db-storage.ts +254 -0
  585. package/cli/src/utils/detect-shell.ts +112 -0
  586. package/cli/src/utils/directory-browser.ts +74 -0
  587. package/cli/src/utils/engagement.ts +55 -0
  588. package/cli/src/utils/env.ts +109 -0
  589. package/cli/src/utils/error-handling.ts +246 -0
  590. package/cli/src/utils/error-messages.ts +84 -0
  591. package/cli/src/utils/feedback-helpers.ts +115 -0
  592. package/cli/src/utils/feedback-submission.ts +24 -0
  593. package/cli/src/utils/fetch-usage.ts +75 -0
  594. package/cli/src/utils/fid-loader.ts +135 -0
  595. package/cli/src/utils/fingerprint.ts +263 -0
  596. package/cli/src/utils/finish-logic.ts +154 -0
  597. package/cli/src/utils/format-elapsed-time.ts +33 -0
  598. package/cli/src/utils/format-session-units.ts +6 -0
  599. package/cli/src/utils/format-timeout.ts +28 -0
  600. package/cli/src/utils/format-validation-errors-for-message.ts +85 -0
  601. package/cli/src/utils/git.ts +17 -0
  602. package/cli/src/utils/glyphs.ts +188 -0
  603. package/cli/src/utils/helpers.ts +47 -0
  604. package/cli/src/utils/image-display.ts +73 -0
  605. package/cli/src/utils/image-handler.ts +336 -0
  606. package/cli/src/utils/image-processor.ts +133 -0
  607. package/cli/src/utils/image-thumbnail.ts +83 -0
  608. package/cli/src/utils/implementor-helpers.ts +817 -0
  609. package/cli/src/utils/input-modes.ts +196 -0
  610. package/cli/src/utils/keyboard-actions.ts +394 -0
  611. package/cli/src/utils/keypad-keys.ts +47 -0
  612. package/cli/src/utils/layout-helpers.ts +36 -0
  613. package/cli/src/utils/lazy-response-ads.ts +1 -0
  614. package/cli/src/utils/loading-phrases.ts +68 -0
  615. package/cli/src/utils/local-agent-registry.ts +611 -0
  616. package/cli/src/utils/log-shipper.ts +116 -0
  617. package/cli/src/utils/logger.ts +435 -0
  618. package/cli/src/utils/markdown-renderer.tsx +1315 -0
  619. package/cli/src/utils/math.ts +3 -0
  620. package/cli/src/utils/message-block-helpers.ts +667 -0
  621. package/cli/src/utils/message-history.ts +153 -0
  622. package/cli/src/utils/message-tree-utils.ts +67 -0
  623. package/cli/src/utils/message-updater.ts +279 -0
  624. package/cli/src/utils/ollama-onboarding.ts +215 -0
  625. package/cli/src/utils/open-file.ts +144 -0
  626. package/cli/src/utils/open-url.ts +63 -0
  627. package/cli/src/utils/openrouter-models.ts +945 -0
  628. package/cli/src/utils/path-completion.ts +111 -0
  629. package/cli/src/utils/path-helpers.ts +38 -0
  630. package/cli/src/utils/pending-attachments.ts +363 -0
  631. package/cli/src/utils/post-processing.ts +99 -0
  632. package/cli/src/utils/project-picker.ts +12 -0
  633. package/cli/src/utils/provider-setup.ts +259 -0
  634. package/cli/src/utils/recent-projects.ts +156 -0
  635. package/cli/src/utils/renderer-cleanup.ts +142 -0
  636. package/cli/src/utils/response-ad-positions.ts +1 -0
  637. package/cli/src/utils/rewind.ts +175 -0
  638. package/cli/src/utils/run-state-storage.ts +480 -0
  639. package/cli/src/utils/savant-code-api.ts +686 -0
  640. package/cli/src/utils/savant-code-client.ts +217 -0
  641. package/cli/src/utils/savant-free-agent-selection.ts +12 -0
  642. package/cli/src/utils/savant-free-exit.ts +24 -0
  643. package/cli/src/utils/savant-free-instance-owner.ts +66 -0
  644. package/cli/src/utils/savant-free-model-navigation.ts +46 -0
  645. package/cli/src/utils/savant-free-premium-reset.ts +52 -0
  646. package/cli/src/utils/savant-free-referral-cache.ts +35 -0
  647. package/cli/src/utils/savant-free-session-display.ts +21 -0
  648. package/cli/src/utils/savant-free-streak-line.ts +67 -0
  649. package/cli/src/utils/sdk-event-handlers.ts +587 -0
  650. package/cli/src/utils/send-message-helpers.ts +199 -0
  651. package/cli/src/utils/send-message-timer.ts +110 -0
  652. package/cli/src/utils/settings.ts +388 -0
  653. package/cli/src/utils/skill-registry.ts +100 -0
  654. package/cli/src/utils/spawn-agent-matcher.ts +56 -0
  655. package/cli/src/utils/status-indicator-state.ts +100 -0
  656. package/cli/src/utils/stream-chunk-processor.ts +65 -0
  657. package/cli/src/utils/strings.ts +272 -0
  658. package/cli/src/utils/subscription.ts +31 -0
  659. package/cli/src/utils/syntax-highlighter.tsx +19 -0
  660. package/cli/src/utils/syntax-theme.ts +131 -0
  661. package/cli/src/utils/terminal-color-detection.ts +472 -0
  662. package/cli/src/utils/terminal-enter-detection.ts +63 -0
  663. package/cli/src/utils/terminal-images.ts +223 -0
  664. package/cli/src/utils/terminal-reset-sequences.ts +33 -0
  665. package/cli/src/utils/terminal-title.ts +113 -0
  666. package/cli/src/utils/terminal-watchdog.ts +246 -0
  667. package/cli/src/utils/text-layout.ts +153 -0
  668. package/cli/src/utils/theme-config.ts +143 -0
  669. package/cli/src/utils/theme-system.ts +1265 -0
  670. package/cli/src/utils/think-tag-parser.ts +105 -0
  671. package/cli/src/utils/trace-writer.ts +147 -0
  672. package/cli/src/utils/ui-constants.ts +69 -0
  673. package/cli/src/utils/usage-banner-state.ts +146 -0
  674. package/cli/src/utils/validation-error-formatting.ts +92 -0
  675. package/cli/src/utils/validation-error-helpers.ts +19 -0
  676. package/cli/src/utils/version.ts +23 -0
  677. package/cli/src/utils/word-wrap-utils.ts +53 -0
  678. package/cli/src/utils/write-file-atomic.ts +82 -0
  679. package/cli/src/utils/yield-to-event-loop.ts +9 -0
  680. package/cli/tsconfig.json +26 -0
  681. package/coding-standards/csharp.md +77 -0
  682. package/coding-standards/go.md +71 -0
  683. package/coding-standards/java.md +74 -0
  684. package/coding-standards/python.md +82 -0
  685. package/coding-standards/rust.md +78 -0
  686. package/coding-standards/typescript.md +85 -0
  687. package/coding-standards/x402.md +227 -0
  688. package/common/README.md +41 -0
  689. package/common/common_exit +1 -0
  690. package/common/package.json +45 -0
  691. package/common/src/__tests__/agent-validation.test.ts +861 -0
  692. package/common/src/__tests__/agents.test.ts +16 -0
  693. package/common/src/__tests__/dynamic-agent-template-schema.test.ts +420 -0
  694. package/common/src/__tests__/env-ci.test.ts +167 -0
  695. package/common/src/__tests__/env-process.test.ts +145 -0
  696. package/common/src/__tests__/free-agents.test.ts +269 -0
  697. package/common/src/__tests__/handlesteps-parsing.test.ts +247 -0
  698. package/common/src/__tests__/model-config.test.ts +41 -0
  699. package/common/src/__tests__/project-file-tree.test.ts +82 -0
  700. package/common/src/__tests__/response-ad-positions.test.ts +78 -0
  701. package/common/src/__tests__/savant-free-models.test.ts +460 -0
  702. package/common/src/__tests__/savant-free-referral-tiers.test.ts +122 -0
  703. package/common/src/__tests__/user-state.test.ts +30 -0
  704. package/common/src/actions.ts +215 -0
  705. package/common/src/analytics-core.ts +73 -0
  706. package/common/src/analytics.ts +96 -0
  707. package/common/src/api-keys/constants.ts +26 -0
  708. package/common/src/browser-actions.ts +414 -0
  709. package/common/src/constants/agents.ts +250 -0
  710. package/common/src/constants/analytics-events.ts +318 -0
  711. package/common/src/constants/anthropic.ts +72 -0
  712. package/common/src/constants/byok.ts +2 -0
  713. package/common/src/constants/chatgpt-oauth.ts +85 -0
  714. package/common/src/constants/composio.ts +34 -0
  715. package/common/src/constants/feedback.ts +18 -0
  716. package/common/src/constants/free-agents.ts +347 -0
  717. package/common/src/constants/gemini.ts +6 -0
  718. package/common/src/constants/grant-priorities.ts +13 -0
  719. package/common/src/constants/hosts.ts +6 -0
  720. package/common/src/constants/images.ts +53 -0
  721. package/common/src/constants/index.ts +8 -0
  722. package/common/src/constants/knowledge.ts +46 -0
  723. package/common/src/constants/limits.ts +23 -0
  724. package/common/src/constants/model-config.ts +469 -0
  725. package/common/src/constants/paths.ts +69 -0
  726. package/common/src/constants/savant-code-config.ts +12 -0
  727. package/common/src/constants/savant-free-gemini-thinker.ts +30 -0
  728. package/common/src/constants/savant-free-models.ts +855 -0
  729. package/common/src/constants/savant-free-referral-tiers.ts +169 -0
  730. package/common/src/constants/skills.ts +60 -0
  731. package/common/src/constants/subscription-plans.ts +54 -0
  732. package/common/src/constants/ui.ts +25 -0
  733. package/common/src/env-ci.ts +36 -0
  734. package/common/src/env-process.ts +95 -0
  735. package/common/src/env-schema.ts +42 -0
  736. package/common/src/env.ts +69 -0
  737. package/common/src/mcp/client.ts +308 -0
  738. package/common/src/old-constants.ts +10 -0
  739. package/common/src/project-file-tree.ts +361 -0
  740. package/common/src/reddit-capi.ts +175 -0
  741. package/common/src/schemas/feedback.ts +57 -0
  742. package/common/src/schemas/logs.ts +66 -0
  743. package/common/src/templates/agent-validation.ts +436 -0
  744. package/common/src/templates/initial-agents-dir/LICENSE +202 -0
  745. package/common/src/templates/initial-agents-dir/README.md +314 -0
  746. package/common/src/templates/initial-agents-dir/examples/01-basic-diff-reviewer.ts +17 -0
  747. package/common/src/templates/initial-agents-dir/examples/02-intermediate-git-committer.ts +78 -0
  748. package/common/src/templates/initial-agents-dir/examples/03-advanced-file-explorer.ts +76 -0
  749. package/common/src/templates/initial-agents-dir/my-custom-agent.ts +40 -0
  750. package/common/src/templates/initial-agents-dir/package.json +6 -0
  751. package/common/src/templates/initial-agents-dir/skills/README.md +66 -0
  752. package/common/src/templates/initial-agents-dir/skills/example-skill/SKILL.md +29 -0
  753. package/common/src/templates/initial-agents-dir/types/agent-definition.ts +484 -0
  754. package/common/src/templates/initial-agents-dir/types/tools.ts +452 -0
  755. package/common/src/templates/initial-agents-dir/types/util-types.ts +167 -0
  756. package/common/src/testing/TESTING_PATTERNS.md +353 -0
  757. package/common/src/testing/errors.ts +33 -0
  758. package/common/src/testing/fixtures/agent-runtime.ts +325 -0
  759. package/common/src/testing/impl/agent-runtime.ts +6 -0
  760. package/common/src/testing/index.ts +84 -0
  761. package/common/src/testing/mock-modules.ts +54 -0
  762. package/common/src/testing/mock-types.ts +123 -0
  763. package/common/src/testing/mocks/analytics.ts +262 -0
  764. package/common/src/testing/mocks/child-process.ts +93 -0
  765. package/common/src/testing/mocks/crypto.ts +218 -0
  766. package/common/src/testing/mocks/database.ts +337 -0
  767. package/common/src/testing/mocks/filesystem.ts +166 -0
  768. package/common/src/testing/mocks/index.ts +83 -0
  769. package/common/src/testing/mocks/logger.ts +136 -0
  770. package/common/src/testing/mocks/stream.ts +314 -0
  771. package/common/src/testing/mocks/timers.ts +132 -0
  772. package/common/src/testing/mocks/tree-sitter.ts +127 -0
  773. package/common/src/testing/setup.ts +282 -0
  774. package/common/src/testing-env-ci.ts +15 -0
  775. package/common/src/testing-env-process.ts +78 -0
  776. package/common/src/tools/__tests__/compile-tool-definitions.test.ts +34 -0
  777. package/common/src/tools/__tests__/thought-session.test.ts +256 -0
  778. package/common/src/tools/compile-tool-definitions.ts +194 -0
  779. package/common/src/tools/constants.ts +132 -0
  780. package/common/src/tools/list.ts +193 -0
  781. package/common/src/tools/params/__tests__/coerce-to-array.test.ts +237 -0
  782. package/common/src/tools/params/__tests__/sequential-thinking-coercion.test.ts +98 -0
  783. package/common/src/tools/params/tool/add-message.ts +36 -0
  784. package/common/src/tools/params/tool/add-subgoal.ts +57 -0
  785. package/common/src/tools/params/tool/apply-patch.ts +110 -0
  786. package/common/src/tools/params/tool/ask-user.ts +181 -0
  787. package/common/src/tools/params/tool/browser-logs.ts +85 -0
  788. package/common/src/tools/params/tool/code-search.ts +144 -0
  789. package/common/src/tools/params/tool/composio.ts +131 -0
  790. package/common/src/tools/params/tool/create-plan.ts +80 -0
  791. package/common/src/tools/params/tool/end-turn.ts +54 -0
  792. package/common/src/tools/params/tool/find-files.ts +60 -0
  793. package/common/src/tools/params/tool/glob.ts +74 -0
  794. package/common/src/tools/params/tool/gravity-index.ts +92 -0
  795. package/common/src/tools/params/tool/list-directory.ts +58 -0
  796. package/common/src/tools/params/tool/lookup-agent-info.ts +37 -0
  797. package/common/src/tools/params/tool/propose-str-replace.ts +103 -0
  798. package/common/src/tools/params/tool/propose-write-file.ts +71 -0
  799. package/common/src/tools/params/tool/read-docs.ts +85 -0
  800. package/common/src/tools/params/tool/read-files.ts +61 -0
  801. package/common/src/tools/params/tool/read-subtree.ts +83 -0
  802. package/common/src/tools/params/tool/read-url.ts +81 -0
  803. package/common/src/tools/params/tool/render-ui.ts +203 -0
  804. package/common/src/tools/params/tool/run-file-change-hooks.ts +57 -0
  805. package/common/src/tools/params/tool/run-readonly-command.ts +76 -0
  806. package/common/src/tools/params/tool/run-terminal-command.ts +185 -0
  807. package/common/src/tools/params/tool/sequential-thinking.ts +110 -0
  808. package/common/src/tools/params/tool/set-messages.ts +42 -0
  809. package/common/src/tools/params/tool/set-output.ts +62 -0
  810. package/common/src/tools/params/tool/set-scaffold-complete.ts +51 -0
  811. package/common/src/tools/params/tool/skill.ts +56 -0
  812. package/common/src/tools/params/tool/spawn-agent-inline.ts +57 -0
  813. package/common/src/tools/params/tool/spawn-agents.ts +154 -0
  814. package/common/src/tools/params/tool/str-replace.ts +107 -0
  815. package/common/src/tools/params/tool/suggest-followups.ts +94 -0
  816. package/common/src/tools/params/tool/task-completed.ts +58 -0
  817. package/common/src/tools/params/tool/think-deeply.ts +53 -0
  818. package/common/src/tools/params/tool/transition-phase.ts +57 -0
  819. package/common/src/tools/params/tool/update-subgoal.ts +89 -0
  820. package/common/src/tools/params/tool/web-search.ts +73 -0
  821. package/common/src/tools/params/tool/write-file.ts +71 -0
  822. package/common/src/tools/params/tool/write-todos.ts +67 -0
  823. package/common/src/tools/params/utils.ts +152 -0
  824. package/common/src/tools/safety-registry.ts +274 -0
  825. package/common/src/tools/safety.ts +42 -0
  826. package/common/src/tools/sequential-thinking.ts +340 -0
  827. package/common/src/tools/utils.ts +25 -0
  828. package/common/src/types/__tests__/dynamic-agent-template.test.ts +20 -0
  829. package/common/src/types/agent-template.ts +223 -0
  830. package/common/src/types/api/agents/publish.ts +63 -0
  831. package/common/src/types/contracts/agent-runtime.ts +84 -0
  832. package/common/src/types/contracts/analytics.ts +12 -0
  833. package/common/src/types/contracts/bigquery.ts +55 -0
  834. package/common/src/types/contracts/billing.ts +46 -0
  835. package/common/src/types/contracts/client.ts +52 -0
  836. package/common/src/types/contracts/database.ts +104 -0
  837. package/common/src/types/contracts/env.ts +203 -0
  838. package/common/src/types/contracts/llm.ts +183 -0
  839. package/common/src/types/contracts/logger.ts +29 -0
  840. package/common/src/types/contracts/logs.ts +34 -0
  841. package/common/src/types/contracts/trace.ts +21 -0
  842. package/common/src/types/dynamic-agent-template.ts +290 -0
  843. package/common/src/types/filesystem.ts +10 -0
  844. package/common/src/types/function-params.ts +35 -0
  845. package/common/src/types/grant.ts +20 -0
  846. package/common/src/types/gravity-index.ts +170 -0
  847. package/common/src/types/json.ts +26 -0
  848. package/common/src/types/mcp.ts +26 -0
  849. package/common/src/types/messages/content-part.ts +59 -0
  850. package/common/src/types/messages/data-content.ts +14 -0
  851. package/common/src/types/messages/provider-metadata.ts +10 -0
  852. package/common/src/types/messages/savant-code-message.ts +55 -0
  853. package/common/src/types/organization.ts +118 -0
  854. package/common/src/types/print-mode.ts +167 -0
  855. package/common/src/types/publisher.ts +67 -0
  856. package/common/src/types/savant-free-session.ts +295 -0
  857. package/common/src/types/savant-free-streak.ts +6 -0
  858. package/common/src/types/session-state.ts +237 -0
  859. package/common/src/types/skill.ts +56 -0
  860. package/common/src/types/source.ts +11 -0
  861. package/common/src/types/spawn.ts +13 -0
  862. package/common/src/types/subscription.ts +68 -0
  863. package/common/src/types/usage.ts +16 -0
  864. package/common/src/types/util.ts +3 -0
  865. package/common/src/util/__tests__/analytics-dispatcher.test.ts +145 -0
  866. package/common/src/util/__tests__/analytics-log.test.ts +110 -0
  867. package/common/src/util/__tests__/analytics-sampling.test.ts +131 -0
  868. package/common/src/util/__tests__/axiom-only-log.test.ts +64 -0
  869. package/common/src/util/__tests__/engagement-tracker.test.ts +115 -0
  870. package/common/src/util/__tests__/error-abort.test.ts +822 -0
  871. package/common/src/util/__tests__/error-api-details.test.ts +190 -0
  872. package/common/src/util/__tests__/format-code-search.test.ts +60 -0
  873. package/common/src/util/__tests__/log-mirror.test.ts +31 -0
  874. package/common/src/util/__tests__/messages.test.ts +1118 -0
  875. package/common/src/util/__tests__/partial-json-delta.test.ts +505 -0
  876. package/common/src/util/__tests__/paths.test.ts +289 -0
  877. package/common/src/util/__tests__/promise.test.ts +334 -0
  878. package/common/src/util/__tests__/protocol-config.test.ts +119 -0
  879. package/common/src/util/__tests__/rate-limit.test.ts +28 -0
  880. package/common/src/util/__tests__/reddit-savant-free-retention.test.ts +120 -0
  881. package/common/src/util/__tests__/savant-free-streak.test.ts +142 -0
  882. package/common/src/util/__tests__/saxy.test.ts +1008 -0
  883. package/common/src/util/__tests__/string.test.ts +238 -0
  884. package/common/src/util/__tests__/zoned-time.test.ts +88 -0
  885. package/common/src/util/agent-file-utils.ts +110 -0
  886. package/common/src/util/agent-id-parsing.ts +147 -0
  887. package/common/src/util/agent-name-normalization.ts +39 -0
  888. package/common/src/util/analytics-dispatcher.ts +81 -0
  889. package/common/src/util/analytics-log.ts +84 -0
  890. package/common/src/util/analytics-sampling.ts +225 -0
  891. package/common/src/util/array.ts +63 -0
  892. package/common/src/util/axiom-only-log.ts +79 -0
  893. package/common/src/util/cache-debug.ts +191 -0
  894. package/common/src/util/credentials.ts +12 -0
  895. package/common/src/util/currency.ts +25 -0
  896. package/common/src/util/dates.ts +81 -0
  897. package/common/src/util/engagement-tracker.ts +133 -0
  898. package/common/src/util/error.ts +580 -0
  899. package/common/src/util/file.ts +363 -0
  900. package/common/src/util/format-code-search.ts +115 -0
  901. package/common/src/util/lazy-response-ads.ts +93 -0
  902. package/common/src/util/log-data.ts +57 -0
  903. package/common/src/util/log-mirror.ts +34 -0
  904. package/common/src/util/lru-cache.ts +67 -0
  905. package/common/src/util/messages.ts +600 -0
  906. package/common/src/util/model-utils.ts +25 -0
  907. package/common/src/util/object.ts +137 -0
  908. package/common/src/util/param-helpers.ts +49 -0
  909. package/common/src/util/partial-json-delta.ts +100 -0
  910. package/common/src/util/paths.ts +194 -0
  911. package/common/src/util/promise.ts +87 -0
  912. package/common/src/util/protocol-config.ts +141 -0
  913. package/common/src/util/random.ts +15 -0
  914. package/common/src/util/rate-limit.ts +56 -0
  915. package/common/src/util/reddit-capi-events.ts +40 -0
  916. package/common/src/util/reddit-savant-free-retention.ts +69 -0
  917. package/common/src/util/response-ad-positions.ts +54 -0
  918. package/common/src/util/savant-free-privacy.ts +78 -0
  919. package/common/src/util/savant-free-streak.ts +153 -0
  920. package/common/src/util/saxy.ts +739 -0
  921. package/common/src/util/skills.ts +32 -0
  922. package/common/src/util/stop-sequence.ts +60 -0
  923. package/common/src/util/string.ts +419 -0
  924. package/common/src/util/system-info.ts +51 -0
  925. package/common/src/util/type-narrowing.ts +125 -0
  926. package/common/src/util/xml.ts +17 -0
  927. package/common/src/util/zod-schema.ts +80 -0
  928. package/common/src/util/zoned-time.ts +136 -0
  929. package/common/src/utils/ask-user-bridge.ts +47 -0
  930. package/common/tsconfig.json +8 -0
  931. package/database.db +0 -0
  932. package/dev/LEARNINGS.md +309 -0
  933. package/dev/fids/.gitkeep +0 -0
  934. package/dev/fids/archive/.gitkeep +0 -0
  935. package/dev/fids/archive/FID-2026-0802-008-sdk-package-audit-client-run-run-state.md +238 -0
  936. package/dev/fids/archive/FID-2026-0803-001-echo-enforcement-layer-drift.md +404 -0
  937. package/dev/fids/archive/FID-2026-0803-002-llm-providers-database-audit.md +348 -0
  938. package/dev/fids/archive/FID-2026-0803-003-sdk-impl-common-util-audit.md +277 -0
  939. package/dev/fids/archive/FID-2026-0803-004-checkpoint-rewind.md +181 -0
  940. package/dev/fids/archive/FID-2026-0803-005-quality-scan-hygiene-fixes.md +265 -0
  941. package/dev/fids/archive/FID-2026-0803-006-code-map-audit-hygiene.md +243 -0
  942. package/dev/fids/archive/FID-2026-0803-007-evals-benchmark-audit-hygiene.md +296 -0
  943. package/dev/fids/archive/FID-2026-0803-009-echo-enforcement-doc-drift.md +112 -0
  944. package/dev/fids/archive/FID-2026-0803-010-database-llm-providers-low-fixes.md +255 -0
  945. package/dev/fids/archive/FID-2026-0803-011-build-artifact-hygiene.md +169 -0
  946. package/dev/fids/archive/FID-2026-0803-012-release-readiness-audit.md +162 -0
  947. package/dev/fids/archive/FID-2026-0803-013-agent-roster-over-reporting.md +146 -0
  948. package/dev/fids/archive/FID-2026-0803-014-freebuff-to-savant-rebrand-sweep.md +185 -0
  949. package/dev/nova/reports/2026-08-02-top-25-ai-inference-providers-competitive-intel.md +213 -0
  950. package/dev/nova/specs/echo-v0.1.2-freebuff.md +391 -0
  951. package/dev/nova/specs/goal-loop-feature-spec.md +245 -0
  952. package/dev/nova/specs/launch-strategy-research-prompt.md +88 -0
  953. package/dev/releases/README.md +50 -0
  954. package/dev/scratchpad/.gitkeep +0 -0
  955. package/dev/session-summaries/.gitkeep +0 -0
  956. package/dev/session-summaries/2026-07-16-1255.md +128 -0
  957. package/dev/session-summaries/2026-07-17-1000.md +64 -0
  958. package/dev/session-summaries/2026-07-19-eslint-zero-tolerance-cleanup.md +145 -0
  959. package/dev/session-summaries/2026-07-19-fid-026-debugging-and-rename.md +79 -0
  960. package/dev/session-summaries/2026-07-19-fid-026-phase-b-rebrand.md +76 -0
  961. package/dev/session-summaries/2026-07-19-fid-027-clean-break.md +47 -0
  962. package/dev/session-summaries/2026-07-19-pre-push-house-cleaning.md +100 -0
  963. package/dev/session-summaries/2026-07-19-v0.0.2-release-session.md +229 -0
  964. package/dev/session-summaries/2026-07-20-1805-fid-loop-closure.md +95 -0
  965. package/dev/session-summaries/2026-07-22-1800.md +52 -0
  966. package/dev/session-summaries/2026-07-23-fsm-optimization.md +88 -0
  967. package/dev/session-summaries/2026-07-25-0000.md +80 -0
  968. package/dev/session-summaries/2026-07-25-1200-context-compaction.md +154 -0
  969. package/dev/session-summaries/2026-07-25-1600-layer4-reactive-compact.md +96 -0
  970. package/dev/session-summaries/2026-07-25-1700-dev-folder-audit.md +161 -0
  971. package/dev/session-summaries/2026-07-25-2000-benchmark-v2-filters.md +147 -0
  972. package/dev/session-summaries/2026-07-25-2000.md +77 -0
  973. package/dev/session-summaries/2026-07-27-0000.md +63 -0
  974. package/dev/session-summaries/2026-07-28-history-capture-handoff.md +206 -0
  975. package/dev/session-summaries/2026-07-31-freebuff-echo-compliance-remediation.md +156 -0
  976. package/dev/session-summaries/2026-07-31-pre-launch-optimization-execution.md +46 -0
  977. package/dev/session-summaries/2026-0721-1800.md +44 -0
  978. package/dev/session-summaries/2026-08-01-sidebar-folded-startup.md +159 -0
  979. package/dev/session-summaries/2026-08-02-0.0.15-release-closeout.md +32 -0
  980. package/dev/session-summaries/2026-08-02-repository-hygiene.md +51 -0
  981. package/dev/session-summaries/2026-08-03-agent-roster-fix-and-ready-check-closeout.md +73 -0
  982. package/dev/session-summaries/2026-08-03-build-artifact-hygiene-closeout.md +40 -0
  983. package/dev/session-summaries/2026-08-03-code-map-audit-closeout.md +44 -0
  984. package/dev/session-summaries/2026-08-03-database-llm-providers-low-fixes-closeout.md +47 -0
  985. package/dev/session-summaries/2026-08-03-echo-enforcement-doc-drift-closeout.md +43 -0
  986. package/dev/session-summaries/2026-08-03-evals-benchmark-audit-closeout.md +50 -0
  987. package/dev/session-summaries/2026-08-03-quality-scan-hygiene-fixes-closeout.md +57 -0
  988. package/dev/session-summaries/2026-08-03-quality-session-checkpoint-rewind-closeout.md +56 -0
  989. package/dev/session-summaries/2026-08-03-release-readiness-audit-closeout.md +60 -0
  990. package/dev/test-prompts/archive/0.0.2-final-pass.md +209 -0
  991. package/dev/test-prompts/archive/agent-capabilities-full-test.md +361 -0
  992. package/dev/test-prompts/archive/agent-capabilities-test.md +471 -0
  993. package/dev/test-prompts/archive/comprehensive-az-system-test-v1.md +441 -0
  994. package/dev/test-prompts/archive/comprehensive-az-system-test-v2-report.md +377 -0
  995. package/dev/test-prompts/archive/comprehensive-az-system-test-v2.md +544 -0
  996. package/dev/test-prompts/archive/comprehensive-az-system-test.md +396 -0
  997. package/dev/test-prompts/archive/comprehensive-az-test-final.md +900 -0
  998. package/dev/test-prompts/archive/comprehensive-az-test-v11.md +141 -0
  999. package/dev/test-prompts/archive/comprehensive-az-test-v12.md +29 -0
  1000. package/dev/test-prompts/archive/comprehensive-az-test-v6.md +631 -0
  1001. package/dev/test-prompts/archive/comprehensive-az-test-v7.md +625 -0
  1002. package/dev/test-prompts/archive/fid-007-ability-confirmation.md +248 -0
  1003. package/dev/test-prompts/archive/fid-2026-0801-006-thinker-tool-call-boundary.md +86 -0
  1004. package/dev/test-prompts/archive/fid-2026-0801-007-child-tool-set-fallback-cli.md +101 -0
  1005. package/dev/test-prompts/archive/fid-2026-0801-008-provider-tool-call-accumulation-cli.md +111 -0
  1006. package/dev/test-prompts/archive/fid-2026-0801-012-thinker-state-output-cli.md +134 -0
  1007. package/dev/test-prompts/archive/gemini-deep-research-sidebar-highlight.md +598 -0
  1008. package/dev/test-prompts/archive/goal-loop-cli-test.md +142 -0
  1009. package/dev/test-prompts/archive/rebrand-qa.md +258 -0
  1010. package/dev/test-prompts/archive/release-az-test-fid-085.md +306 -0
  1011. package/dev/test-prompts/archive/release-az-test-fid-087.md +219 -0
  1012. package/dev/test-prompts/archive/release-az-test-fid-2026-0726-001.md +270 -0
  1013. package/dev/test-prompts/archive/release-az-test-fid-2026-0728-008.md +213 -0
  1014. package/dev/test-prompts/archive/release-az-test-fid-2026-0728-launch-tracks.md +253 -0
  1015. package/dev/test-prompts/archive/release-az-test-fid-2026-0731-pre-launch.md +102 -0
  1016. package/docs/AI Coding Agents Market Research.md +516 -0
  1017. package/docs/Agent Harness Feature Pairing Research.md +166 -0
  1018. package/docs/CLI Agent Inference Backend Research.md +446 -0
  1019. package/docs/Codebuff Rebranding And Migration Plan.md +418 -0
  1020. package/docs/ECHO-EVOLUTION-ARCH.md +77 -0
  1021. package/docs/Harness Engineering for Coding Agents Research.md +196 -0
  1022. package/docs/Launch Plan Review and Optimization.md +178 -0
  1023. package/docs/OpenTUI Sidebar Bug Fix.md +245 -0
  1024. package/docs/SAVANT-VERSIONING.md +31 -0
  1025. package/docs/Savant Code Launch Strategy.md +270 -0
  1026. package/docs/Savant-Code Business And Backend Research.md +222 -0
  1027. package/docs/agents-and-tools.md +217 -0
  1028. package/docs/cloudflare-llms-full.md +9623 -0
  1029. package/docs/design/OpenTUI Terminal Visualization Guide.md +471 -0
  1030. package/docs/design/database-architecture.md +217 -0
  1031. package/docs/design/deep-research-report.md +295 -0
  1032. package/docs/design/thinker-sequentialthinking-regression-diagnostic.md +366 -0
  1033. package/docs/discord-server-design.md +167 -0
  1034. package/docs/gravity-integration-starter.md +202 -0
  1035. package/docs/launch/hn-first-comment.md +44 -0
  1036. package/docs/launch/hn-post.md +35 -0
  1037. package/docs/launch/incident-response.md +88 -0
  1038. package/docs/launch/landing/index.html +233 -0
  1039. package/docs/launch/mastodon-thread.md +52 -0
  1040. package/docs/launch/newsletter-pitch.md +49 -0
  1041. package/docs/launch/twitter-thread.md +62 -0
  1042. package/docs/privacy.md +186 -0
  1043. package/docs/reports/Savant-Code Benchmark Specification.md +206 -0
  1044. package/docs/reports/Thinker Agent Architecture Research.md +284 -0
  1045. package/docs/reports/adoptable-features-2026-07-25.md +604 -0
  1046. package/docs/reports/adoptable-features-master.md +480 -0
  1047. package/docs/reports/codebuff-discord-feedback.md +43 -0
  1048. package/docs/reports/feature-parity-report.md +810 -0
  1049. package/docs/reports/repos/AionUi.md +75 -0
  1050. package/docs/reports/repos/OpenHands.md +76 -0
  1051. package/docs/reports/repos/SWE-agent.md +82 -0
  1052. package/docs/reports/repos/agno.md +89 -0
  1053. package/docs/reports/repos/aider.md +74 -0
  1054. package/docs/reports/repos/cline.md +83 -0
  1055. package/docs/reports/repos/codex.md +83 -0
  1056. package/docs/reports/repos/gemini-cli.md +92 -0
  1057. package/docs/reports/repos/goose.md +65 -0
  1058. package/docs/reports/repos/gpt-pilot.md +52 -0
  1059. package/docs/reports/repos/hermes-agent.md +101 -0
  1060. package/docs/reports/repos/kilocode.md +79 -0
  1061. package/docs/reports/repos/openclaude.md +99 -0
  1062. package/docs/reports/repos/openclaw.md +100 -0
  1063. package/docs/reports/repos/opencode-dev.md +78 -0
  1064. package/docs/reports/repos/zero.md +123 -0
  1065. package/docs/reports/savant-code-benchmark-v2-2026-08-03.md +76 -0
  1066. package/docs/savant-code-modes.md +338 -0
  1067. package/docs/testing.md +51 -0
  1068. package/docs/visual-mockup-neon-slate.txt +41 -0
  1069. package/eslint.config.js +211 -0
  1070. package/evals/README.md +45 -0
  1071. package/evals/benchmark/README.md +449 -0
  1072. package/evals/benchmark/agent-runner.ts +217 -0
  1073. package/evals/benchmark/analyze-task-scores.ts +496 -0
  1074. package/evals/benchmark/eval-codebuff-hard.json +3343 -0
  1075. package/evals/benchmark/eval-codebuff.json +3193 -0
  1076. package/evals/benchmark/eval-codebuff2.json +2494 -0
  1077. package/evals/benchmark/eval-manifold-hard.json +2525 -0
  1078. package/evals/benchmark/eval-manifold.json +1675 -0
  1079. package/evals/benchmark/eval-manifold2.json +1945 -0
  1080. package/evals/benchmark/eval-plane-hard.json +4372 -0
  1081. package/evals/benchmark/eval-plane.json +2028 -0
  1082. package/evals/benchmark/eval-plane2.json +3517 -0
  1083. package/evals/benchmark/eval-saleor-hard.json +6081 -0
  1084. package/evals/benchmark/eval-saleor.json +1829 -0
  1085. package/evals/benchmark/eval-saleor2.json +3273 -0
  1086. package/evals/benchmark/eval-task-generator.ts +158 -0
  1087. package/evals/benchmark/filter-supplemental-files.ts +225 -0
  1088. package/evals/benchmark/format-output.ts +215 -0
  1089. package/evals/benchmark/gen-evals.ts +294 -0
  1090. package/evals/benchmark/gen-repo-eval.ts +71 -0
  1091. package/evals/benchmark/judge.ts +308 -0
  1092. package/evals/benchmark/lessons-extractor.ts +247 -0
  1093. package/evals/benchmark/main-hard-tasks.ts +49 -0
  1094. package/evals/benchmark/main-single-eval.ts +23 -0
  1095. package/evals/benchmark/main.ts +29 -0
  1096. package/evals/benchmark/meta-analyzer.ts +329 -0
  1097. package/evals/benchmark/pick-commits.ts +627 -0
  1098. package/evals/benchmark/run-benchmark.ts +657 -0
  1099. package/evals/benchmark/runners/claude.ts +176 -0
  1100. package/evals/benchmark/runners/codex.ts +143 -0
  1101. package/evals/benchmark/runners/index.ts +4 -0
  1102. package/evals/benchmark/runners/opencode.ts +253 -0
  1103. package/evals/benchmark/runners/runner.ts +13 -0
  1104. package/evals/benchmark/runners/savant.ts +148 -0
  1105. package/evals/benchmark/setup-test-repo.ts +314 -0
  1106. package/evals/benchmark/trace-analyzer.ts +257 -0
  1107. package/evals/benchmark/trace-utils.ts +80 -0
  1108. package/evals/benchmark/types.ts +83 -0
  1109. package/evals/bunfig.toml +4 -0
  1110. package/evals/logger.ts +87 -0
  1111. package/evals/package.json +31 -0
  1112. package/evals/subagents/test-repo-utils.ts +131 -0
  1113. package/evals/tsconfig.json +13 -0
  1114. package/evals/v2/README.md +149 -0
  1115. package/evals/v2/reports/report.json +261 -0
  1116. package/evals/v2/reports/report.md +15 -0
  1117. package/evals/v2/schema/task.schema.json +172 -0
  1118. package/evals/v2/src/cli.ts +216 -0
  1119. package/evals/v2/src/golden.ts +73 -0
  1120. package/evals/v2/src/harness.ts +293 -0
  1121. package/evals/v2/src/metrics.ts +326 -0
  1122. package/evals/v2/src/registry.ts +179 -0
  1123. package/evals/v2/src/reports.ts +126 -0
  1124. package/evals/v2/src/runner.ts +143 -0
  1125. package/evals/v2/src/runners/savant.ts +105 -0
  1126. package/evals/v2/src/sandbox.ts +42 -0
  1127. package/evals/v2/src/sandboxes/docker.ts +49 -0
  1128. package/evals/v2/src/sandboxes/tempdir.ts +120 -0
  1129. package/evals/v2/src/schema.ts +83 -0
  1130. package/evals/v2/src/trace.ts +186 -0
  1131. package/evals/v2/src/verify.ts +199 -0
  1132. package/evals/v2/tasks/error_recovery/env-fault/calculator.js +11 -0
  1133. package/evals/v2/tasks/error_recovery/env-fault/calculator.test.js +15 -0
  1134. package/evals/v2/tasks/error_recovery/env-fault/golden.patch +15 -0
  1135. package/evals/v2/tasks/error_recovery/env-fault/task.yaml +20 -0
  1136. package/evals/v2/tasks/multi_agent_orchestration/options-contract/app.js +5 -0
  1137. package/evals/v2/tasks/multi_agent_orchestration/options-contract/app.test.js +7 -0
  1138. package/evals/v2/tasks/multi_agent_orchestration/options-contract/golden.patch +19 -0
  1139. package/evals/v2/tasks/multi_agent_orchestration/options-contract/greet.js +3 -0
  1140. package/evals/v2/tasks/multi_agent_orchestration/options-contract/orchestration.test.js +30 -0
  1141. package/evals/v2/tasks/multi_agent_orchestration/options-contract/task.yaml +29 -0
  1142. package/evals/v2/tasks/pure_coding/add-fix/add.js +3 -0
  1143. package/evals/v2/tasks/pure_coding/add-fix/add.test.js +11 -0
  1144. package/evals/v2/tasks/pure_coding/add-fix/golden.patch +7 -0
  1145. package/evals/v2/tasks/pure_coding/add-fix/task.yaml +20 -0
  1146. package/evals/v2/tasks/pure_coding/rename-greet/app.js +5 -0
  1147. package/evals/v2/tasks/pure_coding/rename-greet/app.test.js +32 -0
  1148. package/evals/v2/tasks/pure_coding/rename-greet/golden.patch +19 -0
  1149. package/evals/v2/tasks/pure_coding/rename-greet/greet.js +5 -0
  1150. package/evals/v2/tasks/pure_coding/rename-greet/task.yaml +21 -0
  1151. package/evals/v2/tests/golden.test.ts +104 -0
  1152. package/evals/v2/tests/harness.test.ts +204 -0
  1153. package/evals/v2/tests/metrics.test.ts +353 -0
  1154. package/evals/v2/tests/registry.test.ts +210 -0
  1155. package/evals/v2/tests/reports.test.ts +218 -0
  1156. package/evals/v2/tests/savant-runner.test.ts +218 -0
  1157. package/evals/v2/tests/schema.test.ts +127 -0
  1158. package/evals/v2/tests/tempdir-sandbox.test.ts +49 -0
  1159. package/evals/v2/tests/trace.test.ts +76 -0
  1160. package/evals/v2/tests/verify.test.ts +224 -0
  1161. package/license +202 -0
  1162. package/package.json +71 -44
  1163. package/packages/agent-runtime/README.md +46 -0
  1164. package/packages/agent-runtime/agent_exit +1 -0
  1165. package/packages/agent-runtime/bunfig.toml +2 -0
  1166. package/packages/agent-runtime/package.json +34 -0
  1167. package/packages/agent-runtime/src/__tests__/apply-patch-tool.test.ts +202 -0
  1168. package/packages/agent-runtime/src/__tests__/cost-aggregation.test.ts +397 -0
  1169. package/packages/agent-runtime/src/__tests__/generate-diffs-prompt.test.ts +107 -0
  1170. package/packages/agent-runtime/src/__tests__/get-file-reading-updates.test.ts +59 -0
  1171. package/packages/agent-runtime/src/__tests__/gravity-index-tool.test.ts +501 -0
  1172. package/packages/agent-runtime/src/__tests__/loop-agent-steps.test.ts +1512 -0
  1173. package/packages/agent-runtime/src/__tests__/main-prompt.test.ts +452 -0
  1174. package/packages/agent-runtime/src/__tests__/n-parameter.test.ts +984 -0
  1175. package/packages/agent-runtime/src/__tests__/process-file-block.test.ts +196 -0
  1176. package/packages/agent-runtime/src/__tests__/process-str-replace.test.ts +512 -0
  1177. package/packages/agent-runtime/src/__tests__/programmatic-tool-authorization.test.ts +219 -0
  1178. package/packages/agent-runtime/src/__tests__/prompt-caching-subagents.test.ts +749 -0
  1179. package/packages/agent-runtime/src/__tests__/prompts-schema-handling.test.ts +454 -0
  1180. package/packages/agent-runtime/src/__tests__/propose-tools.test.ts +824 -0
  1181. package/packages/agent-runtime/src/__tests__/read-docs-tool.test.ts +394 -0
  1182. package/packages/agent-runtime/src/__tests__/run-agent-step-prefill.test.ts +161 -0
  1183. package/packages/agent-runtime/src/__tests__/run-agent-step-tools.test.ts +612 -0
  1184. package/packages/agent-runtime/src/__tests__/run-programmatic-step.test.ts +1743 -0
  1185. package/packages/agent-runtime/src/__tests__/sandbox-generator.test.ts +154 -0
  1186. package/packages/agent-runtime/src/__tests__/spawn-agents-image-content.test.ts +354 -0
  1187. package/packages/agent-runtime/src/__tests__/spawn-agents-message-history.test.ts +280 -0
  1188. package/packages/agent-runtime/src/__tests__/spawn-agents-permissions.test.ts +664 -0
  1189. package/packages/agent-runtime/src/__tests__/stream-parser-abort.test.ts +250 -0
  1190. package/packages/agent-runtime/src/__tests__/stream-parser-reasoning.test.ts +194 -0
  1191. package/packages/agent-runtime/src/__tests__/subagent-streaming.test.ts +230 -0
  1192. package/packages/agent-runtime/src/__tests__/test-utils.ts +96 -0
  1193. package/packages/agent-runtime/src/__tests__/thinker-convergence-gate.test.ts +242 -0
  1194. package/packages/agent-runtime/src/__tests__/to-token-count-input-schema.test.ts +81 -0
  1195. package/packages/agent-runtime/src/__tests__/tool-executor-sandbox.test.ts +167 -0
  1196. package/packages/agent-runtime/src/__tests__/tool-stream-parser.test.ts +682 -0
  1197. package/packages/agent-runtime/src/__tests__/tool-validation-error.test.ts +1380 -0
  1198. package/packages/agent-runtime/src/__tests__/web-search-tool.test.ts +402 -0
  1199. package/packages/agent-runtime/src/__tests__/xml-tool-result-ordering.test.ts +264 -0
  1200. package/packages/agent-runtime/src/constants.ts +12 -0
  1201. package/packages/agent-runtime/src/context-compactor.ts +425 -0
  1202. package/packages/agent-runtime/src/find-files/__tests__/request-files-prompt.test.ts +190 -0
  1203. package/packages/agent-runtime/src/find-files/custom-file-picker-config.ts +61 -0
  1204. package/packages/agent-runtime/src/find-files/request-files-prompt.ts +462 -0
  1205. package/packages/agent-runtime/src/generate-diffs-prompt.ts +38 -0
  1206. package/packages/agent-runtime/src/get-file-reading-updates.ts +27 -0
  1207. package/packages/agent-runtime/src/llm-api/__tests__/gemini-with-fallbacks.test.ts +267 -0
  1208. package/packages/agent-runtime/src/llm-api/__tests__/serper-api.test.ts +297 -0
  1209. package/packages/agent-runtime/src/llm-api/claude.ts +7 -0
  1210. package/packages/agent-runtime/src/llm-api/context7-api.ts +290 -0
  1211. package/packages/agent-runtime/src/llm-api/gemini-with-fallbacks.ts +104 -0
  1212. package/packages/agent-runtime/src/llm-api/savant-code-web-api.ts +370 -0
  1213. package/packages/agent-runtime/src/llm-api/serper-api.ts +193 -0
  1214. package/packages/agent-runtime/src/main-prompt.ts +251 -0
  1215. package/packages/agent-runtime/src/mcp-constants.ts +12 -0
  1216. package/packages/agent-runtime/src/mcp.ts +83 -0
  1217. package/packages/agent-runtime/src/process-file-block.ts +118 -0
  1218. package/packages/agent-runtime/src/process-str-replace.ts +213 -0
  1219. package/packages/agent-runtime/src/prompt-agent-stream.ts +119 -0
  1220. package/packages/agent-runtime/src/run-agent-step.ts +1632 -0
  1221. package/packages/agent-runtime/src/run-programmatic-step.ts +633 -0
  1222. package/packages/agent-runtime/src/system-prompt/prompts.ts +215 -0
  1223. package/packages/agent-runtime/src/system-prompt/search-system-prompt.ts +89 -0
  1224. package/packages/agent-runtime/src/system-prompt/truncate-file-tree.ts +414 -0
  1225. package/packages/agent-runtime/src/templates/README.md +160 -0
  1226. package/packages/agent-runtime/src/templates/__tests__/agent-registry.test.ts +489 -0
  1227. package/packages/agent-runtime/src/templates/__tests__/strings.test.ts +465 -0
  1228. package/packages/agent-runtime/src/templates/agent-registry.ts +122 -0
  1229. package/packages/agent-runtime/src/templates/prompts.ts +189 -0
  1230. package/packages/agent-runtime/src/templates/strings.ts +292 -0
  1231. package/packages/agent-runtime/src/templates/types.ts +61 -0
  1232. package/packages/agent-runtime/src/tool-stream-parser.ts +260 -0
  1233. package/packages/agent-runtime/src/tools/filter-tool-set.ts +18 -0
  1234. package/packages/agent-runtime/src/tools/handlers/__tests__/glob.test.ts +331 -0
  1235. package/packages/agent-runtime/src/tools/handlers/__tests__/read-subtree.test.ts +346 -0
  1236. package/packages/agent-runtime/src/tools/handlers/__tests__/run-readonly-command.test.ts +284 -0
  1237. package/packages/agent-runtime/src/tools/handlers/handler-function-type.ts +77 -0
  1238. package/packages/agent-runtime/src/tools/handlers/list.ts +105 -0
  1239. package/packages/agent-runtime/src/tools/handlers/tool/__tests__/checkpoint-store.test.ts +394 -0
  1240. package/packages/agent-runtime/src/tools/handlers/tool/__tests__/skill.test.ts +98 -0
  1241. package/packages/agent-runtime/src/tools/handlers/tool/__tests__/write-file.test.ts +24 -0
  1242. package/packages/agent-runtime/src/tools/handlers/tool/add-message.ts +37 -0
  1243. package/packages/agent-runtime/src/tools/handlers/tool/add-subgoal.ts +30 -0
  1244. package/packages/agent-runtime/src/tools/handlers/tool/apply-patch.ts +120 -0
  1245. package/packages/agent-runtime/src/tools/handlers/tool/ask-user.ts +25 -0
  1246. package/packages/agent-runtime/src/tools/handlers/tool/browser-logs.ts +21 -0
  1247. package/packages/agent-runtime/src/tools/handlers/tool/checkpoint-store.ts +378 -0
  1248. package/packages/agent-runtime/src/tools/handlers/tool/code-search.ts +21 -0
  1249. package/packages/agent-runtime/src/tools/handlers/tool/composio.ts +52 -0
  1250. package/packages/agent-runtime/src/tools/handlers/tool/create-plan.ts +63 -0
  1251. package/packages/agent-runtime/src/tools/handlers/tool/end-turn.ts +15 -0
  1252. package/packages/agent-runtime/src/tools/handlers/tool/find-files.ts +161 -0
  1253. package/packages/agent-runtime/src/tools/handlers/tool/glob.ts +22 -0
  1254. package/packages/agent-runtime/src/tools/handlers/tool/gravity-index.ts +230 -0
  1255. package/packages/agent-runtime/src/tools/handlers/tool/list-directory.ts +22 -0
  1256. package/packages/agent-runtime/src/tools/handlers/tool/lookup-agent-info.ts +105 -0
  1257. package/packages/agent-runtime/src/tools/handlers/tool/propose-str-replace.ts +111 -0
  1258. package/packages/agent-runtime/src/tools/handlers/tool/propose-write-file.ts +89 -0
  1259. package/packages/agent-runtime/src/tools/handlers/tool/proposed-content-store.ts +64 -0
  1260. package/packages/agent-runtime/src/tools/handlers/tool/read-docs.ts +160 -0
  1261. package/packages/agent-runtime/src/tools/handlers/tool/read-files.ts +43 -0
  1262. package/packages/agent-runtime/src/tools/handlers/tool/read-subtree.ts +198 -0
  1263. package/packages/agent-runtime/src/tools/handlers/tool/read-url.ts +21 -0
  1264. package/packages/agent-runtime/src/tools/handlers/tool/render-ui.ts +15 -0
  1265. package/packages/agent-runtime/src/tools/handlers/tool/run-file-change-hooks.ts +20 -0
  1266. package/packages/agent-runtime/src/tools/handlers/tool/run-readonly-command.ts +215 -0
  1267. package/packages/agent-runtime/src/tools/handlers/tool/run-terminal-command.ts +33 -0
  1268. package/packages/agent-runtime/src/tools/handlers/tool/sequential-thinking.ts +53 -0
  1269. package/packages/agent-runtime/src/tools/handlers/tool/set-messages.ts +19 -0
  1270. package/packages/agent-runtime/src/tools/handlers/tool/set-output.ts +104 -0
  1271. package/packages/agent-runtime/src/tools/handlers/tool/set-scaffold-complete.ts +32 -0
  1272. package/packages/agent-runtime/src/tools/handlers/tool/skill.ts +146 -0
  1273. package/packages/agent-runtime/src/tools/handlers/tool/spawn-agent-inline.ts +149 -0
  1274. package/packages/agent-runtime/src/tools/handlers/tool/spawn-agent-utils.ts +436 -0
  1275. package/packages/agent-runtime/src/tools/handlers/tool/spawn-agents.ts +286 -0
  1276. package/packages/agent-runtime/src/tools/handlers/tool/str-replace.ts +135 -0
  1277. package/packages/agent-runtime/src/tools/handlers/tool/suggest-followups.ts +20 -0
  1278. package/packages/agent-runtime/src/tools/handlers/tool/task-completed.ts +15 -0
  1279. package/packages/agent-runtime/src/tools/handlers/tool/think-deeply.ts +25 -0
  1280. package/packages/agent-runtime/src/tools/handlers/tool/transition-phase.ts +160 -0
  1281. package/packages/agent-runtime/src/tools/handlers/tool/update-subgoal.ts +48 -0
  1282. package/packages/agent-runtime/src/tools/handlers/tool/web-search.ts +151 -0
  1283. package/packages/agent-runtime/src/tools/handlers/tool/write-file.ts +281 -0
  1284. package/packages/agent-runtime/src/tools/handlers/tool/write-todos.ts +19 -0
  1285. package/packages/agent-runtime/src/tools/prompts.ts +233 -0
  1286. package/packages/agent-runtime/src/tools/sandbox/__tests__/engine.test.ts +169 -0
  1287. package/packages/agent-runtime/src/tools/sandbox/__tests__/shell-denylist.test.ts +104 -0
  1288. package/packages/agent-runtime/src/tools/sandbox/engine.ts +109 -0
  1289. package/packages/agent-runtime/src/tools/sandbox/index.ts +14 -0
  1290. package/packages/agent-runtime/src/tools/sandbox/shell-denylist.ts +119 -0
  1291. package/packages/agent-runtime/src/tools/stream-parser.ts +407 -0
  1292. package/packages/agent-runtime/src/tools/thinker-convergence-gate.ts +162 -0
  1293. package/packages/agent-runtime/src/tools/thought-session-store.ts +43 -0
  1294. package/packages/agent-runtime/src/tools/tool-executor.ts +1098 -0
  1295. package/packages/agent-runtime/src/util/__tests__/messages.test.ts +995 -0
  1296. package/packages/agent-runtime/src/util/__tests__/parse-tool-calls-from-text.test.ts +363 -0
  1297. package/packages/agent-runtime/src/util/__tests__/simplify-tool-results.test.ts +382 -0
  1298. package/packages/agent-runtime/src/util/__tests__/stream-xml-parser.test.ts +285 -0
  1299. package/packages/agent-runtime/src/util/__tests__/think-tags.test.ts +49 -0
  1300. package/packages/agent-runtime/src/util/__tests__/token-counter.test.ts +121 -0
  1301. package/packages/agent-runtime/src/util/activity-tracking.ts +252 -0
  1302. package/packages/agent-runtime/src/util/agent-output.ts +102 -0
  1303. package/packages/agent-runtime/src/util/cache-debug.ts +330 -0
  1304. package/packages/agent-runtime/src/util/format-value.ts +16 -0
  1305. package/packages/agent-runtime/src/util/messages.ts +461 -0
  1306. package/packages/agent-runtime/src/util/parse-tool-calls-from-text.ts +122 -0
  1307. package/packages/agent-runtime/src/util/render-read-files-result.ts +18 -0
  1308. package/packages/agent-runtime/src/util/simplify-tool-results.ts +61 -0
  1309. package/packages/agent-runtime/src/util/stream-xml-parser.ts +259 -0
  1310. package/packages/agent-runtime/src/util/think-tags.ts +33 -0
  1311. package/packages/agent-runtime/src/util/token-counter.ts +136 -0
  1312. package/packages/agent-runtime/tsconfig.json +8 -0
  1313. package/packages/code-map/README.md +43 -0
  1314. package/packages/code-map/__tests__/integration.test.ts +278 -0
  1315. package/packages/code-map/__tests__/languages.test.ts +240 -0
  1316. package/packages/code-map/__tests__/parse.test.ts +640 -0
  1317. package/packages/code-map/__tests__/test-langs/test.c +42 -0
  1318. package/packages/code-map/__tests__/test-langs/test.cpp +34 -0
  1319. package/packages/code-map/__tests__/test-langs/test.cs +34 -0
  1320. package/packages/code-map/__tests__/test-langs/test.go +27 -0
  1321. package/packages/code-map/__tests__/test-langs/test.java +31 -0
  1322. package/packages/code-map/__tests__/test-langs/test.js +50 -0
  1323. package/packages/code-map/__tests__/test-langs/test.php +34 -0
  1324. package/packages/code-map/__tests__/test-langs/test.py +25 -0
  1325. package/packages/code-map/__tests__/test-langs/test.rb +28 -0
  1326. package/packages/code-map/__tests__/test-langs/test.rs +28 -0
  1327. package/packages/code-map/__tests__/test-langs/test.ts +31 -0
  1328. package/packages/code-map/package.json +33 -0
  1329. package/packages/code-map/src/index.ts +4 -0
  1330. package/packages/code-map/src/init-node.ts +185 -0
  1331. package/packages/code-map/src/languages.ts +344 -0
  1332. package/packages/code-map/src/parse.ts +410 -0
  1333. package/packages/code-map/src/tree-sitter-queries/readme.md +24 -0
  1334. package/packages/code-map/src/tree-sitter-queries/tree-sitter-c-tags.scm +16 -0
  1335. package/packages/code-map/src/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +23 -0
  1336. package/packages/code-map/src/tree-sitter-queries/tree-sitter-cpp-tags.scm +29 -0
  1337. package/packages/code-map/src/tree-sitter-queries/tree-sitter-go-tags.scm +26 -0
  1338. package/packages/code-map/src/tree-sitter-queries/tree-sitter-java-tags.scm +19 -0
  1339. package/packages/code-map/src/tree-sitter-queries/tree-sitter-javascript-tags.scm +16 -0
  1340. package/packages/code-map/src/tree-sitter-queries/tree-sitter-php-tags.scm +23 -0
  1341. package/packages/code-map/src/tree-sitter-queries/tree-sitter-python-tags.scm +12 -0
  1342. package/packages/code-map/src/tree-sitter-queries/tree-sitter-ruby-tags.scm +58 -0
  1343. package/packages/code-map/src/tree-sitter-queries/tree-sitter-rust-tags.scm +26 -0
  1344. package/packages/code-map/src/tree-sitter-queries/tree-sitter-typescript-tags.scm +22 -0
  1345. package/packages/code-map/src/types.ts +11 -0
  1346. package/packages/code-map/src/utils.ts +12 -0
  1347. package/packages/code-map/tsconfig.json +10 -0
  1348. package/packages/database/README.md +43 -0
  1349. package/packages/database/package.json +28 -0
  1350. package/packages/database/src/__tests__/service.test.ts +167 -0
  1351. package/packages/database/src/index.ts +146 -0
  1352. package/packages/database/src/service.ts +342 -0
  1353. package/packages/database/tsconfig.json +9 -0
  1354. package/packages/llm-providers/README.md +42 -0
  1355. package/packages/llm-providers/package.json +42 -0
  1356. package/packages/llm-providers/src/ollama/__tests__/detect.test.ts +59 -0
  1357. package/packages/llm-providers/src/ollama/detect.ts +113 -0
  1358. package/packages/llm-providers/src/ollama/index.ts +2 -0
  1359. package/packages/llm-providers/src/openai-compatible/chat/convert-to-openai-compatible-chat-messages.test.ts +855 -0
  1360. package/packages/llm-providers/src/openai-compatible/chat/convert-to-openai-compatible-chat-messages.ts +177 -0
  1361. package/packages/llm-providers/src/openai-compatible/chat/get-response-metadata.ts +15 -0
  1362. package/packages/llm-providers/src/openai-compatible/chat/map-openai-compatible-finish-reason.ts +19 -0
  1363. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-api-types.ts +60 -0
  1364. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-chat-language-model.test.ts +549 -0
  1365. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-chat-language-model.ts +474 -0
  1366. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-chat-options.ts +25 -0
  1367. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-metadata-extractor.ts +49 -0
  1368. package/packages/llm-providers/src/openai-compatible/chat/openai-compatible-prepare-tools.ts +162 -0
  1369. package/packages/llm-providers/src/openai-compatible/chat/stream-transform.test.ts +106 -0
  1370. package/packages/llm-providers/src/openai-compatible/chat/stream-transform.ts +585 -0
  1371. package/packages/llm-providers/src/openai-compatible/completion/convert-to-openai-compatible-completion-prompt.ts +98 -0
  1372. package/packages/llm-providers/src/openai-compatible/completion/openai-compatible-completion-language-model.test.ts +173 -0
  1373. package/packages/llm-providers/src/openai-compatible/completion/openai-compatible-completion-language-model.ts +414 -0
  1374. package/packages/llm-providers/src/openai-compatible/completion/openai-compatible-completion-options.ts +33 -0
  1375. package/packages/llm-providers/src/openai-compatible/embedding/openai-compatible-embedding-model.ts +143 -0
  1376. package/packages/llm-providers/src/openai-compatible/embedding/openai-compatible-embedding-options.ts +21 -0
  1377. package/packages/llm-providers/src/openai-compatible/image/openai-compatible-image-model.ts +129 -0
  1378. package/packages/llm-providers/src/openai-compatible/image/openai-compatible-image-settings.ts +1 -0
  1379. package/packages/llm-providers/src/openai-compatible/index.ts +27 -0
  1380. package/packages/llm-providers/src/openai-compatible/openai-compatible-error.ts +34 -0
  1381. package/packages/llm-providers/src/openai-compatible/openai-compatible-provider.ts +174 -0
  1382. package/packages/llm-providers/src/openai-compatible/version.ts +5 -0
  1383. package/packages/llm-providers/tsconfig.json +9 -0
  1384. package/protocol.config.yaml +113 -0
  1385. package/savant-free/README.md +73 -0
  1386. package/savant-free/SPEC.md +385 -0
  1387. package/savant-free/cli/build.ts +49 -0
  1388. package/savant-free/cli/release/README.md +55 -0
  1389. package/savant-free/cli/release/index.js +37 -0
  1390. package/savant-free/cli/release/package.json +43 -0
  1391. package/savant-free/cli/release.ts +128 -0
  1392. package/savant-free/cli/smoke-test.test.ts +257 -0
  1393. package/savant-free/e2e/README.md +173 -0
  1394. package/savant-free/e2e/agent/savant-free-tester.ts +52 -0
  1395. package/savant-free/e2e/tests/ads-behavior.e2e.test.ts +51 -0
  1396. package/savant-free/e2e/tests/agent-startup.e2e.test.ts +61 -0
  1397. package/savant-free/e2e/tests/code-edit.e2e.test.ts +78 -0
  1398. package/savant-free/e2e/tests/help-command.e2e.test.ts +97 -0
  1399. package/savant-free/e2e/tests/knowledge-file.e2e.test.ts +66 -0
  1400. package/savant-free/e2e/tests/slash-commands.e2e.test.ts +119 -0
  1401. package/savant-free/e2e/tests/startup.e2e.test.ts +56 -0
  1402. package/savant-free/e2e/tests/terminal-command.e2e.test.ts +71 -0
  1403. package/savant-free/e2e/tests/version.e2e.test.ts +50 -0
  1404. package/savant-free/e2e/utils/binary-helpers.ts +24 -0
  1405. package/savant-free/e2e/utils/index.ts +17 -0
  1406. package/savant-free/e2e/utils/savant-free-session.ts +229 -0
  1407. package/savant-free/e2e/utils/tmux-custom-tools.ts +156 -0
  1408. package/savant-free/e2e/utils/tmux-helpers.ts +79 -0
  1409. package/savant-free/package.json +20 -0
  1410. package/scripts/eslint-rules/__fixtures__/debug-ast.mjs +20 -0
  1411. package/scripts/eslint-rules/__fixtures__/probe.mjs +41 -0
  1412. package/scripts/eslint-rules/__fixtures__/probe2.mjs +43 -0
  1413. package/scripts/eslint-rules/__fixtures__/rule-test.mjs +44 -0
  1414. package/scripts/eslint-rules/__fixtures__/rule-test2.mjs +27 -0
  1415. package/scripts/eslint-rules/__fixtures__/unknown-bad.ts +21 -0
  1416. package/scripts/eslint-rules/__fixtures__/unknown-good.ts +35 -0
  1417. package/scripts/eslint-rules/no-unknown-in-signatures.js +141 -0
  1418. package/scripts/release.py +360 -0
  1419. package/scripts/run-az-test.sh +1150 -0
  1420. package/scripts/sync-agents.py +337 -0
  1421. package/scripts/tmux/README.md +359 -0
  1422. package/scripts/tmux/package.json +9 -0
  1423. package/scripts/tmux/tmux-capture.sh +231 -0
  1424. package/scripts/tmux/tmux-cli.sh +160 -0
  1425. package/scripts/tmux/tmux-env.sh +34 -0
  1426. package/scripts/tmux/tmux-send.sh +339 -0
  1427. package/scripts/tmux/tmux-start.sh +264 -0
  1428. package/scripts/tmux/tmux-stop.sh +157 -0
  1429. package/scripts/tmux/tmux-viewer/README.md +254 -0
  1430. package/scripts/tmux/tmux-viewer/components/session-viewer.tsx +556 -0
  1431. package/scripts/tmux/tmux-viewer/components/theme.ts +54 -0
  1432. package/scripts/tmux/tmux-viewer/gif-encoder-2.d.ts +28 -0
  1433. package/scripts/tmux/tmux-viewer/gif-exporter.ts +278 -0
  1434. package/scripts/tmux/tmux-viewer/index.tsx +237 -0
  1435. package/scripts/tmux/tmux-viewer/package.json +9 -0
  1436. package/scripts/tmux/tmux-viewer/session-loader.ts +234 -0
  1437. package/scripts/tmux/tmux-viewer/tsconfig.json +9 -0
  1438. package/scripts/tmux/tmux-viewer/types.ts +76 -0
  1439. package/sdk/CHANGELOG.md +126 -0
  1440. package/sdk/PUBLISHING.md +55 -0
  1441. package/sdk/README.md +334 -0
  1442. package/sdk/bunfig.toml +6 -0
  1443. package/sdk/e2e/README.md +158 -0
  1444. package/sdk/e2e/custom-agents/api-integration-agent.e2e.test.ts +145 -0
  1445. package/sdk/e2e/custom-agents/apply-patch-tool.e2e.test.ts +62 -0
  1446. package/sdk/e2e/custom-agents/database-query-agent.e2e.test.ts +135 -0
  1447. package/sdk/e2e/custom-agents/weather-agent.e2e.test.ts +120 -0
  1448. package/sdk/e2e/examples/code-explainer.example.ts +62 -0
  1449. package/sdk/e2e/examples/code-reviewer.example.ts +52 -0
  1450. package/sdk/e2e/examples/commit-message-generator.example.ts +61 -0
  1451. package/sdk/e2e/examples/sdk-lint.example.ts +65 -0
  1452. package/sdk/e2e/examples/sdk-refactor.example.ts +63 -0
  1453. package/sdk/e2e/examples/sdk-test-gen.example.ts +62 -0
  1454. package/sdk/e2e/features/knowledge-files.e2e.test.ts +82 -0
  1455. package/sdk/e2e/features/max-agent-steps.e2e.test.ts +65 -0
  1456. package/sdk/e2e/features/project-files.e2e.test.ts +80 -0
  1457. package/sdk/e2e/integration/connection-check.integration.test.ts +33 -0
  1458. package/sdk/e2e/integration/event-ordering.integration.test.ts +186 -0
  1459. package/sdk/e2e/integration/event-types.integration.test.ts +183 -0
  1460. package/sdk/e2e/integration/stream-chunks.integration.test.ts +191 -0
  1461. package/sdk/e2e/streaming/concurrent-streams.e2e.test.ts +164 -0
  1462. package/sdk/e2e/streaming/subagent-streaming.e2e.test.ts +158 -0
  1463. package/sdk/e2e/utils/__tests__/event-collector.test.ts +297 -0
  1464. package/sdk/e2e/utils/e2e-mocks.ts +458 -0
  1465. package/sdk/e2e/utils/event-collector.ts +145 -0
  1466. package/sdk/e2e/utils/get-api-key.ts +76 -0
  1467. package/sdk/e2e/utils/index.ts +3 -0
  1468. package/sdk/e2e/utils/test-fixtures.ts +196 -0
  1469. package/sdk/e2e/workflows/error-recovery.e2e.test.ts +112 -0
  1470. package/sdk/e2e/workflows/multi-turn-conversation.e2e.test.ts +132 -0
  1471. package/sdk/examples/readme-example-1.ts +34 -0
  1472. package/sdk/examples/readme-example-2.ts +76 -0
  1473. package/sdk/package.json +82 -0
  1474. package/sdk/scripts/build.ts +349 -0
  1475. package/sdk/scripts/fetch-ripgrep.ts +172 -0
  1476. package/sdk/scripts/publish.ts +51 -0
  1477. package/sdk/scripts/release.js +100 -0
  1478. package/sdk/scripts/verify.ts +204 -0
  1479. package/sdk/sdk_exit +1 -0
  1480. package/sdk/smoke-test-dist.ts +248 -0
  1481. package/sdk/src/__tests__/apply-overrides-resume.test.ts +83 -0
  1482. package/sdk/src/__tests__/apply-patch.test.ts +438 -0
  1483. package/sdk/src/__tests__/build-file-tree.test.ts +31 -0
  1484. package/sdk/src/__tests__/change-file.test.ts +212 -0
  1485. package/sdk/src/__tests__/client.test.ts +142 -0
  1486. package/sdk/src/__tests__/clone-session-state.test.ts +158 -0
  1487. package/sdk/src/__tests__/code-search.test.ts +896 -0
  1488. package/sdk/src/__tests__/composio.test.ts +86 -0
  1489. package/sdk/src/__tests__/credentials.test.ts +344 -0
  1490. package/sdk/src/__tests__/database.test.ts +153 -0
  1491. package/sdk/src/__tests__/env.test.ts +137 -0
  1492. package/sdk/src/__tests__/error-utils.test.ts +253 -0
  1493. package/sdk/src/__tests__/fixtures/windows-stubborn-grandchild.ts +26 -0
  1494. package/sdk/src/__tests__/initial-session-state.test.ts +447 -0
  1495. package/sdk/src/__tests__/knowledge-file-selection.test.ts +335 -0
  1496. package/sdk/src/__tests__/load-agents.test.ts +935 -0
  1497. package/sdk/src/__tests__/load-mcp-config.test.ts +285 -0
  1498. package/sdk/src/__tests__/load-skills.test.ts +325 -0
  1499. package/sdk/src/__tests__/model-provider.test.ts +44 -0
  1500. package/sdk/src/__tests__/path-utils.test.ts +66 -0
  1501. package/sdk/src/__tests__/read-files.test.ts +573 -0
  1502. package/sdk/src/__tests__/read-url.test.ts +371 -0
  1503. package/sdk/src/__tests__/researcher-web.integration.test.ts +130 -0
  1504. package/sdk/src/__tests__/run-cancellation.test.ts +1321 -0
  1505. package/sdk/src/__tests__/run-error-preserves-history.test.ts +335 -0
  1506. package/sdk/src/__tests__/run-event-dispatch.test.ts +80 -0
  1507. package/sdk/src/__tests__/run-file-filter.test.ts +530 -0
  1508. package/sdk/src/__tests__/run-handle-event.test.ts +142 -0
  1509. package/sdk/src/__tests__/run-mcp-tool-filter.test.ts +124 -0
  1510. package/sdk/src/__tests__/run-state-child-process.test.ts +72 -0
  1511. package/sdk/src/__tests__/run-terminal-command.test.ts +236 -0
  1512. package/sdk/src/__tests__/run.integration.test.ts +170 -0
  1513. package/sdk/src/__tests__/user-knowledge-files.test.ts +361 -0
  1514. package/sdk/src/__tests__/validate-agents.test.ts +943 -0
  1515. package/sdk/src/agents/load-agents.ts +339 -0
  1516. package/sdk/src/agents/load-mcp-config.ts +275 -0
  1517. package/sdk/src/client.ts +87 -0
  1518. package/sdk/src/composio.ts +78 -0
  1519. package/sdk/src/constants.ts +29 -0
  1520. package/sdk/src/credentials.ts +303 -0
  1521. package/sdk/src/custom-tool.ts +66 -0
  1522. package/sdk/src/env.ts +116 -0
  1523. package/sdk/src/error-utils.ts +127 -0
  1524. package/sdk/src/impl/__tests__/llm-chatgpt-oauth-policy.test.ts +67 -0
  1525. package/sdk/src/impl/__tests__/llm-native-tool-call.test.ts +38 -0
  1526. package/sdk/src/impl/__tests__/llm-stream-yielded-content.test.ts +118 -0
  1527. package/sdk/src/impl/__tests__/model-provider-free-mode.test.ts +166 -0
  1528. package/sdk/src/impl/__tests__/prompt-result.test.ts +210 -0
  1529. package/sdk/src/impl/__tests__/provider-options-metadata.test.ts +67 -0
  1530. package/sdk/src/impl/agent-runtime.ts +159 -0
  1531. package/sdk/src/impl/chatgpt-backend-fetch.ts +588 -0
  1532. package/sdk/src/impl/database.ts +516 -0
  1533. package/sdk/src/impl/llm.ts +852 -0
  1534. package/sdk/src/impl/model-provider.ts +638 -0
  1535. package/sdk/src/impl/openrouter-key-resolver.ts +78 -0
  1536. package/sdk/src/index.ts +133 -0
  1537. package/sdk/src/native/ripgrep.ts +141 -0
  1538. package/sdk/src/retry-config.ts +51 -0
  1539. package/sdk/src/run-state.ts +897 -0
  1540. package/sdk/src/run.ts +1222 -0
  1541. package/sdk/src/skills/load-skills.ts +253 -0
  1542. package/sdk/src/testing/env.ts +19 -0
  1543. package/sdk/src/tools/apply-patch.ts +690 -0
  1544. package/sdk/src/tools/change-file.ts +155 -0
  1545. package/sdk/src/tools/code-search.ts +547 -0
  1546. package/sdk/src/tools/glob.ts +58 -0
  1547. package/sdk/src/tools/index.ts +19 -0
  1548. package/sdk/src/tools/list-directory.ts +52 -0
  1549. package/sdk/src/tools/path-utils.ts +101 -0
  1550. package/sdk/src/tools/read-files.ts +110 -0
  1551. package/sdk/src/tools/read-url.ts +469 -0
  1552. package/sdk/src/tools/run-file-change-hooks.ts +22 -0
  1553. package/sdk/src/tools/run-terminal-command.ts +483 -0
  1554. package/sdk/src/tools/ssrf.ts +120 -0
  1555. package/sdk/src/types/env.ts +40 -0
  1556. package/sdk/src/utils/logger.ts +15 -0
  1557. package/sdk/src/validate-agents.ts +157 -0
  1558. package/sdk/test/cjs-compatibility/package-lock.json +423 -0
  1559. package/sdk/test/cjs-compatibility/package.json +21 -0
  1560. package/sdk/test/cjs-compatibility/test-imports.js +77 -0
  1561. package/sdk/test/cjs-compatibility/test-types.ts +54 -0
  1562. package/sdk/test/cjs-compatibility/tsconfig.json +17 -0
  1563. package/sdk/test/esm-compatibility/package-lock.json +423 -0
  1564. package/sdk/test/esm-compatibility/package.json +21 -0
  1565. package/sdk/test/esm-compatibility/test-imports.js +83 -0
  1566. package/sdk/test/esm-compatibility/test-types.ts +59 -0
  1567. package/sdk/test/esm-compatibility/tsconfig.json +17 -0
  1568. package/sdk/test/ripgrep-bundling/package-lock.json +423 -0
  1569. package/sdk/test/ripgrep-bundling/package.json +21 -0
  1570. package/sdk/test/ripgrep-bundling/test-ripgrep-types.ts +132 -0
  1571. package/sdk/test/ripgrep-bundling/test-ripgrep.js +257 -0
  1572. package/sdk/test/ripgrep-bundling/tsconfig.json +15 -0
  1573. package/sdk/test/setup-env.ts +54 -0
  1574. package/sdk/test/test-sdk.ts +25 -0
  1575. package/sdk/test/tree-sitter-queries/package-lock.json +47 -0
  1576. package/sdk/test/tree-sitter-queries/package.json +12 -0
  1577. package/sdk/test/tree-sitter-queries/test-query-files.js +256 -0
  1578. package/sdk/tsconfig.build.json +32 -0
  1579. package/sdk/tsconfig.json +27 -0
  1580. package/sdk/vendor/ripgrep/arm64-darwin/rg +0 -0
  1581. package/sdk/vendor/ripgrep/arm64-linux/rg +0 -0
  1582. package/sdk/vendor/ripgrep/x64-darwin/rg +0 -0
  1583. package/sdk/vendor/ripgrep/x64-linux/rg +0 -0
  1584. package/sdk/vendor/ripgrep/x64-win32/rg.exe +0 -0
  1585. package/templates/FID-TEMPLATE.md +125 -0
  1586. package/templates/README-TEMPLATE.md +87 -0
  1587. package/templates/SESSION-SUMMARY.md +135 -0
  1588. package/tsconfig.base.json +18 -0
  1589. package/tsconfig.json +27 -0
  1590. /package/{http.js → cli/release-core/http.js} +0 -0
  1591. /package/{launcher.js → cli/release-core/launcher.js} +0 -0
@@ -0,0 +1,810 @@
1
+ # Feature Parity Report — savant-code vs. Reference Repos
2
+
3
+ > **Generated:** 2026-07-19
4
+ > **Revised:** 2026-07-20 — (1) corrected false "absent" claims for MCP client,
5
+ > MCP server, and skills system after re-verification against the savant-code
6
+ > codebase (see corrected Section 5.1 and gap matrix rows); (2) expanded scope
7
+ > from 4 reference repos to all 16 (full coverage of `resources/`).
8
+ > **⚠️ Archival note (2026-07-23):** The `resources/` directory containing the 16 reference repos has been removed from disk. This report and the companion `adoptable-features-master.md` are preserved as historical research. The `docs/reports/repos/` subfolder retains the individual per-repo analysis files. Feature parity gaps identified here may have changed — run a fresh baseline pass before acting on any recommendation.
9
+ > **Author:** ECHO Protocol agent (Orchestrator + parallel Scout/Explore scans)
10
+ > **Purpose:** Identify features present in the 16 reference repositories under
11
+ > `resources/` that **savant-code does not currently have**,
12
+ > to drive a feature-parity program.
13
+ > **Scope:** All 16 repos in `resources/` — `agno/`, `aider/`, `AionUi/`, `cline/`,
14
+ > `codex/`, `gemini-cli/`, `goose/`, `gpt-pilot/`, `hermes-agent/`, `kilocode/`,
15
+ > `openclaude/`, `openclaw/`, `opencode-dev/`, `OpenHands/`, `SWE-agent/`, `zero/`.
16
+ > **Companion document:** `docs/reports/adoptable-features-master.md` is the
17
+ > feature-first 16-repo synthesis (20 numbered features, each with per-repo
18
+ > comparison tables). This report is the product-first counterpart (per-repo
19
+ > snapshots + category-grouped gap matrix + per-gap evidence).
20
+ > **Method:** Each repo was scanned in depth by an independent read-only Explore agent
21
+ > (file inventory with path citations). savant-code's baseline was established from direct
22
+ > reads of `packages/llm-providers/`, `sdk/src/impl/`, `common/src/constants/`, `agents/`,
23
+ > `packages/agent-runtime/`, `ECHO.md`, and `AGENTS.md`.
24
+
25
+ ---
26
+
27
+ ## 1. Executive Summary
28
+
29
+ savant-code is a **TypeScript, Bun-based, multi-agent coding assistant** with a strong
30
+ **governance layer** (ECHO Protocol, 9-agent roster, FID-bound Perfection Loop) and a
31
+ **free-tier model catalog**. It is engineered for *correct, reviewable* code generation
32
+ through a small, disciplined agent roster and a single OpenAI-compatible provider
33
+ abstraction.
34
+
35
+ The 16 reference repositories span **coding agents, personal-agent platforms, research
36
+ frameworks, and one platform SDK** — most are broader and more productized than
37
+ savant-code:
38
+
39
+ | Product | Lang | Primary Shape | Approx. Feature Breadth |
40
+ |---|---|---|---|
41
+ | **agno** | Python | Agent framework + AgentOS | 54 providers, 145 tools, 22 DB backends, 24 vector DBs, workflow engine, MCP, AgentOS HTTP serving |
42
+ | **aider** | Python | Terminal pair-programming (~6.8M installs) | 13 edit formats, PageRank repo map, multi-model tiers, prompt-cache warming, SWE-bench eval |
43
+ | **AionUi** | Electron+Rust+TS | Desktop AI coworking app | 30+ providers, ACP wrapping 20+ CLI agents, team mode, full extension SDK, cron, mobile app |
44
+ | **cline** | TS/Bun | Layered-SDK coding agent | 9 tool factories, plugin sandbox, multi-agent teams, 7-callback hooks, VCR testing, 3-layer eval |
45
+ | **codex** | Rust+TS | OpenAI's CLI coding agent | OS sandbox (SBPL/seccomp), Starlark exec policy, 11-event hooks, two-phase memories, app-server RPC |
46
+ | **gemini-cli** | TS/Node | Google's Gemini CLI | Graph-based context, scheduler with parallel batching, BeforeModel synthetic responses, behavioral evals |
47
+ | **goose** | Rust+TS | Linux Foundation coding agent | 15+ providers, 70+ MCP servers, recipe system, plugin auto-update, cron for agent sessions |
48
+ | **gpt-pilot** | Python | Structured dev workflow agent | Step-based dev, TDD, BugHunter debugging loop, project scaffolding |
49
+ | **hermes-agent** | Python+TS | Personal + coding agent, multi-surface | ~95 tools, ~30 channels, 35 providers, Kanban, MOA, billing, TUI/Web/Desktop/Mobile |
50
+ | **kilocode** | TS/Bun | OpenCode fork with Effect-TS | 4-axis LLM route, profile sandbox, permission-controlled agents, memory with indexed search, worktree |
51
+ | **openclaude** | TS/Bun | Claude-Code-style coding agent | 25+ providers, smart routing, LSP, voice, sandbox, VS Code ext, teams/swarms, goals, wiki |
52
+ | **openclaw** | TS | Personal-AI-agent **platform** | 150+ provider extensions, 40+ channels, 152 extensions, 51 skills, media-gen, fleet, multi-OS apps |
53
+ | **opencode-dev** | TS/Bun+Effect | OpenCode upstream | 4-axis LLM route, durable session runner, Steer/Queue, system context algebra, content-addressed snapshots |
54
+ | **OpenHands** | Python+React | Multi-backend agent platform | Docker/local/remote/VM sandbox abstraction, ACP, trigger-based skills, MCP proxy, enterprise integrations |
55
+ | **SWE-agent** | Python | Princeton research agent | ACI philosophy, 11 parser strategies, history processor pipeline, 3-layer hooks, retry with review loop |
56
+ | **zero** | Go | Terminal coding agent | 25+ providers, swarm, OS-level sandbox (landlock/seccomp/seatbelt), MCP, built-in eval/benchmark |
57
+
58
+ **Headline gap:** savant-code has a **partial** MCP layer (client tool loader +
59
+ 3 bundled MCP servers, but no dedicated `packages/mcp/` workspace, OAuth, or
60
+ InProcessTransport), a **partial** skills surface (runtime loader + 7 bundled
61
+ skills, but no plugin SDK or marketplace), **no** scheduling/cron, **no**
62
+ OS-level sandbox, **no** messaging-channel integrations, **no**
63
+ Web/Desktop/Mobile apps (CLI/TUI + SDK only), and **no** media generation
64
+ (image/video/music/TTS). Its provider surface (~8 model prefixes via
65
+ OpenRouter) and agent roster (9 fixed roles) are intentionally narrow versus
66
+ the 25–150 providers and dynamic agent/skill/plugin ecosystems of the
67
+ references.
68
+
69
+ The single most consequential parity gap is the **absence of a consolidated
70
+ extensibility surface** (dedicated `packages/mcp/` workspace + plugin SDK +
71
+ skills marketplace) — savant-code has scattered primitives but no unified
72
+ plugin boundary, which is the scaling ceiling the reference products solved
73
+ with plugin/skill architectures.
74
+
75
+ ---
76
+
77
+ ## 2. savant-code Capability Baseline (what it HAS)
78
+
79
+ Established from direct source reads. Citations are to the savant-code workspace.
80
+
81
+ | Capability | Evidence in savant-code |
82
+ |---|---|
83
+ | Multi-agent roster (9 roles) | `AGENTS.md`, `ECHO.md` (Orchestrator, Detective, Forge, Verifier, Recorder, Thinker, Scout, Researcher, Scribe) |
84
+ | FID-bound Perfection Loop governance | `ECHO.md` (FID lifecycle, Perfection Loop FSM), `dev/fids/` |
85
+ | OpenAI-compatible provider abstraction | `packages/llm-providers/src/openai-compatible/` (`OpenAICompatibleChatLanguageModel`) |
86
+ | Provider routing (SDK) | `sdk/src/impl/model-provider.ts` — `getModelForRequest()` → ChatGPT-OAuth-direct **or** SavantCode/OpenRouter backend |
87
+ | Env-driven inference bypass | `sdk/src/env.ts` (`INFERENCE_BASE_URL`, `INFERENCE_API_KEY`); `sdk/src/impl/openrouter-key-resolver.ts` (`OR_MASTER_KEY` exchange) |
88
+ | Model registry + prefixes | `common/src/constants/model-config.ts` (`ALLOWED_MODEL_PREFIXES`: anthropic, openai, google, x-ai, deepseek, minimax, mimo, tencent) |
89
+ | Free-tier model catalog | `common/src/constants/savant-free-models.ts` (MiniMax M3, DeepSeek V4, MiMo, Kimi, GLM, HY3) |
90
+ | Per-agent model + providerOptions | `agents/*.ts` (`model`, `providerOptions: { only, order, allow_fallbacks, data_collection }`) |
91
+ | Sub-agent spawning | `agent-runtime` `spawn_agents` tool; `withParentModel()` model inheritance (`spawn-agent-utils.ts`) |
92
+ | MCP client tool loader (partial) | `packages/agent-runtime/src/mcp.ts` — per-server failure isolation, JSON-schema→Zod conversion; `sdk/src/agents/load-mcp-config.ts` — multi-source config merger (project + user + env-var resolution) |
93
+ | MCP servers (3 bundled) | `research/servers-main/src/{sequentialthinking,memory,filesystem}/index.ts` — built on `@modelcontextprotocol/sdk/server/mcp.js` |
94
+ | Skills loader (partial) | `packages/agent-runtime/src/tools/handlers/tool/skill.ts` — frontmatter validation, 4-directory search (`~/.agents/skills/`, `~/.claude/skills/`, project `.agents/skills/`, `.claude/skills/`); 7 bundled skills in `.agents/skills/` (coding-csharp, coding-go, coding-java, coding-python, coding-rust, coding-typescript, release-workflow) |
95
+ | Tool set (core) | bash (`tmux-cli`, `basher`), file read/edit, glob/grep, `browser-use` agent, tree-sitter `code-map`, tmux |
96
+ | SDK streaming + cost accounting | `sdk/src/impl/llm.ts` (provider metadata, cache-debug, `OpenRouterUsageAccounting`) |
97
+ | CLI (OpenTUI + React) | `cli/` (`dev`, `run`) |
98
+ | Eval harness | `evals/` (Buffbench benchmark runner, `bun --cwd evals run-buffbench`) |
99
+ | Database layer | `packages/database/` (better-sqlite3) |
100
+ | ChatGPT OAuth direct route | `sdk/src/impl/chatgpt-backend-fetch.ts` (Responses-API ↔ Chat-Completions transform) |
101
+
102
+ ---
103
+
104
+ ## 3. Reference Product Snapshots
105
+
106
+ ### 3.1 hermes-agent (Python)
107
+
108
+ Nous Research's Hermes Agent. Extremely broad: ~95 self-registering tools (`tools/registry.py`),
109
+ ~30 messaging channels (`gateway/platforms/`, `plugins/platforms/` — Telegram, Discord, Slack,
110
+ WhatsApp, Signal, Matrix, etc.), **35 model-provider plugins** (`plugins/model-providers/`:
111
+ openrouter, anthropic, gemini, bedrock, vertex, deepseek, fireworks, xai, minimax, kimi, zai…),
112
+ Kanban multi-agent board (`plugins/kanban/`), Mixture-of-Agents (`agent/moa_loop.py`),
113
+ Skills Hub + 19 bundled + 19 optional skill categories (`skills/`, `optional-skills/`),
114
+ plugin SDK (`PluginManager`), full TUI (Ink/React) + Web dashboard (FastAPI/React, 20 pages) +
115
+ Electron desktop + Tauri installer + Termux mobile, Cron scheduler (`cron/`), MCP client
116
+ **and server** (`mcp_serve.py`), billing/usage (`agent/billing_usage.py`), trajectory-compression
117
+ training pipeline (`trajectory_compressor.py`), and a strong security stack (approval patterns,
118
+ Tirith pre-exec scan, file/secret safety). Evidence: `hermes-agent/README.md`,
119
+ `hermes-agent/AGENTS.md`, `hermes-agent/tools/`, `hermes-agent/plugins/`.
120
+
121
+ ### 3.2 openclaude (TS/Bun)
122
+
123
+ Claude-Code-style coding agent. Rich tool set (~120 slash commands; `src/tools/` — Bash,
124
+ PowerShell, FileRead/Write/Edit, Glob, Grep, NotebookEdit, WebSearch/Fetch/Browser, RepoMap,
125
+ LSP, Task/ScheduleCron, Workflow, SendMessage, TeamCreate). **~25 vendors + ~25 gateways**
126
+ (`src/integrations/vendors/`, `gateways/`: anthropic, openai, deepseek, gemini, fireworks, xai,
127
+ minimax, moonshot, openrouter, ollama, lmstudio, groq, together, bedrock, vertex, azure…).
128
+ Smart model routing (`smartModelRouting.ts`, `agentRouting.ts`), agent routing per sub-agent,
129
+ context auto/micro/snippet compaction (`src/services/compact/`), repo-map (PageRank),
130
+ persistent memory (`src/memdir/`, team-memory sync with secret scanning), **OS sandbox**
131
+ (`@anthropic-ai/sandbox-runtime`, `shouldUseSandbox.ts`), **LSP integration**, **voice mode**,
132
+ **VS Code extension**, Android (Termux), goals system, wiki/knowledge base, MCP client+server
133
+
134
+ + official registry, security-review / bughunter commands, gRPC headless server, background
135
+ daemon. Evidence: `openclaude/README.md`, `openclaude/AGENTS.md`, `openclaude/src/`.
136
+
137
+ ### 3.3 openclaw (TS) — the broadest platform
138
+
139
+ Personal-AI-agent **platform**. **150+ provider extensions** (`extensions/` — openai, anthropic,
140
+ google, meta, mistral, deepseek, xai, groq, ollama, bedrock, vertex, openrouter, litellm,
141
+ cloudflare-ai-gateway, tencent, volcengine, alibaba, nvidia…), **model-catalog** subsystem
142
+ (`src/model-catalog/`), **40+ channels** (`extensions/` — whatsapp, telegram, discord, signal,
143
+ imessage, irc, msteams, matrix, feishu, line, wechat, qq, slack, google-meet, zoom, webhooks…),
144
+ **152 extensions**, **51 skills** + ClawHub registry, public **plugin-sdk**, **fleet**
145
+ (multi-tenant container cells, `src/fleet/`), **system-agent**, **code-mode** (coding agent),
146
+ **swarm**, **media generation** (image/video/music/`src/tts/`), **meeting bots**, realtime
147
+ transcription / Talk voice-wake, **Canvas / computer-use**, multi-OS apps (macOS, iOS, Android,
148
+ Linux, Windows `swabble`), Web Control UI (Lit), TUI, daemon + gateway, ACP binding, secrets
149
+ (SecretRef), policy engine, sandbox (Docker/SSH), audit log, OTel/Prometheus, Docker/Fly/Render
150
+ deploy. Evidence: `openclaw/README.md`, `openclaw/VISION.md`, `openclaw/src/`, `openclaw/extensions/`.
151
+
152
+ ### 3.4 zero (Go)
153
+
154
+ Terminal coding agent (Claude-Code/Codex-style). Specialists + **swarm** (`internal/swarm/`),
155
+ **25+ providers** (`internal/providercatalog/catalog.go` — OpenAI, Anthropic, Google, Bedrock,
156
+ Vertex, OpenRouter, DeepSeek, Qwen, Kimi, MiniMax, Mistral, xAI, Groq, Ollama, LM Studio…),
157
+ model registry with smart/deep/fast **modes**, reasoning-effort, **model escalation /
158
+ self-correct loop**, LSP navigation, plan/spec mode, skills (`SKILL.md` packs), **plugins**
159
+ (`plugin.json` bundles tools/hooks/skills), **OS-level sandbox** (Linux landlock+seccomp,
160
+ macOS seatbelt, Windows ACL/unelevated — `internal/sandbox/`), hooks, secrets redaction,
161
+ encrypted credential store/OS keyring, durable sessions with compaction/rewind/checkpoints,
162
+ cron, **MCP client + server** (`zero serve --mcp`), **built-in eval + perf-bench harnesses**
163
+ (`internal/agenteval/`, `internal/perfbench/`), ACP integration, GitHub Action + Slack/PR
164
+ notifiers. **No Web UI, no Mobile, no Docker image.** Evidence: `zero/zero-main/README.md`,
165
+ `zero/zero-main/docs/`, `zero/zero-main/internal/`.
166
+
167
+ ### 3.5 agno (Python)
168
+
169
+ High-performance AI agent framework. **54 LLM providers** (`models/` — OpenAI, Anthropic,
170
+ Google, xAI, DeepSeek, MiniMax, Bedrock, Vertex, Azure, Groq, Together, Fireworks, Ollama,
171
+ LM Studio, Mistral, Cohere, HuggingFace, Novita, SambaNova, Cerebras, Perplexity, watsonx…),
172
+ composable workflow engine with CEL routing (`workflow/`), Team class with 4 modes
173
+ (coordinate/route/broadcast/tasks), **145 tool integrations**, **24 vector DB backends**,
174
+ memory manager with strategy system, **AgentOS** HTTP serving (FastAPI) exposing agents as
175
+ endpoints + MCP servers, 22 database backends, OpenTelemetry tracing, DB-backed cron
176
+ scheduler, eval suite, guardrails, @approval HITL decorator, session forking. Evidence:
177
+ `agno/README.md`, `agno/agent/`, `agno/models/`, `agno/tools/mcp/`, `agno/os/`.
178
+
179
+ ### 3.6 aider (Python)
180
+
181
+ Mature terminal pair-programming agent (~6.8M installs, ~60k stars). Distinguishing
182
+ innovations: **13+ polymorphic edit formats** (SEARCH/REPLACE, unified diff, whole file,
183
+ patch, fenced/editor variants, architect/editor two-stage, ask, context, help —
184
+ `coders/base_coder.py`), **PageRank + tree-sitter repo map** (`repomap.py`) with 10x
185
+ snake_case weight / 0.1x private identifier weight, multi-model tiers (main/weak/editor),
186
+ **prompt-cache warming** background thread, recursive chat-history summarization, AI-comment
187
+ file watcher (editor-agnostic trigger), reflection loop (edit → lint → retry up to
188
+ `max_reflections`), deep git integration with co-author attribution, voice-to-code,
189
+ benchmark framework (Polyglot Exercism + SWE-bench with Docker isolation). 100+ model
190
+ configs in declarative YAML. Evidence: `aider/README.md`, `aider/coders/`, `aider/repomap.py`.
191
+
192
+ ### 3.7 AionUi (Electron + React + Rust + Bun + TS)
193
+
194
+ Desktop-first AI coworking app. Wraps **20+ CLI-based AI agents** (Claude Code, Codex,
195
+ Goose, OpenClaw, Hermes, Cursor…) behind a unified **ACP protocol** with capability
196
+ negotiation. **Team mode** with leader/teammate hierarchy, mailbox communication, task
197
+ dependency graph (`blocked_by`/`blocks`). **30+ LLM platforms** including Chinese providers
198
+ (Zhipu, Moonshot, Qianfan, Hunyuan). **Centralized MCP** ("configure once, sync to all
199
+ agents"). Three-tier skills system (builtin/custom/extension) with per-conversation toggle.
200
+ Cron scheduler with conversation-bound mode. SQLite (WAL mode, 26 schema versions).
201
+ **Extension SDK** with `aion-extension.json` manifest declaring 7 contribution points (ACP
202
+ adapters, MCP servers, assistants, agents, skills, themes, settings). Mobile companion
203
+ (React Native/Expo). 7 chat-platform connectors (Telegram, Lark, DingTalk, WeChat, WeCom,
204
+ Slack, Discord). Evidence: `AionUi/README.md`, `AionUi/packages/desktop/src/`, `AionUi/examples/`.
205
+
206
+ ### 3.8 cline (TypeScript/Bun)
207
+
208
+ Disciplined layered-SDK coding agent (`@cline/shared → llms → agents → core → apps`).
209
+ 9 default tool factories with 5 presets (Act/Plan/Search/Minimal/Yolo), model-tool routing
210
+ (OpenAI gets `apply_patch` instead of `editor`), **SubprocessSandbox** for plugins (IPC
211
+ isolation, typed message protocol, auto-reinit on crash), **contribution-based plugins**
212
+ (tools/commands/rules/message-builders/providers/MCP/shortcuts/flags) with marketplace,
213
+ **AgentTeamsRuntime** multi-agent system (lead/teammate, mailbox, run queuing, completion
214
+ guard, 20+ team tools), **7-callback hooks** (`beforeModel` can inject messages/modify tools
215
+ per-request), markdown-spec cron system, 6 platform connectors, loop detection (soft at 3,
216
+ hard at 5), git-based checkpoints, VCR HTTP recording for testing, 3-layer eval pyramid
217
+ (contract → smoke → E2E Harbor/SWE-bench). Evidence: `cline/README.md`, `cline/sdk/packages/`.
218
+
219
+ ### 3.9 codex (Rust + TS/Python SDKs)
220
+
221
+ OpenAI's Codex CLI. **OS-level sandboxing** (macOS Seatbelt SBPL, Linux seccomp/Landlock/
222
+ bubblewrap, Windows restricted token — `codex-rs/sandboxing/`), **Starlark execution policy**
223
+ (prefix matching, host executable resolution, self-validating rules — `codex-rs/execpolicy/`),
224
+ **11-event lifecycle hooks** (PreToolUse, PermissionRequest, PostToolUse, PreCompact,
225
+ PostCompact, SessionStart/End, UserPromptSubmit, SubagentStart/Stop, Stop — `codex-rs/hooks/`),
226
+ multi-strategy context compaction, thread lifecycle (create/resume/fork/archive/delete/
227
+ rollback) with dual JSONL+SQLite persistence, **role-based agent registry** (explorer/worker
228
+ with config layering), **two-phase memories pipeline** (Phase 1: parallel extraction;
229
+ Phase 2: git-baseline diff consolidation), bidirectional MCP, Markdown skills with scope
230
+ (User/Repo/System/Admin), full plugin/marketplace ecosystem, app-server JSON-RPC protocol
231
+ (50+ methods, `turn/steer`, `thread/fork`, backpressure), realtime voice, agent graph store,
232
+ rollout budgets. Evidence: `codex/README.md`, `codex/codex-rs/`.
233
+
234
+ ### 3.10 gemini-cli (TypeScript/Node)
235
+
236
+ Google's Gemini CLI. 7-package monorepo (core/cli/sdk/a2a-server/vscode-companion/
237
+ devtools/test-utils). **Graph-based context management** with typed nodes (UserPrompt,
238
+ AgentThought, ToolExecution, MaskedTool, AgentYield, Snapshot, RollingSummary) and a
239
+ processor pipeline (blobDegradation, historyTruncation, nodeDistillation, rollingSummary,
240
+ stateSnapshot, toolMasking). **Event-driven scheduler** with parallel batching for non-edit
241
+ tools, sequential for edits. **10-event hook system** including **BeforeModel synthetic
242
+ responses** (bypass the model call entirely — enables caching/testing/safety interception).
243
+ Composite model routing (Fallback → Override → ApprovalMode → GemmaClassifier → Classifier
244
+ → Default, with local Gemma for cheap routing). Behavioral evals with **dynamic baselines**
245
+ (nightly 3x per model, fails-on-main marked "Pre-existing", trustworthiness filter 60%+ per
246
+ night). JIT subdirectory context discovery. Agent acknowledgement system for untrusted
247
+ definitions. Evidence: `gemini-cli/README.md`, `gemini-cli/packages/core/src/`.
248
+
249
+ ### 3.11 goose (Rust + Electron/TS UI + Ink/React TUI)
250
+
251
+ Linux Foundation / AAIF coding agent (v1.43.0). **15+ providers** with declarative YAML
252
+ custom providers and OAuth device flow. **70+ MCP server extensions** via `ExtensionManager`
253
+ (subprocess spawning, OAuth, health monitoring, malware checking via OSV API). 10 built-in
254
+ extensions (analyze/tree-sitter, todo, apps, chatrecall, summon, orchestrator, summarize,
255
+ developer, extensionmanager). Subagent system with delegate/summon (sync + async, background
256
+ tasks with real-time status). **Cron for agent sessions** (full provider/extension context,
257
+ not just shell commands). Recipe system (YAML task definitions with sub-recipes, response
258
+ schemas, retry configs). Plugin dual-format (Gemini + OpenPlugins) with auto-update every 24h.
259
+ 11 lifecycle hooks. Tool inspector pipeline (permission → security → adversary → egress →
260
+ repetition). Evidence: `goose/README.md`, `goose/crates/goose/`, `goose/crates/goose-mcp/`.
261
+
262
+ ### 3.12 gpt-pilot (Python)
263
+
264
+ Structured development workflow agent. **Step-based development** — breaks projects into
265
+ ordered phases (architecture, planning, coding, testing, debugging) with clear entry/exit
266
+ criteria. **TDD integration** — generates tests before code, runs them, iterates until
267
+ passing. **BugHunter debugging loop** — when tests fail, analyzes error output, proposes
268
+ fixes, re-runs tests, bounded by attempt ceiling. Project scaffolding from templates.
269
+ Curated Agent-Computer Interface (structured file viewers, search commands, editors rather
270
+ than raw shell). Automatic git commits at logical boundaries. Conversation history
271
+ summarization. Evidence: `gpt-pilot/README.md`, `gpt-pilot/pilot/`.
272
+
273
+ ### 3.13 kilocode (TypeScript/Bun + Effect-TS)
274
+
275
+ Fork of OpenCode built on Effect-TS. Every subsystem is an Effect `Service` with `Layer`
276
+ composition; `LayerNode` enforces Location-scoped vs global-scoped services at the type
277
+ level. **4-axis LLM route architecture** (Protocol/Endpoint/Auth/Framing, 5-15 lines per
278
+ new provider). 7+ built-in agents (code, plan, general, explore, scout, compaction, title,
279
+ summary) + user-defined. **Permission-controlled tool access** with wildcard pattern
280
+ matching and composable rulesets (`Permission.merge`). 48 built-in tools including
281
+ `apply_patch`, `lsp`, `recall` (memory), `repo_clone`, `warpgrep`, `diagnostics`. **Profile-
282
+ based sandboxing** (filesystem allow/deny, network allow/deny/proxy, environment deny/set —
283
+ Bubblewrap/Seatbelt backends). Memory system with `remember`/`forget`/`correct`/`recall`/
284
+ `catalog` operations, token budgeting, secret filtering. Skills with multi-location discovery
285
+
286
+ + trust provenance. Git worktree isolation. MCP client with OAuth. Hono HTTP server with
287
+ OpenAPI + mDNS discovery. Tree-sitter indexing. Evidence: `kilocode/README.md`,
288
+ `kilocode/packages/`.
289
+
290
+ ### 3.14 opencode-dev (TypeScript/Bun + Effect-TS)
291
+
292
+ Upstream of Kilo Code. **4-axis LLM route architecture** (`packages/llm/src/route/` —
293
+ Protocol, Endpoint, Auth, Framing). **Durable session runner** (loads history, resolves
294
+ model, streams one LLM turn, persists events incrementally, settles tools durably, loops).
295
+ **Session input delivery (Steer/Queue)** — `steer` promotes user input at next safe boundary
296
+ and resets step count; `queue` ensures ordered processing. **System Context Algebra**
297
+ (`Source<A>` with key/codec/load/renderers, composed into `Snapshot` to prevent context
298
+ drift). **Content-addressed snapshots** (deduplication, diff, preview restore, 7-day
299
+ retention). Session compaction with structured Markdown summary (Objective, Important
300
+ Details, Work State, Next Move, Relevant Files). Plugin system with 12+ hook surfaces
301
+ including `experimental.chat.system.transform`, `experimental.session.compacting`. Full MCP
302
+ client (stdio/SSE/HTTP, OAuth, browser flows). IAM-style policy engine. Skill discovery
303
+ from remote URLs with concurrent fetching. Filesystem watcher (@parcel/watcher, gitignore-
304
+ aware). Evidence: `opencode-dev/README.md`, `opencode-dev/packages/`.
305
+
306
+ ### 3.15 OpenHands (Python + React/FastAPI)
307
+
308
+ Multi-backend coding agent platform. **Sandbox abstraction layer** — run agent work in
309
+ Docker, local process, remote VM, or cloud; flip between backends mid-session. **Agent-
310
+ Client Protocol (ACP)** — any agent implementing ACP can plug in as sub-agent or standalone
311
+ backend. **Trigger-based skill loading** — skills only injected when user messages match
312
+ keyword triggers; multi-source (public, repo-specific `.openhands/skills/`, org-level);
313
+ MCP tool declarations in skill frontmatter; self-improving `agent_memory` skill. **MCP
314
+ server + proxy** — namespace-mounts remote MCP services (e.g., Tavily under `tavily/`).
315
+ **EventCallbackProcessor** pattern for typed event-driven hooks (webhook, Slack, Jira,
316
+ GitHub). Multi-provider git (GitHub, GitLab, Bitbucket, Azure DevOps, Forgejo). Sandbox-
317
+ scoped secrets with `ConversationSecretEnricher` extension point. Switchable LLM profiles
318
+ (up to 10 named). Task tracker UI. Enterprise integrations (Slack, Jira, GitHub, Linear).
319
+ Suggested-task generation (merge conflicts, failing CI, unresolved PR comments). Browser
320
+ automation. Workspace archive before sandbox teardown. Rate limiting (in-memory OSS + Redis
321
+ enterprise). Evidence: `OpenHands/README.md`, `OpenHands/openhands/app_server/`.
322
+
323
+ ### 3.16 SWE-agent (Python)
324
+
325
+ Princeton research-oriented coding agent. **ACI design philosophy** — curated agent-
326
+ optimized tool surfaces (specialized file viewers, search commands, linting-gated editors)
327
+ rather than raw shell access. **YAML-driven configuration** with composable config merging.
328
+ **Tool bundle system** — each tool is a self-contained directory with `config.yaml`, `bin/`
329
+ executables, optional `install.sh`/`lib/`, `hidden_tools`, `state_command` for dynamic
330
+ state injection. **11 parser strategies** (FunctionCalling, ThoughtAction, XMLThoughtAction,
331
+ XMLFunctionCalling, Json, Action, ActionOnly, EditFormat, Identity, BashCodeBlock,
332
+ SingleBashCodeBlock). **History processor pipeline** (LastNObservations with polling-aware
333
+ caching, CacheControlHistoryProcessor for Anthropic prompt cache, ClosedWindowHistoryProcessor,
334
+ TagToolCallObservations, RemoveRegex, ImageParsingHistoryProcessor). Container sandboxing
335
+ via SWE-ReX (Docker/Modal/AWS). **Retry agent with review loop** (Reviewer LLM scores
336
+ solutions, Chooser with Preselector picks best). **Three-layer hook system** (Agent/Env/Run
337
+ with combined dispatch). Batch execution with thread-safe API key rotation. Multimodal
338
+ GitHub-issue image processing. Web-based trajectory inspector. Evidence: `SWE-agent/README.md`,
339
+ `SWE-agent/sweagent/`, `SWE-agent/tools/`.
340
+
341
+ ---
342
+
343
+ ## 4. Feature-Parity Gap Matrix
344
+
345
+ Legend: ✅ present · ❌ absent · 🟡 partial/limited. Cells include brief parenthetical
346
+ detail where the bare symbol would lose information. Each sub-table groups features by
347
+ category and includes only the reference repos most relevant to that category (a repo may
348
+ appear in multiple sub-tables — many repos contribute to multiple categories).
349
+
350
+ ### 4.1 Extensibility Surface (MCP / Plugins / Skills)
351
+
352
+ savant-code has partial MCP + partial skills but no plugin SDK or marketplace. Most mature
353
+ repos have all three; savant-code is the only one of the 16 with no plugin boundary.
354
+
355
+ | Feature | savant-code | hermes | openclaude | openclaw | zero | codex | opencode | kilocode | goose | cline | AionUi |
356
+ |---|---|---|---|---|---|---|---|---|---|---|---|
357
+ | MCP client | 🟡 (loader only) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (70+) | ✅ | ✅ (centralized) |
358
+ | MCP server | 🟡 (3 bundled) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — | — |
359
+ | Plugin / extension SDK | ❌ | ✅ | ✅ | ✅ (152) | ✅ | ✅ | ✅ (hooks) | ✅ | ✅ (dual) | ✅ (sandbox) | ✅ (manifest) |
360
+ | Skills system / marketplace | 🟡 (7 bundled) | ✅ (38) | ✅ | ✅ (51+ClawHub) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (3-tier) |
361
+ | Plugin sandbox | ❌ | 🟡 (approval) | ✅ | ✅ (Docker/SSH) | ✅ (OS) | ✅ (OS) | 🟡 (profile) | ✅ (profile) | — | ✅ (IPC) | — |
362
+
363
+ ### 4.2 Provider & Model Routing
364
+
365
+ savant-code has ~8 prefixes via a single OpenAI-compatible class with a 2-branch
366
+ `getModelForRequest()` switch. References have 15-150+ providers with smart routing,
367
+ fallback, and model catalogs.
368
+
369
+ | Feature | savant-code | agno | aionui | goose | hermes | openclaude | openclaw | zero | opencode | kilocode | codex | cline |
370
+ |---|---|---|---|---|---|---|---|---|---|---|---|---|
371
+ | Provider count | 🟡 (~8) | ✅ (54) | ✅ (30+) | ✅ (15+) | ✅ (35) | ✅ (25+) | ✅ (150+) | ✅ (25+) | ✅ (4-axis) | ✅ (4-axis) | ✅ (25+) | ✅ (10+) |
372
+ | Smart routing / modes | 🟡 (prefix+OAuth) | — | — | — | ✅ | ✅ | ✅ (rotation) | ✅ (modes) | — | — | — | ✅ (model-tool) |
373
+ | 4-axis route arch | ❌ | — | — | — | — | — | — | — | ✅ | ✅ | — | — |
374
+ | Declarative providers (YAML) | ❌ | — | — | ✅ | — | — | — | — | — | — | — | — |
375
+ | Model catalog / fallback | ❌ | — | — | — | ✅ | ✅ | ✅ (failover) | ✅ (escalate) | — | — | — | — |
376
+ | Free-tier model catalog | ✅ (unique) | ❌ | ❌ | ❌ | ❌ | ❌ | 🟡 (web) | ❌ | ❌ | ❌ | ❌ | ❌ |
377
+
378
+ ### 4.3 Safety, Sandbox & Policy
379
+
380
+ savant-code has no OS sandbox and only coarse `providerOptions` for routing (not policy).
381
+ Several references have OS-level sandboxing and structured policy engines; savant-code
382
+ has none.
383
+
384
+ | Feature | savant-code | codex | zero | openclaude | openclaw | hermes | kilocode | SWE-agent | goose |
385
+ |---|---|---|---|---|---|---|---|---|---|
386
+ | OS-level sandbox | ❌ | ✅ (SBPL/seccomp) | ✅ (landlock/seatbelt) | ✅ (@anthropic) | 🟡 (Docker/SSH) | 🟡 (Docker/Modal) | ✅ (profile) | ✅ (container) | — |
387
+ | Policy / permission engine | 🟡 (providerOptions) | ✅ (Starlark) | ✅ (dual-layer) | ✅ | ✅ (tool policy) | ✅ (approval) | ✅ (wildcard) | ✅ (blocklist) | ✅ (inspectors) |
388
+ | Secrets abstraction | ❌ | — | ✅ (keyring) | 🟡 (OAuth) | ✅ (SecretRef) | ✅ (cred pool) | ✅ (filter) | — | — |
389
+ | Redaction system | ❌ | — | ✅ | — | — | — | ✅ | — | — |
390
+
391
+ ### 4.4 Orchestration, Memory & Context
392
+
393
+ savant-code has 9 fixed agents with `spawn_agents` and cache-debug only. References have
394
+ swarm/team orchestration, persistent memory, and sophisticated compaction.
395
+
396
+ | Feature | savant-code | hermes | openclaude | openclaw | zero | cline | aionui | codex | opencode | agno |
397
+ |---|---|---|---|---|---|---|---|---|---|---|
398
+ | Multi-agent orchestration | ✅ (9 roles) | ✅ (Kanban) | ✅ (coordinator) | ✅ (fleet/swarm) | ✅ (swarm) | ✅ (teams) | ✅ (team mode) | ✅ (roles) | 🟡 (dual-agent) | ✅ (4 modes) |
399
+ | Dynamic sub-agent spawning | 🟡 (spawn_agents) | ✅ (delegate) | ✅ (AgentTool) | ✅ (swarm) | ✅ (specialists) | ✅ (teams) | ✅ (ACP) | ✅ (SpawnReservation) | ✅ (task) | ✅ (team) |
400
+ | Persistent memory | ❌ | ✅ (8 backends) | ✅ (memdir+auto-dream) | ✅ (dreaming) | — | — | — | ✅ (two-phase) | ✅ (algebra) | ✅ (strategy) |
401
+ | Context compaction | 🟡 (cache-debug) | ✅ (compressor) | ✅ (collapse+compact) | ✅ (staged) | ✅ (proactive+reactive) | — | — | ✅ (multi-strategy) | ✅ (structured) | ✅ (CompressionManager) |
402
+ | Session fork/rewind | ❌ | — | ✅ | ✅ | ✅ (event log) | ✅ (git checkpoints) | — | ✅ (thread fork) | ✅ (snapshot revert) | ✅ (session fork) |
403
+ | Structured summary template | ❌ | ✅ (Resolved/Pending) | ✅ | ✅ (identifier preserve) | ✅ (proactive) | — | — | ✅ (history tracking) | ✅ (Objective/State/Next/Files) | — |
404
+
405
+ ### 4.5 UX Surfaces (Web / Desktop / Mobile / Channels / Media)
406
+
407
+ savant-code is CLI/TUI/SDK only. This is the largest surface gap — many references are
408
+ full multi-platform products.
409
+
410
+ | Feature | savant-code | hermes | openclaude | openclaw | aionui | goose | zero | openhands |
411
+ |---|---|---|---|---|---|---|---|---|
412
+ | CLI / TUI | ✅ | ✅ | ✅ | ✅ (TUI) | — | ✅ (Rust+Ink) | ✅ | — |
413
+ | Web UI / dashboard | ❌ | ✅ (FastAPI) | 🟡 (docs/headless) | ✅ (Lit) | ✅ (web-host) | — | ❌ | ✅ (React) |
414
+ | Desktop app | ❌ | ✅ (Electron) | 🟡 (VS Code ext) | ✅ (multi-OS) | ✅ (Electron+Rust) | ✅ (Electron) | ❌ | — |
415
+ | Mobile app | ❌ | 🟡 (Termux) | 🟡 (Termux) | ✅ (iOS/Android) | ✅ (Expo) | — | ❌ | — |
416
+ | Messaging channels | ❌ | ✅ (~30) | 🟡 (Slack/GitHub) | ✅ (40+) | ✅ (7) | — | 🟡 (Slack/PR) | ✅ (enterprise) |
417
+ | Media generation (img/video/music) | ❌ | ✅ | ❌ | ✅ | 🟡 (image) | — | ❌ | — |
418
+ | TTS / voice / meetings | ❌ | ✅ | ✅ (voice) | ✅ | — | — | 🟡 (dictation) | — |
419
+ | Browser automation | 🟡 (browser-use) | ✅ | ✅ | ✅ (Canvas) | — | — | — | ✅ (14 tools) |
420
+
421
+ ### 4.6 Automation, Eval & Intelligence
422
+
423
+ savant-code has Buffbench only. References have rich eval harnesses, cron, LSP, repo
424
+ maps, and hook systems.
425
+
426
+ | Feature | savant-code | aider | cline | gemini-cli | openhands | zero | openclaude | goose | SWE-agent | codex |
427
+ |---|---|---|---|---|---|---|---|---|---|---|
428
+ | Eval / benchmark harness | 🟡 (Buffbench) | ✅ (Polyglot+SWE-bench) | ✅ (3-layer pyramid) | ✅ (dynamic baseline) | 🟡 (qa scenarios) | ✅ (agenteval/perfbench) | 🟡 (model rec) | — | ✅ (batch) | — |
429
+ | Cron / scheduling | ❌ | — | ✅ (markdown specs) | — | — | ✅ (recipes) | ✅ (in-mem+durable) | ✅ (agent sessions) | — | — |
430
+ | LSP integration | 🟡 (tree-sitter code-map) | — | — | — | — | ✅ (background async) | ✅ | — | — | — |
431
+ | Repo map (PageRank) | ❌ | ✅ | — | — | — | 🟡 (deterministic) | ✅ | ✅ (tree-sitter) | — | — |
432
+ | Hook system | ❌ | — | ✅ (7 events) | ✅ (10 events, BeforeModel) | ✅ (EventCallback) | ✅ (6 events) | — | ✅ (11 events) | ✅ (3-layer) | ✅ (11 events) |
433
+ | Process-level eval assertions | ❌ | — | ✅ (pass@k) | ✅ (baseline filter) | — | ✅ (requiredTraceEvents) | — | — | ✅ (review loop) | — |
434
+ | Tool search / deferred loading | ❌ | — | — | — | ✅ (trigger skills) | ✅ (state-dependent) | ✅ (ToolSearchTool) | — | — | — |
435
+
436
+ ### 4.7 Governance & Differentiators (savant-code's Lead)
437
+
438
+ savant-code's unique strengths — none of the references match these.
439
+
440
+ | Feature | savant-code | hermes | openclaude | openclaw | zero | codex |
441
+ |---|---|---|---|---|---|---|
442
+ | FID-bound Perfection Loop | ✅ (unique) | ❌ | ❌ | ❌ | ❌ | ❌ |
443
+ | 9-role separation of duties | ✅ (unique) | ❌ | ❌ | ❌ | ❌ | ❌ |
444
+ | Governance audit trail (FID lifecycle) | ✅ (unique) | 🟡 (logs) | 🟡 | ✅ (audit log) | 🟡 (trace) | 🟡 (graph store) |
445
+ | ECHO Protocol bootstrap | ✅ (unique) | ❌ | ❌ | ❌ | ❌ | ❌ |
446
+
447
+ ### 4.8 Coverage Matrix (16-repo ✅/❌/🟡 at a glance)
448
+
449
+ Compact view of every reference repo × every category. Each cell shows savant-code's
450
+ status only (the row headers); for per-repo detail, see the sub-tables above.
451
+
452
+ | Repo | Extensibility | Providers | Safety | Orchestration | UX surfaces | Eval/Automation |
453
+ |---|---|---|---|---|---|---|
454
+ | **savant-code** | 🟡 (MCP+skills partial, no plugin) | 🟡 (~8, 2-branch) | ❌ (no OS sandbox) | ✅ (9 roles) / 🟡 (spawn only) | ❌ (CLI/TUI only) | 🟡 (Buffbench only) |
455
+ | agno | ✅ (MCP+AgentOS) | ✅ (54) | 🟡 (guardrails) | ✅ (4 team modes) | 🟡 (AgentOS HTTP) | ✅ (eval suite) |
456
+ | aider | ❌ | 🟡 (litellm) | 🟡 (reflection) | 🟡 (architect/editor) | ❌ (terminal) | ✅ (Polyglot+SWE-bench) |
457
+ | AionUi | ✅ (manifest SDK) | ✅ (30+) | 🟡 (approval store) | ✅ (team mode) | ✅ (desktop+mobile+web) | 🟡 (e2e teams) |
458
+ | cline | ✅ (sandbox plugins) | ✅ (10+) | ✅ (loop detection) | ✅ (teams runtime) | 🟡 (CLI+VS Code) | ✅ (3-layer pyramid) |
459
+ | codex | ✅ (marketplace) | ✅ (25+) | ✅ (SBPL/seccomp+Starlark) | ✅ (role registry) | 🟡 (TUI) | ✅ (rollout budgets) |
460
+ | gemini-cli | ✅ (extensions) | ✅ (composite routing) | 🟡 (confirmation bus) | ✅ (subagent+a2a) | 🟡 (CLI+VS Code) | ✅ (dynamic baseline) |
461
+ | goose | ✅ (70+ MCP) | ✅ (15+, YAML) | ✅ (inspectors) | ✅ (delegate/summon) | ✅ (TUI+Electron) | ✅ (recipes+cron) |
462
+ | gpt-pilot | ❌ | 🟡 (multiple) | 🟡 (curated ACI) | 🟡 (step-based) | ❌ (terminal) | 🟡 (TDD) |
463
+ | hermes-agent | ✅ (plugin SDK) | ✅ (35) | ✅ (approval+Tirith) | ✅ (Kanban+MOA) | ✅ (TUI+Web+Desktop+Mobile) | ✅ (trajectory) |
464
+ | kilocode | ✅ (permissions) | ✅ (4-axis) | ✅ (profile sandbox) | ✅ (task spawning) | 🟡 (CLI) | 🟡 (memory) |
465
+ | openclaude | ✅ (registry) | ✅ (25+) | ✅ (@anthropic sandbox) | ✅ (coordinator+teams) | ✅ (VS Code+voice+mobile) | ✅ (model rec) |
466
+ | openclaw | ✅ (152 ext+SDK) | ✅ (150+) | ✅ (tool policy) | ✅ (fleet+swarm) | ✅ (multi-OS+web+channels) | 🟡 (qa scenarios) |
467
+ | opencode-dev | ✅ (hooks+snapshots) | ✅ (4-axis) | ✅ (IAM policy) | 🟡 (dual-agent) | 🟡 (CLI) | 🟡 (snapshots) |
468
+ | OpenHands | ✅ (ACP+MCP proxy) | 🟡 (LiteLLM) | ✅ (sandbox abstraction) | ✅ (ACP) | ✅ (React web) | 🟡 (qa scenarios) |
469
+ | SWE-agent | ❌ | 🟡 (multi) | ✅ (container) | 🟡 (retry agent) | ❌ (terminal+web inspector) | ✅ (batch+review) |
470
+ | zero | ✅ (plugin.json) | ✅ (25+) | ✅ (landlock/seatbelt) | ✅ (swarm) | 🟡 (TUI+GitHub Action) | ✅ (agenteval+perfbench) |
471
+
472
+ ---
473
+
474
+ ## 5. Detailed Gap Analysis (by category)
475
+
476
+ Each item states the reference evidence (across all 16 repos) and what savant-code would
477
+ need. Evidence is grouped by category; not every repo is cited in every category — only
478
+ where the repo offers a distinct, adoptable pattern.
479
+
480
+ ### 5.1 Extensibility surface (MCP + Plugins + Skills) — **highest priority**
481
+
482
+ - **Gap (corrected 2026-07-20):** savant-code has **partial** MCP and skills surfaces,
483
+ but **no plugin SDK and no skills marketplace**:
484
+ - **MCP client (partial):** `packages/agent-runtime/src/mcp.ts` is a per-server
485
+ failure-isolated tool loader; `sdk/src/agents/load-mcp-config.ts` merges project +
486
+ user + env-var config sources. **Missing:** dedicated `packages/mcp/` workspace,
487
+ OAuth, InProcessTransport, MCP proxy/namespace-mounting.
488
+ - **MCP server (partial):** 3 bundled servers in `research/servers-main/`
489
+ (sequentialthinking, memory, filesystem) using `@modelcontextprotocol/sdk/server/mcp.js`.
490
+ **Missing:** public server SDK, contribution API, plugin-contributed servers.
491
+ - **Skills (partial):** `packages/agent-runtime/src/tools/handlers/tool/skill.ts`
492
+ loads skills from 4 directories (`~/.agents/skills/`, `~/.claude/skills/`,
493
+ project `.agents/skills/`, `.claude/skills/`) with frontmatter validation.
494
+ 7 bundled skills in `.agents/skills/` (coding-csharp, coding-go, coding-java,
495
+ coding-python, coding-rust, coding-typescript, release-workflow).
496
+ **Missing:** marketplace/registry, remote skill discovery, plugin SDK, manifest
497
+ schema, sandbox.
498
+ - **Reference evidence (16-repo coverage):**
499
+ - **MCP client:** hermes `tools/mcp_tool.py`; openclaude `src/services/mcp/` (stdio/SSE/HTTP/WS + InProcessTransport + OAuth); openclaw `src/mcp/`; zero `internal/mcp/`; codex `codex-rs/codex-mcp/` + `codex-rs/mcp-server/`; opencode-dev + kilocode `packages/opencode/src/mcp/`; goose `crates/goose-mcp/src/` (70+ servers, OSV malware check); cline `sdk/packages/core/src/extensions/mcp/`; AionUi "centralized MCP, configure once sync to all"; agno `tools/mcp/multi_mcp.py` (multi-merge); OpenHands `mcp_router.py` (server + namespace-proxy).
500
+ - **Plugin SDK:** hermes `PluginManager` (4-source discovery); openclaude `builtinPlugins.ts`; openclaw `packages/plugin-sdk/` + `check-plugin-sdk-boundary.mjs` (152 ext); zero `plugin.json` (tools/hooks/skills); codex `codex-rs/plugin/` (marketplace); cline `extensions/plugin/` (SubprocessSandbox with auto-reinit); AionUi `aion-extension.json` (7 contribution points); goose dual-format with 24h auto-update.
501
+ - **Skills/marketplace:** hermes 38 categories; openclaude 17+ bundled; openclaw 51 + ClawHub registry; zero `SKILL.md` packs; codex Markdown skills with scope (User/Repo/System/Admin); kilocode multi-location + trust provenance; OpenHands trigger-based loading (only inject when keyword matches).
502
+ - **savant impact:** The partial surfaces exist but are scattered across `agent-runtime/`,
503
+ `sdk/`, and `research/` with no unified plugin boundary. Recommend consolidating MCP
504
+ primitives into a `packages/mcp/` workspace + adding OAuth/InProcessTransport; building
505
+ an `extensions/` plugin loader with manifest schema modeled on openclaw's
506
+ plugin-sdk boundary checks (`check-plugin-sdk-boundary.mjs`); and adding a skills
507
+ registry/marketplace modeled on ClawHub, with trigger-based loading modeled on OpenHands.
508
+
509
+ ### 5.2 Provider breadth & routing
510
+
511
+ - **Gap:** savant-code supports ~8 model prefixes through a **single OpenAI-compatible
512
+ class** with two hard-coded routes (ChatGPT-OAuth, SavantCode/OpenRouter). No per-provider
513
+ adapter, no smart routing, no model catalog, no fallback/failover, no cost-based routing.
514
+ - **Reference evidence (16-repo coverage):**
515
+ - **Provider count:** agno 54 providers (`models/`); openclaw 150+ extensions; hermes 35 plugins; openclaude ~50 (25 vendors + 25 gateways); zero 25+; cline 10+; AionUi 30+ (incl. Chinese: Zhipu, Moonshot, Qianfan, Hunyuan); goose 15+; codex 25+.
516
+ - **4-axis route architecture:** opencode-dev + kilocode (`packages/llm/src/route/` — Protocol, Endpoint, Auth, Framing). 5-15 lines per new provider. DeepSeek/TogetherAI/Cerebras all reuse `OpenAIChat.protocol`.
517
+ - **Smart routing:** openclaude `smartModelRouting.ts` + `agentRouting.ts` (complexity classifier); zero modes (smart/deep/fast) + escalate; gemini-cli CompositeStrategy (Fallback→Override→ApprovalMode→GemmaClassifier→...); cline model-tool routing (OpenAI gets `apply_patch`).
518
+ - **Model catalog + fallback:** openclaw `model-catalog/`, `model-fallback.ts`, `failover-policy.ts`, `live-model-switch.ts`, auth profile rotation with cooldown/expiry/round-robin.
519
+ - **Declarative providers:** goose YAML-based custom providers (no code for new providers).
520
+ - **savant impact:** Extend `getModelForRequest()` (currently a 2-branch switch in
521
+ `sdk/src/impl/model-provider.ts`) into a 4-axis provider registry + routing layer
522
+ (modeled on opencode-dev/kilocode). The `ALLOWED_MODEL_PREFIXES` in `model-config.ts`
523
+ is the natural extension point. Add a `model-catalog` + fallback policy modeled on openclaw.
524
+ (This aligns with the multi-provider end-state flagged in archived `FID-2026-0714-006`.)
525
+
526
+ ### 5.3 Scheduling / cron
527
+
528
+ - **Gap:** savant-code has **no scheduler**. Agents run only on interactive CLI invocation.
529
+ - **Reference evidence (16-repo coverage):**
530
+ - hermes `cron/scheduler.py` (5-field cron, ISO timestamps, per-job skills/models, multi-platform delivery).
531
+ - openclaude `ScheduleCronTool/` (in-memory + durable `.openclaude/scheduled_tasks.json`, max 50 jobs).
532
+ - openclaw `src/cron/` (declarative jobs, delivery channels, retry policies, heartbeat, pacing).
533
+ - zero `internal/cron/` (recipes: git-recap, ci-watch, todo-pulse, daily-summary; DST-aware).
534
+ - goose `crates/goose/src/scheduler.rs` — **runs full agent sessions** (not just shell) with provider/extension context.
535
+ - cline `sdk/packages/core/src/cron/` (markdown spec files `.cline/cron/*.md` with YAML frontmatter; SQLite-backed).
536
+ - AionUi conversation-bound or new-conversation mode with keep-awake + missed-trigger detection.
537
+ - **savant impact:** Add a `cron/` workspace + `/cron` slash command + a daemon tick loop.
538
+ Best pattern for savant-code: cline's markdown specs (developer-friendly, version-
539
+ controllable) + zero's recipe presets. Must respect ECHO governance (FID for scheduled
540
+ runs, audit trail).
541
+
542
+ ### 5.4 OS-level sandbox & permission engine
543
+
544
+ - **Gap:** savant-code has **no OS sandbox** and only coarse per-agent `providerOptions`
545
+ (model routing), not command/network/filesystem policy.
546
+ - **Reference evidence (16-repo coverage):**
547
+ - **OS-level sandbox:** zero `internal/sandbox/` (Linux landlock+seccomp, macOS seatbelt, Windows ACL/unelevated); codex `codex-rs/sandboxing/` (macOS SBPL profiles, Linux seccomp/Landlock/bwrap, Windows restricted token); openclaude `@anthropic-ai/sandbox-runtime` + `shouldUseSandbox.ts`; kilocode `packages/kilo-sandbox/` (profile-based: filesystem/network/environment, Bubblewrap/Seatbelt backends); SWE-agent SWE-ReX (Docker/Modal/AWS, agent never runs on host); OpenHands sandbox abstraction (Docker/local/remote/VM/cloud, flip between backends mid-session).
548
+ - **Policy/permission engine:** codex Starlark rules (`codex-rs/execpolicy/`, self-validating, prefix matching, host exe resolution); zero dual-layer (tool metadata + sandbox, structured `Block` codes like `symlink_traversal`); openclaude wildcard; opencode-dev IAM-style policy; kilocode `Wildcard.match` with `ask/allow/deny` + `Permission.merge`; gemini-cli multi-dimensional matching (tool/args regex/MCP server/annotations); SWE-agent command blocklist (prefix/exact/regex); goose tool inspector pipeline (permission→security→adversary→egress→repetition); openclaw layered tool policy pipeline.
549
+ - **Approval/HITL:** hermes `tools/approval.py` (per-session queue, subagent callbacks); agno `@approval` decorator (required/audit modes); OpenHands ConversationSecretEnricher extension point.
550
+ - **savant impact:** High-value for a coding agent that runs arbitrary shell. Adopt
551
+ zero's dual-layer model (tool metadata + sandbox with structured `Block` codes) for
552
+ actionable denial reasons, plus cline's SubprocessSandbox pattern for plugin isolation.
553
+ Add a sandbox boundary + a permission/approval gate (destructive-command denylist)
554
+ before shipping autonomous shell execution.
555
+
556
+ ### 5.5 Messaging channels / integrations
557
+
558
+ - **Gap:** savant-code is **CLI/TUI/SDK only** — no Slack/Discord/Telegram/WhatsApp/etc.
559
+ - **Reference evidence (16-repo coverage):**
560
+ - openclaw `extensions/` (40+ channels — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, IRC, Teams, Matrix, Feishu, LINE, WeChat, QQ, etc.).
561
+ - hermes `gateway/platforms/` + `plugins/platforms/` (~30 platform adapters).
562
+ - AionUi 7 connectors (Telegram, Lark/Feishu, DingTalk, WeChat, WeCom, Slack, Discord).
563
+ - cline 6 platform connectors (Telegram, Slack webhook+socket, Discord, Google Chat, WhatsApp, Linear).
564
+ - zero `internal/notify/` (Slack + GitHub PR + GitHub Action composite).
565
+ - openclaude Slack + GitHub app.
566
+ - OpenHands enterprise integrations (Slack, Jira, GitHub, Linear, Bitbucket, Azure DevOps).
567
+ - **savant impact:** Best delivered *via* the MCP/plugin surface (5.1), not core. A
568
+ `channels/` extension category modeled on openclaw's `src/channels/` is the parity target.
569
+
570
+ ### 5.6 UI surfaces (Web / Desktop / Mobile)
571
+
572
+ - **Gap:** savant-code has CLI (OpenTUI+React) + embeddable SDK only. No web dashboard, no
573
+ desktop app, no mobile.
574
+ - **Reference evidence (16-repo coverage):**
575
+ - hermes: FastAPI Web (20 pages) + Electron + Tauri + Termux.
576
+ - openclaude: VS Code extension + headless gRPC server (1000 concurrent sessions) + Termux.
577
+ - openclaw: Lit Web UI + macOS/iOS/Android/Linux/Windows native apps (`swabble`).
578
+ - AionUi: Electron + React 19 + Rust (AionCore) desktop + React Native/Expo mobile.
579
+ - goose: Rust + Electron/TS UI + Ink/React TUI.
580
+ - OpenHands: React/FastAPI web frontend with subagent visualization.
581
+ - codex: ratatui TUI.
582
+ - gemini-cli: React/Ink CLI + VS Code companion + devtools.
583
+ - zero: terminal-only (no web/mobile/desktop).
584
+ - **savant impact:** Lowest priority for a *coding* agent; highest for a *personal-agent*
585
+ play. If parity with openclaw/hermes is the goal, a web dashboard + Electron/Tauri shell
586
+ wraps the existing SDK. For coding-agent parity, the VS Code extension pattern (openclaude,
587
+ gemini-cli) is the highest-leverage minimum.
588
+
589
+ ### 5.7 Media generation & voice
590
+
591
+ - **Gap:** savant-code has **no** image/video/music generation, **no** TTS, **no** meeting bots.
592
+ - **Reference evidence (16-repo coverage):**
593
+ - openclaw `src/image-generation/`, `video-generation/`, `music-generation/`, `tts/`, `meeting-bot/`, `talk/` (wake words, realtime sessions via ElevenLabs).
594
+ - hermes `tools/image_generation_tool.py`, `video_generation_tool.py`, `tts_tool.py`.
595
+ - openclaude voice mode + Vim mode.
596
+ - zero `internal/dictation/` (Deepgram cloud + Whisper local + OpenAI Realtime).
597
+ - AionUi image generation with JSON repair for malformed responses.
598
+ - codex realtime voice (WebRTC/WebSocket conversations).
599
+ - **savant impact:** Deliver through plugins/providers (5.1, 5.2). Not core to coding parity.
600
+
601
+ ### 5.8 Persistent memory & context compaction
602
+
603
+ - **Gap:** savant-code has DB + cache-debug but **no** cross-session persistent memory and
604
+ **no** autonomous context compaction (only manual prompt-cache awareness).
605
+ - **Reference evidence (16-repo coverage):**
606
+ - **Persistent memory:** openclaude `src/memdir/` + `autoDream/` (background subagent consolidates transcripts, 24h time gate, 5+ session gate, consolidation lock); openclaw `extensions/memory-core/src/dreaming.ts` (light + REM dreaming); codex two-phase pipeline (`codex-rs/memories/` — Phase 1 parallel extraction, Phase 2 git-baseline diff consolidation, DB-backed job claiming); opencode-dev System Context Algebra (`Source<A>` with key/codec/load/renderers composed into `Snapshot`); hermes 8 pluggable backends (Honcho, Mem0, Supermemory, ByteRover, Hindsight, Holographic, OpenViking, RetainDB); kilocode memory with `remember`/`forget`/`correct`/`recall`/`catalog` + secret filtering; agno strategy-based memory with 24 vector DB backends; OpenHands self-improving `agent_memory` skill.
607
+ - **Context compaction:** zero `internal/agent/compaction.go` (proactive at ~70% + reactive after context-limit error, per-provider calibration, turn-boundary preservation); opencode-dev structured Markdown summary (Objective, Important Details, Work State, Next Move, Relevant Files); openclaw staged summarization with identifier preservation (UUIDs, hashes, URLs not summarized away); openclaude context collapse + auto/micro/snippet compaction; gemini-cli graph-based context (typed nodes, processor pipeline: blobDegradation, historyTruncation, nodeDistillation, rollingSummary); codex multi-strategy with replacement history; hermes context compressor (Resolved/Pending question tracking); aider recursive split-then-summarize; SWE-agent history processor pipeline (LastNObservations, CacheControlHistoryProcessor, ClosedWindowHistoryProcessor).
608
+ - **Prompt cache warming:** aider background thread (periodic pings keep Anthropic caches alive).
609
+ - **savant impact:** Adopt a two-phase memory pipeline (codex pattern: parallel extraction
610
+ → git-baseline consolidation) with dreaming (openclaw light/REM) as the consolidation
611
+ scheduler, plus a structured summary template (opencode-dev) + identifier preservation
612
+ (openclaw). Add auto-compaction in the agent runtime modeled on zero's proactive+reactive
613
+ dual-path. Improves long-task quality.
614
+
615
+ ### 5.9 Evaluation / benchmark harness
616
+
617
+ - **Gap:** savant-code has **Buffbench** (`evals/`) but no agentic eval suite (expected/forbidden
618
+ file diffs, verification commands, trace scoring).
619
+ - **Reference evidence (16-repo coverage):**
620
+ - zero `internal/agenteval/` + `internal/perfbench/` (richest — fixtures with expected changed files, forbidden files, verification commands, **requiredTraceEvents**, manifest-based test suites with model matrix).
621
+ - gemini-cli behavioral evals with **dynamic baselines** (nightly 3x per model, fails-on-main marked "Pre-existing", trustworthiness filter 60%+ per night, automated promotion USUALLY→ALWAYS).
622
+ - cline 3-layer pyramid (contract → smoke with pass@k → E2E Harbor/SWE-bench).
623
+ - aider Polyglot Exercism + SWE-bench with Docker isolation.
624
+ - SWE-agent batch execution with retry agent + review loop (Reviewer LLM scores, Chooser with Preselector picks best).
625
+ - hermes `mini_swe_runner.py` + `batch_runner.py` + trajectory compression.
626
+ - openclaw `qa/scenarios/` with maturity scoring.
627
+ - **savant impact:** Extend `evals/` into a zero-style harness (prompt + expected diff +
628
+ verify command + required trace events). Add gemini-cli's dynamic baseline verification
629
+ to avoid false-failing on pre-existing main breakage. Directly supports ECHO's "verify
630
+ before proceed" — process-level assertions are a natural fit for the Perfection Loop's
631
+ AUDIT phase.
632
+
633
+ ### 5.10 Secrets & policy management
634
+
635
+ - **Gap:** savant-code holds keys in env/backend; **no** SecretRef abstraction, no policy engine,
636
+ no keyring.
637
+ - **Reference evidence (16-repo coverage):**
638
+ - openclaw `src/secrets/` (SecretRef) + `extensions/policy`.
639
+ - zero `internal/credstore/` + `internal/keyring/` + `internal/redaction/` (secret scrubbing at every output boundary).
640
+ - hermes `agent/secret_scope.py` + credential pool with failover/borrowing.
641
+ - kilocode memory with secret filtering (prevents accidental credential leakage in extracted memories).
642
+ - OpenHands sandbox-scoped secrets + `ConversationSecretEnricher` extension point.
643
+ - codex encrypted credential store with singleflight refresh.
644
+ - **savant impact:** Add a secrets abstraction (SecretRef-style) + a policy overlay +
645
+ a redaction system at output boundaries. Required before multi-tenant/fleet use and
646
+ before any autonomous shell execution.
647
+
648
+ ### 5.11 Hooks, LSP, and code intelligence (added 2026-07-20)
649
+
650
+ - **Gap:** savant-code has no hook system (no `beforeModel`/`afterTool`/etc.), no LSP
651
+ integration (only tree-sitter `code-map`), and no PageRank repo map.
652
+ - **Reference evidence (16-repo coverage):**
653
+ - **Hooks:** codex 11 events (`codex-rs/hooks/`); gemini-cli 10 events incl. **BeforeModel synthetic responses** (bypass model call entirely — enables caching/testing/safety interception); goose 11 events (regex-matched, `Stop` can block); cline 7 callbacks (`beforeModel` can inject messages + modify tools per-request); SWE-agent 3-layer (Agent/Env/Run with combined dispatch); zero 6 events (stdin-JSON payload, audit trail); opencode-dev 12+ hook surfaces incl. `experimental.chat.system.transform`, `experimental.session.compacting`.
654
+ - **LSP:** zero `internal/lsp/` (background async diagnostics — non-blocking file checking); openclaude `src/tools/LSPTool/` (symbols, diagnostics, formatting); opencode-dev `packages/opencode/src/lsp/` (diagnostics, symbol lookup, document symbols, status tracking); kilocode 48 built-in tools incl. `lsp` + `diagnostics`.
655
+ - **Repo map (PageRank):** aider `repomap.py` (PageRank + tree-sitter, 10x snake_case weight, 0.1x private identifier weight, token-budgeted); openclaude `src/context/repoMap/` (PageRank + tree-sitter with file-stat fingerprinting cache); zero `internal/repomap/` (deterministic, 4 KiB cap); goose `crates/goose/src/agents/platform_extensions/analyze` (tree-sitter).
656
+ - **savant impact:** Add a hook registry (at minimum `beforeModel`/`afterTool`/`onEvent`)
657
+ with BeforeModel synthetic responses (gemini-cli pattern) for cache/test/safety
658
+ interception. Add background async LSP diagnostics (zero pattern) for non-blocking
659
+ post-edit verification — directly improves the AUDIT phase. Extend `packages/code-map/`
660
+ with PageRank (aider pattern) for principled codebase navigation.
661
+
662
+ ---
663
+
664
+ ## 6. Prioritized Roadmap to Parity
665
+
666
+ Phased so each phase unlocks the next (extensibility first — it is the force-multiplier).
667
+
668
+ ### Phase 0 — Extensibility foundation (unblocks everything else)
669
+
670
+ 1. **MCP consolidation** — promote existing `packages/agent-runtime/src/mcp.ts` +
671
+ `sdk/src/agents/load-mcp-config.ts` + `research/servers-main/` (3 bundled servers)
672
+ into a `packages/mcp/` workspace; add OAuth + InProcessTransport + MCP proxy.
673
+ Not a from-scratch build. (zero `internal/mcp/client.go` is the cleanest reference
674
+ for the OAuth/transport gaps; openclaude `src/services/mcp/` for TS patterns.)
675
+ 2. **Plugin loader + plugin-sdk boundary** (`extensions/` dir + manifest schema) modeled on
676
+ openclaw `src/plugin-sdk/` + `check-plugin-sdk-boundary.mjs`. savant-code has no plugin
677
+ SDK today (only a skills loader).
678
+ 3. **Skills marketplace** — savant-code already has a runtime skill loader
679
+ (`packages/agent-runtime/src/tools/handlers/tool/skill.ts`) and 7 bundled skills
680
+ (`.agents/skills/`); gap is a registry/marketplace (ClawHub-style) + remote skill
681
+ discovery (openclaude `src/skills/`, opencode `skill/discovery.ts`).
682
+
683
+ ### Phase 1 — Provider & routing parity
684
+
685
+ 4. Promote `getModelForRequest()` from a 2-branch switch to a **4-axis route architecture**
686
+ (Protocol/Endpoint/Auth/Framing) modeled on opencode-dev + kilocode
687
+ (`packages/llm/src/route/`). 5-15 lines per new provider.
688
+ 5. Add **model catalog + fallback/failover + live model switch** (openclaw `model-fallback.ts`,
689
+ `live-model-switch.ts`, auth profile rotation with cooldown).
690
+ 6. Add **smart routing / modes** (zero `internal/modelregistry/modes.go` smart/deep/fast;
691
+ openclaude `smartModelRouting.ts` complexity classifier; gemini-cli CompositeStrategy with
692
+ local Gemma classifier for cheap routing).
693
+ 7. Add **declarative YAML providers** (goose pattern) for no-code provider additions.
694
+
695
+ ### Phase 2 — Safety & autonomy
696
+
697
+ 8. **OS/command sandbox** — adopt zero's dual-layer model (tool metadata + sandbox with
698
+ structured `Block` codes: `symlink_traversal`, `destructive_command`, `outside_workspace`)
699
+ plus codex's cross-platform sandbox (SBPL/seccomp/seatbelt).
700
+ 9. **Permission/approval gate** — codex Starlark rules (self-validating, prefix matching) or
701
+ kilocode `Wildcard.match` with `ask/allow/deny` + `Permission.merge`.
702
+ 10. **Plugin sandbox** — cline `SubprocessSandbox` (IPC isolation, auto-reinit on crash)
703
+ for third-party plugin execution.
704
+ 11. **Secrets abstraction + redaction** — openclaw SecretRef + zero redaction at every output
705
+ boundary + keyring (`internal/credstore/`, `internal/keyring/`).
706
+
707
+ ### Phase 3 — Automation, memory & intelligence
708
+
709
+ 12. **Cron/scheduler + daemon** — cline markdown specs (`.cline/cron/*.md` with YAML
710
+ frontmatter) + zero recipe presets + goose agent-session cron (full provider context).
711
+ 13. **Persistent memory** — codex two-phase pipeline (parallel extraction → git-baseline
712
+ consolidation) + openclaw dreaming (light + REM) + openclaude auto-dream gating
713
+ (24h time gate, 5+ session gate, lock).
714
+ 14. **Context compaction** — zero proactive+reactive dual-path with per-provider calibration +
715
+ opencode-dev structured Markdown summary (Objective/Work State/Next Move/Relevant Files) +
716
+ openclaw identifier preservation (UUIDs, hashes, URLs).
717
+ 15. **Hook system** — gemini-cli BeforeModel synthetic responses (bypass model call entirely)
718
+ + codex 11-event lifecycle + cline `beforeModel` message/tool injection.
719
+ 16. **Agentic eval harness** extending `evals/` — zero `agenteval` (requiredTraceEvents,
720
+ forbiddenChangedFiles) + gemini-cli dynamic baselines (fails-on-main → "Pre-existing") +
721
+ cline 3-layer pyramid (contract → smoke pass@k → E2E).
722
+ 17. **LSP integration** — zero background async diagnostics (non-blocking) + openclaude
723
+ symbol lookup / formatting.
724
+ 18. **Repo map** — extend `packages/code-map/` with PageRank (aider pattern: 10x snake_case
725
+ weight, 0.1x private identifier weight, token-budgeted) + openclaude file-stat fingerprinting cache.
726
+
727
+ ### Phase 4 — Surface expansion (only if personal-agent parity is the goal)
728
+
729
+ 19. **Channels** via plugin category (openclaw `src/channels/` 40+; hermes `gateway/platforms/` ~30).
730
+ 20. **Web dashboard + Desktop/Mobile shells** wrapping the SDK (hermes FastAPI+Electron+Tauri;
731
+ openclaw Lit Web UI + multi-OS apps; AionUi Electron+Rust+Expo).
732
+ 21. **Media-gen / voice / meetings** via provider+plugin surface (openclaw image/video/music/TTS;
733
+ hermes tools; zero dictation; codex realtime voice).
734
+ 22. **VS Code extension** (openclaude, gemini-cli pattern) — highest-leverage minimum for
735
+ coding-agent surface expansion.
736
+
737
+ ---
738
+
739
+ ## 7. savant-code's Differentiators (what the references LACK)
740
+
741
+ Honest parity is two-way. Across all 16 reference repos, savant-code leads on:
742
+
743
+ - **Governance:** ECHO Protocol FID-bound Perfection Loop + 9-role separation of duties
744
+ (`ECHO.md`, `AGENTS.md`). References have audit logs / traces (openclaw audit log,
745
+ zero trace, codex agent graph store) but **none** enforce RED→GREEN→AUDIT→COMPLETE
746
+ gating. This is savant-code's most defensible differentiator.
747
+ - **Free-tier model catalog:** `common/src/constants/savant-free-models.ts` (MiniMax M3,
748
+ DeepSeek V4, MiMo, Kimi, GLM, HY3) with premium/limited tiers, streaks, referrals.
749
+ **None of the 16 references** ships a comparable free-mode catalog (openclaw has a
750
+ partial "web free" tier, but not a free-mode model catalog).
751
+ - **Disciplined small roster:** 9 fixed, well-scoped agents (Orchestrator, Detective, Forge,
752
+ Verifier, Recorder, Thinker, Scout, Researcher, Scribe) vs. open-ended dynamic spawning
753
+ (agno 4 team modes, zero swarm, cline AgentTeamsRuntime, hermes Kanban). Trades
754
+ flexibility for reviewability and determinism.
755
+ - **ChatGPT-OAuth direct route** with Responses-API ↔ Chat-Completions transform
756
+ (`chatgpt-backend-fetch.ts`) is a novel, self-contained integration pattern — no other
757
+ repo has an equivalent direct OAuth route to ChatGPT's Codex endpoint.
758
+
759
+ These should be **preserved** during parity work — the roadmap adds breadth without removing
760
+ the governance spine.
761
+
762
+ ---
763
+
764
+ ## 8. Evidence Index
765
+
766
+ **savant-code (direct reads, 2026-07-20 re-verification):**
767
+
768
+ - `packages/llm-providers/src/openai-compatible/` — provider abstraction
769
+ - `sdk/src/impl/model-provider.ts` — `getModelForRequest()` 2-branch routing (verified lines 133-181)
770
+ - `sdk/src/impl/openrouter-key-resolver.ts`, `sdk/src/env.ts` — key/env resolution
771
+ - `sdk/src/impl/llm.ts` — streaming, cost accounting, cache-debug
772
+ - `sdk/src/impl/chatgpt-backend-fetch.ts` — OAuth Responses-API transform
773
+ - `common/src/constants/model-config.ts` — model registry + `ALLOWED_MODEL_PREFIXES` (8 prefixes verified)
774
+ - `common/src/constants/savant-free-models.ts` — free-tier model catalog
775
+ - `packages/agent-runtime/src/mcp.ts` — MCP client tool loader (verified 80 lines)
776
+ - `packages/agent-runtime/src/tools/handlers/tool/skill.ts` — skills loader (verified 135 lines, 4-directory search)
777
+ - `sdk/src/agents/load-mcp-config.ts` — multi-source MCP config merger
778
+ - `research/servers-main/src/{sequentialthinking,memory,filesystem}/index.ts` — 3 bundled MCP servers
779
+ - `.agents/skills/` — 7 bundled skills (coding-csharp/go/java/python/rust/typescript, release-workflow)
780
+ - `agents/*.ts`, `packages/agent-runtime/src/prompt-agent-stream.ts`, `spawn-agent-utils.ts` — agent roster + spawning
781
+ - `ECHO.md`, `AGENTS.md` — governance
782
+
783
+ **Reference repos (independent Explore-agent inventories, 2026-07-19; 16-repo full coverage):**
784
+
785
+ - `resources/agno/` — `README.md`, `agent/`, `models/` (54 providers), `tools/mcp/`, `tools/multi_mcp.py`, `os/app.py` (AgentOS), `workflow/`, `memory/`, `knowledge/`, `eval/`, `scheduler/`
786
+ - `resources/aider/` — `README.md`, `coders/` (13 edit formats), `repomap.py` (PageRank), `history.py`, `linter.py`, `watch.py`, `benchmark/`, `resources/model-settings.yml` (100+ configs)
787
+ - `resources/AionUi/` — `README.md`, `packages/desktop/` (Electron+Rust+React 19), `examples/` (extension SDK), `packages/web-host/`, `mobile/` (Expo), `tests/e2e/cases/teams/`
788
+ - `resources/cline/` — `README.md`, `sdk/packages/` (shared→llms→agents→core→apps), `extensions/tools/presets.ts`, `extensions/plugin/`, `extensions/mcp/`, `extensions/tools/team/`, `cron/`, `apps/cli/src/connectors/` (6 platforms), `evals/` (3-layer pyramid)
789
+ - `resources/codex/` — `README.md`, `codex-rs/sandboxing/` (SBPL/seccomp), `codex-rs/execpolicy/` (Starlark), `codex-rs/hooks/` (11 events), `codex-rs/core/src/compact.rs`, `codex-rs/thread_manager.rs`, `codex-rs/agent/`, `codex-rs/memories/`, `codex-rs/codex-mcp/`, `codex-rs/plugin/`, `codex-rs/app-server/`
790
+ - `resources/gemini-cli/` — `README.md`, `packages/core/src/context/` (graph + processor pipeline), `packages/core/src/scheduler/`, `packages/core/src/hooks/` (10 events, BeforeModel), `packages/core/src/routing/` (CompositeStrategy), `evals/` (dynamic baselines), `packages/core/src/skills/`, `packages/core/src/tools/mcp-client-manager.ts`
791
+ - `resources/goose/` — `README.md`, `crates/goose/src/providers/`, `crates/goose-mcp/src/` (70+ servers), `crates/goose/src/agents/extension_manager.rs`, `crates/goose/src/scheduler.rs`, `crates/goose/src/recipe/`, `crates/goose/src/plugins/`, `crates/goose/src/hooks/` (11 events)
792
+ - `resources/gpt-pilot/` — `README.md`, `pilot/` (step-based dev, TDD, BugHunter)
793
+ - `resources/hermes-agent/` — `README.md`, `AGENTS.md`, `tools/` (~95 tools, registry.py), `plugins/` (35 model-providers, kanban), `gateway/platforms/` (~30 channels), `cron/`, `mcp_serve.py`, `skills/`, `optional-skills/`, `agent/memory_manager.py`, `agent/context_compressor.py`
794
+ - `resources/kilocode/` — `README.md`, `packages/opencode/src/agent/`, `packages/opencode/src/permission/` (wildcard + merge), `packages/llm/src/route/` (4-axis), `packages/kilo-sandbox/` (profile), `packages/kilo-memory/src/` (remember/forget/recall), `packages/opencode/src/skill/`, `packages/opencode/src/mcp/`, `packages/opencode/src/worktree/`
795
+ - `resources/openclaude/` — `README.md`, `AGENTS.md`, `src/tools/` (~120 slash commands), `src/integrations/vendors/`, `gateways/`, `src/services/api/smartModelRouting.ts`, `src/coordinator/`, `src/services/mcp/` (InProcessTransport + OAuth), `src/context/repoMap/` (PageRank), `src/services/autoDream/`, `src/services/compact/`, `src/services/sandbox/`, `src/skills/`, `src/tools/LSPTool/`, `vscode-extension/`, `src/grpc/`
796
+ - `resources/openclaw/` — `README.md`, `VISION.md`, `src/`, `extensions/` (152), `skills/` (51), `src/plugin-sdk/` + `check-plugin-sdk-boundary.mjs`, `src/model-catalog/`, `src/model-fallback.ts`, `src/fleet/`, `src/memory/` + `extensions/memory-core/src/dreaming.ts`, `src/cron/`, `src/mcp/`, `src/agents/sandbox.ts`, `src/agents/auth-profiles.ts`, `src/secrets/` (SecretRef), `qa/scenarios/`
797
+ - `resources/opencode-dev/` — `README.md`, `packages/llm/src/route/` (4-axis), `packages/core/src/session/runner/llm.ts` (durable), `packages/core/src/session/input.ts` (steer/queue), `packages/core/src/session/compaction.ts` (structured summary), `packages/core/src/system-context/` (algebra), `packages/core/src/snapshot.ts` (content-addressed), `packages/plugin/src/index.ts` (12+ hooks), `packages/opencode/src/mcp/`, `packages/core/src/policy.ts` (IAM), `packages/core/src/skill/discovery.ts`, `packages/opencode/src/lsp/`
798
+ - `resources/OpenHands/` — `README.md`, `openhands/app_server/sandbox/` (Docker/local/remote/VM), `openhands/app_server/integrations/service_types.py` (ACP), `skills/` (trigger-based), `openhands/app_server/mcp/mcp_router.py` (server + proxy), `openhands/app_server/event/` (EventCallbackProcessor), `openhands/app_server/secrets/`, `openhands/app_server/settings/llm_profiles.py`
799
+ - `resources/SWE-agent/` — `README.md`, `docs/background/aci.md`, `tools/` (bundle system), `sweagent/tools/parsing.py` (11 strategies), `sweagent/agent/history_processors.py` (pipeline), `sweagent/environment/swe_env.py` (SWE-ReX sandbox), `sweagent/agent/reviewer.py` (retry loop), `sweagent/agent/hooks/` (3-layer)
800
+ - `resources/zero/zero-main/` — `README.md`, `docs/`, `internal/agent/loop.go`, `internal/agent/compaction.go` (proactive+reactive), `internal/sandbox/` (landlock/seccomp/seatbelt/Windows), `internal/swarm/` (mailbox), `internal/specialist/`, `internal/mcp/`, `internal/plugins/`, `internal/skills/`, `internal/hooks/`, `internal/sessions/`, `internal/cron/`, `internal/agent/selfcorrect.go`, `internal/agent/profile_controller.go` (adaptive), `internal/agent/completion_policy.go`, `internal/lsp/`, `internal/worktrees/`, `internal/agenteval/`, `internal/perfbench/`, `internal/credstore/`, `internal/keyring/`, `internal/redaction/`
801
+
802
+ **Companion documents:**
803
+
804
+ - `docs/reports/adoptable-features-master.md` — 16-repo feature-first synthesis (20 numbered features, per-repo comparison tables, "Recommended adoption" picks with rationale).
805
+ - `docs/reports/repos/*.md` — 16 individual repo inventories (source for this report's Section 3 snapshots and Section 5 evidence).
806
+ - `docs/AI Coding Agents Market Research.md` — Claude Code / Codex / Cursor / OpenCode competitive synthesis.
807
+
808
+ ---
809
+
810
+ *End of report.*