@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.
- package/LICENSE +201 -0
- package/README.md +46 -0
- package/dist/banditEngineProvider.d.ts +48 -0
- package/dist/banditEngineProvider.d.ts.map +1 -0
- package/dist/banditEngineProvider.js +1021 -0
- package/dist/banditEngineProvider.js.map +1 -0
- package/dist/embeddingCache.d.ts +23 -0
- package/dist/embeddingCache.d.ts.map +1 -0
- package/dist/embeddingCache.js +196 -0
- package/dist/embeddingCache.js.map +1 -0
- package/dist/embeddingClient.d.ts +35 -0
- package/dist/embeddingClient.d.ts.map +1 -0
- package/dist/embeddingClient.js +162 -0
- package/dist/embeddingClient.js.map +1 -0
- package/dist/executorAgent.d.ts +7 -0
- package/dist/executorAgent.d.ts.map +1 -0
- package/dist/executorAgent.js +95 -0
- package/dist/executorAgent.js.map +1 -0
- package/dist/extensionSystemPrompt.d.ts +80 -0
- package/dist/extensionSystemPrompt.d.ts.map +1 -0
- package/dist/extensionSystemPrompt.js +208 -0
- package/dist/extensionSystemPrompt.js.map +1 -0
- package/dist/gatewaySearchAdapter.d.ts +69 -0
- package/dist/gatewaySearchAdapter.d.ts.map +1 -0
- package/dist/gatewaySearchAdapter.js +131 -0
- package/dist/gatewaySearchAdapter.js.map +1 -0
- package/dist/goalInference.d.ts +26 -0
- package/dist/goalInference.d.ts.map +1 -0
- package/dist/goalInference.js +605 -0
- package/dist/goalInference.js.map +1 -0
- package/dist/hostTypes.d.ts +86 -0
- package/dist/hostTypes.d.ts.map +1 -0
- package/dist/hostTypes.js +3 -0
- package/dist/hostTypes.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/internalTypes.d.ts +16 -0
- package/dist/internalTypes.d.ts.map +1 -0
- package/dist/internalTypes.js +20 -0
- package/dist/internalTypes.js.map +1 -0
- package/dist/ollamaEmbeddingClient.d.ts +45 -0
- package/dist/ollamaEmbeddingClient.d.ts.map +1 -0
- package/dist/ollamaEmbeddingClient.js +143 -0
- package/dist/ollamaEmbeddingClient.js.map +1 -0
- package/dist/pdfjsShim.d.ts +2 -0
- package/dist/pdfjsShim.d.ts.map +1 -0
- package/dist/pdfjsShim.js +80 -0
- package/dist/pdfjsShim.js.map +1 -0
- package/dist/runtime/actionRuntime.d.ts +13 -0
- package/dist/runtime/actionRuntime.d.ts.map +1 -0
- package/dist/runtime/actionRuntime.js +15 -0
- package/dist/runtime/actionRuntime.js.map +1 -0
- package/dist/runtime/actionServices.d.ts +72 -0
- package/dist/runtime/actionServices.d.ts.map +1 -0
- package/dist/runtime/actionServices.js +53 -0
- package/dist/runtime/actionServices.js.map +1 -0
- package/dist/runtime/adapters/connectorBus.d.ts +9 -0
- package/dist/runtime/adapters/connectorBus.d.ts.map +1 -0
- package/dist/runtime/adapters/connectorBus.js +20 -0
- package/dist/runtime/adapters/connectorBus.js.map +1 -0
- package/dist/runtime/adapters/fsAdapter.d.ts +6 -0
- package/dist/runtime/adapters/fsAdapter.d.ts.map +1 -0
- package/dist/runtime/adapters/fsAdapter.js +144 -0
- package/dist/runtime/adapters/fsAdapter.js.map +1 -0
- package/dist/runtime/adapters/llmAdapter.d.ts +4 -0
- package/dist/runtime/adapters/llmAdapter.d.ts.map +1 -0
- package/dist/runtime/adapters/llmAdapter.js +12 -0
- package/dist/runtime/adapters/llmAdapter.js.map +1 -0
- package/dist/runtime/adapters/shellAdapter.d.ts +6 -0
- package/dist/runtime/adapters/shellAdapter.d.ts.map +1 -0
- package/dist/runtime/adapters/shellAdapter.js +118 -0
- package/dist/runtime/adapters/shellAdapter.js.map +1 -0
- package/dist/runtime/additionalWrites.d.ts +22 -0
- package/dist/runtime/additionalWrites.d.ts.map +1 -0
- package/dist/runtime/additionalWrites.js +148 -0
- package/dist/runtime/additionalWrites.js.map +1 -0
- package/dist/runtime/artifactManager.d.ts +32 -0
- package/dist/runtime/artifactManager.d.ts.map +1 -0
- package/dist/runtime/artifactManager.js +154 -0
- package/dist/runtime/artifactManager.js.map +1 -0
- package/dist/runtime/autoHealer.d.ts +27 -0
- package/dist/runtime/autoHealer.d.ts.map +1 -0
- package/dist/runtime/autoHealer.js +583 -0
- package/dist/runtime/autoHealer.js.map +1 -0
- package/dist/runtime/changeTracker.d.ts +20 -0
- package/dist/runtime/changeTracker.d.ts.map +1 -0
- package/dist/runtime/changeTracker.js +147 -0
- package/dist/runtime/changeTracker.js.map +1 -0
- package/dist/runtime/contextBuilder.d.ts +85 -0
- package/dist/runtime/contextBuilder.d.ts.map +1 -0
- package/dist/runtime/contextBuilder.js +159 -0
- package/dist/runtime/contextBuilder.js.map +1 -0
- package/dist/runtime/coreRuntime.d.ts +7 -0
- package/dist/runtime/coreRuntime.d.ts.map +1 -0
- package/dist/runtime/coreRuntime.js +173 -0
- package/dist/runtime/coreRuntime.js.map +1 -0
- package/dist/runtime/createStealthRuntime.d.ts +4 -0
- package/dist/runtime/createStealthRuntime.d.ts.map +1 -0
- package/dist/runtime/createStealthRuntime.js +514 -0
- package/dist/runtime/createStealthRuntime.js.map +1 -0
- package/dist/runtime/diagnostics.d.ts +53 -0
- package/dist/runtime/diagnostics.d.ts.map +1 -0
- package/dist/runtime/diagnostics.js +396 -0
- package/dist/runtime/diagnostics.js.map +1 -0
- package/dist/runtime/diagnosticsServices.d.ts +51 -0
- package/dist/runtime/diagnosticsServices.d.ts.map +1 -0
- package/dist/runtime/diagnosticsServices.js +46 -0
- package/dist/runtime/diagnosticsServices.js.map +1 -0
- package/dist/runtime/diffManager.d.ts +20 -0
- package/dist/runtime/diffManager.d.ts.map +1 -0
- package/dist/runtime/diffManager.js +172 -0
- package/dist/runtime/diffManager.js.map +1 -0
- package/dist/runtime/diffPresenter.d.ts +8 -0
- package/dist/runtime/diffPresenter.d.ts.map +1 -0
- package/dist/runtime/diffPresenter.js +57 -0
- package/dist/runtime/diffPresenter.js.map +1 -0
- package/dist/runtime/embeddingClientResolver.d.ts +14 -0
- package/dist/runtime/embeddingClientResolver.d.ts.map +1 -0
- package/dist/runtime/embeddingClientResolver.js +54 -0
- package/dist/runtime/embeddingClientResolver.js.map +1 -0
- package/dist/runtime/embeddingManager.d.ts +22 -0
- package/dist/runtime/embeddingManager.d.ts.map +1 -0
- package/dist/runtime/embeddingManager.js +224 -0
- package/dist/runtime/embeddingManager.js.map +1 -0
- package/dist/runtime/eventBus.d.ts +7 -0
- package/dist/runtime/eventBus.d.ts.map +1 -0
- package/dist/runtime/eventBus.js +28 -0
- package/dist/runtime/eventBus.js.map +1 -0
- package/dist/runtime/executorServices.d.ts +46 -0
- package/dist/runtime/executorServices.d.ts.map +1 -0
- package/dist/runtime/executorServices.js +47 -0
- package/dist/runtime/executorServices.js.map +1 -0
- package/dist/runtime/extractionService.d.ts +11 -0
- package/dist/runtime/extractionService.d.ts.map +1 -0
- package/dist/runtime/extractionService.js +282 -0
- package/dist/runtime/extractionService.js.map +1 -0
- package/dist/runtime/feedbackService.d.ts +12 -0
- package/dist/runtime/feedbackService.d.ts.map +1 -0
- package/dist/runtime/feedbackService.js +111 -0
- package/dist/runtime/feedbackService.js.map +1 -0
- package/dist/runtime/goalEngine.d.ts +10 -0
- package/dist/runtime/goalEngine.d.ts.map +1 -0
- package/dist/runtime/goalEngine.js +429 -0
- package/dist/runtime/goalEngine.js.map +1 -0
- package/dist/runtime/goalFlowServices.d.ts +49 -0
- package/dist/runtime/goalFlowServices.d.ts.map +1 -0
- package/dist/runtime/goalFlowServices.js +45 -0
- package/dist/runtime/goalFlowServices.js.map +1 -0
- package/dist/runtime/goalReplay.d.ts +33 -0
- package/dist/runtime/goalReplay.d.ts.map +1 -0
- package/dist/runtime/goalReplay.js +58 -0
- package/dist/runtime/goalReplay.js.map +1 -0
- package/dist/runtime/goalRunner.d.ts +35 -0
- package/dist/runtime/goalRunner.d.ts.map +1 -0
- package/dist/runtime/goalRunner.js +42 -0
- package/dist/runtime/goalRunner.js.map +1 -0
- package/dist/runtime/healingEngine.d.ts +72 -0
- package/dist/runtime/healingEngine.d.ts.map +1 -0
- package/dist/runtime/healingEngine.js +969 -0
- package/dist/runtime/healingEngine.js.map +1 -0
- package/dist/runtime/healingServices.d.ts +62 -0
- package/dist/runtime/healingServices.d.ts.map +1 -0
- package/dist/runtime/healingServices.js +45 -0
- package/dist/runtime/healingServices.js.map +1 -0
- package/dist/runtime/helpers.d.ts +22 -0
- package/dist/runtime/helpers.d.ts.map +1 -0
- package/dist/runtime/helpers.js +694 -0
- package/dist/runtime/helpers.js.map +1 -0
- package/dist/runtime/hosts/actionHost.d.ts +82 -0
- package/dist/runtime/hosts/actionHost.d.ts.map +1 -0
- package/dist/runtime/hosts/actionHost.js +61 -0
- package/dist/runtime/hosts/actionHost.js.map +1 -0
- package/dist/runtime/hosts/baseServices.d.ts +51 -0
- package/dist/runtime/hosts/baseServices.d.ts.map +1 -0
- package/dist/runtime/hosts/baseServices.js +73 -0
- package/dist/runtime/hosts/baseServices.js.map +1 -0
- package/dist/runtime/hosts/embeddingServices.d.ts +25 -0
- package/dist/runtime/hosts/embeddingServices.d.ts.map +1 -0
- package/dist/runtime/hosts/embeddingServices.js +34 -0
- package/dist/runtime/hosts/embeddingServices.js.map +1 -0
- package/dist/runtime/hosts/goalFlowHost.d.ts +34 -0
- package/dist/runtime/hosts/goalFlowHost.d.ts.map +1 -0
- package/dist/runtime/hosts/goalFlowHost.js +35 -0
- package/dist/runtime/hosts/goalFlowHost.js.map +1 -0
- package/dist/runtime/hosts/goalFlowRuntime.d.ts +41 -0
- package/dist/runtime/hosts/goalFlowRuntime.d.ts.map +1 -0
- package/dist/runtime/hosts/goalFlowRuntime.js +31 -0
- package/dist/runtime/hosts/goalFlowRuntime.js.map +1 -0
- package/dist/runtime/hosts/providerHost.d.ts +19 -0
- package/dist/runtime/hosts/providerHost.d.ts.map +1 -0
- package/dist/runtime/hosts/providerHost.js +18 -0
- package/dist/runtime/hosts/providerHost.js.map +1 -0
- package/dist/runtime/hosts/rewriteHost.d.ts +84 -0
- package/dist/runtime/hosts/rewriteHost.d.ts.map +1 -0
- package/dist/runtime/hosts/rewriteHost.js +64 -0
- package/dist/runtime/hosts/rewriteHost.js.map +1 -0
- package/dist/runtime/hosts/workspaceHost.d.ts +113 -0
- package/dist/runtime/hosts/workspaceHost.d.ts.map +1 -0
- package/dist/runtime/hosts/workspaceHost.js +76 -0
- package/dist/runtime/hosts/workspaceHost.js.map +1 -0
- package/dist/runtime/index.d.ts +78 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +95 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/insight.d.ts +16 -0
- package/dist/runtime/insight.d.ts.map +1 -0
- package/dist/runtime/insight.js +11 -0
- package/dist/runtime/insight.js.map +1 -0
- package/dist/runtime/internalActions.d.ts +16 -0
- package/dist/runtime/internalActions.d.ts.map +1 -0
- package/dist/runtime/internalActions.js +302 -0
- package/dist/runtime/internalActions.js.map +1 -0
- package/dist/runtime/modelBehavior.d.ts +69 -0
- package/dist/runtime/modelBehavior.d.ts.map +1 -0
- package/dist/runtime/modelBehavior.js +514 -0
- package/dist/runtime/modelBehavior.js.map +1 -0
- package/dist/runtime/modelCapabilities.d.ts +139 -0
- package/dist/runtime/modelCapabilities.d.ts.map +1 -0
- package/dist/runtime/modelCapabilities.js +458 -0
- package/dist/runtime/modelCapabilities.js.map +1 -0
- package/dist/runtime/modelsDevCatalog.d.ts +34 -0
- package/dist/runtime/modelsDevCatalog.d.ts.map +1 -0
- package/dist/runtime/modelsDevCatalog.js +263 -0
- package/dist/runtime/modelsDevCatalog.js.map +1 -0
- package/dist/runtime/pendingInference.d.ts +18 -0
- package/dist/runtime/pendingInference.d.ts.map +1 -0
- package/dist/runtime/pendingInference.js +121 -0
- package/dist/runtime/pendingInference.js.map +1 -0
- package/dist/runtime/persistence.d.ts +21 -0
- package/dist/runtime/persistence.d.ts.map +1 -0
- package/dist/runtime/persistence.js +73 -0
- package/dist/runtime/persistence.js.map +1 -0
- package/dist/runtime/planContext.d.ts +42 -0
- package/dist/runtime/planContext.d.ts.map +1 -0
- package/dist/runtime/planContext.js +246 -0
- package/dist/runtime/planContext.js.map +1 -0
- package/dist/runtime/planGenerator.d.ts +21 -0
- package/dist/runtime/planGenerator.d.ts.map +1 -0
- package/dist/runtime/planGenerator.js +89 -0
- package/dist/runtime/planGenerator.js.map +1 -0
- package/dist/runtime/planPreparation.d.ts +64 -0
- package/dist/runtime/planPreparation.d.ts.map +1 -0
- package/dist/runtime/planPreparation.js +173 -0
- package/dist/runtime/planPreparation.js.map +1 -0
- package/dist/runtime/projectSummary.d.ts +3 -0
- package/dist/runtime/projectSummary.d.ts.map +1 -0
- package/dist/runtime/projectSummary.js +42 -0
- package/dist/runtime/projectSummary.js.map +1 -0
- package/dist/runtime/providerSettings.d.ts +28 -0
- package/dist/runtime/providerSettings.d.ts.map +1 -0
- package/dist/runtime/providerSettings.js +93 -0
- package/dist/runtime/providerSettings.js.map +1 -0
- package/dist/runtime/pythonActions.d.ts +78 -0
- package/dist/runtime/pythonActions.d.ts.map +1 -0
- package/dist/runtime/pythonActions.js +392 -0
- package/dist/runtime/pythonActions.js.map +1 -0
- package/dist/runtime/pythonBridge.d.ts +13 -0
- package/dist/runtime/pythonBridge.d.ts.map +1 -0
- package/dist/runtime/pythonBridge.js +117 -0
- package/dist/runtime/pythonBridge.js.map +1 -0
- package/dist/runtime/rewriteEngine.d.ts +46 -0
- package/dist/runtime/rewriteEngine.d.ts.map +1 -0
- package/dist/runtime/rewriteEngine.js +259 -0
- package/dist/runtime/rewriteEngine.js.map +1 -0
- package/dist/runtime/rewriteGenerator.d.ts +29 -0
- package/dist/runtime/rewriteGenerator.d.ts.map +1 -0
- package/dist/runtime/rewriteGenerator.js +1527 -0
- package/dist/runtime/rewriteGenerator.js.map +1 -0
- package/dist/runtime/rewriteHydration.d.ts +22 -0
- package/dist/runtime/rewriteHydration.d.ts.map +1 -0
- package/dist/runtime/rewriteHydration.js +265 -0
- package/dist/runtime/rewriteHydration.js.map +1 -0
- package/dist/runtime/rewriteOrchestration.d.ts +105 -0
- package/dist/runtime/rewriteOrchestration.d.ts.map +1 -0
- package/dist/runtime/rewriteOrchestration.js +130 -0
- package/dist/runtime/rewriteOrchestration.js.map +1 -0
- package/dist/runtime/rewritePayload.d.ts +18 -0
- package/dist/runtime/rewritePayload.d.ts.map +1 -0
- package/dist/runtime/rewritePayload.js +166 -0
- package/dist/runtime/rewritePayload.js.map +1 -0
- package/dist/runtime/rewriteRuntime.d.ts +13 -0
- package/dist/runtime/rewriteRuntime.d.ts.map +1 -0
- package/dist/runtime/rewriteRuntime.js +21 -0
- package/dist/runtime/rewriteRuntime.js.map +1 -0
- package/dist/runtime/rewriteServices.d.ts +70 -0
- package/dist/runtime/rewriteServices.d.ts.map +1 -0
- package/dist/runtime/rewriteServices.js +50 -0
- package/dist/runtime/rewriteServices.js.map +1 -0
- package/dist/runtime/runtimeHelpers.d.ts +9 -0
- package/dist/runtime/runtimeHelpers.d.ts.map +1 -0
- package/dist/runtime/runtimeHelpers.js +86 -0
- package/dist/runtime/runtimeHelpers.js.map +1 -0
- package/dist/runtime/sessionData.d.ts +4 -0
- package/dist/runtime/sessionData.d.ts.map +1 -0
- package/dist/runtime/sessionData.js +45 -0
- package/dist/runtime/sessionData.js.map +1 -0
- package/dist/runtime/sessionRuntime.d.ts +47 -0
- package/dist/runtime/sessionRuntime.d.ts.map +1 -0
- package/dist/runtime/sessionRuntime.js +128 -0
- package/dist/runtime/sessionRuntime.js.map +1 -0
- package/dist/runtime/stealthRuntimeTypes.d.ts +12 -0
- package/dist/runtime/stealthRuntimeTypes.d.ts.map +1 -0
- package/dist/runtime/stealthRuntimeTypes.js +3 -0
- package/dist/runtime/stealthRuntimeTypes.js.map +1 -0
- package/dist/runtime/stepExecutor.d.ts +22 -0
- package/dist/runtime/stepExecutor.d.ts.map +1 -0
- package/dist/runtime/stepExecutor.js +83 -0
- package/dist/runtime/stepExecutor.js.map +1 -0
- package/dist/runtime/stepLifecycle.d.ts +29 -0
- package/dist/runtime/stepLifecycle.d.ts.map +1 -0
- package/dist/runtime/stepLifecycle.js +122 -0
- package/dist/runtime/stepLifecycle.js.map +1 -0
- package/dist/runtime/stepMetadata.d.ts +6 -0
- package/dist/runtime/stepMetadata.d.ts.map +1 -0
- package/dist/runtime/stepMetadata.js +87 -0
- package/dist/runtime/stepMetadata.js.map +1 -0
- package/dist/runtime/taskQueue.d.ts +16 -0
- package/dist/runtime/taskQueue.d.ts.map +1 -0
- package/dist/runtime/taskQueue.js +103 -0
- package/dist/runtime/taskQueue.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +6 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +42 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/runtime/telemetryHub.d.ts +61 -0
- package/dist/runtime/telemetryHub.d.ts.map +1 -0
- package/dist/runtime/telemetryHub.js +190 -0
- package/dist/runtime/telemetryHub.js.map +1 -0
- package/dist/runtime/textSanitizer.d.ts +4 -0
- package/dist/runtime/textSanitizer.d.ts.map +1 -0
- package/dist/runtime/textSanitizer.js +86 -0
- package/dist/runtime/textSanitizer.js.map +1 -0
- package/dist/runtime/typeCheckRunner.d.ts +33 -0
- package/dist/runtime/typeCheckRunner.d.ts.map +1 -0
- package/dist/runtime/typeCheckRunner.js +357 -0
- package/dist/runtime/typeCheckRunner.js.map +1 -0
- package/dist/runtime/types.d.ts +334 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +3 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/typescriptValidator.d.ts +18 -0
- package/dist/runtime/typescriptValidator.d.ts.map +1 -0
- package/dist/runtime/typescriptValidator.js +363 -0
- package/dist/runtime/typescriptValidator.js.map +1 -0
- package/dist/runtime/undoManager.d.ts +7 -0
- package/dist/runtime/undoManager.d.ts.map +1 -0
- package/dist/runtime/undoManager.js +56 -0
- package/dist/runtime/undoManager.js.map +1 -0
- package/dist/runtime/validationController.d.ts +11 -0
- package/dist/runtime/validationController.d.ts.map +1 -0
- package/dist/runtime/validationController.js +29 -0
- package/dist/runtime/validationController.js.map +1 -0
- package/dist/runtime/validationUtils.d.ts +17 -0
- package/dist/runtime/validationUtils.d.ts.map +1 -0
- package/dist/runtime/validationUtils.js +121 -0
- package/dist/runtime/validationUtils.js.map +1 -0
- package/dist/runtime/workspaceAssertions.d.ts +21 -0
- package/dist/runtime/workspaceAssertions.d.ts.map +1 -0
- package/dist/runtime/workspaceAssertions.js +183 -0
- package/dist/runtime/workspaceAssertions.js.map +1 -0
- package/dist/runtime/workspaceIndexService.d.ts +24 -0
- package/dist/runtime/workspaceIndexService.d.ts.map +1 -0
- package/dist/runtime/workspaceIndexService.js +133 -0
- package/dist/runtime/workspaceIndexService.js.map +1 -0
- package/dist/runtime/workspaceIndexer.d.ts +21 -0
- package/dist/runtime/workspaceIndexer.d.ts.map +1 -0
- package/dist/runtime/workspaceIndexer.js +95 -0
- package/dist/runtime/workspaceIndexer.js.map +1 -0
- package/dist/runtime/workspacePackages.d.ts +22 -0
- package/dist/runtime/workspacePackages.d.ts.map +1 -0
- package/dist/runtime/workspacePackages.js +198 -0
- package/dist/runtime/workspacePackages.js.map +1 -0
- package/dist/runtime/workspaceRuntime.d.ts +58 -0
- package/dist/runtime/workspaceRuntime.d.ts.map +1 -0
- package/dist/runtime/workspaceRuntime.js +86 -0
- package/dist/runtime/workspaceRuntime.js.map +1 -0
- package/dist/runtime/workspaceService.d.ts +14 -0
- package/dist/runtime/workspaceService.d.ts.map +1 -0
- package/dist/runtime/workspaceService.js +88 -0
- package/dist/runtime/workspaceService.js.map +1 -0
- package/dist/runtime/workspaceServices.d.ts +114 -0
- package/dist/runtime/workspaceServices.d.ts.map +1 -0
- package/dist/runtime/workspaceServices.js +114 -0
- package/dist/runtime/workspaceServices.js.map +1 -0
- package/dist/runtime/writeServices.d.ts +34 -0
- package/dist/runtime/writeServices.d.ts.map +1 -0
- package/dist/runtime/writeServices.js +32 -0
- package/dist/runtime/writeServices.js.map +1 -0
- package/dist/sharedPromptSections.d.ts +58 -0
- package/dist/sharedPromptSections.d.ts.map +1 -0
- package/dist/sharedPromptSections.js +94 -0
- package/dist/sharedPromptSections.js.map +1 -0
- package/dist/statusTypes.d.ts +13 -0
- package/dist/statusTypes.d.ts.map +1 -0
- package/dist/statusTypes.js +3 -0
- package/dist/statusTypes.js.map +1 -0
- package/dist/streamIdleTimeout.d.ts +38 -0
- package/dist/streamIdleTimeout.d.ts.map +1 -0
- package/dist/streamIdleTimeout.js +44 -0
- package/dist/streamIdleTimeout.js.map +1 -0
- package/dist/types/bandit.d.ts +113 -0
- package/dist/types/bandit.d.ts.map +1 -0
- package/dist/types/bandit.js +3 -0
- package/dist/types/bandit.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/workspaceIndex.d.ts +44 -0
- package/dist/workspaceIndex.d.ts.map +1 -0
- package/dist/workspaceIndex.js +258 -0
- package/dist/workspaceIndex.js.map +1 -0
- 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"}
|