@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,195 @@
|
|
|
1
|
+
# Writing Effective AGENTS.md Files
|
|
2
|
+
|
|
3
|
+
Guide for crafting AGENTS.md files that produce consistent, useful agent behavior.
|
|
4
|
+
|
|
5
|
+
## The Four Pillars
|
|
6
|
+
|
|
7
|
+
Every effective AGENTS.md needs these sections:
|
|
8
|
+
|
|
9
|
+
### 1. Core Behaviors (What the agent DOES)
|
|
10
|
+
|
|
11
|
+
**Good**: Specific, actionable, measurable
|
|
12
|
+
```markdown
|
|
13
|
+
1. **Systematic Review**: Check every function for input validation before processing
|
|
14
|
+
2. **Context Gathering**: Read related files before proposing changes
|
|
15
|
+
3. **Incremental Changes**: Modify one file at a time, verify after each
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Bad**: Vague, generic, unmeasurable
|
|
19
|
+
```markdown
|
|
20
|
+
1. Help with code
|
|
21
|
+
2. Be helpful
|
|
22
|
+
3. Do good work
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Tips**:
|
|
26
|
+
- Use action verbs: "Analyze", "Verify", "Generate", "Check"
|
|
27
|
+
- Be specific about scope: "all TypeScript files" vs "the codebase"
|
|
28
|
+
- Include quality criteria: "until all tests pass" vs "until done"
|
|
29
|
+
|
|
30
|
+
### 2. Workflow (HOW the agent works)
|
|
31
|
+
|
|
32
|
+
**Good**: Step-by-step with decision points
|
|
33
|
+
```markdown
|
|
34
|
+
1. **Understand**: Read the user's request and identify affected files
|
|
35
|
+
2. **Research**: Examine relevant code, tests, and documentation
|
|
36
|
+
3. **Plan**: Outline changes before implementing
|
|
37
|
+
4. **Execute**: Make changes incrementally with verification
|
|
38
|
+
5. **Validate**: Run tests and check for regressions
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Bad**: Missing steps, unclear sequence
|
|
42
|
+
```markdown
|
|
43
|
+
1. Look at the code
|
|
44
|
+
2. Fix it
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Tips**:
|
|
48
|
+
- Match workflow to typical task complexity
|
|
49
|
+
- Include verification/validation steps
|
|
50
|
+
- Add decision points for ambiguous cases
|
|
51
|
+
|
|
52
|
+
### 3. Constraints (What the agent must NOT do)
|
|
53
|
+
|
|
54
|
+
**Good**: Explicit boundaries with rationale
|
|
55
|
+
```markdown
|
|
56
|
+
- Never modify files outside the `src/` directory
|
|
57
|
+
- Always ask before deleting files or removing functionality
|
|
58
|
+
- Don't refactor adjacent code unless explicitly asked
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Bad**: Too vague or too restrictive
|
|
62
|
+
```markdown
|
|
63
|
+
- Be careful
|
|
64
|
+
- Don't break things
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Tips**:
|
|
68
|
+
- List 3-5 specific constraints
|
|
69
|
+
- Focus on high-impact restrictions (destructive operations, scope limits)
|
|
70
|
+
- Include "escape hatches": "unless the user explicitly requests otherwise"
|
|
71
|
+
|
|
72
|
+
### 4. Output Format (How results are presented)
|
|
73
|
+
|
|
74
|
+
**Good**: Concrete structure with examples
|
|
75
|
+
```markdown
|
|
76
|
+
Present findings in this format:
|
|
77
|
+
|
|
78
|
+
### Summary
|
|
79
|
+
One paragraph overview of what was found/done.
|
|
80
|
+
|
|
81
|
+
### Changes
|
|
82
|
+
| File | Change | Rationale |
|
|
83
|
+
|------|--------|-----------|
|
|
84
|
+
| ... | ... | ... |
|
|
85
|
+
|
|
86
|
+
### Next Steps
|
|
87
|
+
Bullet list of recommended follow-up actions.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Bad**: No format guidance
|
|
91
|
+
```markdown
|
|
92
|
+
Just explain what you did.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Tips**:
|
|
96
|
+
- Use markdown structure (headers, lists, tables)
|
|
97
|
+
- Include a minimal example
|
|
98
|
+
- Specify when to use different formats (short vs. long responses)
|
|
99
|
+
|
|
100
|
+
## Common Patterns
|
|
101
|
+
|
|
102
|
+
### Decision Tree Pattern
|
|
103
|
+
|
|
104
|
+
When the agent needs to handle multiple scenarios:
|
|
105
|
+
|
|
106
|
+
```markdown
|
|
107
|
+
## Handling Requests
|
|
108
|
+
|
|
109
|
+
For **new features**:
|
|
110
|
+
1. Create design outline
|
|
111
|
+
2. Get user approval
|
|
112
|
+
3. Implement incrementally
|
|
113
|
+
|
|
114
|
+
For **bug fixes**:
|
|
115
|
+
1. Reproduce the issue
|
|
116
|
+
2. Identify root cause
|
|
117
|
+
3. Implement minimal fix
|
|
118
|
+
4. Add regression test
|
|
119
|
+
|
|
120
|
+
For **refactoring**:
|
|
121
|
+
1. Ensure test coverage exists
|
|
122
|
+
2. Make changes in small steps
|
|
123
|
+
3. Verify tests pass after each step
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Progressive Detail Pattern
|
|
127
|
+
|
|
128
|
+
When the agent should adapt response length:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
## Response Guidelines
|
|
132
|
+
|
|
133
|
+
**Simple questions**: Direct answer, 1-3 sentences
|
|
134
|
+
|
|
135
|
+
**Code changes**: Summary + diff + explanation
|
|
136
|
+
|
|
137
|
+
**Complex tasks**:
|
|
138
|
+
1. Outline/plan first
|
|
139
|
+
2. Implementation in stages
|
|
140
|
+
3. Summary with next steps
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Verification Loop Pattern
|
|
144
|
+
|
|
145
|
+
When the agent should self-check:
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
## Quality Checklist
|
|
149
|
+
|
|
150
|
+
Before completing any task, verify:
|
|
151
|
+
- [ ] All modified files saved
|
|
152
|
+
- [ ] No new linting errors introduced
|
|
153
|
+
- [ ] Tests still pass (or new tests added)
|
|
154
|
+
- [ ] Changes match the original request
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Anti-Patterns to Avoid
|
|
158
|
+
|
|
159
|
+
### 1. Aspirational Instructions
|
|
160
|
+
|
|
161
|
+
**Bad**: "Write perfect, bug-free code every time"
|
|
162
|
+
**Good**: "Run tests after changes and fix any failures"
|
|
163
|
+
|
|
164
|
+
### 2. Contradictory Constraints
|
|
165
|
+
|
|
166
|
+
**Bad**: "Be thorough" + "Keep responses short"
|
|
167
|
+
**Good**: "Prioritize completeness for complex tasks, brevity for simple questions"
|
|
168
|
+
|
|
169
|
+
### 3. Implicit Assumptions
|
|
170
|
+
|
|
171
|
+
**Bad**: "Follow project conventions"
|
|
172
|
+
**Good**: "Follow project conventions as defined in `.prettierrc` and `eslint.config.js`"
|
|
173
|
+
|
|
174
|
+
### 4. Missing Scope
|
|
175
|
+
|
|
176
|
+
**Bad**: "Review the code"
|
|
177
|
+
**Good**: "Review code in the current PR / changed files / specified directory"
|
|
178
|
+
|
|
179
|
+
## Iteration Tips
|
|
180
|
+
|
|
181
|
+
1. **Start Minimal**: Write the shortest AGENTS.md that could work
|
|
182
|
+
2. **Test Quickly**: Use the agent, note what goes wrong
|
|
183
|
+
3. **Add Specificity**: Address observed issues with specific instructions
|
|
184
|
+
4. **Remove Clutter**: Delete instructions that don't affect behavior
|
|
185
|
+
5. **Version Changes**: Update version in agent.yaml when changing behavior
|
|
186
|
+
|
|
187
|
+
## Token Efficiency
|
|
188
|
+
|
|
189
|
+
AGENTS.md content is loaded into every conversation. Keep it lean:
|
|
190
|
+
|
|
191
|
+
- **Target**: 50-200 lines for most agents
|
|
192
|
+
- **Split large content**: Use `rules/` directory for detailed guidelines
|
|
193
|
+
- **Reference over repeat**: Point to documentation instead of copying it
|
|
194
|
+
- **Examples over explanations**: A 5-line example beats a 20-line explanation
|
|
195
|
+
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Copyright (c) AgentHippo.ai. All rights reserved.
|
|
3
|
+
"""
|
|
4
|
+
AgentPack Initializer - Creates a new agent pack with template files
|
|
5
|
+
|
|
6
|
+
Usage:
|
|
7
|
+
init_pack.py <pack-name> --path <path> [--engine <engine>] [--description <description>]
|
|
8
|
+
|
|
9
|
+
Examples:
|
|
10
|
+
init_pack.py code-reviewer --path .agent-hippo/agents
|
|
11
|
+
init_pack.py security-auditor --path .agent-hippo/agents --engine claude
|
|
12
|
+
init_pack.py my-agent --path .agent-hippo/agents --engine codex --description "A custom agent for my project"
|
|
13
|
+
|
|
14
|
+
The script creates a complete agent pack structure with:
|
|
15
|
+
- agent.yaml manifest
|
|
16
|
+
- AGENTS.md with TODO placeholders
|
|
17
|
+
- rules/, skills/, mcp/ directories
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
import argparse
|
|
21
|
+
import hashlib
|
|
22
|
+
import json
|
|
23
|
+
import os
|
|
24
|
+
import sys
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
from datetime import datetime, timezone
|
|
27
|
+
|
|
28
|
+
# =============================================================================
|
|
29
|
+
# Templates
|
|
30
|
+
# =============================================================================
|
|
31
|
+
|
|
32
|
+
AGENT_YAML_TEMPLATE = """# {pack_name} Agent Manifest
|
|
33
|
+
apiVersion: agenthippo.ai/v1
|
|
34
|
+
kind: Agent
|
|
35
|
+
metadata:
|
|
36
|
+
name: {pack_name}
|
|
37
|
+
version: 0.1.0
|
|
38
|
+
author: {author}
|
|
39
|
+
description: "{description}"
|
|
40
|
+
|
|
41
|
+
spec:
|
|
42
|
+
engine: {engine}
|
|
43
|
+
model: {model}
|
|
44
|
+
|
|
45
|
+
skills: []
|
|
46
|
+
# Uncomment to add pack-specific skills:
|
|
47
|
+
# - path: ./skills/my-skill
|
|
48
|
+
|
|
49
|
+
permissions:
|
|
50
|
+
fileAccess: full # read-only | workspace-write | full
|
|
51
|
+
|
|
52
|
+
visibility: internal # internal | team | public
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
AGENTS_MD_TEMPLATE = """# {pack_title} Agent
|
|
56
|
+
|
|
57
|
+
{description}
|
|
58
|
+
|
|
59
|
+
## Core Behaviors
|
|
60
|
+
|
|
61
|
+
{behaviors_section}
|
|
62
|
+
|
|
63
|
+
## Workflow
|
|
64
|
+
|
|
65
|
+
{workflow_section}
|
|
66
|
+
|
|
67
|
+
## Constraints
|
|
68
|
+
|
|
69
|
+
{constraints_section}
|
|
70
|
+
|
|
71
|
+
## Output Format
|
|
72
|
+
|
|
73
|
+
{output_section}
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
# Default content for TODO sections
|
|
77
|
+
BEHAVIORS_TODO = """<!-- TODO: Define 3-5 specific behaviors this agent should exhibit -->
|
|
78
|
+
<!-- Example:
|
|
79
|
+
1. **Thorough Analysis**: Examine all relevant files before making recommendations
|
|
80
|
+
2. **Clear Communication**: Explain reasoning in plain language
|
|
81
|
+
3. **Incremental Changes**: Prefer small, targeted modifications over large rewrites
|
|
82
|
+
-->
|
|
83
|
+
|
|
84
|
+
1. **[Behavior 1]**: [Describe what this agent does in this area]
|
|
85
|
+
2. **[Behavior 2]**: [Describe what this agent does in this area]
|
|
86
|
+
3. **[Behavior 3]**: [Describe what this agent does in this area]
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
WORKFLOW_TODO = """<!-- TODO: Describe the step-by-step process this agent follows -->
|
|
90
|
+
<!-- Example:
|
|
91
|
+
1. Understand the request and gather context
|
|
92
|
+
2. Analyze relevant files and dependencies
|
|
93
|
+
3. Propose a solution with rationale
|
|
94
|
+
4. Implement changes incrementally
|
|
95
|
+
5. Verify the solution works
|
|
96
|
+
-->
|
|
97
|
+
|
|
98
|
+
1. **Understand**: [First step]
|
|
99
|
+
2. **Analyze**: [Second step]
|
|
100
|
+
3. **Execute**: [Third step]
|
|
101
|
+
4. **Verify**: [Fourth step]
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
CONSTRAINTS_TODO = """<!-- TODO: Define what this agent should NOT do -->
|
|
105
|
+
<!-- Example:
|
|
106
|
+
- Never modify files outside the specified scope
|
|
107
|
+
- Always ask for clarification before destructive operations
|
|
108
|
+
- Prefer existing patterns over introducing new ones
|
|
109
|
+
-->
|
|
110
|
+
|
|
111
|
+
- [Constraint 1]
|
|
112
|
+
- [Constraint 2]
|
|
113
|
+
- [Constraint 3]
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
OUTPUT_TODO = """<!-- TODO: Describe how this agent should format its responses -->
|
|
117
|
+
<!-- Example:
|
|
118
|
+
Provide responses in the following format:
|
|
119
|
+
1. **Summary**: Brief overview of what was done
|
|
120
|
+
2. **Changes**: List of files modified with explanations
|
|
121
|
+
3. **Next Steps**: Suggested follow-up actions
|
|
122
|
+
-->
|
|
123
|
+
|
|
124
|
+
[Describe the expected output format for this agent's responses]
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def title_case(name: str) -> str:
|
|
129
|
+
"""Convert a pack name (hyphenated, underscored, or spaced) to Title Case."""
|
|
130
|
+
import re
|
|
131
|
+
# Split on common separators: hyphens, underscores, spaces
|
|
132
|
+
words = re.split(r'[-_\s]+', name)
|
|
133
|
+
return ' '.join(word.capitalize() for word in words if word)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def get_author() -> str:
|
|
137
|
+
"""Get the author name from environment or default."""
|
|
138
|
+
return os.environ.get('USER', os.environ.get('USERNAME', 'unknown'))
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def get_model_for_engine(engine: str) -> str:
|
|
142
|
+
"""Get the default model for an engine.
|
|
143
|
+
|
|
144
|
+
Note: These are fallback defaults. When creating a pack via the UI,
|
|
145
|
+
the current session's model is captured and passed explicitly.
|
|
146
|
+
"""
|
|
147
|
+
return 'claude-sonnet-4' if engine == 'claude' else 'codex'
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def compute_feature_hash(pack_name: str, engine: str, version: str) -> str:
|
|
151
|
+
"""Compute a simple feature set hash for the pack."""
|
|
152
|
+
content = f"{pack_name}:{engine}:{version}"
|
|
153
|
+
return hashlib.sha256(content.encode()).hexdigest()[:16]
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def register_pack_in_manifest(
|
|
157
|
+
pack_name: str,
|
|
158
|
+
agentide_dir: Path,
|
|
159
|
+
engine: str,
|
|
160
|
+
version: str = '0.1.0',
|
|
161
|
+
) -> bool:
|
|
162
|
+
"""
|
|
163
|
+
Register the pack in the installed-agents.json file.
|
|
164
|
+
|
|
165
|
+
Args:
|
|
166
|
+
pack_name: Name of the agent pack
|
|
167
|
+
agentide_dir: Path to the .agent-hippo directory
|
|
168
|
+
engine: Preferred engine ('claude' or 'codex')
|
|
169
|
+
version: Pack version
|
|
170
|
+
|
|
171
|
+
Returns:
|
|
172
|
+
True if successful, False otherwise
|
|
173
|
+
"""
|
|
174
|
+
agents_file_path = agentide_dir / 'installed-agents.json'
|
|
175
|
+
|
|
176
|
+
# Load existing file or create new one
|
|
177
|
+
if agents_file_path.exists():
|
|
178
|
+
try:
|
|
179
|
+
data = json.loads(agents_file_path.read_text())
|
|
180
|
+
except json.JSONDecodeError:
|
|
181
|
+
data = {}
|
|
182
|
+
else:
|
|
183
|
+
data = {}
|
|
184
|
+
|
|
185
|
+
# Ensure required fields exist
|
|
186
|
+
if 'version' not in data:
|
|
187
|
+
data['version'] = 1
|
|
188
|
+
if 'agents' not in data:
|
|
189
|
+
data['agents'] = []
|
|
190
|
+
|
|
191
|
+
# Remove existing entry for this pack (if re-creating)
|
|
192
|
+
data['agents'] = [
|
|
193
|
+
a for a in data['agents'] if a.get('id') != pack_name
|
|
194
|
+
]
|
|
195
|
+
|
|
196
|
+
# Add new entry
|
|
197
|
+
entry = {
|
|
198
|
+
'id': pack_name,
|
|
199
|
+
'version': version,
|
|
200
|
+
'source': 'local',
|
|
201
|
+
'installedAt': datetime.now(timezone.utc).isoformat(),
|
|
202
|
+
'featureSetHash': compute_feature_hash(pack_name, engine, version),
|
|
203
|
+
'preferredEngine': engine,
|
|
204
|
+
'status': 'active',
|
|
205
|
+
}
|
|
206
|
+
data['agents'].append(entry)
|
|
207
|
+
|
|
208
|
+
# Write file
|
|
209
|
+
try:
|
|
210
|
+
agents_file_path.write_text(json.dumps(data, indent=2))
|
|
211
|
+
return True
|
|
212
|
+
except Exception as e:
|
|
213
|
+
print(f"⚠️ Warning: Could not update installed-agents.json: {e}")
|
|
214
|
+
return False
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def validate_pack_name(name: str) -> bool:
|
|
218
|
+
"""Validate pack name is valid as a directory name."""
|
|
219
|
+
import re
|
|
220
|
+
if not name or not name.strip():
|
|
221
|
+
return False
|
|
222
|
+
# Reject path separators and problematic filesystem characters
|
|
223
|
+
if re.search(r'[/\\:*?"<>|]', name):
|
|
224
|
+
return False
|
|
225
|
+
# Reject hidden directories
|
|
226
|
+
if name.startswith('.'):
|
|
227
|
+
return False
|
|
228
|
+
return True
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def init_pack(
|
|
232
|
+
pack_name: str,
|
|
233
|
+
path: str,
|
|
234
|
+
engine: str = 'claude',
|
|
235
|
+
description: str = '',
|
|
236
|
+
model: str = '',
|
|
237
|
+
) -> Path | None:
|
|
238
|
+
"""
|
|
239
|
+
Initialize a new agent pack directory with template files.
|
|
240
|
+
|
|
241
|
+
Args:
|
|
242
|
+
pack_name: Name of the agent pack (e.g., 'code-reviewer')
|
|
243
|
+
path: Parent directory where the pack will be created
|
|
244
|
+
engine: Preferred engine ('claude' or 'codex')
|
|
245
|
+
description: Optional description of the agent
|
|
246
|
+
model: Preferred model ID (e.g., 'claude-sonnet-4'). If not specified, uses default for engine.
|
|
247
|
+
|
|
248
|
+
Returns:
|
|
249
|
+
Path to created pack directory, or None if error
|
|
250
|
+
"""
|
|
251
|
+
# Validate pack name
|
|
252
|
+
if not validate_pack_name(pack_name):
|
|
253
|
+
print(f"❌ Error: Pack name '{pack_name}' is invalid.")
|
|
254
|
+
print(" Pack names cannot be empty, start with a dot, or contain path separators.")
|
|
255
|
+
return None
|
|
256
|
+
|
|
257
|
+
# Determine pack directory path
|
|
258
|
+
pack_dir = Path(path).resolve() / pack_name
|
|
259
|
+
|
|
260
|
+
# Check if directory already exists
|
|
261
|
+
if pack_dir.exists():
|
|
262
|
+
print(f"❌ Error: Pack directory already exists: {pack_dir}")
|
|
263
|
+
return None
|
|
264
|
+
|
|
265
|
+
# Create pack directory structure
|
|
266
|
+
try:
|
|
267
|
+
pack_dir.mkdir(parents=True, exist_ok=False)
|
|
268
|
+
print(f"✅ Created pack directory: {pack_dir}")
|
|
269
|
+
|
|
270
|
+
(pack_dir / 'rules').mkdir(exist_ok=True)
|
|
271
|
+
print("✅ Created rules/")
|
|
272
|
+
|
|
273
|
+
(pack_dir / 'skills').mkdir(exist_ok=True)
|
|
274
|
+
print("✅ Created skills/")
|
|
275
|
+
|
|
276
|
+
(pack_dir / 'mcp').mkdir(exist_ok=True)
|
|
277
|
+
print("✅ Created mcp/")
|
|
278
|
+
|
|
279
|
+
except Exception as e:
|
|
280
|
+
print(f"❌ Error creating directories: {e}")
|
|
281
|
+
return None
|
|
282
|
+
|
|
283
|
+
# Create agent.yaml
|
|
284
|
+
pack_title = title_case(pack_name)
|
|
285
|
+
# Use provided model or default based on engine
|
|
286
|
+
resolved_model = model.strip() if model else get_model_for_engine(engine)
|
|
287
|
+
agent_yaml_content = AGENT_YAML_TEMPLATE.format(
|
|
288
|
+
pack_name=pack_name,
|
|
289
|
+
author=get_author(),
|
|
290
|
+
description=description or f'A specialized agent for {pack_title.lower()} tasks',
|
|
291
|
+
engine=engine,
|
|
292
|
+
model=resolved_model,
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
try:
|
|
296
|
+
(pack_dir / 'agent.yaml').write_text(agent_yaml_content)
|
|
297
|
+
print("✅ Created agent.yaml")
|
|
298
|
+
except Exception as e:
|
|
299
|
+
print(f"❌ Error creating agent.yaml: {e}")
|
|
300
|
+
return None
|
|
301
|
+
|
|
302
|
+
# Create AGENTS.md
|
|
303
|
+
agents_md_content = AGENTS_MD_TEMPLATE.format(
|
|
304
|
+
pack_title=pack_title,
|
|
305
|
+
description=description or f'You are a specialized agent for {pack_title.lower()} tasks.',
|
|
306
|
+
behaviors_section=BEHAVIORS_TODO,
|
|
307
|
+
workflow_section=WORKFLOW_TODO,
|
|
308
|
+
constraints_section=CONSTRAINTS_TODO,
|
|
309
|
+
output_section=OUTPUT_TODO,
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
try:
|
|
313
|
+
(pack_dir / 'AGENTS.md').write_text(agents_md_content)
|
|
314
|
+
print("✅ Created AGENTS.md")
|
|
315
|
+
except Exception as e:
|
|
316
|
+
print(f"❌ Error creating AGENTS.md: {e}")
|
|
317
|
+
return None
|
|
318
|
+
|
|
319
|
+
# Register pack in the manifest so it shows up in "Set Active Agent Pack"
|
|
320
|
+
# The manifest is at .agent-hippo/agentide.manifest.json (parent of "agents" dir)
|
|
321
|
+
agentide_dir = Path(path).resolve().parent
|
|
322
|
+
if register_pack_in_manifest(pack_name, agentide_dir, engine):
|
|
323
|
+
print("✅ Registered pack in manifest")
|
|
324
|
+
else:
|
|
325
|
+
print("⚠️ Pack created but failed to registere (add it manually to the manifest or reload window to trigger auto-repair)")
|
|
326
|
+
|
|
327
|
+
print(f"\n🎉 Agent pack '{pack_name}' initialized successfully!")
|
|
328
|
+
print(f"\n📁 Pack location: {pack_dir}")
|
|
329
|
+
print("\n📝 Next steps:")
|
|
330
|
+
print(" 1. Edit AGENTS.md to define agent behavior")
|
|
331
|
+
print(" 2. Add rule fragments to rules/ (optional)")
|
|
332
|
+
print(" 3. Add skills to skills/ (optional)")
|
|
333
|
+
print(" 4. Run 'Set Active Agent Pack' command to activate")
|
|
334
|
+
|
|
335
|
+
return pack_dir
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def main():
|
|
339
|
+
parser = argparse.ArgumentParser(
|
|
340
|
+
description='Initialize a new AgentPack with template files',
|
|
341
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
342
|
+
epilog="""
|
|
343
|
+
Examples:
|
|
344
|
+
%(prog)s code-reviewer --path .agent-hippo/agents
|
|
345
|
+
%(prog)s security-auditor --path .agent-hippo/agents --engine claude
|
|
346
|
+
%(prog)s my-agent --path .agent-hippo/agents --engine codex --description "Custom agent"
|
|
347
|
+
"""
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
parser.add_argument(
|
|
351
|
+
'pack_name',
|
|
352
|
+
help='Name of the agent pack (lowercase, hyphens allowed)'
|
|
353
|
+
)
|
|
354
|
+
parser.add_argument(
|
|
355
|
+
'--path',
|
|
356
|
+
required=True,
|
|
357
|
+
help='Parent directory for the pack (e.g., .agent-hippo/agents)'
|
|
358
|
+
)
|
|
359
|
+
parser.add_argument(
|
|
360
|
+
'--engine',
|
|
361
|
+
choices=['claude', 'codex'],
|
|
362
|
+
default='claude',
|
|
363
|
+
help='Preferred engine (default: claude)'
|
|
364
|
+
)
|
|
365
|
+
parser.add_argument(
|
|
366
|
+
'--description',
|
|
367
|
+
default='',
|
|
368
|
+
help='Description of the agent pack'
|
|
369
|
+
)
|
|
370
|
+
parser.add_argument(
|
|
371
|
+
'--model',
|
|
372
|
+
default='',
|
|
373
|
+
help='Preferred model ID (e.g., claude-sonnet-4). Defaults based on engine if not specified.'
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
args = parser.parse_args()
|
|
377
|
+
|
|
378
|
+
result = init_pack(
|
|
379
|
+
pack_name=args.pack_name,
|
|
380
|
+
path=args.path,
|
|
381
|
+
engine=args.engine,
|
|
382
|
+
description=args.description,
|
|
383
|
+
model=args.model,
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
sys.exit(0 if result else 1)
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
if __name__ == '__main__':
|
|
390
|
+
main()
|
|
391
|
+
|