@burtson-labs/stealth-core-runtime 1.4.7

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 (415) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +46 -0
  3. package/dist/banditEngineProvider.d.ts +48 -0
  4. package/dist/banditEngineProvider.d.ts.map +1 -0
  5. package/dist/banditEngineProvider.js +1021 -0
  6. package/dist/banditEngineProvider.js.map +1 -0
  7. package/dist/embeddingCache.d.ts +23 -0
  8. package/dist/embeddingCache.d.ts.map +1 -0
  9. package/dist/embeddingCache.js +196 -0
  10. package/dist/embeddingCache.js.map +1 -0
  11. package/dist/embeddingClient.d.ts +35 -0
  12. package/dist/embeddingClient.d.ts.map +1 -0
  13. package/dist/embeddingClient.js +162 -0
  14. package/dist/embeddingClient.js.map +1 -0
  15. package/dist/executorAgent.d.ts +7 -0
  16. package/dist/executorAgent.d.ts.map +1 -0
  17. package/dist/executorAgent.js +95 -0
  18. package/dist/executorAgent.js.map +1 -0
  19. package/dist/extensionSystemPrompt.d.ts +80 -0
  20. package/dist/extensionSystemPrompt.d.ts.map +1 -0
  21. package/dist/extensionSystemPrompt.js +208 -0
  22. package/dist/extensionSystemPrompt.js.map +1 -0
  23. package/dist/gatewaySearchAdapter.d.ts +69 -0
  24. package/dist/gatewaySearchAdapter.d.ts.map +1 -0
  25. package/dist/gatewaySearchAdapter.js +131 -0
  26. package/dist/gatewaySearchAdapter.js.map +1 -0
  27. package/dist/goalInference.d.ts +26 -0
  28. package/dist/goalInference.d.ts.map +1 -0
  29. package/dist/goalInference.js +605 -0
  30. package/dist/goalInference.js.map +1 -0
  31. package/dist/hostTypes.d.ts +86 -0
  32. package/dist/hostTypes.d.ts.map +1 -0
  33. package/dist/hostTypes.js +3 -0
  34. package/dist/hostTypes.js.map +1 -0
  35. package/dist/index.d.ts +37 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +83 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/internalTypes.d.ts +16 -0
  40. package/dist/internalTypes.d.ts.map +1 -0
  41. package/dist/internalTypes.js +20 -0
  42. package/dist/internalTypes.js.map +1 -0
  43. package/dist/ollamaEmbeddingClient.d.ts +45 -0
  44. package/dist/ollamaEmbeddingClient.d.ts.map +1 -0
  45. package/dist/ollamaEmbeddingClient.js +143 -0
  46. package/dist/ollamaEmbeddingClient.js.map +1 -0
  47. package/dist/pdfjsShim.d.ts +2 -0
  48. package/dist/pdfjsShim.d.ts.map +1 -0
  49. package/dist/pdfjsShim.js +80 -0
  50. package/dist/pdfjsShim.js.map +1 -0
  51. package/dist/runtime/actionRuntime.d.ts +13 -0
  52. package/dist/runtime/actionRuntime.d.ts.map +1 -0
  53. package/dist/runtime/actionRuntime.js +15 -0
  54. package/dist/runtime/actionRuntime.js.map +1 -0
  55. package/dist/runtime/actionServices.d.ts +72 -0
  56. package/dist/runtime/actionServices.d.ts.map +1 -0
  57. package/dist/runtime/actionServices.js +53 -0
  58. package/dist/runtime/actionServices.js.map +1 -0
  59. package/dist/runtime/adapters/connectorBus.d.ts +9 -0
  60. package/dist/runtime/adapters/connectorBus.d.ts.map +1 -0
  61. package/dist/runtime/adapters/connectorBus.js +20 -0
  62. package/dist/runtime/adapters/connectorBus.js.map +1 -0
  63. package/dist/runtime/adapters/fsAdapter.d.ts +6 -0
  64. package/dist/runtime/adapters/fsAdapter.d.ts.map +1 -0
  65. package/dist/runtime/adapters/fsAdapter.js +144 -0
  66. package/dist/runtime/adapters/fsAdapter.js.map +1 -0
  67. package/dist/runtime/adapters/llmAdapter.d.ts +4 -0
  68. package/dist/runtime/adapters/llmAdapter.d.ts.map +1 -0
  69. package/dist/runtime/adapters/llmAdapter.js +12 -0
  70. package/dist/runtime/adapters/llmAdapter.js.map +1 -0
  71. package/dist/runtime/adapters/shellAdapter.d.ts +6 -0
  72. package/dist/runtime/adapters/shellAdapter.d.ts.map +1 -0
  73. package/dist/runtime/adapters/shellAdapter.js +118 -0
  74. package/dist/runtime/adapters/shellAdapter.js.map +1 -0
  75. package/dist/runtime/additionalWrites.d.ts +22 -0
  76. package/dist/runtime/additionalWrites.d.ts.map +1 -0
  77. package/dist/runtime/additionalWrites.js +148 -0
  78. package/dist/runtime/additionalWrites.js.map +1 -0
  79. package/dist/runtime/artifactManager.d.ts +32 -0
  80. package/dist/runtime/artifactManager.d.ts.map +1 -0
  81. package/dist/runtime/artifactManager.js +154 -0
  82. package/dist/runtime/artifactManager.js.map +1 -0
  83. package/dist/runtime/autoHealer.d.ts +27 -0
  84. package/dist/runtime/autoHealer.d.ts.map +1 -0
  85. package/dist/runtime/autoHealer.js +583 -0
  86. package/dist/runtime/autoHealer.js.map +1 -0
  87. package/dist/runtime/changeTracker.d.ts +20 -0
  88. package/dist/runtime/changeTracker.d.ts.map +1 -0
  89. package/dist/runtime/changeTracker.js +147 -0
  90. package/dist/runtime/changeTracker.js.map +1 -0
  91. package/dist/runtime/contextBuilder.d.ts +85 -0
  92. package/dist/runtime/contextBuilder.d.ts.map +1 -0
  93. package/dist/runtime/contextBuilder.js +159 -0
  94. package/dist/runtime/contextBuilder.js.map +1 -0
  95. package/dist/runtime/coreRuntime.d.ts +7 -0
  96. package/dist/runtime/coreRuntime.d.ts.map +1 -0
  97. package/dist/runtime/coreRuntime.js +173 -0
  98. package/dist/runtime/coreRuntime.js.map +1 -0
  99. package/dist/runtime/createStealthRuntime.d.ts +4 -0
  100. package/dist/runtime/createStealthRuntime.d.ts.map +1 -0
  101. package/dist/runtime/createStealthRuntime.js +514 -0
  102. package/dist/runtime/createStealthRuntime.js.map +1 -0
  103. package/dist/runtime/diagnostics.d.ts +53 -0
  104. package/dist/runtime/diagnostics.d.ts.map +1 -0
  105. package/dist/runtime/diagnostics.js +396 -0
  106. package/dist/runtime/diagnostics.js.map +1 -0
  107. package/dist/runtime/diagnosticsServices.d.ts +51 -0
  108. package/dist/runtime/diagnosticsServices.d.ts.map +1 -0
  109. package/dist/runtime/diagnosticsServices.js +46 -0
  110. package/dist/runtime/diagnosticsServices.js.map +1 -0
  111. package/dist/runtime/diffManager.d.ts +20 -0
  112. package/dist/runtime/diffManager.d.ts.map +1 -0
  113. package/dist/runtime/diffManager.js +172 -0
  114. package/dist/runtime/diffManager.js.map +1 -0
  115. package/dist/runtime/diffPresenter.d.ts +8 -0
  116. package/dist/runtime/diffPresenter.d.ts.map +1 -0
  117. package/dist/runtime/diffPresenter.js +57 -0
  118. package/dist/runtime/diffPresenter.js.map +1 -0
  119. package/dist/runtime/embeddingClientResolver.d.ts +14 -0
  120. package/dist/runtime/embeddingClientResolver.d.ts.map +1 -0
  121. package/dist/runtime/embeddingClientResolver.js +54 -0
  122. package/dist/runtime/embeddingClientResolver.js.map +1 -0
  123. package/dist/runtime/embeddingManager.d.ts +22 -0
  124. package/dist/runtime/embeddingManager.d.ts.map +1 -0
  125. package/dist/runtime/embeddingManager.js +224 -0
  126. package/dist/runtime/embeddingManager.js.map +1 -0
  127. package/dist/runtime/eventBus.d.ts +7 -0
  128. package/dist/runtime/eventBus.d.ts.map +1 -0
  129. package/dist/runtime/eventBus.js +28 -0
  130. package/dist/runtime/eventBus.js.map +1 -0
  131. package/dist/runtime/executorServices.d.ts +46 -0
  132. package/dist/runtime/executorServices.d.ts.map +1 -0
  133. package/dist/runtime/executorServices.js +47 -0
  134. package/dist/runtime/executorServices.js.map +1 -0
  135. package/dist/runtime/extractionService.d.ts +11 -0
  136. package/dist/runtime/extractionService.d.ts.map +1 -0
  137. package/dist/runtime/extractionService.js +282 -0
  138. package/dist/runtime/extractionService.js.map +1 -0
  139. package/dist/runtime/feedbackService.d.ts +12 -0
  140. package/dist/runtime/feedbackService.d.ts.map +1 -0
  141. package/dist/runtime/feedbackService.js +111 -0
  142. package/dist/runtime/feedbackService.js.map +1 -0
  143. package/dist/runtime/goalEngine.d.ts +10 -0
  144. package/dist/runtime/goalEngine.d.ts.map +1 -0
  145. package/dist/runtime/goalEngine.js +429 -0
  146. package/dist/runtime/goalEngine.js.map +1 -0
  147. package/dist/runtime/goalFlowServices.d.ts +49 -0
  148. package/dist/runtime/goalFlowServices.d.ts.map +1 -0
  149. package/dist/runtime/goalFlowServices.js +45 -0
  150. package/dist/runtime/goalFlowServices.js.map +1 -0
  151. package/dist/runtime/goalReplay.d.ts +33 -0
  152. package/dist/runtime/goalReplay.d.ts.map +1 -0
  153. package/dist/runtime/goalReplay.js +58 -0
  154. package/dist/runtime/goalReplay.js.map +1 -0
  155. package/dist/runtime/goalRunner.d.ts +35 -0
  156. package/dist/runtime/goalRunner.d.ts.map +1 -0
  157. package/dist/runtime/goalRunner.js +42 -0
  158. package/dist/runtime/goalRunner.js.map +1 -0
  159. package/dist/runtime/healingEngine.d.ts +72 -0
  160. package/dist/runtime/healingEngine.d.ts.map +1 -0
  161. package/dist/runtime/healingEngine.js +969 -0
  162. package/dist/runtime/healingEngine.js.map +1 -0
  163. package/dist/runtime/healingServices.d.ts +62 -0
  164. package/dist/runtime/healingServices.d.ts.map +1 -0
  165. package/dist/runtime/healingServices.js +45 -0
  166. package/dist/runtime/healingServices.js.map +1 -0
  167. package/dist/runtime/helpers.d.ts +22 -0
  168. package/dist/runtime/helpers.d.ts.map +1 -0
  169. package/dist/runtime/helpers.js +694 -0
  170. package/dist/runtime/helpers.js.map +1 -0
  171. package/dist/runtime/hosts/actionHost.d.ts +82 -0
  172. package/dist/runtime/hosts/actionHost.d.ts.map +1 -0
  173. package/dist/runtime/hosts/actionHost.js +61 -0
  174. package/dist/runtime/hosts/actionHost.js.map +1 -0
  175. package/dist/runtime/hosts/baseServices.d.ts +51 -0
  176. package/dist/runtime/hosts/baseServices.d.ts.map +1 -0
  177. package/dist/runtime/hosts/baseServices.js +73 -0
  178. package/dist/runtime/hosts/baseServices.js.map +1 -0
  179. package/dist/runtime/hosts/embeddingServices.d.ts +25 -0
  180. package/dist/runtime/hosts/embeddingServices.d.ts.map +1 -0
  181. package/dist/runtime/hosts/embeddingServices.js +34 -0
  182. package/dist/runtime/hosts/embeddingServices.js.map +1 -0
  183. package/dist/runtime/hosts/goalFlowHost.d.ts +34 -0
  184. package/dist/runtime/hosts/goalFlowHost.d.ts.map +1 -0
  185. package/dist/runtime/hosts/goalFlowHost.js +35 -0
  186. package/dist/runtime/hosts/goalFlowHost.js.map +1 -0
  187. package/dist/runtime/hosts/goalFlowRuntime.d.ts +41 -0
  188. package/dist/runtime/hosts/goalFlowRuntime.d.ts.map +1 -0
  189. package/dist/runtime/hosts/goalFlowRuntime.js +31 -0
  190. package/dist/runtime/hosts/goalFlowRuntime.js.map +1 -0
  191. package/dist/runtime/hosts/providerHost.d.ts +19 -0
  192. package/dist/runtime/hosts/providerHost.d.ts.map +1 -0
  193. package/dist/runtime/hosts/providerHost.js +18 -0
  194. package/dist/runtime/hosts/providerHost.js.map +1 -0
  195. package/dist/runtime/hosts/rewriteHost.d.ts +84 -0
  196. package/dist/runtime/hosts/rewriteHost.d.ts.map +1 -0
  197. package/dist/runtime/hosts/rewriteHost.js +64 -0
  198. package/dist/runtime/hosts/rewriteHost.js.map +1 -0
  199. package/dist/runtime/hosts/workspaceHost.d.ts +113 -0
  200. package/dist/runtime/hosts/workspaceHost.d.ts.map +1 -0
  201. package/dist/runtime/hosts/workspaceHost.js +76 -0
  202. package/dist/runtime/hosts/workspaceHost.js.map +1 -0
  203. package/dist/runtime/index.d.ts +78 -0
  204. package/dist/runtime/index.d.ts.map +1 -0
  205. package/dist/runtime/index.js +95 -0
  206. package/dist/runtime/index.js.map +1 -0
  207. package/dist/runtime/insight.d.ts +16 -0
  208. package/dist/runtime/insight.d.ts.map +1 -0
  209. package/dist/runtime/insight.js +11 -0
  210. package/dist/runtime/insight.js.map +1 -0
  211. package/dist/runtime/internalActions.d.ts +16 -0
  212. package/dist/runtime/internalActions.d.ts.map +1 -0
  213. package/dist/runtime/internalActions.js +302 -0
  214. package/dist/runtime/internalActions.js.map +1 -0
  215. package/dist/runtime/modelBehavior.d.ts +69 -0
  216. package/dist/runtime/modelBehavior.d.ts.map +1 -0
  217. package/dist/runtime/modelBehavior.js +514 -0
  218. package/dist/runtime/modelBehavior.js.map +1 -0
  219. package/dist/runtime/modelCapabilities.d.ts +139 -0
  220. package/dist/runtime/modelCapabilities.d.ts.map +1 -0
  221. package/dist/runtime/modelCapabilities.js +458 -0
  222. package/dist/runtime/modelCapabilities.js.map +1 -0
  223. package/dist/runtime/modelsDevCatalog.d.ts +34 -0
  224. package/dist/runtime/modelsDevCatalog.d.ts.map +1 -0
  225. package/dist/runtime/modelsDevCatalog.js +263 -0
  226. package/dist/runtime/modelsDevCatalog.js.map +1 -0
  227. package/dist/runtime/pendingInference.d.ts +18 -0
  228. package/dist/runtime/pendingInference.d.ts.map +1 -0
  229. package/dist/runtime/pendingInference.js +121 -0
  230. package/dist/runtime/pendingInference.js.map +1 -0
  231. package/dist/runtime/persistence.d.ts +21 -0
  232. package/dist/runtime/persistence.d.ts.map +1 -0
  233. package/dist/runtime/persistence.js +73 -0
  234. package/dist/runtime/persistence.js.map +1 -0
  235. package/dist/runtime/planContext.d.ts +42 -0
  236. package/dist/runtime/planContext.d.ts.map +1 -0
  237. package/dist/runtime/planContext.js +246 -0
  238. package/dist/runtime/planContext.js.map +1 -0
  239. package/dist/runtime/planGenerator.d.ts +21 -0
  240. package/dist/runtime/planGenerator.d.ts.map +1 -0
  241. package/dist/runtime/planGenerator.js +89 -0
  242. package/dist/runtime/planGenerator.js.map +1 -0
  243. package/dist/runtime/planPreparation.d.ts +64 -0
  244. package/dist/runtime/planPreparation.d.ts.map +1 -0
  245. package/dist/runtime/planPreparation.js +173 -0
  246. package/dist/runtime/planPreparation.js.map +1 -0
  247. package/dist/runtime/projectSummary.d.ts +3 -0
  248. package/dist/runtime/projectSummary.d.ts.map +1 -0
  249. package/dist/runtime/projectSummary.js +42 -0
  250. package/dist/runtime/projectSummary.js.map +1 -0
  251. package/dist/runtime/providerSettings.d.ts +28 -0
  252. package/dist/runtime/providerSettings.d.ts.map +1 -0
  253. package/dist/runtime/providerSettings.js +93 -0
  254. package/dist/runtime/providerSettings.js.map +1 -0
  255. package/dist/runtime/pythonActions.d.ts +78 -0
  256. package/dist/runtime/pythonActions.d.ts.map +1 -0
  257. package/dist/runtime/pythonActions.js +392 -0
  258. package/dist/runtime/pythonActions.js.map +1 -0
  259. package/dist/runtime/pythonBridge.d.ts +13 -0
  260. package/dist/runtime/pythonBridge.d.ts.map +1 -0
  261. package/dist/runtime/pythonBridge.js +117 -0
  262. package/dist/runtime/pythonBridge.js.map +1 -0
  263. package/dist/runtime/rewriteEngine.d.ts +46 -0
  264. package/dist/runtime/rewriteEngine.d.ts.map +1 -0
  265. package/dist/runtime/rewriteEngine.js +259 -0
  266. package/dist/runtime/rewriteEngine.js.map +1 -0
  267. package/dist/runtime/rewriteGenerator.d.ts +29 -0
  268. package/dist/runtime/rewriteGenerator.d.ts.map +1 -0
  269. package/dist/runtime/rewriteGenerator.js +1527 -0
  270. package/dist/runtime/rewriteGenerator.js.map +1 -0
  271. package/dist/runtime/rewriteHydration.d.ts +22 -0
  272. package/dist/runtime/rewriteHydration.d.ts.map +1 -0
  273. package/dist/runtime/rewriteHydration.js +265 -0
  274. package/dist/runtime/rewriteHydration.js.map +1 -0
  275. package/dist/runtime/rewriteOrchestration.d.ts +105 -0
  276. package/dist/runtime/rewriteOrchestration.d.ts.map +1 -0
  277. package/dist/runtime/rewriteOrchestration.js +130 -0
  278. package/dist/runtime/rewriteOrchestration.js.map +1 -0
  279. package/dist/runtime/rewritePayload.d.ts +18 -0
  280. package/dist/runtime/rewritePayload.d.ts.map +1 -0
  281. package/dist/runtime/rewritePayload.js +166 -0
  282. package/dist/runtime/rewritePayload.js.map +1 -0
  283. package/dist/runtime/rewriteRuntime.d.ts +13 -0
  284. package/dist/runtime/rewriteRuntime.d.ts.map +1 -0
  285. package/dist/runtime/rewriteRuntime.js +21 -0
  286. package/dist/runtime/rewriteRuntime.js.map +1 -0
  287. package/dist/runtime/rewriteServices.d.ts +70 -0
  288. package/dist/runtime/rewriteServices.d.ts.map +1 -0
  289. package/dist/runtime/rewriteServices.js +50 -0
  290. package/dist/runtime/rewriteServices.js.map +1 -0
  291. package/dist/runtime/runtimeHelpers.d.ts +9 -0
  292. package/dist/runtime/runtimeHelpers.d.ts.map +1 -0
  293. package/dist/runtime/runtimeHelpers.js +86 -0
  294. package/dist/runtime/runtimeHelpers.js.map +1 -0
  295. package/dist/runtime/sessionData.d.ts +4 -0
  296. package/dist/runtime/sessionData.d.ts.map +1 -0
  297. package/dist/runtime/sessionData.js +45 -0
  298. package/dist/runtime/sessionData.js.map +1 -0
  299. package/dist/runtime/sessionRuntime.d.ts +47 -0
  300. package/dist/runtime/sessionRuntime.d.ts.map +1 -0
  301. package/dist/runtime/sessionRuntime.js +128 -0
  302. package/dist/runtime/sessionRuntime.js.map +1 -0
  303. package/dist/runtime/stealthRuntimeTypes.d.ts +12 -0
  304. package/dist/runtime/stealthRuntimeTypes.d.ts.map +1 -0
  305. package/dist/runtime/stealthRuntimeTypes.js +3 -0
  306. package/dist/runtime/stealthRuntimeTypes.js.map +1 -0
  307. package/dist/runtime/stepExecutor.d.ts +22 -0
  308. package/dist/runtime/stepExecutor.d.ts.map +1 -0
  309. package/dist/runtime/stepExecutor.js +83 -0
  310. package/dist/runtime/stepExecutor.js.map +1 -0
  311. package/dist/runtime/stepLifecycle.d.ts +29 -0
  312. package/dist/runtime/stepLifecycle.d.ts.map +1 -0
  313. package/dist/runtime/stepLifecycle.js +122 -0
  314. package/dist/runtime/stepLifecycle.js.map +1 -0
  315. package/dist/runtime/stepMetadata.d.ts +6 -0
  316. package/dist/runtime/stepMetadata.d.ts.map +1 -0
  317. package/dist/runtime/stepMetadata.js +87 -0
  318. package/dist/runtime/stepMetadata.js.map +1 -0
  319. package/dist/runtime/taskQueue.d.ts +16 -0
  320. package/dist/runtime/taskQueue.d.ts.map +1 -0
  321. package/dist/runtime/taskQueue.js +103 -0
  322. package/dist/runtime/taskQueue.js.map +1 -0
  323. package/dist/runtime/telemetry.d.ts +6 -0
  324. package/dist/runtime/telemetry.d.ts.map +1 -0
  325. package/dist/runtime/telemetry.js +42 -0
  326. package/dist/runtime/telemetry.js.map +1 -0
  327. package/dist/runtime/telemetryHub.d.ts +61 -0
  328. package/dist/runtime/telemetryHub.d.ts.map +1 -0
  329. package/dist/runtime/telemetryHub.js +190 -0
  330. package/dist/runtime/telemetryHub.js.map +1 -0
  331. package/dist/runtime/textSanitizer.d.ts +4 -0
  332. package/dist/runtime/textSanitizer.d.ts.map +1 -0
  333. package/dist/runtime/textSanitizer.js +86 -0
  334. package/dist/runtime/textSanitizer.js.map +1 -0
  335. package/dist/runtime/typeCheckRunner.d.ts +33 -0
  336. package/dist/runtime/typeCheckRunner.d.ts.map +1 -0
  337. package/dist/runtime/typeCheckRunner.js +357 -0
  338. package/dist/runtime/typeCheckRunner.js.map +1 -0
  339. package/dist/runtime/types.d.ts +334 -0
  340. package/dist/runtime/types.d.ts.map +1 -0
  341. package/dist/runtime/types.js +3 -0
  342. package/dist/runtime/types.js.map +1 -0
  343. package/dist/runtime/typescriptValidator.d.ts +18 -0
  344. package/dist/runtime/typescriptValidator.d.ts.map +1 -0
  345. package/dist/runtime/typescriptValidator.js +363 -0
  346. package/dist/runtime/typescriptValidator.js.map +1 -0
  347. package/dist/runtime/undoManager.d.ts +7 -0
  348. package/dist/runtime/undoManager.d.ts.map +1 -0
  349. package/dist/runtime/undoManager.js +56 -0
  350. package/dist/runtime/undoManager.js.map +1 -0
  351. package/dist/runtime/validationController.d.ts +11 -0
  352. package/dist/runtime/validationController.d.ts.map +1 -0
  353. package/dist/runtime/validationController.js +29 -0
  354. package/dist/runtime/validationController.js.map +1 -0
  355. package/dist/runtime/validationUtils.d.ts +17 -0
  356. package/dist/runtime/validationUtils.d.ts.map +1 -0
  357. package/dist/runtime/validationUtils.js +121 -0
  358. package/dist/runtime/validationUtils.js.map +1 -0
  359. package/dist/runtime/workspaceAssertions.d.ts +21 -0
  360. package/dist/runtime/workspaceAssertions.d.ts.map +1 -0
  361. package/dist/runtime/workspaceAssertions.js +183 -0
  362. package/dist/runtime/workspaceAssertions.js.map +1 -0
  363. package/dist/runtime/workspaceIndexService.d.ts +24 -0
  364. package/dist/runtime/workspaceIndexService.d.ts.map +1 -0
  365. package/dist/runtime/workspaceIndexService.js +133 -0
  366. package/dist/runtime/workspaceIndexService.js.map +1 -0
  367. package/dist/runtime/workspaceIndexer.d.ts +21 -0
  368. package/dist/runtime/workspaceIndexer.d.ts.map +1 -0
  369. package/dist/runtime/workspaceIndexer.js +95 -0
  370. package/dist/runtime/workspaceIndexer.js.map +1 -0
  371. package/dist/runtime/workspacePackages.d.ts +22 -0
  372. package/dist/runtime/workspacePackages.d.ts.map +1 -0
  373. package/dist/runtime/workspacePackages.js +198 -0
  374. package/dist/runtime/workspacePackages.js.map +1 -0
  375. package/dist/runtime/workspaceRuntime.d.ts +58 -0
  376. package/dist/runtime/workspaceRuntime.d.ts.map +1 -0
  377. package/dist/runtime/workspaceRuntime.js +86 -0
  378. package/dist/runtime/workspaceRuntime.js.map +1 -0
  379. package/dist/runtime/workspaceService.d.ts +14 -0
  380. package/dist/runtime/workspaceService.d.ts.map +1 -0
  381. package/dist/runtime/workspaceService.js +88 -0
  382. package/dist/runtime/workspaceService.js.map +1 -0
  383. package/dist/runtime/workspaceServices.d.ts +114 -0
  384. package/dist/runtime/workspaceServices.d.ts.map +1 -0
  385. package/dist/runtime/workspaceServices.js +114 -0
  386. package/dist/runtime/workspaceServices.js.map +1 -0
  387. package/dist/runtime/writeServices.d.ts +34 -0
  388. package/dist/runtime/writeServices.d.ts.map +1 -0
  389. package/dist/runtime/writeServices.js +32 -0
  390. package/dist/runtime/writeServices.js.map +1 -0
  391. package/dist/sharedPromptSections.d.ts +58 -0
  392. package/dist/sharedPromptSections.d.ts.map +1 -0
  393. package/dist/sharedPromptSections.js +94 -0
  394. package/dist/sharedPromptSections.js.map +1 -0
  395. package/dist/statusTypes.d.ts +13 -0
  396. package/dist/statusTypes.d.ts.map +1 -0
  397. package/dist/statusTypes.js +3 -0
  398. package/dist/statusTypes.js.map +1 -0
  399. package/dist/streamIdleTimeout.d.ts +38 -0
  400. package/dist/streamIdleTimeout.d.ts.map +1 -0
  401. package/dist/streamIdleTimeout.js +44 -0
  402. package/dist/streamIdleTimeout.js.map +1 -0
  403. package/dist/types/bandit.d.ts +113 -0
  404. package/dist/types/bandit.d.ts.map +1 -0
  405. package/dist/types/bandit.js +3 -0
  406. package/dist/types/bandit.js.map +1 -0
  407. package/dist/types.d.ts +152 -0
  408. package/dist/types.d.ts.map +1 -0
  409. package/dist/types.js +3 -0
  410. package/dist/types.js.map +1 -0
  411. package/dist/workspaceIndex.d.ts +44 -0
  412. package/dist/workspaceIndex.d.ts.map +1 -0
  413. package/dist/workspaceIndex.js +258 -0
  414. package/dist/workspaceIndex.js.map +1 -0
  415. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCapabilities.d.ts","sourceRoot":"","sources":["../../src/runtime/modelCapabilities.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAC;IAChB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkOD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAExF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAWvE;AAeD;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA2CnC;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;oCAGgC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;wEAKoE;IACpE,WAAW,EAAE,OAAO,CAAC;IACrB;uEACmE;IACnE,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAuC7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAGrE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAOpE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CA+CjF"}
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerModelCapabilities = registerModelCapabilities;
4
+ exports.getModelCapabilities = getModelCapabilities;
5
+ exports.queryOllamaModelCapabilities = queryOllamaModelCapabilities;
6
+ exports.checkOllamaLoadedContext = checkOllamaLoadedContext;
7
+ exports.getContextFileLimit = getContextFileLimit;
8
+ exports.getContextTokenBudget = getContextTokenBudget;
9
+ exports.getOutputTokenBudget = getOutputTokenBudget;
10
+ exports.resolveOllamaRuntimeOptions = resolveOllamaRuntimeOptions;
11
+ const modelBehavior_1 = require("./modelBehavior");
12
+ /**
13
+ * Confirmed model inventory as of April 2026.
14
+ *
15
+ * Mac local (localhost:11434):
16
+ * bandit-core:4b/12b-it-qat, gemma3:4b/12b-it-qat, llama3.1, nomic-embed-text
17
+ *
18
+ * RTX 5090 node (ollamaNodeUrl):
19
+ * gemma4:31b, bandit-core:27b-it-qat, gemma3:27b-it-qat, qwen2.5:7b,
20
+ * deepseek-coder:6.7b, llama3 (NOT 3.1 — 8k ctx), nomic-embed-text
21
+ */
22
+ const BUILT_IN_PROFILES = [
23
+ // ── bandit-core fine-tuned variants (text + code only, no vision) ─────────
24
+ {
25
+ prefix: 'bandit-core:4b',
26
+ caps: { contextWindow: 8192, supportsJsonMode: true, supportsToolCalling: false, supportsVision: false, tier: 'small', label: 'Bandit Core 4B' }
27
+ },
28
+ // flipped supportsToolCalling on the Gemma-3-derived
29
+ // bandit-core variants ≥12B. Without it, the loop's `nativeTools`
30
+ // gate at extension.ts:3445 short-circuits and the model gets only
31
+ // the system prompt's XML tool-call instructions, which Gemma 3 does
32
+ // not reliably emit (the `<tool_call>{...}</tool_call>` envelope is
33
+ // a Qwen-flavored convention not in Gemma's training distribution).
34
+ // Result bandit-core-1 produced prose only on a
35
+ // self-eval, zero tool calls. Modern Ollama serves Gemma 3 ≥12B with
36
+ // a tool-calling chat template; the cloud path's serializeBanditPayload
37
+ // already forwards tools through to upstream Ollama. 4B stays off
38
+ // because tool calling is unreliable on small Gemmas.
39
+ {
40
+ prefix: 'bandit-core:12b',
41
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Bandit Core 12B' }
42
+ },
43
+ {
44
+ prefix: 'bandit-core:27b',
45
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Bandit Core 27B' }
46
+ },
47
+ {
48
+ prefix: 'bandit-core:31b',
49
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Bandit Core 31B' }
50
+ },
51
+ // Hosted bandit models (via GatewayApi / api.burtson.ai)
52
+ {
53
+ prefix: 'bandit-core-1',
54
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Bandit Core (hosted, 31B)' }
55
+ },
56
+ {
57
+ prefix: 'bandit-core-2',
58
+ caps: { contextWindow: 131072, supportsJsonMode: false, supportsToolCalling: false, supportsVision: false, tier: 'large', label: 'Bandit Core 2 (RunPod 70B)' }
59
+ },
60
+ {
61
+ // Gateway alias for Qwen 3.6 27B (repoint from Qwen 2.5 Coder 32B
62
+ // 2026-04-23 — 2.5 Coder is a code-completion tune, 3.6 is
63
+ // explicitly agent-trained with 256K context and native multimodal).
64
+ // Native tool calling is the whole reason we expose it — the
65
+ // capability profile here must match the underlying model, not
66
+ // bandit-core-1's text-path profile.
67
+ prefix: 'bandit-logic',
68
+ caps: { contextWindow: 262144, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Bandit Logic (Qwen 3.6 27B)' }
69
+ },
70
+ // ── gemma3 — vision capable (all sizes) ──────────────────────────────────
71
+ // gemma3 supports image input via Ollama's `images: string[]` field.
72
+ // Mac local: gemma3:4b, gemma3:12b-it-qat. RTX 5090 node: gemma3:27b-it-qat.
73
+ // These are the primary vision models — no additional pull needed.
74
+ {
75
+ prefix: 'gemma3:4b',
76
+ caps: { contextWindow: 8192, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'small', label: 'Gemma 3 4B' }
77
+ },
78
+ {
79
+ prefix: 'gemma3:12b',
80
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'medium', label: 'Gemma 3 12B' }
81
+ },
82
+ {
83
+ prefix: 'gemma3:27b',
84
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'medium', label: 'Gemma 3 27B' }
85
+ },
86
+ // ── gemma4 — enhanced vision + 128k context (all sizes) ──────────────────
87
+ // Most-specific prefixes win (longer prefix matched first). The
88
+ // `e2b` / `e4b` variants are "effective" parameter-count tunes that
89
+ // sit at the small-tier boundary — that bare
90
+ // `gemma4:e4b` was being mis-routed to `large` by the catchall
91
+ // below, getting num_ctx=32768 and outputBudgetTokens=8192 on a 4B
92
+ // model. The agent then wandered on open-ended creative asks
93
+ // ("add visual flare") and never committed to a tool call. These
94
+ // explicit small-tier profiles fix that without affecting the 26B+
95
+ // sizes.
96
+ {
97
+ prefix: 'gemma4:e2b',
98
+ caps: { contextWindow: 16384, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'small', label: 'Gemma 4 e2B' }
99
+ },
100
+ {
101
+ prefix: 'gemma4:e4b',
102
+ caps: { contextWindow: 16384, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'small', label: 'Gemma 4 e4B' }
103
+ },
104
+ {
105
+ prefix: 'gemma4:31b',
106
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Gemma 4 31B' }
107
+ },
108
+ {
109
+ prefix: 'gemma4:26b',
110
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'medium', label: 'Gemma 4 26B' }
111
+ },
112
+ {
113
+ // Catchall for unknown gemma4 sizes. Defaults to `medium` rather
114
+ // than `large` — the previous `large` default flagged any
115
+ // unrecognised size (including the 4B effective tune above
116
+ // before its explicit profile was added) into the heaviest
117
+ // budget. Medium is a safer guess; explicit large variants
118
+ // (31b+) match their own prefix above first.
119
+ prefix: 'gemma4',
120
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'medium', label: 'Gemma 4' }
121
+ },
122
+ // ── Llama 3.x (text only) ─────────────────────────────────────────────────
123
+ {
124
+ prefix: 'llama3.2-vision',
125
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: false, supportsVision: true, tier: 'medium', label: 'Llama 3.2 Vision' }
126
+ },
127
+ {
128
+ prefix: 'llama3.1',
129
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Llama 3.1' }
130
+ },
131
+ {
132
+ prefix: 'llama3',
133
+ caps: { contextWindow: 8192, supportsJsonMode: true, supportsToolCalling: false, supportsVision: false, tier: 'small', label: 'Llama 3' }
134
+ },
135
+ // ── Qwen 3.6 — agent-trained, vision-capable, 256K context ───────────────
136
+ // Released April 2026 with explicit focus on "agentic coding" and
137
+ // "repository-level reasoning" — a genuine upgrade over Qwen 2.5 Coder
138
+ // for tool-use workflows (2.5 Coder is a code-completion tune, not an
139
+ // agent tune). 27B fits RTX 5090 at ~17GB + ample KV room; 35B is
140
+ // tighter (~24GB + trim KV). Multimodal: image paste should go through
141
+ // native vision rather than falling back to OCR.
142
+ {
143
+ prefix: 'qwen3.6:35b',
144
+ caps: { contextWindow: 262144, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Qwen 3.6 35B' }
145
+ },
146
+ {
147
+ prefix: 'qwen3.6:27b',
148
+ caps: { contextWindow: 262144, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Qwen 3.6 27B' }
149
+ },
150
+ {
151
+ prefix: 'qwen3.6',
152
+ caps: { contextWindow: 262144, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'large', label: 'Qwen 3.6' }
153
+ },
154
+ // ── Qwen 2.5 Coder (text + code, no vision) ───────────────────────────────
155
+ // Most specific prefixes first (longer match wins before shorter prefix).
156
+ {
157
+ prefix: 'qwen2.5-coder:72b',
158
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'large', label: 'Qwen 2.5 Coder 72B' }
159
+ },
160
+ {
161
+ prefix: 'qwen2.5-coder:32b',
162
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'large', label: 'Qwen 2.5 Coder 32B' }
163
+ },
164
+ {
165
+ prefix: 'qwen2.5-coder:14b',
166
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Qwen 2.5 Coder 14B' }
167
+ },
168
+ {
169
+ prefix: 'qwen2.5-coder',
170
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Qwen 2.5 Coder' }
171
+ },
172
+ // ── Qwen 2.5 Vision (VL variants) — supportsVision ───────────────────────
173
+ {
174
+ prefix: 'qwen2.5vl',
175
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'medium', label: 'Qwen 2.5 VL' }
176
+ },
177
+ {
178
+ prefix: 'qwen2-vl',
179
+ caps: { contextWindow: 32768, supportsJsonMode: true, supportsToolCalling: true, supportsVision: true, tier: 'medium', label: 'Qwen 2 VL' }
180
+ },
181
+ // ── Qwen 2.5 base (non-coder, non-VL) — text only ────────────────────────
182
+ // qwen2.5:7b confirmed on RTX 5090 node. Not a vision model.
183
+ {
184
+ prefix: 'qwen2.5:72b',
185
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'large', label: 'Qwen 2.5 72B' }
186
+ },
187
+ {
188
+ prefix: 'qwen2.5:32b',
189
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'large', label: 'Qwen 2.5 32B' }
190
+ },
191
+ {
192
+ prefix: 'qwen2.5',
193
+ caps: { contextWindow: 131072, supportsJsonMode: true, supportsToolCalling: true, supportsVision: false, tier: 'medium', label: 'Qwen 2.5' }
194
+ },
195
+ // ── LLaVA — dedicated vision models (optional pull) ──────────────────────
196
+ {
197
+ prefix: 'llava',
198
+ caps: { contextWindow: 4096, supportsJsonMode: false, supportsToolCalling: false, supportsVision: true, tier: 'small', label: 'LLaVA' }
199
+ },
200
+ // ── Small / fast ─────────────────────────────────────────────────────────
201
+ {
202
+ prefix: 'deepseek-coder:6.7b',
203
+ caps: { contextWindow: 16384, supportsJsonMode: true, supportsToolCalling: false, supportsVision: false, tier: 'small', label: 'DeepSeek Coder 6.7B' }
204
+ },
205
+ ];
206
+ const DEFAULT_CAPABILITIES = {
207
+ contextWindow: 8192,
208
+ supportsJsonMode: false,
209
+ supportsToolCalling: false,
210
+ supportsVision: false,
211
+ tier: 'small'
212
+ };
213
+ /**
214
+ * Runtime cache for dynamically discovered model capabilities (e.g. Ollama /api/show).
215
+ * Used ONLY when no built-in profile matches the model ID. Built-in profiles are
216
+ * hand-tuned (correct `supportsToolCalling`, `tier`, etc.); the auto-detector
217
+ * can only infer tier and context-window safely. Letting the cache override
218
+ * built-ins silently downgraded every known model the moment auto-detection
219
+ * ran at boot — bandit-logic lost its `supportsToolCalling: true`, nativeTools
220
+ * gated off, tools were never sent to Ollama, the qwen3.5 parser EOF'd on
221
+ * text-envelope output, and the fallback couldn't recover.
222
+ */
223
+ const runtimeCapabilitiesCache = new Map();
224
+ /**
225
+ * Register runtime-discovered capabilities for a model ID. Only takes effect
226
+ * when getModelCapabilities() finds no built-in match — explicit profiles win.
227
+ */
228
+ function registerModelCapabilities(modelId, caps) {
229
+ if (modelId)
230
+ runtimeCapabilitiesCache.set(modelId.toLowerCase(), caps);
231
+ }
232
+ /**
233
+ * Returns capability profile for a given model ID.
234
+ * Check order: (1) built-in prefix profiles, (2) runtime cache, (3) default.
235
+ */
236
+ function getModelCapabilities(modelId) {
237
+ if (!modelId)
238
+ return DEFAULT_CAPABILITIES;
239
+ const lower = modelId.toLowerCase();
240
+ for (const { prefix, caps } of BUILT_IN_PROFILES) {
241
+ if (lower.startsWith(prefix.toLowerCase())) {
242
+ return caps;
243
+ }
244
+ }
245
+ const cached = runtimeCapabilitiesCache.get(lower);
246
+ if (cached)
247
+ return cached;
248
+ return DEFAULT_CAPABILITIES;
249
+ }
250
+ /**
251
+ * Derives a model tier from a parameter-size string returned by Ollama /api/show.
252
+ * Examples: "4B" → small, "8B" / "12B" / "27B" → medium, "70B" / "72B" → large.
253
+ */
254
+ function deriveTierFromParamSize(paramSize) {
255
+ const match = paramSize.match(/(\d+(?:\.\d+)?)\s*[Bb]/);
256
+ if (!match)
257
+ return 'small';
258
+ const billions = parseFloat(match[1]);
259
+ if (billions <= 5)
260
+ return 'small';
261
+ if (billions <= 35)
262
+ return 'medium';
263
+ return 'large';
264
+ }
265
+ /**
266
+ * Queries Ollama /api/show to auto-detect capabilities for a model not in BUILT_IN_PROFILES.
267
+ * Returns a partial ModelCapabilities object (tier + contextWindow) on success, null on failure.
268
+ * Silently returns null when Ollama is unreachable or the model is not installed.
269
+ *
270
+ * Call this once per model switch and persist via registerModelCapabilities().
271
+ */
272
+ async function queryOllamaModelCapabilities(modelId, baseUrl) {
273
+ try {
274
+ const url = `${baseUrl.replace(/\/$/, '')}/api/show`;
275
+ const response = await fetch(url, {
276
+ method: 'POST',
277
+ headers: { 'Content-Type': 'application/json' },
278
+ body: JSON.stringify({ name: modelId }),
279
+ signal: AbortSignal.timeout(5000)
280
+ });
281
+ if (!response.ok)
282
+ return null;
283
+ const data = await response.json();
284
+ const paramSize = data.details?.parameter_size ?? '';
285
+ const tier = deriveTierFromParamSize(paramSize);
286
+ // Prefer the model's own declared context length when available.
287
+ const contextWindow = data.model_info?.['llm.context_length']
288
+ ?? (tier === 'large' ? 131072 : tier === 'medium' ? 32768 : 8192);
289
+ const family = (data.details?.family ?? '').toLowerCase();
290
+ // Trust Ollama's advertised capabilities when present. Hard-coding false
291
+ // here silently downgraded every tool-calling model that hit auto-detection
292
+ // before the built-in profile precedence fix landed. Even with that fix,
293
+ // models without a built-in profile (a new tag, a user-pulled variant)
294
+ // should report tools accurately when the runtime says so.
295
+ const caps = new Set((data.capabilities ?? []).map((c) => c.toLowerCase()));
296
+ const supportsJsonMode = true; // All Ollama-served models support format:"json"
297
+ const supportsToolCalling = caps.has('tools');
298
+ const supportsVision = caps.has('vision') ||
299
+ family.includes('llava') || family.includes('vision') || family.includes('vl');
300
+ return {
301
+ tier,
302
+ contextWindow,
303
+ supportsJsonMode,
304
+ supportsToolCalling,
305
+ supportsVision,
306
+ label: modelId
307
+ };
308
+ }
309
+ catch {
310
+ return null;
311
+ }
312
+ }
313
+ /**
314
+ * Query Ollama's `/api/ps` for the currently-loaded context length of
315
+ * `modelId` and compare against our requested num_ctx. Returns a check
316
+ * the host can render as a one-time tip. Silently returns underweight=
317
+ * false on any network/parse failure (this is a UX hint, never an error).
318
+ *
319
+ * Why /api/ps and not /api/show: /api/show returns the model's NATIVE
320
+ * context window from the GGUF metadata — that's the maximum the model
321
+ * could be loaded with, not what's actually loaded right now. /api/ps
322
+ * lists currently-resident models and reports the loaded context_length
323
+ * directly. That's the value that determines whether prompts overflow.
324
+ */
325
+ async function checkOllamaLoadedContext(baseUrl, modelId, requestedContext) {
326
+ // Suggest a target ~25% above the requested floor so the env var
327
+ // covers our normal num_ctx + a small headroom for KV growth.
328
+ const suggested = Math.max(16384, Math.ceil(requestedContext * 1.1 / 1024) * 1024);
329
+ const fallback = {
330
+ loadedContext: null,
331
+ requestedContext,
332
+ underweight: false,
333
+ suggestionCommand: `OLLAMA_CONTEXT_LENGTH=${suggested} ollama serve`
334
+ };
335
+ try {
336
+ const url = `${baseUrl.replace(/\/$/, '')}/api/ps`;
337
+ const response = await fetch(url, { signal: AbortSignal.timeout(3000) });
338
+ if (!response.ok)
339
+ return fallback;
340
+ const data = await response.json();
341
+ const lowerId = modelId.toLowerCase();
342
+ const match = (data.models ?? []).find(m => (m.model ?? '').toLowerCase() === lowerId ||
343
+ (m.name ?? '').toLowerCase() === lowerId);
344
+ if (!match || typeof match.context_length !== 'number') {
345
+ return fallback;
346
+ }
347
+ const loaded = match.context_length;
348
+ // Underweight: loaded < 8K (absolute floor below which agent prompts
349
+ // get truncated) AND loaded < 75% of requested (a 4K env-var clamp
350
+ // when we asked for 12K — the canonical first-install gotcha).
351
+ const underweight = loaded < 8192 && loaded < requestedContext * 0.75;
352
+ return {
353
+ loadedContext: loaded,
354
+ requestedContext,
355
+ underweight,
356
+ suggestionCommand: `OLLAMA_CONTEXT_LENGTH=${suggested} ollama serve`
357
+ };
358
+ }
359
+ catch {
360
+ return fallback;
361
+ }
362
+ }
363
+ /**
364
+ * Returns the maximum number of context file chunks to include based on tier.
365
+ */
366
+ function getContextFileLimit(tier) {
367
+ switch (tier) {
368
+ case 'large': return 20;
369
+ case 'medium': return 8;
370
+ case 'small': return 3;
371
+ }
372
+ }
373
+ /**
374
+ * Returns the approximate token budget reserved for context (not prompt/response).
375
+ */
376
+ function getContextTokenBudget(caps) {
377
+ // Reserve ~40% of context window for injected file content.
378
+ return Math.floor(caps.contextWindow * 0.4);
379
+ }
380
+ /**
381
+ * Approximate per-turn output token budget.
382
+ *
383
+ * The tool-use loop uses this to decide whether a model's planned batch of
384
+ * write/edit calls will exceed the assistant turn's safe output capacity.
385
+ * When the planned content would push past this number, the loop serialises
386
+ * execution so each call gets its own iteration — protecting smaller models
387
+ * from generating malformed JSON in the tail of a multi-file emission, and
388
+ * giving the user a chance to react between approvals.
389
+ *
390
+ * Tier defaults are conservative — they are NOT the model's hard ceiling,
391
+ * they are the point past which output coherence starts to slip on local
392
+ * models. A capable hosted model effectively has no binding budget here.
393
+ *
394
+ * Tier mapping:
395
+ * small → 1024 tokens (4B params, ~4 KB of generated content)
396
+ * medium → 2048 tokens (12B–27B params, ~8 KB)
397
+ * large → 8192 tokens (31B+ params, hosted strong models)
398
+ *
399
+ * Override at runtime by passing `outputBudgetTokens` to the loop directly,
400
+ * or by registering a tuned profile via `registerModelCapabilities`.
401
+ */
402
+ function getOutputTokenBudget(caps) {
403
+ switch (caps.tier) {
404
+ case 'small': return 1024;
405
+ case 'medium': return 2048;
406
+ case 'large': return 8192;
407
+ default: return 1024;
408
+ }
409
+ }
410
+ function resolveOllamaRuntimeOptions(modelId) {
411
+ const caps = getModelCapabilities(modelId);
412
+ // num_ctx is what we REQUEST from Ollama (not the model's native
413
+ // maximum — those are routinely 128K+ and would blow RAM). Pick a
414
+ // value that fits our framework prompt + several tool rounds + a
415
+ // reasonable user turn on commodity hardware. Tiers measured on:
416
+ // - small (4B): fits laptop iGPU / Apple M-series w/o swap.
417
+ // - medium (12B/27B): 16 GB VRAM laptops (MBP Q4).
418
+ // - large (31B+): RTX 5090 class or cluster; Modelfile can still
419
+ // override via its own num_ctx parameter.
420
+ // Anchoring here: the 8-iteration agent runs we saw in April 2026
421
+ // hitting `hitLimit: true` from accumulated tool results on num_ctx
422
+ // 16k. Tiers below give the loop ~24k-32k tokens of room before
423
+ // compaction needs to kick in.
424
+ let num_ctx;
425
+ switch (caps.tier) {
426
+ case 'small':
427
+ num_ctx = 12288; // 4B — bump from 8k; still fits ~8 GB VRAM
428
+ break;
429
+ case 'medium':
430
+ num_ctx = 24576; // 12B/27B — 24k room for normal agent turns
431
+ break;
432
+ case 'large':
433
+ num_ctx = 32768; // 31B+ — matches cluster bandit-core:31b Modelfile
434
+ break;
435
+ default:
436
+ num_ctx = 12288;
437
+ }
438
+ // Clamp to the model's declared native window so we never ask for
439
+ // more than the model can actually honor.
440
+ if (caps.contextWindow > 0 && num_ctx > caps.contextWindow) {
441
+ num_ctx = caps.contextWindow;
442
+ }
443
+ // Thinking-mode default now comes from behavior profiles rather than
444
+ // scattered model-name checks. Users can still override via `/think`
445
+ // (CLI) or banditStealth.thinkingMode (extension).
446
+ const behavior = (0, modelBehavior_1.getModelBehaviorProfile)(modelId);
447
+ const thinkDefault = behavior.prompting.thinking === 'on'
448
+ ? true
449
+ : behavior.prompting.thinking === 'off'
450
+ ? false
451
+ : undefined;
452
+ return {
453
+ num_ctx,
454
+ keep_alive: -1,
455
+ ...(thinkDefault !== undefined ? { think: thinkDefault } : {})
456
+ };
457
+ }
458
+ //# sourceMappingURL=modelCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCapabilities.js","sourceRoot":"","sources":["../../src/runtime/modelCapabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * models.dev catalog adapter.
3
+ *
4
+ * https://models.dev/api.json is a community-maintained model metadata
5
+ * catalog (MIT-licensed, used by sst/opencode). Each provider entry
6
+ * lists every published model with context window, output cap,
7
+ * tool-calling support, vision support, and pricing. We use it to
8
+ * populate the runtime capability registry for openai-compatible
9
+ * upstreams (LM Studio, llama.cpp, vLLM, OpenRouter, Together, Groq,
10
+ * DeepSeek, OpenAI proper) that aren't in our hand-curated built-in
11
+ * profile list — without it those models inherit the conservative
12
+ * default and miss out on tier-tuned context budgets, output gates,
13
+ * vision routing, etc.
14
+ *
15
+ * Caching:
16
+ * - In-memory map for the lifetime of the process.
17
+ * - Disk cache at `~/.bandit/cache/models-dev.json` + an `.etag`
18
+ * sidecar; revalidated against the server with `If-None-Match`
19
+ * once per 24h. 304 Not Modified keeps the on-disk JSON.
20
+ * - First-run fetch downloads ~250 KB gzipped (~1.9 MB raw).
21
+ * Subsequent launches usually return 304 in <100 ms.
22
+ *
23
+ * Failures are silent: when the catalog is unreachable or the model
24
+ * isn't listed, lookupModelsDevCapabilities returns null and the
25
+ * caller falls back to whatever default it had.
26
+ */
27
+ import type { ModelCapabilities } from './modelCapabilities';
28
+ /**
29
+ * Resolve capabilities for `(baseUrl, modelId)` from the models.dev
30
+ * catalog. Returns null when the catalog is unavailable, the base URL
31
+ * doesn't match any known provider, or the model isn't listed.
32
+ */
33
+ export declare function queryModelsDevCapabilities(modelId: string, baseUrl: string): Promise<ModelCapabilities | null>;
34
+ //# sourceMappingURL=modelsDevCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelsDevCatalog.d.ts","sourceRoot":"","sources":["../../src/runtime/modelsDevCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,qBAAqB,CAAC;AA2LxE;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAmBnC"}