@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,342 @@
|
|
|
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.DirectorySessionStore = exports.FileSessionStore = exports.MemorySessionStore = void 0;
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const crypto_1 = require("crypto");
|
|
43
|
+
/**
|
|
44
|
+
* In-memory session store.
|
|
45
|
+
* Suitable for eval mode (fresh state per example) and testing.
|
|
46
|
+
*/
|
|
47
|
+
class MemorySessionStore {
|
|
48
|
+
store = new Map();
|
|
49
|
+
get(key) {
|
|
50
|
+
return this.store.get(key);
|
|
51
|
+
}
|
|
52
|
+
async set(key, value) {
|
|
53
|
+
this.store.set(key, value);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clear all stored values.
|
|
57
|
+
* Useful for testing or resetting state between eval examples.
|
|
58
|
+
*/
|
|
59
|
+
clear() {
|
|
60
|
+
this.store.clear();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.MemorySessionStore = MemorySessionStore;
|
|
64
|
+
/**
|
|
65
|
+
* File-based session store.
|
|
66
|
+
* Persists session data to a JSON file on disk. Suitable for headless
|
|
67
|
+
* production servers that need session persistence across restarts.
|
|
68
|
+
*
|
|
69
|
+
* Features:
|
|
70
|
+
* - Atomic writes (write to temp file, then rename)
|
|
71
|
+
* - Lazy loading (file read on first access)
|
|
72
|
+
* - In-memory cache for fast reads
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* import { FileSessionStore } from './runtime/interfaces/session-store';
|
|
77
|
+
* import { initSessionStoreWithStore } from './session';
|
|
78
|
+
*
|
|
79
|
+
* const store = new FileSessionStore('/var/lib/agentide/sessions.json');
|
|
80
|
+
* await store.load(); // Load existing sessions from disk
|
|
81
|
+
* initSessionStoreWithStore(store);
|
|
82
|
+
*
|
|
83
|
+
* // Sessions will now persist across server restarts
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
class FileSessionStore {
|
|
87
|
+
store = {};
|
|
88
|
+
loaded = false;
|
|
89
|
+
filePath;
|
|
90
|
+
/**
|
|
91
|
+
* Create a file-based session store.
|
|
92
|
+
* @param filePath - Path to the JSON file for persistence
|
|
93
|
+
*/
|
|
94
|
+
constructor(filePath) {
|
|
95
|
+
this.filePath = filePath;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Load existing sessions from disk.
|
|
99
|
+
* Call this before using the store to restore previous state.
|
|
100
|
+
* Safe to call multiple times (will only load once).
|
|
101
|
+
*/
|
|
102
|
+
async load() {
|
|
103
|
+
if (this.loaded) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
try {
|
|
107
|
+
const content = await fs_1.promises.readFile(this.filePath, 'utf-8');
|
|
108
|
+
this.store = JSON.parse(content);
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
// File doesn't exist or is invalid - start fresh
|
|
112
|
+
if (e.code !== 'ENOENT') {
|
|
113
|
+
// Log but don't throw for parse errors - just start fresh
|
|
114
|
+
console.warn(`[FileSessionStore] Failed to load ${this.filePath}: ${e}`);
|
|
115
|
+
}
|
|
116
|
+
this.store = {};
|
|
117
|
+
}
|
|
118
|
+
this.loaded = true;
|
|
119
|
+
}
|
|
120
|
+
get(key) {
|
|
121
|
+
if (!this.loaded) {
|
|
122
|
+
this.loadSync();
|
|
123
|
+
}
|
|
124
|
+
return this.store[key];
|
|
125
|
+
}
|
|
126
|
+
async set(key, value) {
|
|
127
|
+
this.store[key] = value;
|
|
128
|
+
await this.flush();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear all stored values and persist to disk.
|
|
132
|
+
*/
|
|
133
|
+
async clear() {
|
|
134
|
+
this.store = {};
|
|
135
|
+
await this.flush();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Flush current state to disk.
|
|
139
|
+
* Uses atomic write (temp file + rename) for safety.
|
|
140
|
+
*/
|
|
141
|
+
async flush() {
|
|
142
|
+
const dir = path.dirname(this.filePath);
|
|
143
|
+
await fs_1.promises.mkdir(dir, { recursive: true });
|
|
144
|
+
// Atomic write: write to temp file, then rename
|
|
145
|
+
const tempPath = `${this.filePath}.tmp.${Date.now()}`;
|
|
146
|
+
const content = JSON.stringify(this.store, null, 2);
|
|
147
|
+
try {
|
|
148
|
+
await fs_1.promises.writeFile(tempPath, content, 'utf-8');
|
|
149
|
+
await fs_1.promises.rename(tempPath, this.filePath);
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
// Clean up temp file on failure
|
|
153
|
+
try {
|
|
154
|
+
await fs_1.promises.unlink(tempPath);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Ignore cleanup errors
|
|
158
|
+
}
|
|
159
|
+
throw e;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
loadSync() {
|
|
163
|
+
if (this.loaded) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
const content = (0, fs_1.readFileSync)(this.filePath, 'utf-8');
|
|
168
|
+
this.store = JSON.parse(content);
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
if (e.code !== 'ENOENT') {
|
|
172
|
+
console.warn(`[FileSessionStore] Failed to load ${this.filePath}: ${e}`);
|
|
173
|
+
}
|
|
174
|
+
this.store = {};
|
|
175
|
+
}
|
|
176
|
+
this.loaded = true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.FileSessionStore = FileSessionStore;
|
|
180
|
+
/**
|
|
181
|
+
* Directory-backed session store: one file per session entry.
|
|
182
|
+
*
|
|
183
|
+
* Why this exists (serve-v3 §A1 / Q1): the single-file FileSessionStore writes
|
|
184
|
+
* the *entire* provider-session map on every turn. Under object-store sync
|
|
185
|
+
* (`aws s3 sync`) across a sticky-routed multi-replica fleet, two replicas each
|
|
186
|
+
* rewrite that one shared file and clobber each other's session map. Sharding to
|
|
187
|
+
* one file per session means a replica only ever touches the files for the
|
|
188
|
+
* sessions it owns, so per-session deltas sync cleanly and there is no shared
|
|
189
|
+
* hot file.
|
|
190
|
+
*
|
|
191
|
+
* Designed for the headless provider-session use: a single record-valued logical
|
|
192
|
+
* key (`Record<conversationKey, PersistedSession>`). `get(key)` returns the
|
|
193
|
+
* merged record; `set(key, record)` writes only changed entries and deletes files
|
|
194
|
+
* for entries no longer present (so pruning propagates to disk). Writes are
|
|
195
|
+
* atomic (temp + rename). On first load it migrates a legacy `<dir>.json`
|
|
196
|
+
* single-file store so existing sessions survive the cutover.
|
|
197
|
+
*/
|
|
198
|
+
class DirectorySessionStore {
|
|
199
|
+
dir;
|
|
200
|
+
/** Current merged entry map (entryKey -> value). */
|
|
201
|
+
entries = {};
|
|
202
|
+
/** entryKey -> last-written JSON, for delta detection. */
|
|
203
|
+
serialized = new Map();
|
|
204
|
+
/** entryKey -> on-disk filename. */
|
|
205
|
+
files = new Map();
|
|
206
|
+
loaded = false;
|
|
207
|
+
/** @param dir Directory that holds one JSON file per session entry. */
|
|
208
|
+
constructor(dir) {
|
|
209
|
+
this.dir = dir;
|
|
210
|
+
}
|
|
211
|
+
get(_key) {
|
|
212
|
+
if (!this.loaded) {
|
|
213
|
+
this.loadSync();
|
|
214
|
+
}
|
|
215
|
+
// Single record-valued logical key: always return the merged entry map.
|
|
216
|
+
return this.entries;
|
|
217
|
+
}
|
|
218
|
+
async set(_key, value) {
|
|
219
|
+
if (!this.loaded) {
|
|
220
|
+
this.loadSync();
|
|
221
|
+
}
|
|
222
|
+
const next = (value && typeof value === 'object') ? value : {};
|
|
223
|
+
await fs_1.promises.mkdir(this.dir, { recursive: true });
|
|
224
|
+
// Upsert changed/new entries (delta only).
|
|
225
|
+
for (const [entryKey, entryVal] of Object.entries(next)) {
|
|
226
|
+
const json = JSON.stringify(entryVal);
|
|
227
|
+
if (this.serialized.get(entryKey) === json) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
const fileName = this.files.get(entryKey) ?? `${this.fileNameFor(entryKey)}.json`;
|
|
231
|
+
await this.writeAtomic(fileName, JSON.stringify({ key: entryKey, value: entryVal }, null, 2));
|
|
232
|
+
this.files.set(entryKey, fileName);
|
|
233
|
+
this.serialized.set(entryKey, json);
|
|
234
|
+
}
|
|
235
|
+
// Delete entries that disappeared (e.g. pruned/TTL'd in session.ts).
|
|
236
|
+
for (const entryKey of [...this.serialized.keys()]) {
|
|
237
|
+
if (Object.prototype.hasOwnProperty.call(next, entryKey)) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
const fileName = this.files.get(entryKey);
|
|
241
|
+
if (fileName) {
|
|
242
|
+
try {
|
|
243
|
+
await fs_1.promises.unlink(path.join(this.dir, fileName));
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Already gone — fine.
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
this.files.delete(entryKey);
|
|
250
|
+
this.serialized.delete(entryKey);
|
|
251
|
+
}
|
|
252
|
+
this.entries = { ...next };
|
|
253
|
+
}
|
|
254
|
+
fileNameFor(entryKey) {
|
|
255
|
+
return (0, crypto_1.createHash)('sha256').update(entryKey).digest('hex').slice(0, 40);
|
|
256
|
+
}
|
|
257
|
+
async writeAtomic(fileName, content) {
|
|
258
|
+
const target = path.join(this.dir, fileName);
|
|
259
|
+
const tempPath = `${target}.tmp.${process.pid}.${Date.now()}`;
|
|
260
|
+
try {
|
|
261
|
+
await fs_1.promises.writeFile(tempPath, content, 'utf-8');
|
|
262
|
+
await fs_1.promises.rename(tempPath, target);
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
try {
|
|
266
|
+
await fs_1.promises.unlink(tempPath);
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// Ignore cleanup errors.
|
|
270
|
+
}
|
|
271
|
+
throw e;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
loadSync() {
|
|
275
|
+
if (this.loaded) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
this.loaded = true;
|
|
279
|
+
this.migrateLegacySingleFileSync();
|
|
280
|
+
let names;
|
|
281
|
+
try {
|
|
282
|
+
names = (0, fs_1.readdirSync)(this.dir).filter((n) => n.endsWith('.json'));
|
|
283
|
+
}
|
|
284
|
+
catch (e) {
|
|
285
|
+
if (e.code !== 'ENOENT') {
|
|
286
|
+
console.warn(`[DirectorySessionStore] Failed to list ${this.dir}: ${e}`);
|
|
287
|
+
}
|
|
288
|
+
return; // No directory yet — start empty.
|
|
289
|
+
}
|
|
290
|
+
for (const name of names) {
|
|
291
|
+
try {
|
|
292
|
+
const raw = (0, fs_1.readFileSync)(path.join(this.dir, name), 'utf-8');
|
|
293
|
+
const parsed = JSON.parse(raw);
|
|
294
|
+
if (parsed && typeof parsed.key === 'string') {
|
|
295
|
+
this.entries[parsed.key] = parsed.value;
|
|
296
|
+
this.serialized.set(parsed.key, JSON.stringify(parsed.value));
|
|
297
|
+
this.files.set(parsed.key, name);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
catch (e) {
|
|
301
|
+
console.warn(`[DirectorySessionStore] Skipping unreadable ${name}: ${e}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* One-time import from the legacy single-file store at `<dir>.json` (the old
|
|
307
|
+
* FileSessionStore path). Runs only when the shard directory does not exist
|
|
308
|
+
* yet, so it never overwrites already-sharded state. The legacy file is
|
|
309
|
+
* `{ <logicalKey>: { <entryKey>: value } }`; we flatten the nested entries.
|
|
310
|
+
*/
|
|
311
|
+
migrateLegacySingleFileSync() {
|
|
312
|
+
let dirExists = true;
|
|
313
|
+
try {
|
|
314
|
+
(0, fs_1.readdirSync)(this.dir);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
dirExists = false;
|
|
318
|
+
}
|
|
319
|
+
if (dirExists) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
const legacyPath = `${this.dir}.json`;
|
|
323
|
+
let parsed;
|
|
324
|
+
try {
|
|
325
|
+
parsed = JSON.parse((0, fs_1.readFileSync)(legacyPath, 'utf-8'));
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
return; // No legacy file — nothing to migrate.
|
|
329
|
+
}
|
|
330
|
+
for (const value of Object.values(parsed)) {
|
|
331
|
+
if (value && typeof value === 'object') {
|
|
332
|
+
for (const [entryKey, entryVal] of Object.entries(value)) {
|
|
333
|
+
this.entries[entryKey] = entryVal;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// Imported entries are now in memory; the next set() writes them as shard
|
|
338
|
+
// files. If no turn happens, the legacy file stays and we re-migrate next
|
|
339
|
+
// boot (idempotent — no data loss).
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
exports.DirectorySessionStore = DirectorySessionStore;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getOverrideOpenAIBaseUrl = exports.VSCodeConfigProvider = exports.VSCodeSessionStore = exports.VSCodeEditTracker = exports.VSCodePermissionHandler = exports.VSCodeLogger = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* VS Code implementations of runtime interfaces.
|
|
9
|
+
*/
|
|
10
|
+
var vscode_logger_1 = require("./vscode-logger");
|
|
11
|
+
Object.defineProperty(exports, "VSCodeLogger", { enumerable: true, get: function () { return vscode_logger_1.VSCodeLogger; } });
|
|
12
|
+
var vscode_permission_handler_1 = require("./vscode-permission-handler");
|
|
13
|
+
Object.defineProperty(exports, "VSCodePermissionHandler", { enumerable: true, get: function () { return vscode_permission_handler_1.VSCodePermissionHandler; } });
|
|
14
|
+
var vscode_edit_tracker_1 = require("./vscode-edit-tracker");
|
|
15
|
+
Object.defineProperty(exports, "VSCodeEditTracker", { enumerable: true, get: function () { return vscode_edit_tracker_1.VSCodeEditTracker; } });
|
|
16
|
+
var vscode_session_store_1 = require("./vscode-session-store");
|
|
17
|
+
Object.defineProperty(exports, "VSCodeSessionStore", { enumerable: true, get: function () { return vscode_session_store_1.VSCodeSessionStore; } });
|
|
18
|
+
var vscode_config_provider_1 = require("./vscode-config-provider");
|
|
19
|
+
Object.defineProperty(exports, "VSCodeConfigProvider", { enumerable: true, get: function () { return vscode_config_provider_1.VSCodeConfigProvider; } });
|
|
20
|
+
Object.defineProperty(exports, "getOverrideOpenAIBaseUrl", { enumerable: true, get: function () { return vscode_config_provider_1.getOverrideOpenAIBaseUrl; } });
|
|
@@ -0,0 +1,77 @@
|
|
|
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.VSCodeConfigProvider = void 0;
|
|
40
|
+
exports.getOverrideOpenAIBaseUrl = getOverrideOpenAIBaseUrl;
|
|
41
|
+
const vscode = __importStar(require("vscode"));
|
|
42
|
+
/**
|
|
43
|
+
* VS Code workspace configuration-based config provider.
|
|
44
|
+
*/
|
|
45
|
+
class VSCodeConfigProvider {
|
|
46
|
+
get(section, key, defaultValue) {
|
|
47
|
+
return vscode.workspace.getConfiguration(section).get(key, defaultValue);
|
|
48
|
+
}
|
|
49
|
+
getCustomProviders() {
|
|
50
|
+
return vscode.workspace.getConfiguration('agentide').get('providers.custom') || {};
|
|
51
|
+
}
|
|
52
|
+
getEngineSettings() {
|
|
53
|
+
const cfg = vscode.workspace.getConfiguration('agentide');
|
|
54
|
+
const claudeCheapModel = (cfg.get('claude.cheapModel', '') || '').trim();
|
|
55
|
+
return {
|
|
56
|
+
claudeMaxThinkingTokens: cfg.get('claude.maxThinkingTokens', 0),
|
|
57
|
+
...(claudeCheapModel ? { claudeCheapModel } : {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.VSCodeConfigProvider = VSCodeConfigProvider;
|
|
62
|
+
/**
|
|
63
|
+
* Get override OpenAI base URL for a given base URL by looking up custom provider config.
|
|
64
|
+
*/
|
|
65
|
+
function getOverrideOpenAIBaseUrl(configProvider, baseUrl) {
|
|
66
|
+
const customProviders = configProvider.getCustomProviders();
|
|
67
|
+
const normalizedInput = baseUrl.replace(/\/$/, '');
|
|
68
|
+
for (const providerConfig of Object.values(customProviders)) {
|
|
69
|
+
if (providerConfig.baseUrl) {
|
|
70
|
+
const normalizedProviderUrl = providerConfig.baseUrl.replace(/\/$/, '');
|
|
71
|
+
if (normalizedInput === normalizedProviderUrl && providerConfig.overrideOpenAIBaseUrl) {
|
|
72
|
+
return providerConfig.overrideOpenAIBaseUrl.trim();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
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.VSCodeEditTracker = void 0;
|
|
40
|
+
const vscode = __importStar(require("vscode"));
|
|
41
|
+
/**
|
|
42
|
+
* VS Code command-based edit tracker.
|
|
43
|
+
* Uses agentide.editing.* commands for file change tracking.
|
|
44
|
+
*/
|
|
45
|
+
class VSCodeEditTracker {
|
|
46
|
+
logger;
|
|
47
|
+
constructor(logger) {
|
|
48
|
+
this.logger = logger;
|
|
49
|
+
}
|
|
50
|
+
async startTracking(sessionId, files) {
|
|
51
|
+
if (files.length === 0) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const timeoutMs = 5000;
|
|
55
|
+
const startTime = Date.now();
|
|
56
|
+
try {
|
|
57
|
+
const commandPromise = vscode.commands.executeCommand('agentide.editing.startExternal', { chatSessionId: sessionId, files });
|
|
58
|
+
const result = await Promise.race([
|
|
59
|
+
commandPromise,
|
|
60
|
+
new Promise((resolve) => setTimeout(() => resolve(null), timeoutMs))
|
|
61
|
+
]);
|
|
62
|
+
if (result === null) {
|
|
63
|
+
this.logger?.warn(`startTracking timed out after ${timeoutMs}ms`);
|
|
64
|
+
// Fire-and-forget cleanup for late completion
|
|
65
|
+
void Promise.resolve(commandPromise).then(async (lateResult) => {
|
|
66
|
+
if (lateResult?.operationId !== undefined) {
|
|
67
|
+
this.logger?.debug(`Late startTracking completed, cleaning up operationId=${lateResult.operationId}`);
|
|
68
|
+
try {
|
|
69
|
+
await vscode.commands.executeCommand('agentide.editing.stopExternal', {
|
|
70
|
+
chatSessionId: sessionId,
|
|
71
|
+
operationId: lateResult.operationId,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch { /* ignore cleanup errors */ }
|
|
75
|
+
}
|
|
76
|
+
}).catch(() => { });
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
if (result?.operationId !== undefined) {
|
|
80
|
+
this.logger?.debug(`startTracking completed in ${Date.now() - startTime}ms, operationId=${result.operationId}`);
|
|
81
|
+
return { operationId: result.operationId };
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
this.logger?.warn(`startTracking failed (${Date.now() - startTime}ms): ${e}`);
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async stopTracking(sessionId, operationId) {
|
|
91
|
+
const startTime = Date.now();
|
|
92
|
+
try {
|
|
93
|
+
// Note: No timeout here - we must wait for stopExternal to complete
|
|
94
|
+
// to ensure the editing session is properly finalized. Timing out
|
|
95
|
+
// would leave files in an incomplete/dirty state.
|
|
96
|
+
await vscode.commands.executeCommand('agentide.editing.stopExternal', {
|
|
97
|
+
chatSessionId: sessionId,
|
|
98
|
+
operationId,
|
|
99
|
+
});
|
|
100
|
+
this.logger?.debug(`stopTracking completed in ${Date.now() - startTime}ms`);
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
this.logger?.warn(`stopTracking failed (${Date.now() - startTime}ms): ${e}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async applyEdit(sessionId, filePath, content, isNewFile) {
|
|
107
|
+
try {
|
|
108
|
+
await vscode.commands.executeCommand('agentide.editing.apply', {
|
|
109
|
+
chatSessionId: sessionId,
|
|
110
|
+
uri: vscode.Uri.file(filePath),
|
|
111
|
+
code: content,
|
|
112
|
+
isNewFile,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
this.logger?.warn(`applyEdit failed for ${filePath}: ${e}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.VSCodeEditTracker = VSCodeEditTracker;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VSCodeLogger = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* VS Code OutputChannel-based logger implementation.
|
|
9
|
+
*/
|
|
10
|
+
class VSCodeLogger {
|
|
11
|
+
channel;
|
|
12
|
+
prefix;
|
|
13
|
+
constructor(channel, prefix = '[AgentIDE]') {
|
|
14
|
+
this.channel = channel;
|
|
15
|
+
this.prefix = prefix;
|
|
16
|
+
}
|
|
17
|
+
debug(message) {
|
|
18
|
+
this.channel.appendLine(`${this.prefix} ${message}`);
|
|
19
|
+
}
|
|
20
|
+
info(message) {
|
|
21
|
+
this.channel.appendLine(`${this.prefix} ${message}`);
|
|
22
|
+
}
|
|
23
|
+
warn(message) {
|
|
24
|
+
this.channel.appendLine(`${this.prefix} Warning: ${message}`);
|
|
25
|
+
}
|
|
26
|
+
error(message, error) {
|
|
27
|
+
this.channel.appendLine(`${this.prefix} Error: ${message}${error ? `: ${error.message}` : ''}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.VSCodeLogger = VSCodeLogger;
|
|
@@ -0,0 +1,72 @@
|
|
|
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.VSCodePermissionHandler = void 0;
|
|
40
|
+
const vscode = __importStar(require("vscode"));
|
|
41
|
+
/**
|
|
42
|
+
* VS Code modal dialog-based permission handler.
|
|
43
|
+
*/
|
|
44
|
+
class VSCodePermissionHandler {
|
|
45
|
+
logger;
|
|
46
|
+
constructor(logger) {
|
|
47
|
+
this.logger = logger;
|
|
48
|
+
}
|
|
49
|
+
async requestPermission(request) {
|
|
50
|
+
this.logger?.debug(`Permission request: tool=${request.toolName}, toolUseId=${request.toolUseId ?? 'n/a'}`);
|
|
51
|
+
let detail;
|
|
52
|
+
if (request.toolInput) {
|
|
53
|
+
try {
|
|
54
|
+
const preview = JSON.stringify(request.toolInput).slice(0, 800);
|
|
55
|
+
detail = `Input: ${preview}${preview.length >= 800 ? '…' : ''}`;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// ignore non-serializable input
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const allowLabel = 'Allow';
|
|
62
|
+
const denyLabel = 'Deny';
|
|
63
|
+
const choice = await vscode.window.showWarningMessage(`Allow agent to run the "${request.toolName}" tool?`, { modal: true, detail }, allowLabel, denyLabel);
|
|
64
|
+
if (choice === allowLabel) {
|
|
65
|
+
this.logger?.debug(`Permission granted: ${request.toolName}`);
|
|
66
|
+
return { behavior: 'allow' };
|
|
67
|
+
}
|
|
68
|
+
this.logger?.debug(`Permission denied: ${request.toolName}`);
|
|
69
|
+
return { behavior: 'deny', message: 'User denied permission request' };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.VSCodePermissionHandler = VSCodePermissionHandler;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.VSCodeSessionStore = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* VS Code extension globalState-based session store.
|
|
9
|
+
*/
|
|
10
|
+
class VSCodeSessionStore {
|
|
11
|
+
globalState;
|
|
12
|
+
constructor(globalState) {
|
|
13
|
+
this.globalState = globalState;
|
|
14
|
+
}
|
|
15
|
+
get(key) {
|
|
16
|
+
return this.globalState.get(key);
|
|
17
|
+
}
|
|
18
|
+
async set(key, value) {
|
|
19
|
+
await this.globalState.update(key, value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.VSCodeSessionStore = VSCodeSessionStore;
|