@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,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: desktop-automation
|
|
3
|
+
description: Drive desktop applications on Windows and macOS using accessibility APIs, keyboard input, screenshots, and coordinate fallback. Use when you need to control an already-open app window, collect visual evidence, debug UI state, or automate UI that browser-native tools cannot attach to.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Desktop Automation
|
|
7
|
+
|
|
8
|
+
Use this skill when the task is about a real desktop window rather than a browser-native or code-only workflow.
|
|
9
|
+
|
|
10
|
+
Prefer browser-native tools such as `agent-browser` for websites in a managed or CDP-enabled browser. Use this skill when the user cares about the active desktop app/window, when browser tools cannot attach, or when visual evidence from the actual desktop matters.
|
|
11
|
+
|
|
12
|
+
## Control Ladder
|
|
13
|
+
|
|
14
|
+
1. Use the platform accessibility tree first.
|
|
15
|
+
2. Use keyboard shortcuts and text input for common app flows.
|
|
16
|
+
3. Capture screenshots before and after important actions, defaulting to window-targeted capture by window ID/handle when available.
|
|
17
|
+
4. Use coordinate clicks only after accessibility lookup fails or the app exposes poor metadata.
|
|
18
|
+
5. Verify the outcome with screenshots plus an independent signal when possible.
|
|
19
|
+
|
|
20
|
+
Independent signals can be a window title, URL, file existence, process state, port state, app log, clipboard value, or exported data.
|
|
21
|
+
|
|
22
|
+
## Browser Defaults (When Using Desktop Automation)
|
|
23
|
+
|
|
24
|
+
When automating an already-open desktop browser window:
|
|
25
|
+
|
|
26
|
+
1. Open a **new tab by default** (`Ctrl+T` on Windows/Linux, `Cmd+T` on macOS) unless the user explicitly asks to reuse the current tab.
|
|
27
|
+
2. Navigate to the requested site in the new tab.
|
|
28
|
+
3. After the site loads, interact with **in-page controls** (search fields, buttons, menus) via accessibility first.
|
|
29
|
+
4. If the user says to type in a site search/input box, entering text in the browser address bar does **not** satisfy the request.
|
|
30
|
+
5. Capture before/after screenshots that show the page state at each key milestone.
|
|
31
|
+
|
|
32
|
+
## Windows
|
|
33
|
+
|
|
34
|
+
Use Windows UI Automation through PowerShell.
|
|
35
|
+
|
|
36
|
+
Helper module:
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
Set-ExecutionPolicy -Scope Process Bypass -Force
|
|
40
|
+
Import-Module '<skill_dir>\scripts\windows-desktop-uia.psm1' -Force
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
General workflow:
|
|
44
|
+
|
|
45
|
+
1. Find the top-level window by title or process.
|
|
46
|
+
2. Bring it to the foreground.
|
|
47
|
+
3. Enumerate descendants and inspect `Name`, `ControlType`, bounds, and supported patterns.
|
|
48
|
+
4. Invoke controls by accessibility pattern when possible.
|
|
49
|
+
5. Use `SendKeys` for standard shortcuts and text entry.
|
|
50
|
+
6. Capture screenshots for proof and debugging, defaulting to window-targeted capture by window handle; use full-screen capture only when window-targeted capture is unavailable.
|
|
51
|
+
|
|
52
|
+
Useful primitives:
|
|
53
|
+
- `Get-WindowAutomationElementByName`
|
|
54
|
+
- `Get-WindowDescendants`
|
|
55
|
+
- `Find-WindowElementByName`
|
|
56
|
+
- `Invoke-UIElement`
|
|
57
|
+
- `Focus-ProcessWindow`
|
|
58
|
+
- `Save-FullScreen`
|
|
59
|
+
- `Click-ScreenPoint`
|
|
60
|
+
|
|
61
|
+
## macOS
|
|
62
|
+
|
|
63
|
+
Use Accessibility plus AppleScript/JXA and screenshots.
|
|
64
|
+
|
|
65
|
+
Preflight:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
osascript -e 'tell application "System Events" to get name of first process whose frontmost is true'
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If this fails with an accessibility/privacy error, the terminal or IDE running the command needs permission in:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
System Settings > Privacy & Security > Accessibility
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
General workflow:
|
|
78
|
+
|
|
79
|
+
1. Bring the app forward with AppleScript.
|
|
80
|
+
2. Inspect visible windows and UI elements through `System Events`.
|
|
81
|
+
3. Prefer menu items, buttons, text fields, and keyboard shortcuts over coordinates.
|
|
82
|
+
4. Use `screencapture` before and after actions, defaulting to window-targeted capture by window id (`-l <windowid>`); use full-screen capture only when a reliable window id is unavailable.
|
|
83
|
+
5. Use coordinate clicks only as a fallback, usually through AppleScript, `cliclick`, or another available local tool.
|
|
84
|
+
|
|
85
|
+
Bring an app forward:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
osascript -e 'tell application "Safari" to activate'
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
List windows:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
osascript -e 'tell application "System Events" to tell process "Safari" to get name of windows'
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Type text into the focused control:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
osascript -e 'tell application "System Events" to keystroke "hello world"'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Press a shortcut:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
osascript -e 'tell application "System Events" to keystroke "l" using command down'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Take a screenshot:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
screencapture -x /tmp/desktop-before.png
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Screenshot Debugging
|
|
116
|
+
|
|
117
|
+
When the accessibility tree and the visible screen disagree, pause and gather evidence:
|
|
118
|
+
|
|
119
|
+
1. Capture a screenshot.
|
|
120
|
+
2. Dump visible controls with names, types, bounds, and offscreen state.
|
|
121
|
+
3. Compare the screenshot against the accessibility dump.
|
|
122
|
+
4. Decide whether the problem is stale state, wrong focus, offscreen UI, a transient overlay, or missing accessibility metadata.
|
|
123
|
+
|
|
124
|
+
Common interpretations:
|
|
125
|
+
- Screenshot shows target, accessibility dump does not: use coordinate fallback, but keep looking for a nearby stable control.
|
|
126
|
+
- Accessibility dump shows target, screenshot does not: refocus or wait; the tree may be stale or the element may be offscreen.
|
|
127
|
+
- Both show target but action fails: try supported patterns first, then keyboard, then center-point click.
|
|
128
|
+
- Text typed into the wrong place: restore focus, select the intended field, and paste literal text from the clipboard instead of sending special characters directly.
|
|
129
|
+
|
|
130
|
+
## Coordinate Fallback
|
|
131
|
+
|
|
132
|
+
Coordinates are temporary scaffolding. Derive them from a screenshot plus window/control bounds, then verify immediately.
|
|
133
|
+
|
|
134
|
+
Rules:
|
|
135
|
+
- click near the visual center of the target
|
|
136
|
+
- avoid borders, splitters, scrollbars, and label edges
|
|
137
|
+
- recompute coordinates after window movement, zoom changes, scrolling, or layout changes
|
|
138
|
+
- save a before and after screenshot
|
|
139
|
+
- replace the coordinate with an accessibility selector once you find a stable one
|
|
140
|
+
|
|
141
|
+
## Recording
|
|
142
|
+
|
|
143
|
+
Use recording for longer flows or when the user will review the interaction.
|
|
144
|
+
|
|
145
|
+
Windows:
|
|
146
|
+
|
|
147
|
+
```powershell
|
|
148
|
+
ffmpeg -f gdigrab -framerate 15 -i desktop -c:v mpeg4 .\desktop-run.avi
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
macOS:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
screencapture -v /tmp/desktop-run.mov
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
If OBS is already configured, it is fine to use OBS instead. Always keep screenshots for key states even when recording video.
|
|
158
|
+
|
|
159
|
+
## App-Specific Recipes
|
|
160
|
+
|
|
161
|
+
Keep the core skill general. Put product-specific tricks in references.
|
|
162
|
+
|
|
163
|
+
Current reference:
|
|
164
|
+
- `references/agenthippo-ui-recipes.md` documents AgentHippo IDE workflows, status menus, command palette behavior, and lessons from real Windows testing.
|
|
165
|
+
|
|
166
|
+
Read that reference only when the task is specifically about AgentHippo IDE or when you need an example of a complete desktop automation workflow.
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
# AgentHippo Windows UI Recipes
|
|
2
|
+
|
|
3
|
+
This reference captures the concrete tools, scripts, commands, and reliability tricks that were used during real Agent Anywhere and Spotlight validation on Windows.
|
|
4
|
+
|
|
5
|
+
Use it with `windows-desktop-uia.psm1`.
|
|
6
|
+
|
|
7
|
+
## Real IDE launch
|
|
8
|
+
|
|
9
|
+
Launch the real IDE, not just the test host:
|
|
10
|
+
|
|
11
|
+
```powershell
|
|
12
|
+
D:\dev\agenthippo-vscode\scripts\code.bat
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Compile before UI testing:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
npm run compile
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Extension-only compile:
|
|
22
|
+
|
|
23
|
+
```powershell
|
|
24
|
+
C:\Users\trung\AppData\Roaming\nodejs\node.exe D:\dev\agenthippo-vscode\node_modules\typescript\lib\tsc.js -p D:\dev\agenthippo-vscode\extensions\agentide
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Import pattern
|
|
28
|
+
|
|
29
|
+
Unsigned module imports need a per-process execution policy bypass:
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
Set-ExecutionPolicy -Scope Process Bypass -Force
|
|
33
|
+
Import-Module 'D:\dev\agenthippo-vscode\extensions\agentide\base-prompts\skills\desktop-automation\scripts\windows-desktop-uia.psm1' -Force
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Without that bypass, local module import may fail before any UI interaction starts.
|
|
37
|
+
|
|
38
|
+
## Core helper functions
|
|
39
|
+
|
|
40
|
+
The helper module exposes these tested functions:
|
|
41
|
+
|
|
42
|
+
- `Get-AgentHippoProcess`
|
|
43
|
+
- `Get-AgentHippoWindow`
|
|
44
|
+
- `Get-AgentHippoRect`
|
|
45
|
+
- `Focus-AgentHippo`
|
|
46
|
+
- `Save-FullScreen`
|
|
47
|
+
- `Minimize-InterferingBrowsers`
|
|
48
|
+
- `Get-AgentDescendants`
|
|
49
|
+
- `Find-AgentElementByName`
|
|
50
|
+
- `Invoke-AgentElement`
|
|
51
|
+
- `Invoke-AgentButtonByName`
|
|
52
|
+
- `Invoke-AgentStatusButton`
|
|
53
|
+
- `Invoke-AgentCommand`
|
|
54
|
+
- `Get-AgentAnywhereNotificationWindow`
|
|
55
|
+
- `Invoke-AgentAnywhereNotificationButton`
|
|
56
|
+
- `Click-ScreenPoint`
|
|
57
|
+
|
|
58
|
+
## Proven command-palette flow
|
|
59
|
+
|
|
60
|
+
This is the most reliable command pattern that worked in the live IDE:
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
Invoke-AgentCommand -Query 'Agent Anywhere Status' -TargetName 'Agent Hippo: Agent Anywhere Status'
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Other real command labels that appeared in the live IDE:
|
|
67
|
+
|
|
68
|
+
- `Agent Hippo: Install Agent Anywhere (Gateway), recently used`
|
|
69
|
+
- `Agent Hippo: Agent Anywhere Status`
|
|
70
|
+
- `Agent Hippo: Connect Agent Anywhere`
|
|
71
|
+
- `Agent Hippo: Uninstall Agent Anywhere (OpenClaw CLI)`
|
|
72
|
+
- `Agent Hippo: Detect Agent Anywhere Gateway`
|
|
73
|
+
- `Agent Hippo: Disconnect Agent Anywhere`
|
|
74
|
+
|
|
75
|
+
## Robust manual command fallback
|
|
76
|
+
|
|
77
|
+
When `Invoke-AgentCommand` misses, use this sequence instead of guessing:
|
|
78
|
+
|
|
79
|
+
1. `Focus-AgentHippo`
|
|
80
|
+
2. Send `{ESC}{ESC}`
|
|
81
|
+
3. Send `^+p`
|
|
82
|
+
4. Send `^a`
|
|
83
|
+
5. Type `>query`
|
|
84
|
+
6. Wait about `700-900ms`
|
|
85
|
+
7. Enumerate `Get-AgentDescendants`
|
|
86
|
+
8. Find a `ControlType.ListItem` whose name starts with the desired command label
|
|
87
|
+
9. Invoke it with `Invoke-AgentElement`
|
|
88
|
+
|
|
89
|
+
This worked better than blind Enter presses because the visible selection can lag behind the typed query.
|
|
90
|
+
|
|
91
|
+
## Button and notification recipes
|
|
92
|
+
|
|
93
|
+
### Agent Anywhere status
|
|
94
|
+
|
|
95
|
+
Preferred pattern:
|
|
96
|
+
|
|
97
|
+
1. Open status
|
|
98
|
+
2. Inspect the notification window
|
|
99
|
+
3. Click the exact named button
|
|
100
|
+
|
|
101
|
+
Example:
|
|
102
|
+
|
|
103
|
+
```powershell
|
|
104
|
+
Invoke-AgentCommand -Query 'Agent Anywhere Status' -TargetName 'Agent Hippo: Agent Anywhere Status'
|
|
105
|
+
Invoke-AgentAnywhereNotificationButton -Name 'Restart'
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Buttons observed in live runs:
|
|
109
|
+
|
|
110
|
+
When running:
|
|
111
|
+
- `Web UI`
|
|
112
|
+
- `Config`
|
|
113
|
+
- `Restart`
|
|
114
|
+
- `Reset auth`
|
|
115
|
+
- `Uninstall`
|
|
116
|
+
|
|
117
|
+
When stopped:
|
|
118
|
+
- `Connect`
|
|
119
|
+
- `Config`
|
|
120
|
+
- `Uninstall`
|
|
121
|
+
|
|
122
|
+
### Important safety note
|
|
123
|
+
|
|
124
|
+
Do not click `Reset auth` on a live profile unless the user wants the gateway auth token rotated in `C:\Users\trung\.openclaw\openclaw.json`.
|
|
125
|
+
|
|
126
|
+
## Typing into the AgentHippo UI
|
|
127
|
+
|
|
128
|
+
Chat typing was successfully done with focused coordinate click plus `SendKeys`.
|
|
129
|
+
|
|
130
|
+
Real example that worked:
|
|
131
|
+
|
|
132
|
+
```powershell
|
|
133
|
+
Focus-AgentHippo
|
|
134
|
+
Click-ScreenPoint -X 1960 -Y 1190 -DelayMs 500
|
|
135
|
+
[System.Windows.Forms.SendKeys]::SendWait('hello test')
|
|
136
|
+
Start-Sleep -Milliseconds 700
|
|
137
|
+
Save-FullScreen -Path 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\214-after-typing-local-chat.png'
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Takeaways:
|
|
141
|
+
- first get the app to the foreground
|
|
142
|
+
- click only after the input area is visibly ready
|
|
143
|
+
- capture a screenshot immediately after typing
|
|
144
|
+
- prefer UIA focus if the input control is easy to identify; use coordinate clicks only when the input is visually obvious but UIA names are not stable
|
|
145
|
+
|
|
146
|
+
New chat button examples:
|
|
147
|
+
|
|
148
|
+
UIA route:
|
|
149
|
+
|
|
150
|
+
```powershell
|
|
151
|
+
Invoke-AgentButtonByName -Name 'New Chat (Ctrl+N)'
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Coordinate fallback:
|
|
155
|
+
|
|
156
|
+
```powershell
|
|
157
|
+
Focus-AgentHippo
|
|
158
|
+
Click-ScreenPoint -X 2009 -Y 125 -DelayMs 1500
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Screenshot practice
|
|
162
|
+
|
|
163
|
+
Use full-screen captures at each important milestone:
|
|
164
|
+
|
|
165
|
+
```powershell
|
|
166
|
+
Save-FullScreen -Path 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\before.png'
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Recommended sequence:
|
|
170
|
+
- before action
|
|
171
|
+
- immediately after action
|
|
172
|
+
- after settle if state changes asynchronously
|
|
173
|
+
|
|
174
|
+
Artifacts from the real runs live under:
|
|
175
|
+
|
|
176
|
+
- Screens: `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens`
|
|
177
|
+
- Alternate captures: `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screenshots`
|
|
178
|
+
|
|
179
|
+
## Debugging UI state mismatches
|
|
180
|
+
|
|
181
|
+
Use this when UIA says one thing but the live screen suggests something else.
|
|
182
|
+
|
|
183
|
+
Examples from real work:
|
|
184
|
+
- stale status card content after connect or restart
|
|
185
|
+
- a visible notification that disappears between two scripts
|
|
186
|
+
- focus landing in the wrong app after a browser steals foreground
|
|
187
|
+
- a control that is clearly visible but has no usable UIA name
|
|
188
|
+
|
|
189
|
+
Recommended workflow:
|
|
190
|
+
|
|
191
|
+
1. Save a screenshot immediately.
|
|
192
|
+
2. Dump the AgentHippo window bounds.
|
|
193
|
+
3. Dump on-screen UIA elements with names and rectangles.
|
|
194
|
+
4. Compare screenshot versus bounds.
|
|
195
|
+
5. Only then choose the next action.
|
|
196
|
+
|
|
197
|
+
### Window bounds probe
|
|
198
|
+
|
|
199
|
+
This tells you where the live app window sits on the desktop:
|
|
200
|
+
|
|
201
|
+
```powershell
|
|
202
|
+
Focus-AgentHippo
|
|
203
|
+
Get-AgentHippoRect | Format-List
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
The earlier ad hoc artifact script for this was:
|
|
207
|
+
|
|
208
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\rects.ps1`
|
|
209
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\uia-window.ps1`
|
|
210
|
+
|
|
211
|
+
### On-screen UIA dump
|
|
212
|
+
|
|
213
|
+
This is the most useful dump when you need to compare visible controls against the screenshot:
|
|
214
|
+
|
|
215
|
+
```powershell
|
|
216
|
+
Focus-AgentHippo
|
|
217
|
+
$rect = Get-AgentHippoRect
|
|
218
|
+
$all = Get-AgentDescendants
|
|
219
|
+
$items = @()
|
|
220
|
+
for ($i = 0; $i -lt $all.Count; $i++) {
|
|
221
|
+
$el = $all.Item($i)
|
|
222
|
+
$x = $el.Current.BoundingRectangle.Left
|
|
223
|
+
$y = $el.Current.BoundingRectangle.Top
|
|
224
|
+
if ($el.Current.Name -and $x -ge $rect.Left -and $x -le $rect.Right -and $y -ge $rect.Top -and $y -le $rect.Bottom) {
|
|
225
|
+
$items += [pscustomobject]@{
|
|
226
|
+
Name = $el.Current.Name
|
|
227
|
+
Type = $el.Current.ControlType.ProgrammaticName
|
|
228
|
+
X = $x
|
|
229
|
+
Y = $y
|
|
230
|
+
W = $el.Current.BoundingRectangle.Width
|
|
231
|
+
H = $el.Current.BoundingRectangle.Height
|
|
232
|
+
Offscreen = $el.Current.IsOffscreen
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
$items | Where-Object { $_.Type -in @('ControlType.Button','ControlType.ListItem','ControlType.Edit','ControlType.Text') } |
|
|
237
|
+
Sort-Object Y, X |
|
|
238
|
+
ConvertTo-Json -Depth 3 |
|
|
239
|
+
Set-Content 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\uia-elements-onscreen.json'
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
This was based on the real artifact script:
|
|
243
|
+
|
|
244
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-onscreen.ps1`
|
|
245
|
+
|
|
246
|
+
### How to interpret a mismatch
|
|
247
|
+
|
|
248
|
+
Use this decision table:
|
|
249
|
+
|
|
250
|
+
- Screenshot shows the target, dump does not:
|
|
251
|
+
- likely custom-drawn control or poor accessibility metadata
|
|
252
|
+
- use coordinate fallback, but keep looking for a nearby accessible anchor
|
|
253
|
+
|
|
254
|
+
- Dump shows the control, screenshot does not:
|
|
255
|
+
- likely stale window, wrong focus, or offscreen element
|
|
256
|
+
- refocus and recapture before clicking anything
|
|
257
|
+
|
|
258
|
+
- Both show the control but the action fails:
|
|
259
|
+
- likely timing issue, transient overlay, or wrong click point
|
|
260
|
+
- slow down and click the center of the visible target
|
|
261
|
+
|
|
262
|
+
- Screenshot and dump disagree on window location:
|
|
263
|
+
- likely multiple monitors or wrong foreground window
|
|
264
|
+
- re-run `Focus-AgentHippo`, then recapture
|
|
265
|
+
|
|
266
|
+
## Deriving fallback click coordinates from screenshots
|
|
267
|
+
|
|
268
|
+
Coordinate clicks were a last resort, but they were sometimes necessary. The key is to derive them deliberately.
|
|
269
|
+
|
|
270
|
+
### Step-by-step method
|
|
271
|
+
|
|
272
|
+
1. Bring AgentHippo to the foreground:
|
|
273
|
+
|
|
274
|
+
```powershell
|
|
275
|
+
Focus-AgentHippo
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
2. Capture a before screenshot:
|
|
279
|
+
|
|
280
|
+
```powershell
|
|
281
|
+
Save-FullScreen -Path 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\before-target.png'
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
3. Record the app bounds:
|
|
285
|
+
|
|
286
|
+
```powershell
|
|
287
|
+
$rect = Get-AgentHippoRect
|
|
288
|
+
$rect | Format-List
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
4. Inspect the screenshot and note the target's approximate center relative to the app window.
|
|
292
|
+
|
|
293
|
+
5. If useful, dump nearby accessible controls to get neighboring bounds:
|
|
294
|
+
|
|
295
|
+
```powershell
|
|
296
|
+
$all = Get-AgentDescendants
|
|
297
|
+
$all | ForEach-Object {
|
|
298
|
+
if ($_.Current.Name) {
|
|
299
|
+
[pscustomobject]@{
|
|
300
|
+
Name = $_.Current.Name
|
|
301
|
+
Type = $_.Current.ControlType.ProgrammaticName
|
|
302
|
+
X = $_.Current.BoundingRectangle.Left
|
|
303
|
+
Y = $_.Current.BoundingRectangle.Top
|
|
304
|
+
W = $_.Current.BoundingRectangle.Width
|
|
305
|
+
H = $_.Current.BoundingRectangle.Height
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
} | Sort-Object Y, X
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
6. Choose a click point near the visual center of the target.
|
|
312
|
+
|
|
313
|
+
7. Click and capture immediately:
|
|
314
|
+
|
|
315
|
+
```powershell
|
|
316
|
+
Click-ScreenPoint -X 2009 -Y 125 -DelayMs 1500
|
|
317
|
+
Save-FullScreen -Path 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\after-target-click.png'
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Specific lessons from real AgentHippo runs
|
|
321
|
+
|
|
322
|
+
- For chat input, clicking low and centered in the input area worked better than clicking near placeholder text.
|
|
323
|
+
- For title-bar or toolbar actions like `New Chat`, using the center of the icon/button area was more reliable than clicking on adjacent whitespace.
|
|
324
|
+
- For ephemeral menus, the coordinate often had to be used in the same script that opened the menu.
|
|
325
|
+
- If Chrome or Edge was visible, focus theft caused false coordinate failures; minimizing browsers first improved consistency.
|
|
326
|
+
|
|
327
|
+
### Valuable artifact scripts
|
|
328
|
+
|
|
329
|
+
These are worth reading when adapting the method:
|
|
330
|
+
|
|
331
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\new-chat-click.ps1`
|
|
332
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\type-local-chat.ps1`
|
|
333
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\rects.ps1`
|
|
334
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-onscreen.ps1`
|
|
335
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-interesting.ps1`
|
|
336
|
+
|
|
337
|
+
### Coordinates are disposable
|
|
338
|
+
|
|
339
|
+
Treat coordinates as:
|
|
340
|
+
- useful for immediate progress
|
|
341
|
+
- valid only for the current window size/layout/state
|
|
342
|
+
- something to replace later with a better UIA target if possible
|
|
343
|
+
|
|
344
|
+
Do not promote a coordinate click to the primary strategy unless repeated UIA inspection shows there is no reliable accessible target.
|
|
345
|
+
|
|
346
|
+
## Screen recording
|
|
347
|
+
|
|
348
|
+
Long UI flows were captured to:
|
|
349
|
+
|
|
350
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\video\agent-anywhere-e2e.avi`
|
|
351
|
+
|
|
352
|
+
The existing recording logs show a working `ffmpeg` desktop capture using `gdigrab` at `15 fps` over the whole desktop. A good reusable command shape is:
|
|
353
|
+
|
|
354
|
+
```powershell
|
|
355
|
+
ffmpeg -f gdigrab -framerate 15 -i desktop -c:v mpeg4 D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\video\agent-anywhere-e2e.avi
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Evidence for this comes from:
|
|
359
|
+
|
|
360
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\ffmpeg-stderr.log`
|
|
361
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\ffmpeg-stdout.log`
|
|
362
|
+
|
|
363
|
+
If OBS is already configured and scriptable on the machine, it is fine to use OBS instead, but `ffmpeg + gdigrab` is the simpler fallback.
|
|
364
|
+
|
|
365
|
+
## UIA inspection and discovery
|
|
366
|
+
|
|
367
|
+
When a dialog is unfamiliar, dump the interesting descendants instead of guessing. This pattern was useful repeatedly:
|
|
368
|
+
|
|
369
|
+
```powershell
|
|
370
|
+
Focus-AgentHippo
|
|
371
|
+
$all = Get-AgentDescendants
|
|
372
|
+
$items = @()
|
|
373
|
+
for ($i = 0; $i -lt $all.Count; $i++) {
|
|
374
|
+
$el = $all.Item($i)
|
|
375
|
+
if ($el.Current.Name) {
|
|
376
|
+
$items += [pscustomobject]@{
|
|
377
|
+
Name = $el.Current.Name
|
|
378
|
+
Type = $el.Current.ControlType.ProgrammaticName
|
|
379
|
+
X = $el.Current.BoundingRectangle.Left
|
|
380
|
+
Y = $el.Current.BoundingRectangle.Top
|
|
381
|
+
W = $el.Current.BoundingRectangle.Width
|
|
382
|
+
H = $el.Current.BoundingRectangle.Height
|
|
383
|
+
Offscreen = $el.Current.IsOffscreen
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
$items | Sort-Object Y, X | ConvertTo-Json -Depth 3 | Set-Content 'D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\uia-elements.json'
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
Real discovery scripts in the artifact folder:
|
|
391
|
+
|
|
392
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia.ps1`
|
|
393
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-interesting.ps1`
|
|
394
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-interesting-2.ps1`
|
|
395
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\logs\dump-uia-onscreen.ps1`
|
|
396
|
+
|
|
397
|
+
## Focus and timing tricks that mattered
|
|
398
|
+
|
|
399
|
+
- Minimize browsers before fine-grained UI work:
|
|
400
|
+
|
|
401
|
+
```powershell
|
|
402
|
+
Minimize-InterferingBrowsers
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
- Many actions need a short settle delay:
|
|
406
|
+
- `150-300ms` after focus changes
|
|
407
|
+
- `700-900ms` after typing palette queries
|
|
408
|
+
- `1200-1800ms` after command invocation
|
|
409
|
+
|
|
410
|
+
- If a notification vanishes quickly, open-and-click in one script instead of opening status in one step and clicking later.
|
|
411
|
+
|
|
412
|
+
- If the command palette or dialog seems stale, send `{ESC}{ESC}` first.
|
|
413
|
+
|
|
414
|
+
## Validation habits from the real Agent Anywhere work
|
|
415
|
+
|
|
416
|
+
A script succeeding is not enough. Pair UI interaction with at least one independent check:
|
|
417
|
+
|
|
418
|
+
- screenshot
|
|
419
|
+
- port check
|
|
420
|
+
- log tail
|
|
421
|
+
- JSON status snapshot
|
|
422
|
+
- browser window title
|
|
423
|
+
|
|
424
|
+
Examples from the real runs:
|
|
425
|
+
|
|
426
|
+
- Browser title check after `Web UI`:
|
|
427
|
+
- `OpenClaw Control - Google Chrome`
|
|
428
|
+
- Agent Anywhere screenshots:
|
|
429
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\649-install-manualinvoke-final.png`
|
|
430
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\683-after-connect-hidden-launcher.png`
|
|
431
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\695-after-restart-combined.png`
|
|
432
|
+
- `D:\dev\agenthippo-vscode\.artifacts\agent-anywhere-e2e\screens\703-after-webui-combined.png`
|
|
433
|
+
|
|
434
|
+
## Known live-workflow lessons
|
|
435
|
+
|
|
436
|
+
1. Prefer UIA by label over coordinates.
|
|
437
|
+
2. Use coordinates only as a bridge to discover a better target.
|
|
438
|
+
3. Keep visual evidence for each important step.
|
|
439
|
+
4. Refresh state before diagnosing a bug if the UI looks self-contradictory.
|
|
440
|
+
5. Be careful with live-profile actions that rewrite auth or config.
|
|
441
|
+
6. Build small temporary scripts in `.artifacts` during exploration, then fold the stable lessons back into the reusable skill.
|