@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/utils/pid.js
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* PID File Utilities
|
|
4
|
+
*
|
|
5
|
+
* Shared utilities for fast process status checks using PID files.
|
|
6
|
+
* Cost: ~1-2ms (file read + signal check, no process spawn)
|
|
7
|
+
*
|
|
8
|
+
* Used by:
|
|
9
|
+
* - Gateway lifecycle manager (Agent Anywhere)
|
|
10
|
+
* - Analytics service (Spotlight)
|
|
11
|
+
*--------------------------------------------------------------------------------------------*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.isProcessRunning = isProcessRunning;
|
|
47
|
+
exports.isProcessRunningAsync = isProcessRunningAsync;
|
|
48
|
+
exports.isPidFileProcessRunning = isPidFileProcessRunning;
|
|
49
|
+
exports.readPidFile = readPidFile;
|
|
50
|
+
exports.writePidFile = writePidFile;
|
|
51
|
+
exports.removePidFile = removePidFile;
|
|
52
|
+
exports.checkPidFileWithCleanup = checkPidFileWithCleanup;
|
|
53
|
+
const fs_1 = require("fs");
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
/**
|
|
56
|
+
* Check if a process with the given PID is running.
|
|
57
|
+
* Uses process.kill(pid, 0) which is synchronous and sub-millisecond.
|
|
58
|
+
*
|
|
59
|
+
* Cross-platform behavior:
|
|
60
|
+
* - Unix: Signal 0 checks if process exists without killing it
|
|
61
|
+
* - Windows: Returns true if process exists, throws EPERM if exists but no permission,
|
|
62
|
+
* throws ESRCH if process doesn't exist
|
|
63
|
+
*/
|
|
64
|
+
function isProcessRunning(pid) {
|
|
65
|
+
try {
|
|
66
|
+
process.kill(pid, 0);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
// EPERM = process exists but we don't have permission (Windows)
|
|
71
|
+
// ESRCH = process doesn't exist
|
|
72
|
+
const errObj = err;
|
|
73
|
+
if (errObj?.code === 'EPERM') {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if a process with the given PID is running (async wrapper for consistency).
|
|
81
|
+
*/
|
|
82
|
+
async function isProcessRunningAsync(pid) {
|
|
83
|
+
return isProcessRunning(pid);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Read a PID file and check if the process is running.
|
|
87
|
+
* Cost: ~1-2ms (file read + signal check, no process spawn)
|
|
88
|
+
*
|
|
89
|
+
* @param pidFile - Path to the PID file
|
|
90
|
+
* @returns true if the process is running, false otherwise
|
|
91
|
+
*/
|
|
92
|
+
async function isPidFileProcessRunning(pidFile) {
|
|
93
|
+
try {
|
|
94
|
+
const pidContent = await fs_1.promises.readFile(pidFile, 'utf8').catch(() => null);
|
|
95
|
+
if (!pidContent) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
const pid = parseInt(pidContent.trim().split('\n')[0], 10);
|
|
99
|
+
if (isNaN(pid)) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return isProcessRunning(pid);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Read and parse a PID file.
|
|
110
|
+
* Returns null if file doesn't exist or is invalid.
|
|
111
|
+
*
|
|
112
|
+
* @param pidFile - Path to the PID file
|
|
113
|
+
* @returns Parsed PID data or null
|
|
114
|
+
*/
|
|
115
|
+
async function readPidFile(pidFile) {
|
|
116
|
+
try {
|
|
117
|
+
const content = await fs_1.promises.readFile(pidFile, 'utf8');
|
|
118
|
+
const lines = content.trim().split('\n');
|
|
119
|
+
const pid = parseInt(lines[0], 10);
|
|
120
|
+
if (isNaN(pid)) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
pid,
|
|
125
|
+
metadata: lines.slice(1),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Write a PID file with optional metadata lines.
|
|
134
|
+
*
|
|
135
|
+
* @param pidFile - Path to the PID file
|
|
136
|
+
* @param pid - Process ID to write
|
|
137
|
+
* @param metadata - Optional additional lines to write (e.g., port, binary path)
|
|
138
|
+
*/
|
|
139
|
+
async function writePidFile(pidFile, pid, ...metadata) {
|
|
140
|
+
try {
|
|
141
|
+
const dir = path.dirname(pidFile);
|
|
142
|
+
await fs_1.promises.mkdir(dir, { recursive: true });
|
|
143
|
+
const content = [pid, ...metadata].join('\n') + '\n';
|
|
144
|
+
await fs_1.promises.writeFile(pidFile, content, 'utf8');
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Non-fatal: fast detection just won't work
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Remove a PID file.
|
|
152
|
+
*
|
|
153
|
+
* @param pidFile - Path to the PID file
|
|
154
|
+
*/
|
|
155
|
+
async function removePidFile(pidFile) {
|
|
156
|
+
try {
|
|
157
|
+
await fs_1.promises.unlink(pidFile);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// File may not exist
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if PID file exists and process is running; clean up if stale.
|
|
165
|
+
*
|
|
166
|
+
* @param pidFile - Path to the PID file
|
|
167
|
+
* @returns The PID data if process is running, null otherwise
|
|
168
|
+
*/
|
|
169
|
+
async function checkPidFileWithCleanup(pidFile) {
|
|
170
|
+
const data = await readPidFile(pidFile);
|
|
171
|
+
if (!data) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
if (!isProcessRunning(data.pid)) {
|
|
175
|
+
// Stale PID file, clean it up
|
|
176
|
+
await removePidFile(pidFile);
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
return data;
|
|
180
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
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.runPythonWithDeps = runPythonWithDeps;
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const fs_1 = require("fs");
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const util_1 = require("util");
|
|
44
|
+
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
45
|
+
const DEFAULT_MAX_BUFFER = 10 * 1024 * 1024;
|
|
46
|
+
function getDefaultInterpreterCandidates() {
|
|
47
|
+
return process.platform === 'win32' ? ['python', 'python3'] : ['python3', 'python'];
|
|
48
|
+
}
|
|
49
|
+
function getVenvPythonCandidates(venvDir) {
|
|
50
|
+
if (process.platform === 'win32') {
|
|
51
|
+
return [
|
|
52
|
+
path.join(venvDir, 'Scripts', 'python.exe'),
|
|
53
|
+
path.join(venvDir, 'Scripts', 'python'),
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
return [
|
|
57
|
+
path.join(venvDir, 'bin', 'python3'),
|
|
58
|
+
path.join(venvDir, 'bin', 'python'),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
function isMissingExecutable(error) {
|
|
62
|
+
return Boolean(error?.code === 'ENOENT');
|
|
63
|
+
}
|
|
64
|
+
function hasExitCode(error) {
|
|
65
|
+
return typeof error?.code === 'number';
|
|
66
|
+
}
|
|
67
|
+
function looksLikeMissingInterpreterText(text, interpreter) {
|
|
68
|
+
const haystack = text.toLowerCase();
|
|
69
|
+
const needle = interpreter.toLowerCase();
|
|
70
|
+
return (haystack.includes('not found') || haystack.includes('no such file'))
|
|
71
|
+
&& haystack.includes(needle);
|
|
72
|
+
}
|
|
73
|
+
function looksLikeMissingInterpreter(error, interpreter) {
|
|
74
|
+
const failure = error;
|
|
75
|
+
const stderr = typeof failure?.stderr === 'string' ? failure.stderr.toLowerCase() : '';
|
|
76
|
+
const message = typeof failure?.message === 'string' ? failure.message.toLowerCase() : '';
|
|
77
|
+
return looksLikeMissingInterpreterText(`${stderr}\n${message}`, interpreter);
|
|
78
|
+
}
|
|
79
|
+
function looksLikeMissingInterpreterResult(result, interpreter) {
|
|
80
|
+
return looksLikeMissingInterpreterText(result.stderr, interpreter);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Detect failures that originate from `uv` itself (interpreter discovery, environment
|
|
84
|
+
* setup, package resolution) rather than from the script it was asked to run. uv prints
|
|
85
|
+
* such errors as a line beginning with `error:` and never executes the target script, so
|
|
86
|
+
* its exit code is meaningless to callers expecting the script's own contract. When this
|
|
87
|
+
* happens we must fall back to the local venv instead of passing uv's exit code through.
|
|
88
|
+
*
|
|
89
|
+
* Example seen on Windows where uv scans an inaccessible system Python install:
|
|
90
|
+
* error: failed to open file `C:\ProgramData\miniconda3\Scripts\archspec.exe`: Access is denied. (os error 5)
|
|
91
|
+
*/
|
|
92
|
+
function looksLikeUvOwnFailure(text) {
|
|
93
|
+
if (!text) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
// uv may colorize its output; strip ANSI escapes before matching.
|
|
97
|
+
// eslint-disable-next-line no-control-regex
|
|
98
|
+
const plain = text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
99
|
+
return /^error:/m.test(plain);
|
|
100
|
+
}
|
|
101
|
+
function extractCommandFailure(error) {
|
|
102
|
+
return error;
|
|
103
|
+
}
|
|
104
|
+
async function executeCommand(command, args, execOptions, preserveNonZeroExit) {
|
|
105
|
+
try {
|
|
106
|
+
const result = await execFileAsync(command, args, {
|
|
107
|
+
timeout: execOptions.timeout,
|
|
108
|
+
maxBuffer: execOptions.maxBuffer ?? DEFAULT_MAX_BUFFER,
|
|
109
|
+
env: execOptions.env,
|
|
110
|
+
cwd: execOptions.cwd,
|
|
111
|
+
signal: execOptions.signal,
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
stdout: result.stdout,
|
|
115
|
+
stderr: result.stderr,
|
|
116
|
+
code: 0,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
const failure = extractCommandFailure(error);
|
|
121
|
+
if (preserveNonZeroExit && typeof failure.code === 'number') {
|
|
122
|
+
return {
|
|
123
|
+
stdout: typeof failure.stdout === 'string' ? failure.stdout : '',
|
|
124
|
+
stderr: typeof failure.stderr === 'string' ? failure.stderr : '',
|
|
125
|
+
code: failure.code,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async function tryUvRun(request, interpreters) {
|
|
132
|
+
const depArgs = request.deps.flatMap(dep => ['--with', dep]);
|
|
133
|
+
const preserveNonZeroExit = request.preserveNonZeroExit ?? false;
|
|
134
|
+
let sawUvBinary = false;
|
|
135
|
+
for (const interpreter of interpreters) {
|
|
136
|
+
try {
|
|
137
|
+
sawUvBinary = true;
|
|
138
|
+
const result = await executeCommand('uv', ['run', ...depArgs, interpreter, request.scriptPath, ...request.args], request.execOptions, preserveNonZeroExit);
|
|
139
|
+
if (result.code !== 0 && preserveNonZeroExit && looksLikeMissingInterpreterResult(result, interpreter)) {
|
|
140
|
+
request.log?.(`[Dashboard] uv could not find ${interpreter}; trying next interpreter`);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (result.code !== 0 && looksLikeUvOwnFailure(result.stderr)) {
|
|
144
|
+
request.log?.('[Dashboard] uv failed before running the script; falling back to local venv');
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
if (isMissingExecutable(error)) {
|
|
151
|
+
request.log?.('[Dashboard] uv not found; falling back to local venv');
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
if (hasExitCode(error) && looksLikeMissingInterpreter(error, interpreter)) {
|
|
155
|
+
request.log?.(`[Dashboard] uv could not find ${interpreter}; trying next interpreter`);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (hasExitCode(error) && looksLikeUvOwnFailure(extractCommandFailure(error).stderr)) {
|
|
159
|
+
request.log?.('[Dashboard] uv failed before running the script; falling back to local venv');
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (sawUvBinary) {
|
|
166
|
+
request.log?.('[Dashboard] uv run failed for available interpreter candidates; falling back to local venv');
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
function findExistingVenvPython(venvDir) {
|
|
171
|
+
const candidates = getVenvPythonCandidates(venvDir);
|
|
172
|
+
for (const candidate of candidates) {
|
|
173
|
+
if ((0, fs_1.existsSync)(candidate)) {
|
|
174
|
+
return candidate;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
async function ensureVenv(request, venvDir, interpreters) {
|
|
180
|
+
let venvPython = findExistingVenvPython(venvDir);
|
|
181
|
+
if (venvPython) {
|
|
182
|
+
return venvPython;
|
|
183
|
+
}
|
|
184
|
+
request.log?.(`[Dashboard] Creating Python venv at ${venvDir}`);
|
|
185
|
+
let lastError;
|
|
186
|
+
for (const interpreter of interpreters) {
|
|
187
|
+
try {
|
|
188
|
+
await executeCommand(interpreter, ['-m', 'venv', venvDir], {
|
|
189
|
+
timeout: request.execOptions.timeout,
|
|
190
|
+
env: request.execOptions.env,
|
|
191
|
+
cwd: request.execOptions.cwd,
|
|
192
|
+
signal: request.execOptions.signal,
|
|
193
|
+
}, false);
|
|
194
|
+
venvPython = findExistingVenvPython(venvDir);
|
|
195
|
+
if (venvPython) {
|
|
196
|
+
return venvPython;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
lastError = error;
|
|
201
|
+
if (isMissingExecutable(error)) {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
throw error;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (lastError) {
|
|
208
|
+
throw lastError;
|
|
209
|
+
}
|
|
210
|
+
throw new Error('Unable to create Python virtual environment: no usable interpreter found');
|
|
211
|
+
}
|
|
212
|
+
function toMissingDepsMessage(deps, interpreters) {
|
|
213
|
+
const missing = deps.length > 0 ? deps.join(', ') : 'required packages';
|
|
214
|
+
const preferred = interpreters[0] ?? 'python';
|
|
215
|
+
const installCommand = deps.length > 0
|
|
216
|
+
? `${preferred} -m pip install ${deps.join(' ')}`
|
|
217
|
+
: `${preferred} -m pip install <packages>`;
|
|
218
|
+
return `Missing Python dependency (${missing}). Install uv (recommended: https://docs.astral.sh/uv/) or run: ${installCommand}`;
|
|
219
|
+
}
|
|
220
|
+
async function runPythonWithDeps(request) {
|
|
221
|
+
const interpreters = request.interpreterCandidates && request.interpreterCandidates.length > 0
|
|
222
|
+
? request.interpreterCandidates
|
|
223
|
+
: getDefaultInterpreterCandidates();
|
|
224
|
+
const preserveNonZeroExit = request.preserveNonZeroExit ?? false;
|
|
225
|
+
const uvResult = await tryUvRun(request, interpreters);
|
|
226
|
+
if (uvResult) {
|
|
227
|
+
return uvResult;
|
|
228
|
+
}
|
|
229
|
+
const venvDir = path.join(request.analyticsRoot, '.venv');
|
|
230
|
+
const venvPython = await ensureVenv(request, venvDir, interpreters);
|
|
231
|
+
try {
|
|
232
|
+
if (request.deps.length > 0) {
|
|
233
|
+
const pipArgs = request.requirementsPath && (0, fs_1.existsSync)(request.requirementsPath)
|
|
234
|
+
? ['-m', 'pip', 'install', '--quiet', '-r', request.requirementsPath]
|
|
235
|
+
: ['-m', 'pip', 'install', '--quiet', ...request.deps];
|
|
236
|
+
await executeCommand(venvPython, pipArgs, {
|
|
237
|
+
timeout: Math.max(request.execOptions.timeout, 120_000),
|
|
238
|
+
env: request.execOptions.env,
|
|
239
|
+
cwd: request.execOptions.cwd,
|
|
240
|
+
signal: request.execOptions.signal,
|
|
241
|
+
maxBuffer: request.execOptions.maxBuffer,
|
|
242
|
+
}, false);
|
|
243
|
+
request.log?.(`[Dashboard] Python venv deps ready: ${request.deps.join(', ')}`);
|
|
244
|
+
}
|
|
245
|
+
return await executeCommand(venvPython, [request.scriptPath, ...request.args], request.execOptions, preserveNonZeroExit);
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
const failure = extractCommandFailure(error);
|
|
249
|
+
const errMsg = [
|
|
250
|
+
typeof failure.message === 'string' ? failure.message : '',
|
|
251
|
+
typeof failure.stderr === 'string' ? failure.stderr : '',
|
|
252
|
+
].join('\n');
|
|
253
|
+
if (errMsg.includes('ModuleNotFoundError') || errMsg.includes('No module named')) {
|
|
254
|
+
throw new Error(toMissingDepsMessage(request.deps, interpreters));
|
|
255
|
+
}
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
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.getNodeBinaryCandidates = getNodeBinaryCandidates;
|
|
40
|
+
exports.resolveNodeBinary = resolveNodeBinary;
|
|
41
|
+
exports.prependPathDir = prependPathDir;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a Node.js binary for custom-engine subprocesses.
|
|
44
|
+
* Mirrors Agent Anywhere / gateway setup precedence:
|
|
45
|
+
* NODE_BIN → gateway install.json nodePath → ~/.agenthippo/tools/node → PATH/common paths → npm_node_execpath (last resort).
|
|
46
|
+
*
|
|
47
|
+
* Rationale:
|
|
48
|
+
* - In IDE hosts (VS Code/Cursor) on Windows, `npm_node_execpath` can point at a bundled helper
|
|
49
|
+
* `node.exe` path that is missing or unstable across updates. Treat it as a last resort.
|
|
50
|
+
* - Prefer a real Node binary (or managed gateway bootstrap node) that is known to spawn reliably.
|
|
51
|
+
*/
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const os = __importStar(require("os"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
const binary_1 = require("./binary");
|
|
56
|
+
const IS_WINDOWS = process.platform === 'win32';
|
|
57
|
+
const NODE_FILE = IS_WINDOWS ? 'node.exe' : 'node';
|
|
58
|
+
const GATEWAY_INSTALL_MANIFEST = path.join(os.homedir(), '.agenthippo', 'gateway', 'install.json');
|
|
59
|
+
const BOOTSTRAP_NODE_ROOT = path.join(os.homedir(), '.agenthippo', 'tools', 'node');
|
|
60
|
+
function isExecutable(filePath) {
|
|
61
|
+
try {
|
|
62
|
+
const mode = IS_WINDOWS ? fs.constants.F_OK : fs.constants.X_OK;
|
|
63
|
+
fs.accessSync(filePath, mode);
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function readGatewayInstallNodePath() {
|
|
71
|
+
try {
|
|
72
|
+
if (!fs.existsSync(GATEWAY_INSTALL_MANIFEST)) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const raw = fs.readFileSync(GATEWAY_INSTALL_MANIFEST, 'utf8').replace(/^\uFEFF/, '');
|
|
76
|
+
const parsed = JSON.parse(raw);
|
|
77
|
+
const candidate = parsed.nodePath?.trim();
|
|
78
|
+
return candidate && isExecutable(candidate) ? candidate : undefined;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Same scan as setup-gateway.sh: find bootstrap node under .agenthippo/tools/node (newest first). */
|
|
85
|
+
function listBootstrapNodePaths() {
|
|
86
|
+
if (!fs.existsSync(BOOTSTRAP_NODE_ROOT)) {
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
const found = [];
|
|
90
|
+
const scan = (dir, depth) => {
|
|
91
|
+
if (depth > 4) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
let entries;
|
|
95
|
+
try {
|
|
96
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
for (const entry of entries) {
|
|
102
|
+
const full = path.join(dir, entry.name);
|
|
103
|
+
if (entry.isDirectory()) {
|
|
104
|
+
scan(full, depth + 1);
|
|
105
|
+
}
|
|
106
|
+
else if (entry.isFile() && entry.name === NODE_FILE && dir.endsWith(`${path.sep}bin`)) {
|
|
107
|
+
found.push(full);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
scan(BOOTSTRAP_NODE_ROOT, 0);
|
|
112
|
+
return found.sort().reverse();
|
|
113
|
+
}
|
|
114
|
+
function uniqueExisting(paths) {
|
|
115
|
+
const seen = new Set();
|
|
116
|
+
const out = [];
|
|
117
|
+
for (const candidate of paths) {
|
|
118
|
+
const normalized = path.resolve(candidate);
|
|
119
|
+
if (seen.has(normalized) || !isExecutable(normalized)) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
seen.add(normalized);
|
|
123
|
+
out.push(normalized);
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Ordered Node binary candidates (first match wins when passed to pickNodeBinary).
|
|
129
|
+
*/
|
|
130
|
+
function getNodeBinaryCandidates() {
|
|
131
|
+
const candidates = [];
|
|
132
|
+
if (process.env.NODE_BIN?.trim()) {
|
|
133
|
+
candidates.push(process.env.NODE_BIN.trim());
|
|
134
|
+
}
|
|
135
|
+
const gatewayNode = readGatewayInstallNodePath();
|
|
136
|
+
if (gatewayNode) {
|
|
137
|
+
candidates.push(gatewayNode);
|
|
138
|
+
}
|
|
139
|
+
candidates.push(...listBootstrapNodePaths());
|
|
140
|
+
// npm_node_execpath is frequently set inside Electron-based IDE hosts; treat as a last resort.
|
|
141
|
+
if (process.env.npm_node_execpath?.trim()) {
|
|
142
|
+
candidates.push(process.env.npm_node_execpath.trim());
|
|
143
|
+
}
|
|
144
|
+
return uniqueExisting(candidates);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve Node for spawning custom-engine runner. Falls back to PATH via findBinaryCached.
|
|
148
|
+
*/
|
|
149
|
+
async function resolveNodeBinary() {
|
|
150
|
+
const explicit = getNodeBinaryCandidates();
|
|
151
|
+
if (explicit.length > 0) {
|
|
152
|
+
return explicit[0];
|
|
153
|
+
}
|
|
154
|
+
const fromPath = await (0, binary_1.findBinaryCached)('node', (0, binary_1.getCommonBinaryPaths)('node'));
|
|
155
|
+
if (fromPath) {
|
|
156
|
+
return fromPath;
|
|
157
|
+
}
|
|
158
|
+
return 'node';
|
|
159
|
+
}
|
|
160
|
+
/** Prepend the Node binary's bin directory to PATH (for child ripgrep/npm tooling). */
|
|
161
|
+
function prependPathDir(env, dir) {
|
|
162
|
+
if (!dir?.trim()) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const entry = dir.trim();
|
|
166
|
+
const current = env.PATH?.trim();
|
|
167
|
+
env.PATH = current ? `${entry}${path.delimiter}${current}` : entry;
|
|
168
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
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.augmentPathForTools = augmentPathForTools;
|
|
40
|
+
const os = __importStar(require("os"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
/**
|
|
43
|
+
* Prepend common tool binary locations to PATH.
|
|
44
|
+
* When VS Code is launched from the Dock/Finder/Start menu (not a terminal),
|
|
45
|
+
* it inherits a minimal PATH that often excludes ~/.local/bin, Homebrew, etc.
|
|
46
|
+
* This ensures uv, python3, pip, and other tools are discoverable.
|
|
47
|
+
*/
|
|
48
|
+
function augmentPathForTools(currentPath) {
|
|
49
|
+
const home = os.homedir();
|
|
50
|
+
if (!home) {
|
|
51
|
+
return currentPath;
|
|
52
|
+
}
|
|
53
|
+
const sep = path.delimiter;
|
|
54
|
+
const extraDirs = getCandidateDirs(home);
|
|
55
|
+
const existing = new Set(currentPath.split(sep).filter(Boolean));
|
|
56
|
+
const toAdd = extraDirs.filter(d => d && !existing.has(d));
|
|
57
|
+
if (toAdd.length === 0) {
|
|
58
|
+
return currentPath;
|
|
59
|
+
}
|
|
60
|
+
return currentPath ? [...toAdd, currentPath].join(sep) : toAdd.join(sep);
|
|
61
|
+
}
|
|
62
|
+
function getCandidateDirs(home) {
|
|
63
|
+
if (process.platform === 'win32') {
|
|
64
|
+
const localAppData = process.env.LOCALAPPDATA ?? path.join(home, 'AppData', 'Local');
|
|
65
|
+
const programFiles = process.env.ProgramFiles ?? 'C:\\Program Files';
|
|
66
|
+
return [
|
|
67
|
+
path.join(home, '.local', 'bin'), // uv official installer
|
|
68
|
+
path.join(home, '.cargo', 'bin'), // cargo install
|
|
69
|
+
path.join(localAppData, 'Microsoft', 'WinGet', 'Links'), // winget shims
|
|
70
|
+
path.join(localAppData, 'Programs', 'uv'), // uv via some installers
|
|
71
|
+
path.join(home, 'scoop', 'shims'), // scoop
|
|
72
|
+
path.join(programFiles, 'uv'),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
return [
|
|
76
|
+
path.join(home, '.local', 'bin'), // pip install --user, uv official installer
|
|
77
|
+
path.join(home, '.cargo', 'bin'), // cargo install
|
|
78
|
+
path.join(home, '.uv', 'bin'), // uv self-install
|
|
79
|
+
'/opt/homebrew/bin', // Homebrew (Apple Silicon)
|
|
80
|
+
'/usr/local/bin', // Homebrew (Intel Mac), system tools
|
|
81
|
+
'/home/linuxbrew/.linuxbrew/bin', // Linuxbrew
|
|
82
|
+
];
|
|
83
|
+
}
|