@agenthippo-ai/agenthippo 0.1.0
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 +21 -0
- package/bin/agenthippo.js +2 -0
- package/out/agentpack/github.js +547 -0
- package/out/agentpack/index.js +66 -0
- package/out/agentpack/install.js +297 -0
- package/out/agentpack/manager.js +441 -0
- package/out/agentpack/manifest.js +135 -0
- package/out/agentpack/paths.js +475 -0
- package/out/agentpack/publish.js +248 -0
- package/out/agentpack/stores.js +554 -0
- package/out/agentpack/types.js +5 -0
- package/out/analytics/dashboard/artifactManager.js +439 -0
- package/out/analytics/dashboard/fleetDisplayUtils.js +159 -0
- package/out/analytics/dashboard/fleetOrchestrator.js +142 -0
- package/out/analytics/dashboard/fleetRegistry.js +79 -0
- package/out/analytics/dashboard/fleetRowDefaults.js +87 -0
- package/out/analytics/dashboard/fleetScriptAdapter.js +146 -0
- package/out/analytics/dashboard/fleetStatusUtils.js +30 -0
- package/out/analytics/dashboard/fleetTitleUtils.js +68 -0
- package/out/analytics/dashboard/fleetTypes.js +29 -0
- package/out/analytics/dashboard/index.js +17 -0
- package/out/analytics/dashboard/indexingService.js +422 -0
- package/out/analytics/dashboard/localFleetAdapter.js +222 -0
- package/out/analytics/dashboard/performanceMonitor.js +76 -0
- package/out/analytics/dashboard/processManager.js +209 -0
- package/out/analytics/dashboard/provider.js +3885 -0
- package/out/analytics/dashboard/queryRunner.js +994 -0
- package/out/analytics/dashboard/refreshPolicy.js +16 -0
- package/out/analytics/dashboard/scheduledFleetFingerprint.js +22 -0
- package/out/analytics/dashboard/scheduledFleetStorage.js +241 -0
- package/out/analytics/dashboard/scheduledFleetUtils.js +22 -0
- package/out/analytics/dashboard/sessionEventFleetStats.js +118 -0
- package/out/analytics/dashboard/sessionJsonlFleet.js +204 -0
- package/out/analytics/dashboard/teamViewDiscovery.js +106 -0
- package/out/analytics/dashboard/viewsConfigMerge.js +221 -0
- package/out/analytics/dashboard/webview/analytics-panel.html +155 -0
- package/out/analytics/dashboard/webview/codicon.ttf +0 -0
- package/out/analytics/dashboard/webview/index.html +78 -0
- package/out/analytics/dashboard/webview/panel.js +2295 -0
- package/out/analytics/dashboard/webview/runtime-bridge.js +82 -0
- package/out/analytics/dashboard/webview/styles.css +1009 -0
- package/out/analytics/lifecycle.js +43 -0
- package/out/analytics/service.js +1279 -0
- package/out/analytics/sessionEvents.js +231 -0
- package/out/auth/bootstrapApply.js +72 -0
- package/out/auth/brokerClient.js +126 -0
- package/out/auth/callbackUri.js +59 -0
- package/out/auth/callbackUriParse.js +59 -0
- package/out/auth/githubStoreGate.js +70 -0
- package/out/auth/loopbackAuthServer.js +165 -0
- package/out/auth/pkce.js +9 -0
- package/out/auth/provider.js +239 -0
- package/out/auth/sessionStore.js +193 -0
- package/out/auth/signInFlow.js +182 -0
- package/out/auth/types.js +12 -0
- package/out/auth-broker/config.js +62 -0
- package/out/auth-broker/jwt.js +105 -0
- package/out/auth-broker/pkce.js +57 -0
- package/out/auth-broker/server.js +539 -0
- package/out/auth-broker/store.js +273 -0
- package/out/base-prompts/gateway/openclaw-starter.json5 +144 -0
- package/out/base-prompts/gateway/slack-socket-mode-minimal.manifest.json +44 -0
- package/out/base-prompts/mcp-servers/.mcp.json +13 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +142 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +13 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +1192 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +23 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +12 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +102 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +137 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +118 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +209 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +431 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +270 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +18 -0
- package/out/base-prompts/rules/AGENTS.md +204 -0
- package/out/base-prompts/skills/agent-browser/SKILL.md +102 -0
- package/out/base-prompts/skills/agent-builder/SKILL.md +73 -0
- package/out/base-prompts/skills/agent-builder/references/agent-pack.md +63 -0
- package/out/base-prompts/skills/agent-builder/references/crewai.md +66 -0
- package/out/base-prompts/skills/agent-builder/references/langchain.md +60 -0
- package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +73 -0
- package/out/base-prompts/skills/agent-engine-creator/SKILL.md +586 -0
- package/out/base-prompts/skills/agent-engine-installer/SKILL.md +106 -0
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +259 -0
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +189 -0
- package/out/base-prompts/skills/agenthippo-cli/SKILL.md +69 -0
- package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +63 -0
- package/out/base-prompts/skills/agentpack-creator/SKILL.md +375 -0
- package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +261 -0
- package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +195 -0
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +391 -0
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +294 -0
- package/out/base-prompts/skills/agentpack-testbench/SKILL.md +135 -0
- package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +202 -0
- package/out/base-prompts/skills/algorithmic-art/SKILL.md +405 -0
- package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +599 -0
- package/out/base-prompts/skills/debug-agent/SKILL.md +83 -0
- package/out/base-prompts/skills/desktop-automation/SKILL.md +166 -0
- package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +441 -0
- package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +280 -0
- package/out/base-prompts/skills/docx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/docx/SKILL.md +197 -0
- package/out/base-prompts/skills/docx/docx-js.md +350 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +159 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +69 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/out/base-prompts/skills/docx/ooxml.md +610 -0
- package/out/base-prompts/skills/docx/scripts/__init__.py +1 -0
- package/out/base-prompts/skills/docx/scripts/document.py +1276 -0
- package/out/base-prompts/skills/docx/scripts/templates/comments.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/people.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/utilities.py +374 -0
- package/out/base-prompts/skills/gateway-outbound/SKILL.md +136 -0
- package/out/base-prompts/skills/mcp-builder/LICENSE.txt +202 -0
- package/out/base-prompts/skills/mcp-builder/SKILL.md +328 -0
- package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +602 -0
- package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/out/base-prompts/skills/mcp-builder/scripts/connections.py +151 -0
- package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/out/base-prompts/skills/openclaw/SKILL.md +406 -0
- package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +61 -0
- package/out/base-prompts/skills/pdf/LICENSE.txt +30 -0
- package/out/base-prompts/skills/pdf/SKILL.md +294 -0
- package/out/base-prompts/skills/pdf/forms.md +205 -0
- package/out/base-prompts/skills/pdf/reference.md +612 -0
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +41 -0
- package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/out/base-prompts/skills/pptx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/pptx/SKILL.md +484 -0
- package/out/base-prompts/skills/pptx/html2pptx.md +625 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/out/base-prompts/skills/pptx/ooxml.md +427 -0
- package/out/base-prompts/skills/pptx/scripts/html2pptx.js +984 -0
- package/out/base-prompts/skills/pptx/scripts/inventory.py +1020 -0
- package/out/base-prompts/skills/pptx/scripts/rearrange.py +231 -0
- package/out/base-prompts/skills/pptx/scripts/replace.py +385 -0
- package/out/base-prompts/skills/pptx/scripts/thumbnail.py +450 -0
- package/out/base-prompts/skills/prompt-lab/SKILL.md +149 -0
- package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/skill-creator/LICENSE.txt +202 -0
- package/out/base-prompts/skills/skill-creator/SKILL.md +371 -0
- package/out/base-prompts/skills/skill-creator/references/output-patterns.md +82 -0
- package/out/base-prompts/skills/skill-creator/references/workflows.md +28 -0
- package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +303 -0
- package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +110 -0
- package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/out/base-prompts/skills/skill-installer/SKILL.md +251 -0
- package/out/base-prompts/skills/skill-installer/references/store-api.md +219 -0
- package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +83 -0
- package/out/base-prompts/skills/spotlight-insights/SKILL.md +101 -0
- package/out/base-prompts/skills/spotlight-optimize/SKILL.md +93 -0
- package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/spotlight-query/SKILL.md +314 -0
- package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +163 -0
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +744 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +14 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +7 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +5 -0
- package/out/base-prompts/skills/spotlight-report/SKILL.md +86 -0
- package/out/base-prompts/skills/spotlight-visualize/SKILL.md +92 -0
- package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/xlsx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/xlsx/SKILL.md +289 -0
- package/out/base-prompts/skills/xlsx/recalc.py +178 -0
- package/out/branding.js +23 -0
- package/out/cli/commands/anywhere.js +66 -0
- package/out/cli/commands/ask.js +243 -0
- package/out/cli/commands/auth-broker.js +24 -0
- package/out/cli/commands/auth.js +219 -0
- package/out/cli/commands/chat.js +354 -0
- package/out/cli/commands/deploy.js +223 -0
- package/out/cli/commands/gateway.js +160 -0
- package/out/cli/commands/pack.js +220 -0
- package/out/cli/commands/probe-custom-engine.js +82 -0
- package/out/cli/commands/serve.js +583 -0
- package/out/cli/commands/store.js +919 -0
- package/out/cli/credential-context.js +113 -0
- package/out/cli/deploy-init.js +2087 -0
- package/out/cli/deps.js +238 -0
- package/out/cli/index.js +390 -0
- package/out/cli/pack-loader.js +376 -0
- package/out/cli/run-custom-engine-runner.js +318 -0
- package/out/cli/runtime.js +409 -0
- package/out/cli/serve-hardening.js +325 -0
- package/out/cli/state-sync.js +135 -0
- package/out/cli/utils.js +220 -0
- package/out/cli/vscode-shim.js +86 -0
- package/out/engines/base.js +159 -0
- package/out/engines/claude.js +1215 -0
- package/out/engines/codex.js +759 -0
- package/out/engines/custom.js +632 -0
- package/out/engines/customEngineIpc.js +95 -0
- package/out/engines/customEngineRunnerEmbed.js +107 -0
- package/out/engines/customRegistry.js +274 -0
- package/out/engines/embeddedCustomEngineRunner.generated.js +9 -0
- package/out/engines/engineApiKey.js +138 -0
- package/out/engines/factory.js +45 -0
- package/out/engines/install.js +372 -0
- package/out/engines/persistentEngineWorker.js +320 -0
- package/out/engines/publish.js +341 -0
- package/out/engines/types.js +17 -0
- package/out/examples/run-headless-repl.js +291 -0
- package/out/examples/run-headless.js +187 -0
- package/out/extension.js +4472 -0
- package/out/gateway/bridge.js +805 -0
- package/out/gateway/cli-agent-id.js +36 -0
- package/out/gateway/client.js +303 -0
- package/out/gateway/client.test.js +395 -0
- package/out/gateway/gateway-scope-errors.js +14 -0
- package/out/gateway/gatewayBackup.js +76 -0
- package/out/gateway/gatewayRouteIndex.js +371 -0
- package/out/gateway/gatewaySessionStore.js +243 -0
- package/out/gateway/index.js +31 -0
- package/out/gateway/lifecycle.js +3056 -0
- package/out/gateway/openclaw-channel-routing.js +317 -0
- package/out/gateway/outboundHandles.js +373 -0
- package/out/gateway/outboundPaths.js +72 -0
- package/out/gateway/outboundSend.js +254 -0
- package/out/gateway/protocol.js +48 -0
- package/out/gateway/resetMappings.js +52 -0
- package/out/gateway/service.js +1244 -0
- package/out/gateway/sessionRouting.js +77 -0
- package/out/headless/index.js +505 -0
- package/out/headless/sync.js +473 -0
- package/out/mcp/publish.js +143 -0
- package/out/mcp.js +597 -0
- package/out/permissions.js +108 -0
- package/out/permissions.mapping.yaml +68 -0
- package/out/registry/index.js +332 -0
- package/out/remote/handleRemoteChat.js +122 -0
- package/out/remote/remotePackStatusBar.js +103 -0
- package/out/remote/serveClient.js +216 -0
- package/out/remoteSkills.js +191 -0
- package/out/runtime/index.js +32 -0
- package/out/runtime/interfaces/config-provider.js +32 -0
- package/out/runtime/interfaces/edit-tracker.js +22 -0
- package/out/runtime/interfaces/index.js +29 -0
- package/out/runtime/interfaces/logger.js +40 -0
- package/out/runtime/interfaces/permission-handler.js +66 -0
- package/out/runtime/interfaces/session-store.js +342 -0
- package/out/runtime/vscode/index.js +20 -0
- package/out/runtime/vscode/vscode-config-provider.js +77 -0
- package/out/runtime/vscode/vscode-edit-tracker.js +120 -0
- package/out/runtime/vscode/vscode-logger.js +30 -0
- package/out/runtime/vscode/vscode-permission-handler.js +72 -0
- package/out/runtime/vscode/vscode-session-store.js +22 -0
- package/out/scripts/agentide-litellm.ps1 +501 -0
- package/out/scripts/agentide-litellm.sh +700 -0
- package/out/scripts/agentide_litellm_hooks_v1.py +604 -0
- package/out/scripts/analytics/agent-fleet-widget.js +954 -0
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +160 -0
- package/out/scripts/analytics/default-seed-scripts.json +12 -0
- package/out/scripts/analytics/duckdbLocator.js +29 -0
- package/out/scripts/analytics/fleet-local-adapter.js +246 -0
- package/out/scripts/analytics/fleet-workflow.sh +263 -0
- package/out/scripts/analytics/generate-default-charts.py +685 -0
- package/out/scripts/analytics/hotspot-analysis-widget.js +909 -0
- package/out/scripts/analytics/index-traces.py +1394 -0
- package/out/scripts/analytics/install-analytics.sh +286 -0
- package/out/scripts/analytics/live-fleet-4-collector.cjs +315 -0
- package/out/scripts/analytics/live-fleet-4-daemon.mjs +134 -0
- package/out/scripts/analytics/live-fleet-4-widget.cjs +433 -0
- package/out/scripts/analytics/otel-collector.yaml +55 -0
- package/out/scripts/analytics/query-analytics.ps1 +396 -0
- package/out/scripts/analytics/query-analytics.sh +2551 -0
- package/out/scripts/analytics/session-comparison-widget.js +1468 -0
- package/out/scripts/analytics/session-timeline-widget.js +2137 -0
- package/out/scripts/analytics/setup-analytics.ps1 +432 -0
- package/out/scripts/analytics/setup-analytics.sh +854 -0
- package/out/scripts/analytics/start-analytics.ps1 +169 -0
- package/out/scripts/analytics/start-analytics.sh +323 -0
- package/out/scripts/analytics/token-cost-flamegraph-widget.js +954 -0
- package/out/scripts/analytics/token-cost-trend-widget.js +1062 -0
- package/out/scripts/analytics/workflows-collector.cjs +315 -0
- package/out/scripts/analytics/workflows-daemon.mjs +186 -0
- package/out/scripts/analytics/workflows-widget.cjs +433 -0
- package/out/scripts/analytics/wow-model-widget.js +191 -0
- package/out/scripts/gateway/Dockerfile.serve +45 -0
- package/out/scripts/gateway/docker-serve.sh +248 -0
- package/out/scripts/gateway/setup-gateway-server.ps1 +953 -0
- package/out/scripts/gateway/setup-gateway-server.sh +935 -0
- package/out/scripts/gateway/setup-gateway.ps1 +1813 -0
- package/out/scripts/gateway/setup-gateway.sh +1541 -0
- package/out/scripts/setup-cli.ps1 +86 -0
- package/out/scripts/setup-cli.sh +117 -0
- package/out/scripts/tools-manifest.json +83 -0
- package/out/scripts/vendor-tools.mjs +234 -0
- package/out/session.js +272 -0
- package/out/shared/agentEngines.js +170 -0
- package/out/shared/index.js +109 -0
- package/out/shared/models.js +235 -0
- package/out/shared/providers.js +202 -0
- package/out/skills/publish.js +178 -0
- package/out/spotlight/install.js +339 -0
- package/out/spotlight/publish.js +544 -0
- package/out/spotlight/yaml.js +31 -0
- package/out/store/github/setup.js +235 -0
- package/out/store/github/templates/build-index.ts +339 -0
- package/out/store/github/templates/build-index.yml +97 -0
- package/out/store/github/templates/package.json +11 -0
- package/out/store/index.js +755 -0
- package/out/store/oramaIndex.js +884 -0
- package/out/store/shared.js +241 -0
- package/out/sync.js +1827 -0
- package/out/terminalLogger.js +358 -0
- package/out/test/agentEnvFile.test.js +97 -0
- package/out/test/agentYaml.test.js +373 -0
- package/out/test/agentpack.test.js +639 -0
- package/out/test/analytics-lifecycle.test.js +174 -0
- package/out/test/analytics.test.js +524 -0
- package/out/test/auth-bootstrapApply.test.js +102 -0
- package/out/test/auth-broker.test.js +434 -0
- package/out/test/auth-callback.test.js +62 -0
- package/out/test/branding.test.js +229 -0
- package/out/test/cli-agent-id.test.js +55 -0
- package/out/test/credential-context.test.js +105 -0
- package/out/test/customEngineInstall.test.js +100 -0
- package/out/test/customRegistry.test.js +122 -0
- package/out/test/deploy-init.test.js +532 -0
- package/out/test/deps-auto-install.test.js +81 -0
- package/out/test/engine-integration.test.js +297 -0
- package/out/test/enginePaths.test.js +195 -0
- package/out/test/enginePublish.test.js +82 -0
- package/out/test/fleetDisplayUtils.test.js +96 -0
- package/out/test/gateway-client.test.js +381 -0
- package/out/test/gateway-lifecycle.test.js +608 -0
- package/out/test/gateway-outbound.test.js +531 -0
- package/out/test/gateway-reset-mappings.test.js +221 -0
- package/out/test/gateway-route-index.test.js +235 -0
- package/out/test/gateway-session-routing.test.js +47 -0
- package/out/test/gateway-session-store.test.js +216 -0
- package/out/test/github.test.js +232 -0
- package/out/test/headless-sync.test.js +279 -0
- package/out/test/helpers/manifest-fixtures.js +27 -0
- package/out/test/mcp-obo.test.js +82 -0
- package/out/test/mcp.test.js +307 -0
- package/out/test/openclaw-channel-routing.test.js +191 -0
- package/out/test/pathSafety.test.js +63 -0
- package/out/test/permissions.test.js +175 -0
- package/out/test/persistent-engine-worker.test.js +220 -0
- package/out/test/refreshPolicy.test.js +60 -0
- package/out/test/registry.test.js +351 -0
- package/out/test/runtime.test.js +349 -0
- package/out/test/scheduledFleetStorage.test.js +72 -0
- package/out/test/serve-hardening.test.js +192 -0
- package/out/test/serveClient.test.js +173 -0
- package/out/test/sessionJsonlFleet.test.js +78 -0
- package/out/test/shared.test.js +173 -0
- package/out/test/skills-mcp.test.js +299 -0
- package/out/test/spotlightPublish.test.js +299 -0
- package/out/test/spotlightYaml.test.js +58 -0
- package/out/test/state-sync-peer.test.js +74 -0
- package/out/test/store.test.js +331 -0
- package/out/test/stores.test.js +504 -0
- package/out/test/sync-switch.test.js +251 -0
- package/out/test/teamViewDiscovery.test.js +90 -0
- package/out/test/toolPath.test.js +120 -0
- package/out/test/utils.test.js +308 -0
- package/out/test/viewsConfigMerge.test.js +180 -0
- package/out/test/windows-command-line.test.js +75 -0
- package/out/utils/agentEnvFile.js +131 -0
- package/out/utils/binary.js +175 -0
- package/out/utils/index.js +37 -0
- package/out/utils/network.js +74 -0
- package/out/utils/pathSafety.js +60 -0
- package/out/utils/paths.js +116 -0
- package/out/utils/pid.js +180 -0
- package/out/utils/pythonRunner.js +258 -0
- package/out/utils/resolveNodeBinary.js +168 -0
- package/out/utils/toolPath.js +83 -0
- package/out/utils/windowsCommandLine.js +29 -0
- package/out/utils.js +915 -0
- package/out/workspaceFolders.js +59 -0
- package/package.json +41 -0
package/out/session.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.DEFAULT_CONVERSATION_LOCK_TIMEOUT_MS = void 0;
|
|
40
|
+
exports.initSessionStore = initSessionStore;
|
|
41
|
+
exports.initSessionStoreWithStore = initSessionStoreWithStore;
|
|
42
|
+
exports._getSessionStore = _getSessionStore;
|
|
43
|
+
exports._resetSessionStore = _resetSessionStore;
|
|
44
|
+
exports.upsertPersistedSession = upsertPersistedSession;
|
|
45
|
+
exports.touchPersistedSession = touchPersistedSession;
|
|
46
|
+
exports.getPersistedSession = getPersistedSession;
|
|
47
|
+
exports.runSessionMaintenance = runSessionMaintenance;
|
|
48
|
+
exports.buildConversationKey = buildConversationKey;
|
|
49
|
+
exports.withConversationLock = withConversationLock;
|
|
50
|
+
const crypto = __importStar(require("crypto"));
|
|
51
|
+
const utils_1 = require("./utils");
|
|
52
|
+
const vscode_session_store_1 = require("./runtime/vscode/vscode-session-store");
|
|
53
|
+
// -----------------------------------------------------------------------------
|
|
54
|
+
// Constants
|
|
55
|
+
// -----------------------------------------------------------------------------
|
|
56
|
+
const PERSISTED_SESSIONS_KEY = 'agentide.providerSessions.v1';
|
|
57
|
+
const PERSISTED_MAX_ENTRIES = 200;
|
|
58
|
+
const PERSISTED_TTL_MS = 1000 * 60 * 60 * 24 * 14; // 14 days
|
|
59
|
+
let _persistedSessions = {};
|
|
60
|
+
let _sessionStore;
|
|
61
|
+
/**
|
|
62
|
+
* Initialize session store with a VS Code extension context.
|
|
63
|
+
* This is the standard initialization for the VS Code extension.
|
|
64
|
+
*/
|
|
65
|
+
function initSessionStore(context) {
|
|
66
|
+
initSessionStoreWithStore(new vscode_session_store_1.VSCodeSessionStore(context.globalState));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Initialize session store with a custom SessionStore implementation.
|
|
70
|
+
* Useful for testing or alternative runtime environments.
|
|
71
|
+
*/
|
|
72
|
+
function initSessionStoreWithStore(store) {
|
|
73
|
+
_sessionStore = store;
|
|
74
|
+
const value = store.get(PERSISTED_SESSIONS_KEY);
|
|
75
|
+
_persistedSessions = value ?? {};
|
|
76
|
+
prunePersistedSessions(Date.now());
|
|
77
|
+
void flushPersistedSessionsToStore();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the current session store for testing or advanced use cases.
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
function _getSessionStore() {
|
|
84
|
+
return _sessionStore;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Reset the session store (for testing).
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
90
|
+
function _resetSessionStore() {
|
|
91
|
+
_sessionStore = undefined;
|
|
92
|
+
_persistedSessions = {};
|
|
93
|
+
}
|
|
94
|
+
function prunePersistedSessions(nowMs) {
|
|
95
|
+
// TTL prune first
|
|
96
|
+
for (const [key, entry] of Object.entries(_persistedSessions)) {
|
|
97
|
+
if (nowMs - entry.lastUsedAt > PERSISTED_TTL_MS) {
|
|
98
|
+
delete _persistedSessions[key];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Size prune (oldest lastUsedAt first)
|
|
102
|
+
const keys = Object.keys(_persistedSessions);
|
|
103
|
+
if (keys.length <= PERSISTED_MAX_ENTRIES) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
keys.sort((a, b) => _persistedSessions[a].lastUsedAt - _persistedSessions[b].lastUsedAt);
|
|
107
|
+
for (let i = 0; i < keys.length - PERSISTED_MAX_ENTRIES; i++) {
|
|
108
|
+
delete _persistedSessions[keys[i]];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function flushPersistedSessionsToStore() {
|
|
112
|
+
if (!_sessionStore) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
await _sessionStore.set(PERSISTED_SESSIONS_KEY, _persistedSessions);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Best-effort persistence only; don't fail requests if storage can't persist state.
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async function upsertPersistedSession(conversationKey, entry) {
|
|
123
|
+
_persistedSessions[conversationKey] = entry;
|
|
124
|
+
prunePersistedSessions(Date.now());
|
|
125
|
+
await flushPersistedSessionsToStore();
|
|
126
|
+
}
|
|
127
|
+
async function touchPersistedSession(conversationKey) {
|
|
128
|
+
const existing = _persistedSessions[conversationKey];
|
|
129
|
+
if (!existing) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
existing.lastUsedAt = Date.now();
|
|
133
|
+
prunePersistedSessions(existing.lastUsedAt);
|
|
134
|
+
await flushPersistedSessionsToStore();
|
|
135
|
+
}
|
|
136
|
+
function getPersistedSession(conversationKey) {
|
|
137
|
+
return _persistedSessions[conversationKey];
|
|
138
|
+
}
|
|
139
|
+
function runSessionMaintenance() {
|
|
140
|
+
prunePersistedSessions(Date.now());
|
|
141
|
+
void flushPersistedSessionsToStore();
|
|
142
|
+
}
|
|
143
|
+
// -----------------------------------------------------------------------------
|
|
144
|
+
// Conversation Key Building
|
|
145
|
+
// -----------------------------------------------------------------------------
|
|
146
|
+
/**
|
|
147
|
+
* Build a signature that captures the "environment" of a session.
|
|
148
|
+
*
|
|
149
|
+
* **Intentionally EXCLUDED from signature:**
|
|
150
|
+
* - `modelId` -- conversation history can be replayed to any compatible model
|
|
151
|
+
* - `useLiteLLM` / `baseUrl` -- these are routing details, not session identity.
|
|
152
|
+
* Both Codex and Claude store their session/thread data locally (in CODEX_HOME
|
|
153
|
+
* and CLAUDE_CONFIG_DIR respectively), so the API endpoint doesn't affect persistence.
|
|
154
|
+
*
|
|
155
|
+
* **Included in signature:**
|
|
156
|
+
* - `workspaceRoot` -- defines what files the agent can access
|
|
157
|
+
* - `additionalDirectories` -- multi-root workspace context
|
|
158
|
+
* - `agentPackId` -- agent pack isolation (different packs = different sessions)
|
|
159
|
+
*
|
|
160
|
+
* This means:
|
|
161
|
+
* - Switching models mid-conversation: [OK] session resumes
|
|
162
|
+
* - Switching LiteLLM ↔ direct API: [OK] session resumes (same local storage)
|
|
163
|
+
* - Changing workspace/folders: [X] new session (different file context)
|
|
164
|
+
* - Changing agent pack: [X] new session (different pack = different agent)
|
|
165
|
+
*/
|
|
166
|
+
function buildSessionSignatureRaw(options) {
|
|
167
|
+
return JSON.stringify({
|
|
168
|
+
// NOTE: modelId, useLiteLLM, baseUrl are NOT included -- sessions persist across these changes
|
|
169
|
+
workspaceRoot: options.workspaceRoot,
|
|
170
|
+
additionalDirectories: (0, utils_1.stableAdditionalDirs)(options.additionalDirectories),
|
|
171
|
+
// AgentPack isolation: different packs get different sessions
|
|
172
|
+
agentPackId: options.agentPackId ?? 'default',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function buildConversationKey(engineId, options) {
|
|
176
|
+
const rawChatSessionId = options.sessionId?.trim();
|
|
177
|
+
// Prefer the context session id when provided so the UI can rotate backend memory
|
|
178
|
+
// without forcing a new VS Code chat UI session.
|
|
179
|
+
const conversationSessionId = options.contextSessionId?.trim() || rawChatSessionId;
|
|
180
|
+
const isEphemeral = !conversationSessionId;
|
|
181
|
+
const effectiveConversationSessionId = conversationSessionId || `ephemeral-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
182
|
+
const chatSessionId = rawChatSessionId || effectiveConversationSessionId;
|
|
183
|
+
// Include agentPackId in session key for logical isolation
|
|
184
|
+
const agentPackId = options.agentPackId ?? 'default';
|
|
185
|
+
const signatureRaw = buildSessionSignatureRaw(options);
|
|
186
|
+
const signatureHash = crypto.createHash('sha256').update(signatureRaw).digest('hex').slice(0, 16);
|
|
187
|
+
// Key format: engine:chatSession:pack:signature
|
|
188
|
+
// This ensures different packs get different session keys even with same chatSessionId
|
|
189
|
+
return {
|
|
190
|
+
key: `${engineId}:${effectiveConversationSessionId}:${agentPackId}:${signatureHash}`,
|
|
191
|
+
chatSessionId,
|
|
192
|
+
isEphemeral,
|
|
193
|
+
signatureHash,
|
|
194
|
+
signatureRaw,
|
|
195
|
+
agentPackId,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// -----------------------------------------------------------------------------
|
|
199
|
+
// Conversation Lock
|
|
200
|
+
// -----------------------------------------------------------------------------
|
|
201
|
+
/**
|
|
202
|
+
* Safety net timeout for a single conversation turn. Agent turns may run for hours, so keep this high.
|
|
203
|
+
* This is not meant to enforce an SLA only to prevent a permanently stuck lock from blocking forever.
|
|
204
|
+
*/
|
|
205
|
+
exports.DEFAULT_CONVERSATION_LOCK_TIMEOUT_MS = 1000 * 60 * 60 * 48; // 24 hours
|
|
206
|
+
const _conversationLocks = new Map();
|
|
207
|
+
function withConversationLock(key, fn, options) {
|
|
208
|
+
const prev = _conversationLocks.get(key) ?? Promise.resolve();
|
|
209
|
+
let release;
|
|
210
|
+
const gate = new Promise(resolve => {
|
|
211
|
+
release = resolve;
|
|
212
|
+
});
|
|
213
|
+
const current = prev.then(() => gate);
|
|
214
|
+
_conversationLocks.set(key, current);
|
|
215
|
+
const label = options?.label ? ` (${options.label})` : '';
|
|
216
|
+
const timeoutMs = typeof options?.timeoutMs === 'number' ? options.timeoutMs : undefined;
|
|
217
|
+
const signal = options?.signal;
|
|
218
|
+
let abortListener;
|
|
219
|
+
let timeoutHandle;
|
|
220
|
+
let timedOut = false;
|
|
221
|
+
const cancelPromise = signal
|
|
222
|
+
? new Promise((_, reject) => {
|
|
223
|
+
if (signal.aborted) {
|
|
224
|
+
reject(new Error(`[AgentIDE] Cancelled while waiting for conversation lock${label}`));
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
abortListener = () => reject(new Error(`[AgentIDE] Cancelled while waiting for conversation lock${label}`));
|
|
228
|
+
signal.addEventListener('abort', abortListener, { once: true });
|
|
229
|
+
})
|
|
230
|
+
: undefined;
|
|
231
|
+
const timeoutPromise = timeoutMs && timeoutMs > 0
|
|
232
|
+
? new Promise((_, reject) => {
|
|
233
|
+
timeoutHandle = setTimeout(() => {
|
|
234
|
+
timedOut = true;
|
|
235
|
+
options?.onTimeout?.();
|
|
236
|
+
reject(new Error(`[AgentIDE] Conversation lock timed out after ${timeoutMs}ms${label}`));
|
|
237
|
+
}, timeoutMs);
|
|
238
|
+
})
|
|
239
|
+
: undefined;
|
|
240
|
+
const waiters = [prev, cancelPromise, timeoutPromise].filter(Boolean);
|
|
241
|
+
// Acquire lock (or fail fast on cancel/timeout), then run.
|
|
242
|
+
// Note: if cancel/timeout happens while `fn` is running, we also reject to unblock the lock.
|
|
243
|
+
const run = Promise.race(waiters).then(async () => {
|
|
244
|
+
if (signal?.aborted) {
|
|
245
|
+
throw new Error(`[AgentIDE] Cancelled before running conversation work${label}`);
|
|
246
|
+
}
|
|
247
|
+
if (timedOut) {
|
|
248
|
+
throw new Error(`[AgentIDE] Conversation lock timed out after ${timeoutMs}ms${label}`);
|
|
249
|
+
}
|
|
250
|
+
const work = fn();
|
|
251
|
+
// Important: do not race execution with cancellation here. Callers should pass the AbortSignal into the
|
|
252
|
+
// underlying SDK operations and let `fn` exit normally, so we don't release the lock while the SDK is still running.
|
|
253
|
+
const runners = [work, timeoutPromise].filter(Boolean);
|
|
254
|
+
return await Promise.race(runners);
|
|
255
|
+
});
|
|
256
|
+
return run.finally(() => {
|
|
257
|
+
try {
|
|
258
|
+
if (timeoutHandle) {
|
|
259
|
+
clearTimeout(timeoutHandle);
|
|
260
|
+
}
|
|
261
|
+
if (signal && abortListener) {
|
|
262
|
+
signal.removeEventListener('abort', abortListener);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
finally {
|
|
266
|
+
release();
|
|
267
|
+
if (_conversationLocks.get(key) === current) {
|
|
268
|
+
_conversationLocks.delete(key);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AGENT_ENGINES = void 0;
|
|
7
|
+
exports.getAgentEngine = getAgentEngine;
|
|
8
|
+
exports.getAllAgentEngines = getAllAgentEngines;
|
|
9
|
+
exports.getAllAgentEngineIds = getAllAgentEngineIds;
|
|
10
|
+
exports.getCompatibleProviders = getCompatibleProviders;
|
|
11
|
+
exports.getEnginesCompatibleWithProvider = getEnginesCompatibleWithProvider;
|
|
12
|
+
exports.isEngineCompatibleWithProvider = isEngineCompatibleWithProvider;
|
|
13
|
+
exports.getEngineRulesFile = getEngineRulesFile;
|
|
14
|
+
exports.getEngineWorkspaceDir = getEngineWorkspaceDir;
|
|
15
|
+
const providers_1 = require("./providers");
|
|
16
|
+
/**
|
|
17
|
+
* Agent Engine registry - single source of truth for all agent engine configurations.
|
|
18
|
+
*/
|
|
19
|
+
exports.AGENT_ENGINES = {
|
|
20
|
+
codex: {
|
|
21
|
+
id: 'codex',
|
|
22
|
+
displayName: 'Codex',
|
|
23
|
+
description: 'OpenAI Codex - code generation agent',
|
|
24
|
+
icon: 'sparkle',
|
|
25
|
+
nativeProvider: 'openai',
|
|
26
|
+
workspaceDir: '.codex',
|
|
27
|
+
rulesFile: 'AGENTS.md',
|
|
28
|
+
configEnvVar: 'CODEX_HOME',
|
|
29
|
+
managedPaths: ['skills', 'config.toml', 'agentide.runtime.md'],
|
|
30
|
+
},
|
|
31
|
+
claude: {
|
|
32
|
+
id: 'claude',
|
|
33
|
+
displayName: 'Claude',
|
|
34
|
+
description: 'Anthropic Claude - agentic coding assistant',
|
|
35
|
+
icon: 'beaker',
|
|
36
|
+
nativeProvider: 'anthropic',
|
|
37
|
+
workspaceDir: '.claude',
|
|
38
|
+
rulesFile: 'CLAUDE.md',
|
|
39
|
+
configEnvVar: 'CLAUDE_CONFIG_DIR',
|
|
40
|
+
// Claude config dir is managed as a whole, no specific files listed
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
// -----------------------------------------------------------------------------
|
|
44
|
+
// Utility Functions
|
|
45
|
+
// -----------------------------------------------------------------------------
|
|
46
|
+
/**
|
|
47
|
+
* Get an agent engine by ID
|
|
48
|
+
*/
|
|
49
|
+
function getAgentEngine(id) {
|
|
50
|
+
return exports.AGENT_ENGINES[id];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all agent engines as an array
|
|
54
|
+
*/
|
|
55
|
+
function getAllAgentEngines() {
|
|
56
|
+
return Object.values(exports.AGENT_ENGINES);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get all agent engine IDs
|
|
60
|
+
*/
|
|
61
|
+
function getAllAgentEngineIds() {
|
|
62
|
+
return Object.keys(exports.AGENT_ENGINES);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get compatible providers for an engine.
|
|
66
|
+
* Compatibility is determined by:
|
|
67
|
+
* 1. The native provider (always compatible)
|
|
68
|
+
* 2. Gateway providers (OpenRouter, LiteLLM - they can route to any backend)
|
|
69
|
+
* 3. Provider type: Codex works with all non-Anthropic, Claude works only with Anthropic
|
|
70
|
+
*/
|
|
71
|
+
function getCompatibleProviders(engineId) {
|
|
72
|
+
const engine = exports.AGENT_ENGINES[engineId];
|
|
73
|
+
if (!engine) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const compatible = [engine.nativeProvider];
|
|
77
|
+
for (const [providerId, provider] of Object.entries(providers_1.PROVIDERS)) {
|
|
78
|
+
if (compatible.includes(providerId)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
// Gateway providers work with all engines
|
|
82
|
+
if (provider.isGateway) {
|
|
83
|
+
compatible.push(providerId);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// Codex (OpenAI-based) works with all non-Anthropic-family providers.
|
|
87
|
+
if (engine.nativeProvider === 'openai' && !(0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
88
|
+
compatible.push(providerId);
|
|
89
|
+
}
|
|
90
|
+
// Claude works with Anthropic-family providers.
|
|
91
|
+
if (engine.nativeProvider === 'anthropic' && (0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
92
|
+
compatible.push(providerId);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return compatible;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get agent engines compatible with a provider.
|
|
99
|
+
* An engine is compatible if:
|
|
100
|
+
* 1. The provider is the engine's native provider
|
|
101
|
+
* 2. The provider is a gateway (can route to any backend)
|
|
102
|
+
* 3. Provider type: non-Anthropic providers work with Codex
|
|
103
|
+
*/
|
|
104
|
+
function getEnginesCompatibleWithProvider(providerId) {
|
|
105
|
+
const provider = providers_1.PROVIDERS[providerId];
|
|
106
|
+
if (!provider) {
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
// Gateway providers are compatible with all engines
|
|
110
|
+
if (provider.isGateway) {
|
|
111
|
+
return Object.values(exports.AGENT_ENGINES);
|
|
112
|
+
}
|
|
113
|
+
return Object.values(exports.AGENT_ENGINES).filter(engine => {
|
|
114
|
+
// Native provider
|
|
115
|
+
if (engine.nativeProvider === providerId) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
// Non-Anthropic-family providers work with Codex
|
|
119
|
+
if (engine.nativeProvider === 'openai' && !(0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// Anthropic-family providers work with Claude
|
|
123
|
+
if (engine.nativeProvider === 'anthropic' && (0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check if an engine is compatible with a provider.
|
|
131
|
+
* Compatibility is determined by:
|
|
132
|
+
* 1. Native provider (always compatible)
|
|
133
|
+
* 2. Gateway providers (compatible with all engines)
|
|
134
|
+
* 3. Provider type: non-Anthropic providers work with Codex
|
|
135
|
+
*/
|
|
136
|
+
function isEngineCompatibleWithProvider(engineId, providerId) {
|
|
137
|
+
const engine = exports.AGENT_ENGINES[engineId];
|
|
138
|
+
if (!engine) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
// Native provider is always compatible
|
|
142
|
+
if (engine.nativeProvider === providerId) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
// Gateway providers are compatible with all engines
|
|
146
|
+
if ((0, providers_1.isGatewayProvider)(providerId)) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
// Non-Anthropic-family providers work with Codex (OpenAI-based engines)
|
|
150
|
+
if (engine.nativeProvider === 'openai' && !(0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
// Anthropic-family providers work with Claude.
|
|
154
|
+
if (engine.nativeProvider === 'anthropic' && (0, providers_1.isAnthropicProviderFamily)(providerId)) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get the rules file for an engine
|
|
161
|
+
*/
|
|
162
|
+
function getEngineRulesFile(engineId) {
|
|
163
|
+
return exports.AGENT_ENGINES[engineId]?.rulesFile;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the workspace directory for an engine
|
|
167
|
+
*/
|
|
168
|
+
function getEngineWorkspaceDir(engineId) {
|
|
169
|
+
return exports.AGENT_ENGINES[engineId]?.workspaceDir;
|
|
170
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getEngineWorkspaceDir = exports.getEngineRulesFile = exports.isEngineCompatibleWithProvider = exports.getEnginesCompatibleWithProvider = exports.getCompatibleProviders = exports.getAllAgentEngineIds = exports.getAllAgentEngines = exports.getAgentEngine = exports.AGENT_ENGINES = exports.getActiveModels = exports.getModelsWithCapability = exports.getRecommendedModels = exports.getModelsForProvider = exports.getModel = exports.getModelByRegistryKey = exports.isCompositeKey = exports.parseRegistryKey = exports.getRegistryKey = exports.REGISTRY_KEY_SEPARATOR = exports.BUILTIN_MODELS = exports.providerNotSupportAnthropicApi = exports.isAnthropicSetupToken = exports.normalizeAnthropicSetupToken = exports.ANTHROPIC_SETUP_TOKEN_PREFIX = exports.isAnthropicProviderFamily = exports.requiresBaseUrl = exports.getApiKeyProviders = exports.getLocalProviders = exports.getCloudProviders = exports.getAllProviderIds = exports.isLocalProvider = exports.requiresApiKey = exports.getProvider = exports.PROVIDERS = void 0;
|
|
7
|
+
exports.getProviderForModel = getProviderForModel;
|
|
8
|
+
exports.getEngineForModel = getEngineForModel;
|
|
9
|
+
exports.getModelsForEngine = getModelsForEngine;
|
|
10
|
+
exports.isModelFromProvider = isModelFromProvider;
|
|
11
|
+
/**
|
|
12
|
+
* Shared types for AgentIDE Extension
|
|
13
|
+
*
|
|
14
|
+
* ⚠️ KEEP IN SYNC with: src/vs/workbench/contrib/agentide/common/shared/index.ts
|
|
15
|
+
*
|
|
16
|
+
* These types are duplicated because VS Code's extension host cannot
|
|
17
|
+
* import from the workbench. When modifying, update BOTH files.
|
|
18
|
+
*
|
|
19
|
+
* This module exports all shared type definitions for providers, models, and agent engines.
|
|
20
|
+
* These types are runtime-agnostic and can be used in:
|
|
21
|
+
* - VS Code workbench (main process)
|
|
22
|
+
* - VS Code extension host (Node.js)
|
|
23
|
+
* - Headless runtime (Node.js, no Electron)
|
|
24
|
+
* - Customer SDK (browser or Node.js)
|
|
25
|
+
*/
|
|
26
|
+
// Provider types and registry
|
|
27
|
+
var providers_1 = require("./providers");
|
|
28
|
+
Object.defineProperty(exports, "PROVIDERS", { enumerable: true, get: function () { return providers_1.PROVIDERS; } });
|
|
29
|
+
Object.defineProperty(exports, "getProvider", { enumerable: true, get: function () { return providers_1.getProvider; } });
|
|
30
|
+
Object.defineProperty(exports, "requiresApiKey", { enumerable: true, get: function () { return providers_1.requiresApiKey; } });
|
|
31
|
+
Object.defineProperty(exports, "isLocalProvider", { enumerable: true, get: function () { return providers_1.isLocalProvider; } });
|
|
32
|
+
Object.defineProperty(exports, "getAllProviderIds", { enumerable: true, get: function () { return providers_1.getAllProviderIds; } });
|
|
33
|
+
Object.defineProperty(exports, "getCloudProviders", { enumerable: true, get: function () { return providers_1.getCloudProviders; } });
|
|
34
|
+
Object.defineProperty(exports, "getLocalProviders", { enumerable: true, get: function () { return providers_1.getLocalProviders; } });
|
|
35
|
+
Object.defineProperty(exports, "getApiKeyProviders", { enumerable: true, get: function () { return providers_1.getApiKeyProviders; } });
|
|
36
|
+
Object.defineProperty(exports, "requiresBaseUrl", { enumerable: true, get: function () { return providers_1.requiresBaseUrl; } });
|
|
37
|
+
Object.defineProperty(exports, "isAnthropicProviderFamily", { enumerable: true, get: function () { return providers_1.isAnthropicProviderFamily; } });
|
|
38
|
+
Object.defineProperty(exports, "ANTHROPIC_SETUP_TOKEN_PREFIX", { enumerable: true, get: function () { return providers_1.ANTHROPIC_SETUP_TOKEN_PREFIX; } });
|
|
39
|
+
Object.defineProperty(exports, "normalizeAnthropicSetupToken", { enumerable: true, get: function () { return providers_1.normalizeAnthropicSetupToken; } });
|
|
40
|
+
Object.defineProperty(exports, "isAnthropicSetupToken", { enumerable: true, get: function () { return providers_1.isAnthropicSetupToken; } });
|
|
41
|
+
Object.defineProperty(exports, "providerNotSupportAnthropicApi", { enumerable: true, get: function () { return providers_1.providerNotSupportAnthropicApi; } });
|
|
42
|
+
// Model types and registry
|
|
43
|
+
var models_1 = require("./models");
|
|
44
|
+
Object.defineProperty(exports, "BUILTIN_MODELS", { enumerable: true, get: function () { return models_1.BUILTIN_MODELS; } });
|
|
45
|
+
// Registry key utilities
|
|
46
|
+
Object.defineProperty(exports, "REGISTRY_KEY_SEPARATOR", { enumerable: true, get: function () { return models_1.REGISTRY_KEY_SEPARATOR; } });
|
|
47
|
+
Object.defineProperty(exports, "getRegistryKey", { enumerable: true, get: function () { return models_1.getRegistryKey; } });
|
|
48
|
+
Object.defineProperty(exports, "parseRegistryKey", { enumerable: true, get: function () { return models_1.parseRegistryKey; } });
|
|
49
|
+
Object.defineProperty(exports, "isCompositeKey", { enumerable: true, get: function () { return models_1.isCompositeKey; } });
|
|
50
|
+
Object.defineProperty(exports, "getModelByRegistryKey", { enumerable: true, get: function () { return models_1.getModelByRegistryKey; } });
|
|
51
|
+
// Legacy utilities (deprecated, prefer registry key variants)
|
|
52
|
+
Object.defineProperty(exports, "getModel", { enumerable: true, get: function () { return models_1.getModel; } });
|
|
53
|
+
Object.defineProperty(exports, "getModelsForProvider", { enumerable: true, get: function () { return models_1.getModelsForProvider; } });
|
|
54
|
+
Object.defineProperty(exports, "getRecommendedModels", { enumerable: true, get: function () { return models_1.getRecommendedModels; } });
|
|
55
|
+
Object.defineProperty(exports, "getModelsWithCapability", { enumerable: true, get: function () { return models_1.getModelsWithCapability; } });
|
|
56
|
+
Object.defineProperty(exports, "getActiveModels", { enumerable: true, get: function () { return models_1.getActiveModels; } });
|
|
57
|
+
// Agent Engine types and registry
|
|
58
|
+
var agentEngines_1 = require("./agentEngines");
|
|
59
|
+
Object.defineProperty(exports, "AGENT_ENGINES", { enumerable: true, get: function () { return agentEngines_1.AGENT_ENGINES; } });
|
|
60
|
+
Object.defineProperty(exports, "getAgentEngine", { enumerable: true, get: function () { return agentEngines_1.getAgentEngine; } });
|
|
61
|
+
Object.defineProperty(exports, "getAllAgentEngines", { enumerable: true, get: function () { return agentEngines_1.getAllAgentEngines; } });
|
|
62
|
+
Object.defineProperty(exports, "getAllAgentEngineIds", { enumerable: true, get: function () { return agentEngines_1.getAllAgentEngineIds; } });
|
|
63
|
+
Object.defineProperty(exports, "getCompatibleProviders", { enumerable: true, get: function () { return agentEngines_1.getCompatibleProviders; } });
|
|
64
|
+
Object.defineProperty(exports, "getEnginesCompatibleWithProvider", { enumerable: true, get: function () { return agentEngines_1.getEnginesCompatibleWithProvider; } });
|
|
65
|
+
Object.defineProperty(exports, "isEngineCompatibleWithProvider", { enumerable: true, get: function () { return agentEngines_1.isEngineCompatibleWithProvider; } });
|
|
66
|
+
Object.defineProperty(exports, "getEngineRulesFile", { enumerable: true, get: function () { return agentEngines_1.getEngineRulesFile; } });
|
|
67
|
+
Object.defineProperty(exports, "getEngineWorkspaceDir", { enumerable: true, get: function () { return agentEngines_1.getEngineWorkspaceDir; } });
|
|
68
|
+
// -----------------------------------------------------------------------------
|
|
69
|
+
// Cross-Registry Utility Functions
|
|
70
|
+
// -----------------------------------------------------------------------------
|
|
71
|
+
const providers_2 = require("./providers");
|
|
72
|
+
const models_2 = require("./models");
|
|
73
|
+
const agentEngines_2 = require("./agentEngines");
|
|
74
|
+
/**
|
|
75
|
+
* Get the provider for a model
|
|
76
|
+
*/
|
|
77
|
+
function getProviderForModel(modelId) {
|
|
78
|
+
const model = models_2.BUILTIN_MODELS.find(m => m.id === modelId);
|
|
79
|
+
return model ? providers_2.PROVIDERS[model.provider] : undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the compatible engine for a model.
|
|
83
|
+
* Uses the model's provider to determine compatibility.
|
|
84
|
+
*/
|
|
85
|
+
function getEngineForModel(modelId) {
|
|
86
|
+
const model = models_2.BUILTIN_MODELS.find(m => m.id === modelId);
|
|
87
|
+
if (!model) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
return Object.values(agentEngines_2.AGENT_ENGINES).find(engine => (0, agentEngines_2.isEngineCompatibleWithProvider)(engine.id, model.provider));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get all models that can be used with a specific engine.
|
|
94
|
+
* Uses the engine's compatibility logic to filter models.
|
|
95
|
+
*/
|
|
96
|
+
function getModelsForEngine(engineId) {
|
|
97
|
+
const engine = agentEngines_2.AGENT_ENGINES[engineId];
|
|
98
|
+
if (!engine) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return models_2.BUILTIN_MODELS.filter(model => (0, agentEngines_2.isEngineCompatibleWithProvider)(engine.id, model.provider));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if a model is available through a specific provider
|
|
105
|
+
*/
|
|
106
|
+
function isModelFromProvider(modelId, providerId) {
|
|
107
|
+
const model = models_2.BUILTIN_MODELS.find(m => m.id === modelId);
|
|
108
|
+
return model?.provider === providerId;
|
|
109
|
+
}
|