@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
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.REGISTRY_KEY_SEPARATOR = exports.BUILTIN_MODELS = void 0;
|
|
7
|
+
exports.getRegistryKey = getRegistryKey;
|
|
8
|
+
exports.parseRegistryKey = parseRegistryKey;
|
|
9
|
+
exports.isCompositeKey = isCompositeKey;
|
|
10
|
+
exports.getModel = getModel;
|
|
11
|
+
exports.getModelByRegistryKey = getModelByRegistryKey;
|
|
12
|
+
exports.getModelsForProvider = getModelsForProvider;
|
|
13
|
+
exports.getRecommendedModels = getRecommendedModels;
|
|
14
|
+
exports.getModelsWithCapability = getModelsWithCapability;
|
|
15
|
+
exports.getActiveModels = getActiveModels;
|
|
16
|
+
exports.resolveModelAlias = resolveModelAlias;
|
|
17
|
+
/**
|
|
18
|
+
* Built-in model definitions
|
|
19
|
+
* These models are available when users configure their API keys
|
|
20
|
+
*/
|
|
21
|
+
exports.BUILTIN_MODELS = [
|
|
22
|
+
// ===========================================
|
|
23
|
+
// AgentHippo Managed Gateway
|
|
24
|
+
// Shown when signed in to AgentHippo account
|
|
25
|
+
// ===========================================
|
|
26
|
+
{
|
|
27
|
+
id: 'ah-auto',
|
|
28
|
+
name: 'AH-Auto',
|
|
29
|
+
provider: 'agenthippo',
|
|
30
|
+
contextWindow: 200000,
|
|
31
|
+
maxOutputTokens: 8192,
|
|
32
|
+
capabilities: ['chat', 'vision', 'function-calling', 'code'],
|
|
33
|
+
description: 'AgentHippo automatically picks the best model for your request',
|
|
34
|
+
recommended: true,
|
|
35
|
+
},
|
|
36
|
+
// ===========================================
|
|
37
|
+
// OpenAI Models
|
|
38
|
+
// ===========================================
|
|
39
|
+
{
|
|
40
|
+
id: 'gpt-4.1-nano',
|
|
41
|
+
name: 'GPT-4.1 Nano',
|
|
42
|
+
provider: 'openai',
|
|
43
|
+
contextWindow: 128000,
|
|
44
|
+
maxOutputTokens: 2048,
|
|
45
|
+
capabilities: ['chat', 'vision', 'function-calling', 'code'],
|
|
46
|
+
description: 'Lightweight GPT-4.1 option for quick completions',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'gpt-5.3-codex',
|
|
50
|
+
name: 'GPT-5.3 Codex (ChatGPT)',
|
|
51
|
+
provider: 'openai-codex',
|
|
52
|
+
contextWindow: 256000,
|
|
53
|
+
maxOutputTokens: 8192,
|
|
54
|
+
capabilities: ['chat', 'code', 'function-calling'],
|
|
55
|
+
description: 'Codex model authenticated via ChatGPT OAuth subscription',
|
|
56
|
+
recommended: true,
|
|
57
|
+
},
|
|
58
|
+
// ===========================================
|
|
59
|
+
// LiteLLM Proxy Models
|
|
60
|
+
// These route through your LiteLLM deployment
|
|
61
|
+
// ===========================================
|
|
62
|
+
{
|
|
63
|
+
id: 'litellm/gpt-4.1-nano',
|
|
64
|
+
name: 'LiteLLM GPT-4.1 Nano',
|
|
65
|
+
provider: 'litellm',
|
|
66
|
+
contextWindow: 128000,
|
|
67
|
+
maxOutputTokens: 2048,
|
|
68
|
+
capabilities: ['chat', 'vision', 'function-calling', 'code'],
|
|
69
|
+
description: 'GPT-4.1 Nano via LiteLLM proxy',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'litellm/gpt-5-nano',
|
|
73
|
+
name: 'LiteLLM GPT-5 Nano',
|
|
74
|
+
provider: 'litellm',
|
|
75
|
+
contextWindow: 256000,
|
|
76
|
+
maxOutputTokens: 8192,
|
|
77
|
+
capabilities: ['chat', 'vision', 'function-calling', 'code'],
|
|
78
|
+
description: 'GPT-5 Nano via LiteLLM proxy',
|
|
79
|
+
},
|
|
80
|
+
// Claude Models: Claude Code will auto translate models into dated aliases
|
|
81
|
+
{
|
|
82
|
+
id: 'claude-sonnet-4-5-20250929',
|
|
83
|
+
name: 'Claude Sonnet 4.5 (SDK alias)',
|
|
84
|
+
provider: 'litellm',
|
|
85
|
+
contextWindow: 200000,
|
|
86
|
+
maxOutputTokens: 8192,
|
|
87
|
+
capabilities: ['chat', 'vision', 'artifacts', 'code'],
|
|
88
|
+
description: 'Compatibility alias used by Claude Agent SDK (maps to Claude 3.5 Sonnet)',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 'claude-haiku-4-5-20251001',
|
|
92
|
+
name: 'Claude Haiku 4.5 20251001',
|
|
93
|
+
provider: 'litellm',
|
|
94
|
+
contextWindow: 200000,
|
|
95
|
+
maxOutputTokens: 8192,
|
|
96
|
+
capabilities: ['chat', 'vision', 'artifacts', 'code'],
|
|
97
|
+
description: 'Compatibility alias used by Claude Agent SDK (maps to Claude 3 Haiku)',
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
// -----------------------------------------------------------------------------
|
|
101
|
+
// Registry Key Functions
|
|
102
|
+
// -----------------------------------------------------------------------------
|
|
103
|
+
/**
|
|
104
|
+
* Separator used in composite registry keys.
|
|
105
|
+
* Format: "provider::modelId"
|
|
106
|
+
*/
|
|
107
|
+
exports.REGISTRY_KEY_SEPARATOR = '::';
|
|
108
|
+
/**
|
|
109
|
+
* Generate a unique registry key for a model.
|
|
110
|
+
* Format: "provider::modelId" (e.g., "openai::gpt-4o", "litellm::gpt-4o")
|
|
111
|
+
*
|
|
112
|
+
* This ensures the same model served by different providers has distinct keys.
|
|
113
|
+
*/
|
|
114
|
+
function getRegistryKey(providerId, modelId) {
|
|
115
|
+
return `${providerId}${exports.REGISTRY_KEY_SEPARATOR}${modelId}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse a registry key into provider and model ID components.
|
|
119
|
+
* Returns undefined if the key doesn't contain the separator (legacy format).
|
|
120
|
+
*/
|
|
121
|
+
function parseRegistryKey(key) {
|
|
122
|
+
const separatorIndex = key.indexOf(exports.REGISTRY_KEY_SEPARATOR);
|
|
123
|
+
if (separatorIndex === -1) {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
providerId: key.substring(0, separatorIndex),
|
|
128
|
+
modelId: key.substring(separatorIndex + exports.REGISTRY_KEY_SEPARATOR.length)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check if a key is in composite format (contains separator).
|
|
133
|
+
*/
|
|
134
|
+
function isCompositeKey(key) {
|
|
135
|
+
return key.includes(exports.REGISTRY_KEY_SEPARATOR);
|
|
136
|
+
}
|
|
137
|
+
// -----------------------------------------------------------------------------
|
|
138
|
+
// Utility Functions
|
|
139
|
+
// -----------------------------------------------------------------------------
|
|
140
|
+
/**
|
|
141
|
+
* Get a model by ID (legacy - searches by model.id only)
|
|
142
|
+
* @deprecated Use getModelByRegistryKey for unambiguous lookup
|
|
143
|
+
*/
|
|
144
|
+
function getModel(id) {
|
|
145
|
+
return exports.BUILTIN_MODELS.find(model => model.id === id);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get a model by registry key (provider::modelId format)
|
|
149
|
+
*/
|
|
150
|
+
function getModelByRegistryKey(key) {
|
|
151
|
+
return exports.BUILTIN_MODELS.find(model => getRegistryKey(model.provider, model.id) === key);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get all models for a specific provider
|
|
155
|
+
*/
|
|
156
|
+
function getModelsForProvider(providerId) {
|
|
157
|
+
return exports.BUILTIN_MODELS.filter(model => model.provider === providerId);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get recommended models
|
|
161
|
+
*/
|
|
162
|
+
function getRecommendedModels() {
|
|
163
|
+
return exports.BUILTIN_MODELS.filter(model => model.recommended === true);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get models that support a specific capability
|
|
167
|
+
*/
|
|
168
|
+
function getModelsWithCapability(capability) {
|
|
169
|
+
return exports.BUILTIN_MODELS.filter(model => model.capabilities.includes(capability));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get all non-deprecated models
|
|
173
|
+
*/
|
|
174
|
+
function getActiveModels() {
|
|
175
|
+
return exports.BUILTIN_MODELS.filter(model => !model.deprecated);
|
|
176
|
+
}
|
|
177
|
+
// -----------------------------------------------------------------------------
|
|
178
|
+
// Model Resolution (for CLI)
|
|
179
|
+
// -----------------------------------------------------------------------------
|
|
180
|
+
/**
|
|
181
|
+
* Common model aliases that users might type.
|
|
182
|
+
* Maps short names to full SDK-compatible model IDs.
|
|
183
|
+
*/
|
|
184
|
+
const MODEL_ALIASES = {
|
|
185
|
+
// Claude aliases
|
|
186
|
+
'claude-sonnet-4': 'claude-sonnet-4-5-20250929',
|
|
187
|
+
'claude-sonnet': 'claude-sonnet-4-5-20250929',
|
|
188
|
+
'sonnet': 'claude-sonnet-4-5-20250929',
|
|
189
|
+
'claude-haiku-4': 'claude-haiku-4-5-20251001',
|
|
190
|
+
'claude-haiku': 'claude-haiku-4-5-20251001',
|
|
191
|
+
'haiku': 'claude-haiku-4-5-20251001',
|
|
192
|
+
'claude-opus-4': 'claude-opus-4-20250514',
|
|
193
|
+
'claude-opus': 'claude-opus-4-20250514',
|
|
194
|
+
'opus': 'claude-opus-4-20250514',
|
|
195
|
+
// OpenAI aliases (these work as-is with SDK, but include for consistency)
|
|
196
|
+
'gpt-4o': 'gpt-4o',
|
|
197
|
+
'gpt-4': 'gpt-4o',
|
|
198
|
+
'o3': 'o3',
|
|
199
|
+
'o1': 'o1',
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Resolve a model alias to a full model ID.
|
|
203
|
+
*
|
|
204
|
+
* Resolution order:
|
|
205
|
+
* 1. Check if it's an exact match in BUILTIN_MODELS
|
|
206
|
+
* 2. Check if it's a known alias
|
|
207
|
+
* 3. Check if any model ID starts with the input (prefix match)
|
|
208
|
+
* 4. Return as-is (let SDK handle it)
|
|
209
|
+
*
|
|
210
|
+
* @param input - User-provided model name (e.g., 'claude-sonnet-4', 'sonnet')
|
|
211
|
+
* @returns Resolved model ID suitable for SDK
|
|
212
|
+
*/
|
|
213
|
+
function resolveModelAlias(input) {
|
|
214
|
+
if (!input) {
|
|
215
|
+
return input;
|
|
216
|
+
}
|
|
217
|
+
const normalized = input.toLowerCase().trim();
|
|
218
|
+
// 1. Exact match in BUILTIN_MODELS
|
|
219
|
+
const exactMatch = exports.BUILTIN_MODELS.find(m => m.id.toLowerCase() === normalized);
|
|
220
|
+
if (exactMatch) {
|
|
221
|
+
return exactMatch.id;
|
|
222
|
+
}
|
|
223
|
+
// 2. Known alias
|
|
224
|
+
const aliasMatch = MODEL_ALIASES[normalized];
|
|
225
|
+
if (aliasMatch) {
|
|
226
|
+
return aliasMatch;
|
|
227
|
+
}
|
|
228
|
+
// 3. Prefix match (e.g., 'claude-sonnet-4' matches 'claude-sonnet-4-5-20250929')
|
|
229
|
+
const prefixMatch = exports.BUILTIN_MODELS.find(m => m.id.toLowerCase().startsWith(normalized));
|
|
230
|
+
if (prefixMatch) {
|
|
231
|
+
return prefixMatch.id;
|
|
232
|
+
}
|
|
233
|
+
// 4. Return as-is
|
|
234
|
+
return input;
|
|
235
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ANTHROPIC_SETUP_TOKEN_PREFIX = exports.PROVIDERS = void 0;
|
|
7
|
+
exports.getProvider = getProvider;
|
|
8
|
+
exports.requiresApiKey = requiresApiKey;
|
|
9
|
+
exports.isLocalProvider = isLocalProvider;
|
|
10
|
+
exports.getAllProviderIds = getAllProviderIds;
|
|
11
|
+
exports.getCloudProviders = getCloudProviders;
|
|
12
|
+
exports.getLocalProviders = getLocalProviders;
|
|
13
|
+
exports.getApiKeyProviders = getApiKeyProviders;
|
|
14
|
+
exports.requiresBaseUrl = requiresBaseUrl;
|
|
15
|
+
exports.getGatewayProviders = getGatewayProviders;
|
|
16
|
+
exports.isGatewayProvider = isGatewayProvider;
|
|
17
|
+
exports.isAnthropicProviderFamily = isAnthropicProviderFamily;
|
|
18
|
+
exports.normalizeAnthropicSetupToken = normalizeAnthropicSetupToken;
|
|
19
|
+
exports.isAnthropicSetupToken = isAnthropicSetupToken;
|
|
20
|
+
exports.providerNotSupportAnthropicApi = providerNotSupportAnthropicApi;
|
|
21
|
+
/**
|
|
22
|
+
* Provider registry - single source of truth for all provider configurations
|
|
23
|
+
*/
|
|
24
|
+
exports.PROVIDERS = {
|
|
25
|
+
openai: {
|
|
26
|
+
id: 'openai',
|
|
27
|
+
displayName: 'OpenAI',
|
|
28
|
+
defaultEndpoint: 'https://api.openai.com/v1',
|
|
29
|
+
requiresApiKey: true,
|
|
30
|
+
showInAddApiKeyUI: true,
|
|
31
|
+
notSupportAnthropicApi: true, // OpenAI API doesn't support Anthropic models
|
|
32
|
+
},
|
|
33
|
+
'openai-codex': {
|
|
34
|
+
id: 'openai-codex',
|
|
35
|
+
displayName: 'OpenAI Codex (ChatGPT OAuth)',
|
|
36
|
+
defaultEndpoint: 'https://chatgpt.com/backend-api/codex',
|
|
37
|
+
requiresApiKey: true,
|
|
38
|
+
description: 'Use your ChatGPT/Codex subscription via native OAuth',
|
|
39
|
+
showInAddApiKeyUI: true,
|
|
40
|
+
notSupportAnthropicApi: true,
|
|
41
|
+
},
|
|
42
|
+
anthropic: {
|
|
43
|
+
id: 'anthropic',
|
|
44
|
+
displayName: 'Anthropic',
|
|
45
|
+
defaultEndpoint: 'https://api.anthropic.com/v1',
|
|
46
|
+
endpointSettingKey: 'agentide.providers.anthropic.baseUrl',
|
|
47
|
+
requiresApiKey: true,
|
|
48
|
+
apiKeyHeader: 'x-api-key',
|
|
49
|
+
staticHeaders: { 'anthropic-version': '2023-06-01' },
|
|
50
|
+
headerSettingKeys: { 'anthropic-version': 'agentide.providers.anthropic.version' },
|
|
51
|
+
showInAddApiKeyUI: true,
|
|
52
|
+
},
|
|
53
|
+
'anthropic-setup-token': {
|
|
54
|
+
id: 'anthropic-setup-token',
|
|
55
|
+
displayName: 'Anthropic (Claude Subscription)',
|
|
56
|
+
defaultEndpoint: 'https://api.anthropic.com/v1',
|
|
57
|
+
endpointSettingKey: 'agentide.providers.anthropic.baseUrl',
|
|
58
|
+
requiresApiKey: true,
|
|
59
|
+
apiKeyHeader: 'x-api-key',
|
|
60
|
+
staticHeaders: { 'anthropic-version': '2023-06-01' },
|
|
61
|
+
headerSettingKeys: { 'anthropic-version': 'agentide.providers.anthropic.version' },
|
|
62
|
+
description: 'Use Claude subscription setup-token from "claude setup-token"',
|
|
63
|
+
showInAddApiKeyUI: true,
|
|
64
|
+
},
|
|
65
|
+
openrouter: {
|
|
66
|
+
id: 'openrouter',
|
|
67
|
+
displayName: 'OpenRouter',
|
|
68
|
+
defaultEndpoint: 'https://openrouter.ai/api/v1',
|
|
69
|
+
requiresApiKey: true,
|
|
70
|
+
description: 'Fast model proxy via openrouter.ai that works with all agents',
|
|
71
|
+
showInAddApiKeyUI: true,
|
|
72
|
+
isGateway: true, // Can route to OpenAI, Anthropic, and other backends
|
|
73
|
+
},
|
|
74
|
+
litellm: {
|
|
75
|
+
id: 'litellm',
|
|
76
|
+
displayName: 'LiteLLM (Recommended)',
|
|
77
|
+
endpointSettingKey: 'agentide.providers.litellm.baseUrl',
|
|
78
|
+
requiresApiKey: true,
|
|
79
|
+
description: 'local adapter for agents to work with Spotlight and all models from OpenAI, Anthropic, Ollama etc.',
|
|
80
|
+
showInAddApiKeyUI: true,
|
|
81
|
+
isGateway: true, // Can route to any backend
|
|
82
|
+
},
|
|
83
|
+
ollama: {
|
|
84
|
+
id: 'ollama',
|
|
85
|
+
displayName: 'Ollama',
|
|
86
|
+
defaultEndpoint: 'http://localhost:11434/v1',
|
|
87
|
+
requiresApiKey: false,
|
|
88
|
+
enabledSettingKey: 'agentide.local.ollama.enabled',
|
|
89
|
+
defaultEnabled: true,
|
|
90
|
+
placeholderApiKey: 'ollama',
|
|
91
|
+
description: 'Local LLM server',
|
|
92
|
+
showInAddApiKeyUI: false,
|
|
93
|
+
notSupportAnthropicApi: true, // Ollama only supports OpenAI-compatible format
|
|
94
|
+
},
|
|
95
|
+
agenthippo: {
|
|
96
|
+
id: 'agenthippo',
|
|
97
|
+
displayName: 'AgentHippo Gateway',
|
|
98
|
+
defaultEndpoint: 'https://api.agenthippo.ai/v1',
|
|
99
|
+
endpointSettingKey: 'agentide.AgentHippoModelGateway.url',
|
|
100
|
+
requiresApiKey: true,
|
|
101
|
+
description: 'AgentHippo managed gateway — uses account JWT, picks model automatically',
|
|
102
|
+
showInAddApiKeyUI: false,
|
|
103
|
+
isGateway: true,
|
|
104
|
+
staticHeaders: { 'x-agenthippo-source': 'chat-ui' },
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
// -----------------------------------------------------------------------------
|
|
108
|
+
// Utility Functions
|
|
109
|
+
// -----------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Get a provider definition by ID
|
|
112
|
+
*/
|
|
113
|
+
function getProvider(id) {
|
|
114
|
+
return exports.PROVIDERS[id];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if a provider requires an API key
|
|
118
|
+
*/
|
|
119
|
+
function requiresApiKey(providerId) {
|
|
120
|
+
return exports.PROVIDERS[providerId]?.requiresApiKey ?? true;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check if a provider is a local provider (doesn't require API key)
|
|
124
|
+
*/
|
|
125
|
+
function isLocalProvider(providerId) {
|
|
126
|
+
const provider = exports.PROVIDERS[providerId];
|
|
127
|
+
return provider ? !provider.requiresApiKey : false;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get all provider IDs
|
|
131
|
+
*/
|
|
132
|
+
function getAllProviderIds() {
|
|
133
|
+
return Object.keys(exports.PROVIDERS);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get all cloud providers (those requiring API keys)
|
|
137
|
+
*/
|
|
138
|
+
function getCloudProviders() {
|
|
139
|
+
return Object.values(exports.PROVIDERS).filter(p => p.requiresApiKey);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get all local providers (those not requiring API keys)
|
|
143
|
+
*/
|
|
144
|
+
function getLocalProviders() {
|
|
145
|
+
return Object.values(exports.PROVIDERS).filter(p => !p.requiresApiKey);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get providers that should be shown in the "Add API Key" UI
|
|
149
|
+
*/
|
|
150
|
+
function getApiKeyProviders() {
|
|
151
|
+
return Object.values(exports.PROVIDERS).filter(p => p.showInAddApiKeyUI === true);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if a provider requires a base URL to be configured
|
|
155
|
+
* (i.e., has endpointSettingKey but no defaultEndpoint)
|
|
156
|
+
*/
|
|
157
|
+
function requiresBaseUrl(providerId) {
|
|
158
|
+
const provider = exports.PROVIDERS[providerId];
|
|
159
|
+
return provider ? (!!provider.endpointSettingKey && !provider.defaultEndpoint) : false;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get all gateway providers (those that can route to multiple backends)
|
|
163
|
+
*/
|
|
164
|
+
function getGatewayProviders() {
|
|
165
|
+
return Object.values(exports.PROVIDERS).filter(p => p.isGateway);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check if a provider is a gateway
|
|
169
|
+
*/
|
|
170
|
+
function isGatewayProvider(providerId) {
|
|
171
|
+
return exports.PROVIDERS[providerId]?.isGateway ?? false;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Check if a provider belongs to the Anthropic provider family.
|
|
175
|
+
*/
|
|
176
|
+
function isAnthropicProviderFamily(providerId) {
|
|
177
|
+
return providerId === 'anthropic' || providerId === 'anthropic-setup-token';
|
|
178
|
+
}
|
|
179
|
+
exports.ANTHROPIC_SETUP_TOKEN_PREFIX = 'sk-ant-oat01-';
|
|
180
|
+
function normalizeAnthropicSetupToken(token) {
|
|
181
|
+
return token.replace(/\s+/g, '').trim();
|
|
182
|
+
}
|
|
183
|
+
function isAnthropicSetupToken(apiKey) {
|
|
184
|
+
return typeof apiKey === 'string' && apiKey.trim().startsWith(exports.ANTHROPIC_SETUP_TOKEN_PREFIX);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if a provider does NOT support Anthropic API format.
|
|
188
|
+
* Returns true for providers like OpenAI, Ollama that only speak OpenAI format.
|
|
189
|
+
* Returns false for gateways and providers that can route to Anthropic.
|
|
190
|
+
*
|
|
191
|
+
* @param providerId - The provider ID to check
|
|
192
|
+
* @param customProviders - Optional custom provider config (for checking user-defined providers)
|
|
193
|
+
*/
|
|
194
|
+
function providerNotSupportAnthropicApi(providerId, customProviders) {
|
|
195
|
+
// Check built-in providers first
|
|
196
|
+
const builtIn = exports.PROVIDERS[providerId];
|
|
197
|
+
if (builtIn) {
|
|
198
|
+
return builtIn.notSupportAnthropicApi ?? false;
|
|
199
|
+
}
|
|
200
|
+
// Check custom providers (default to false - most custom providers are gateways)
|
|
201
|
+
return customProviders?.[providerId]?.notSupportAnthropicApi === true;
|
|
202
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/*---------------------------------------------------------------------------------------------
|
|
6
|
+
* Skill validation and file collection for publishing.
|
|
7
|
+
* Publishing uses the central store via publishToStore() in store/index.ts.
|
|
8
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.parseSkillFrontmatter = parseSkillFrontmatter;
|
|
44
|
+
exports.validateSkillForPublish = validateSkillForPublish;
|
|
45
|
+
exports.collectSkillFiles = collectSkillFiles;
|
|
46
|
+
const fs_1 = require("fs");
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const utils_1 = require("../utils");
|
|
49
|
+
// -----------------------------------------------------------------------------
|
|
50
|
+
// Validation
|
|
51
|
+
// -----------------------------------------------------------------------------
|
|
52
|
+
/**
|
|
53
|
+
* Parse SKILL.md frontmatter to extract metadata.
|
|
54
|
+
*/
|
|
55
|
+
function parseSkillFrontmatter(content) {
|
|
56
|
+
// Match YAML frontmatter between --- markers
|
|
57
|
+
const match = content.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
58
|
+
if (!match) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const frontmatter = match[1];
|
|
62
|
+
const metadata = { name: '' };
|
|
63
|
+
// Simple YAML parsing (name: value)
|
|
64
|
+
const lines = frontmatter.split('\n');
|
|
65
|
+
for (const line of lines) {
|
|
66
|
+
const colonIdx = line.indexOf(':');
|
|
67
|
+
if (colonIdx === -1) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const key = line.slice(0, colonIdx).trim();
|
|
71
|
+
let value = line.slice(colonIdx + 1).trim();
|
|
72
|
+
// Remove quotes
|
|
73
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
74
|
+
(value.startsWith('\'') && value.endsWith('\''))) {
|
|
75
|
+
value = value.slice(1, -1);
|
|
76
|
+
}
|
|
77
|
+
switch (key) {
|
|
78
|
+
case 'name':
|
|
79
|
+
metadata.name = value;
|
|
80
|
+
break;
|
|
81
|
+
case 'version':
|
|
82
|
+
metadata.version = value;
|
|
83
|
+
break;
|
|
84
|
+
case 'description':
|
|
85
|
+
metadata.description = value;
|
|
86
|
+
break;
|
|
87
|
+
case 'author':
|
|
88
|
+
metadata.author = value;
|
|
89
|
+
break;
|
|
90
|
+
case 'tags':
|
|
91
|
+
// Parse array: [tag1, tag2] or - tag1 format
|
|
92
|
+
if (value.startsWith('[')) {
|
|
93
|
+
metadata.tags = value.slice(1, -1).split(',').map(t => t.trim());
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
case 'requires':
|
|
97
|
+
if (value.startsWith('[')) {
|
|
98
|
+
metadata.requires = value.slice(1, -1).split(',').map(t => t.trim());
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Only name is required, version is optional
|
|
104
|
+
return metadata.name ? metadata : null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Validate a skill before publishing.
|
|
108
|
+
*/
|
|
109
|
+
async function validateSkillForPublish(skillDir) {
|
|
110
|
+
const errors = [];
|
|
111
|
+
const warnings = [];
|
|
112
|
+
// Check skill directory exists
|
|
113
|
+
if (!(await (0, utils_1.pathExists)(skillDir))) {
|
|
114
|
+
return { valid: false, errors: [`Skill directory not found: ${skillDir}`], warnings };
|
|
115
|
+
}
|
|
116
|
+
// Check SKILL.md exists
|
|
117
|
+
const skillMdPath = path.join(skillDir, 'SKILL.md');
|
|
118
|
+
if (!(await (0, utils_1.pathExists)(skillMdPath))) {
|
|
119
|
+
errors.push('Missing required file: SKILL.md');
|
|
120
|
+
return { valid: false, errors, warnings };
|
|
121
|
+
}
|
|
122
|
+
// Parse and validate frontmatter
|
|
123
|
+
const content = await fs_1.promises.readFile(skillMdPath, 'utf-8');
|
|
124
|
+
const metadata = parseSkillFrontmatter(content);
|
|
125
|
+
if (!metadata) {
|
|
126
|
+
errors.push('SKILL.md must have YAML frontmatter with name and version');
|
|
127
|
+
return { valid: false, errors, warnings };
|
|
128
|
+
}
|
|
129
|
+
if (!metadata.name) {
|
|
130
|
+
errors.push('SKILL.md frontmatter missing: name');
|
|
131
|
+
}
|
|
132
|
+
if (!metadata.description) {
|
|
133
|
+
errors.push('SKILL.md frontmatter missing: description');
|
|
134
|
+
}
|
|
135
|
+
// Version is optional, but if provided must be valid semver
|
|
136
|
+
if (metadata.version && !/^\d+\.\d+\.\d+/.test(metadata.version)) {
|
|
137
|
+
errors.push(`Invalid version format: ${metadata.version}. Use semver (e.g., 1.0.0)`);
|
|
138
|
+
}
|
|
139
|
+
if (!metadata.tags || metadata.tags.length === 0) {
|
|
140
|
+
warnings.push('Consider adding tags to SKILL.md frontmatter for discoverability');
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
valid: errors.length === 0,
|
|
144
|
+
errors,
|
|
145
|
+
warnings,
|
|
146
|
+
metadata: errors.length === 0 ? metadata : undefined,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// -----------------------------------------------------------------------------
|
|
150
|
+
// Publishing
|
|
151
|
+
// -----------------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Collect all files from a skill directory.
|
|
154
|
+
*/
|
|
155
|
+
async function collectSkillFiles(skillDir) {
|
|
156
|
+
const files = [];
|
|
157
|
+
async function walk(dir, prefix) {
|
|
158
|
+
const entries = await fs_1.promises.readdir(dir);
|
|
159
|
+
for (const entry of entries) {
|
|
160
|
+
// Skip hidden files
|
|
161
|
+
if (entry.startsWith('.')) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const fullPath = path.join(dir, entry);
|
|
165
|
+
const relativePath = prefix ? `${prefix}/${entry}` : entry;
|
|
166
|
+
const stat = await fs_1.promises.stat(fullPath);
|
|
167
|
+
if (stat.isDirectory()) {
|
|
168
|
+
await walk(fullPath, relativePath);
|
|
169
|
+
}
|
|
170
|
+
else if (stat.isFile()) {
|
|
171
|
+
const content = await fs_1.promises.readFile(fullPath, 'utf-8');
|
|
172
|
+
files.push({ path: relativePath, content });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
await walk(skillDir, '');
|
|
177
|
+
return files;
|
|
178
|
+
}
|