@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.
Files changed (480) hide show
  1. package/LICENSE +21 -0
  2. package/bin/agenthippo.js +2 -0
  3. package/out/agentpack/github.js +547 -0
  4. package/out/agentpack/index.js +66 -0
  5. package/out/agentpack/install.js +297 -0
  6. package/out/agentpack/manager.js +441 -0
  7. package/out/agentpack/manifest.js +135 -0
  8. package/out/agentpack/paths.js +475 -0
  9. package/out/agentpack/publish.js +248 -0
  10. package/out/agentpack/stores.js +554 -0
  11. package/out/agentpack/types.js +5 -0
  12. package/out/analytics/dashboard/artifactManager.js +439 -0
  13. package/out/analytics/dashboard/fleetDisplayUtils.js +159 -0
  14. package/out/analytics/dashboard/fleetOrchestrator.js +142 -0
  15. package/out/analytics/dashboard/fleetRegistry.js +79 -0
  16. package/out/analytics/dashboard/fleetRowDefaults.js +87 -0
  17. package/out/analytics/dashboard/fleetScriptAdapter.js +146 -0
  18. package/out/analytics/dashboard/fleetStatusUtils.js +30 -0
  19. package/out/analytics/dashboard/fleetTitleUtils.js +68 -0
  20. package/out/analytics/dashboard/fleetTypes.js +29 -0
  21. package/out/analytics/dashboard/index.js +17 -0
  22. package/out/analytics/dashboard/indexingService.js +422 -0
  23. package/out/analytics/dashboard/localFleetAdapter.js +222 -0
  24. package/out/analytics/dashboard/performanceMonitor.js +76 -0
  25. package/out/analytics/dashboard/processManager.js +209 -0
  26. package/out/analytics/dashboard/provider.js +3885 -0
  27. package/out/analytics/dashboard/queryRunner.js +994 -0
  28. package/out/analytics/dashboard/refreshPolicy.js +16 -0
  29. package/out/analytics/dashboard/scheduledFleetFingerprint.js +22 -0
  30. package/out/analytics/dashboard/scheduledFleetStorage.js +241 -0
  31. package/out/analytics/dashboard/scheduledFleetUtils.js +22 -0
  32. package/out/analytics/dashboard/sessionEventFleetStats.js +118 -0
  33. package/out/analytics/dashboard/sessionJsonlFleet.js +204 -0
  34. package/out/analytics/dashboard/teamViewDiscovery.js +106 -0
  35. package/out/analytics/dashboard/viewsConfigMerge.js +221 -0
  36. package/out/analytics/dashboard/webview/analytics-panel.html +155 -0
  37. package/out/analytics/dashboard/webview/codicon.ttf +0 -0
  38. package/out/analytics/dashboard/webview/index.html +78 -0
  39. package/out/analytics/dashboard/webview/panel.js +2295 -0
  40. package/out/analytics/dashboard/webview/runtime-bridge.js +82 -0
  41. package/out/analytics/dashboard/webview/styles.css +1009 -0
  42. package/out/analytics/lifecycle.js +43 -0
  43. package/out/analytics/service.js +1279 -0
  44. package/out/analytics/sessionEvents.js +231 -0
  45. package/out/auth/bootstrapApply.js +72 -0
  46. package/out/auth/brokerClient.js +126 -0
  47. package/out/auth/callbackUri.js +59 -0
  48. package/out/auth/callbackUriParse.js +59 -0
  49. package/out/auth/githubStoreGate.js +70 -0
  50. package/out/auth/loopbackAuthServer.js +165 -0
  51. package/out/auth/pkce.js +9 -0
  52. package/out/auth/provider.js +239 -0
  53. package/out/auth/sessionStore.js +193 -0
  54. package/out/auth/signInFlow.js +182 -0
  55. package/out/auth/types.js +12 -0
  56. package/out/auth-broker/config.js +62 -0
  57. package/out/auth-broker/jwt.js +105 -0
  58. package/out/auth-broker/pkce.js +57 -0
  59. package/out/auth-broker/server.js +539 -0
  60. package/out/auth-broker/store.js +273 -0
  61. package/out/base-prompts/gateway/openclaw-starter.json5 +144 -0
  62. package/out/base-prompts/gateway/slack-socket-mode-minimal.manifest.json +44 -0
  63. package/out/base-prompts/mcp-servers/.mcp.json +13 -0
  64. package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +142 -0
  65. package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +13 -0
  66. package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +1192 -0
  67. package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +23 -0
  68. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +12 -0
  69. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +102 -0
  70. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +137 -0
  71. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +118 -0
  72. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +209 -0
  73. package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +431 -0
  74. package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +270 -0
  75. package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +18 -0
  76. package/out/base-prompts/rules/AGENTS.md +204 -0
  77. package/out/base-prompts/skills/agent-browser/SKILL.md +102 -0
  78. package/out/base-prompts/skills/agent-builder/SKILL.md +73 -0
  79. package/out/base-prompts/skills/agent-builder/references/agent-pack.md +63 -0
  80. package/out/base-prompts/skills/agent-builder/references/crewai.md +66 -0
  81. package/out/base-prompts/skills/agent-builder/references/langchain.md +60 -0
  82. package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +73 -0
  83. package/out/base-prompts/skills/agent-engine-creator/SKILL.md +586 -0
  84. package/out/base-prompts/skills/agent-engine-installer/SKILL.md +106 -0
  85. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +259 -0
  86. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +189 -0
  87. package/out/base-prompts/skills/agenthippo-cli/SKILL.md +69 -0
  88. package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +63 -0
  89. package/out/base-prompts/skills/agentpack-creator/SKILL.md +375 -0
  90. package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +261 -0
  91. package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +195 -0
  92. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +391 -0
  93. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +294 -0
  94. package/out/base-prompts/skills/agentpack-testbench/SKILL.md +135 -0
  95. package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +202 -0
  96. package/out/base-prompts/skills/algorithmic-art/SKILL.md +405 -0
  97. package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +223 -0
  98. package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +599 -0
  99. package/out/base-prompts/skills/debug-agent/SKILL.md +83 -0
  100. package/out/base-prompts/skills/desktop-automation/SKILL.md +166 -0
  101. package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +441 -0
  102. package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +280 -0
  103. package/out/base-prompts/skills/docx/LICENSE.txt +30 -0
  104. package/out/base-prompts/skills/docx/SKILL.md +197 -0
  105. package/out/base-prompts/skills/docx/docx-js.md +350 -0
  106. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  107. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  108. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  109. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  110. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  111. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  112. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  113. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  114. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  115. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  116. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  117. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  118. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  119. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  120. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  121. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  122. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  123. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  124. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  125. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  126. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  127. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  128. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  129. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  130. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  131. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  132. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  133. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  134. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  135. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  136. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  137. package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  138. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  139. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  140. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  141. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  142. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  143. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  144. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  145. package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +159 -0
  146. package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +29 -0
  147. package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +69 -0
  148. package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  149. package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +951 -0
  150. package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  151. package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  152. package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  153. package/out/base-prompts/skills/docx/ooxml.md +610 -0
  154. package/out/base-prompts/skills/docx/scripts/__init__.py +1 -0
  155. package/out/base-prompts/skills/docx/scripts/document.py +1276 -0
  156. package/out/base-prompts/skills/docx/scripts/templates/comments.xml +3 -0
  157. package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  158. package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  159. package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +3 -0
  160. package/out/base-prompts/skills/docx/scripts/templates/people.xml +3 -0
  161. package/out/base-prompts/skills/docx/scripts/utilities.py +374 -0
  162. package/out/base-prompts/skills/gateway-outbound/SKILL.md +136 -0
  163. package/out/base-prompts/skills/mcp-builder/LICENSE.txt +202 -0
  164. package/out/base-prompts/skills/mcp-builder/SKILL.md +328 -0
  165. package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +602 -0
  166. package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  167. package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  168. package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  169. package/out/base-prompts/skills/mcp-builder/scripts/connections.py +151 -0
  170. package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +373 -0
  171. package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  172. package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +2 -0
  173. package/out/base-prompts/skills/openclaw/SKILL.md +406 -0
  174. package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +61 -0
  175. package/out/base-prompts/skills/pdf/LICENSE.txt +30 -0
  176. package/out/base-prompts/skills/pdf/SKILL.md +294 -0
  177. package/out/base-prompts/skills/pdf/forms.md +205 -0
  178. package/out/base-prompts/skills/pdf/reference.md +612 -0
  179. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  180. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  181. package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +12 -0
  182. package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  183. package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +41 -0
  184. package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +152 -0
  185. package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  186. package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  187. package/out/base-prompts/skills/pptx/LICENSE.txt +30 -0
  188. package/out/base-prompts/skills/pptx/SKILL.md +484 -0
  189. package/out/base-prompts/skills/pptx/html2pptx.md +625 -0
  190. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  191. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  192. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  193. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  194. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  195. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  196. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  197. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  198. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  199. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  200. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  201. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  202. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  203. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  204. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  205. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  206. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  207. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  208. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  209. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  210. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  211. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  212. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  213. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  214. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  215. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  216. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  217. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  218. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  219. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  220. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  221. package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  222. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  223. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  224. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  225. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  226. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  227. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  228. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  229. package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +159 -0
  230. package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +29 -0
  231. package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +69 -0
  232. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  233. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  234. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  235. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  236. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  237. package/out/base-prompts/skills/pptx/ooxml.md +427 -0
  238. package/out/base-prompts/skills/pptx/scripts/html2pptx.js +984 -0
  239. package/out/base-prompts/skills/pptx/scripts/inventory.py +1020 -0
  240. package/out/base-prompts/skills/pptx/scripts/rearrange.py +231 -0
  241. package/out/base-prompts/skills/pptx/scripts/replace.py +385 -0
  242. package/out/base-prompts/skills/pptx/scripts/thumbnail.py +450 -0
  243. package/out/base-prompts/skills/prompt-lab/SKILL.md +149 -0
  244. package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +2551 -0
  245. package/out/base-prompts/skills/skill-creator/LICENSE.txt +202 -0
  246. package/out/base-prompts/skills/skill-creator/SKILL.md +371 -0
  247. package/out/base-prompts/skills/skill-creator/references/output-patterns.md +82 -0
  248. package/out/base-prompts/skills/skill-creator/references/workflows.md +28 -0
  249. package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +303 -0
  250. package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +110 -0
  251. package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +95 -0
  252. package/out/base-prompts/skills/skill-installer/SKILL.md +251 -0
  253. package/out/base-prompts/skills/skill-installer/references/store-api.md +219 -0
  254. package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +83 -0
  255. package/out/base-prompts/skills/spotlight-insights/SKILL.md +101 -0
  256. package/out/base-prompts/skills/spotlight-optimize/SKILL.md +93 -0
  257. package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +2551 -0
  258. package/out/base-prompts/skills/spotlight-query/SKILL.md +314 -0
  259. package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +163 -0
  260. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +2551 -0
  261. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +744 -0
  262. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +14 -0
  263. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +7 -0
  264. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +5 -0
  265. package/out/base-prompts/skills/spotlight-report/SKILL.md +86 -0
  266. package/out/base-prompts/skills/spotlight-visualize/SKILL.md +92 -0
  267. package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +2551 -0
  268. package/out/base-prompts/skills/xlsx/LICENSE.txt +30 -0
  269. package/out/base-prompts/skills/xlsx/SKILL.md +289 -0
  270. package/out/base-prompts/skills/xlsx/recalc.py +178 -0
  271. package/out/branding.js +23 -0
  272. package/out/cli/commands/anywhere.js +66 -0
  273. package/out/cli/commands/ask.js +243 -0
  274. package/out/cli/commands/auth-broker.js +24 -0
  275. package/out/cli/commands/auth.js +219 -0
  276. package/out/cli/commands/chat.js +354 -0
  277. package/out/cli/commands/deploy.js +223 -0
  278. package/out/cli/commands/gateway.js +160 -0
  279. package/out/cli/commands/pack.js +220 -0
  280. package/out/cli/commands/probe-custom-engine.js +82 -0
  281. package/out/cli/commands/serve.js +583 -0
  282. package/out/cli/commands/store.js +919 -0
  283. package/out/cli/credential-context.js +113 -0
  284. package/out/cli/deploy-init.js +2087 -0
  285. package/out/cli/deps.js +238 -0
  286. package/out/cli/index.js +390 -0
  287. package/out/cli/pack-loader.js +376 -0
  288. package/out/cli/run-custom-engine-runner.js +318 -0
  289. package/out/cli/runtime.js +409 -0
  290. package/out/cli/serve-hardening.js +325 -0
  291. package/out/cli/state-sync.js +135 -0
  292. package/out/cli/utils.js +220 -0
  293. package/out/cli/vscode-shim.js +86 -0
  294. package/out/engines/base.js +159 -0
  295. package/out/engines/claude.js +1215 -0
  296. package/out/engines/codex.js +759 -0
  297. package/out/engines/custom.js +632 -0
  298. package/out/engines/customEngineIpc.js +95 -0
  299. package/out/engines/customEngineRunnerEmbed.js +107 -0
  300. package/out/engines/customRegistry.js +274 -0
  301. package/out/engines/embeddedCustomEngineRunner.generated.js +9 -0
  302. package/out/engines/engineApiKey.js +138 -0
  303. package/out/engines/factory.js +45 -0
  304. package/out/engines/install.js +372 -0
  305. package/out/engines/persistentEngineWorker.js +320 -0
  306. package/out/engines/publish.js +341 -0
  307. package/out/engines/types.js +17 -0
  308. package/out/examples/run-headless-repl.js +291 -0
  309. package/out/examples/run-headless.js +187 -0
  310. package/out/extension.js +4472 -0
  311. package/out/gateway/bridge.js +805 -0
  312. package/out/gateway/cli-agent-id.js +36 -0
  313. package/out/gateway/client.js +303 -0
  314. package/out/gateway/client.test.js +395 -0
  315. package/out/gateway/gateway-scope-errors.js +14 -0
  316. package/out/gateway/gatewayBackup.js +76 -0
  317. package/out/gateway/gatewayRouteIndex.js +371 -0
  318. package/out/gateway/gatewaySessionStore.js +243 -0
  319. package/out/gateway/index.js +31 -0
  320. package/out/gateway/lifecycle.js +3056 -0
  321. package/out/gateway/openclaw-channel-routing.js +317 -0
  322. package/out/gateway/outboundHandles.js +373 -0
  323. package/out/gateway/outboundPaths.js +72 -0
  324. package/out/gateway/outboundSend.js +254 -0
  325. package/out/gateway/protocol.js +48 -0
  326. package/out/gateway/resetMappings.js +52 -0
  327. package/out/gateway/service.js +1244 -0
  328. package/out/gateway/sessionRouting.js +77 -0
  329. package/out/headless/index.js +505 -0
  330. package/out/headless/sync.js +473 -0
  331. package/out/mcp/publish.js +143 -0
  332. package/out/mcp.js +597 -0
  333. package/out/permissions.js +108 -0
  334. package/out/permissions.mapping.yaml +68 -0
  335. package/out/registry/index.js +332 -0
  336. package/out/remote/handleRemoteChat.js +122 -0
  337. package/out/remote/remotePackStatusBar.js +103 -0
  338. package/out/remote/serveClient.js +216 -0
  339. package/out/remoteSkills.js +191 -0
  340. package/out/runtime/index.js +32 -0
  341. package/out/runtime/interfaces/config-provider.js +32 -0
  342. package/out/runtime/interfaces/edit-tracker.js +22 -0
  343. package/out/runtime/interfaces/index.js +29 -0
  344. package/out/runtime/interfaces/logger.js +40 -0
  345. package/out/runtime/interfaces/permission-handler.js +66 -0
  346. package/out/runtime/interfaces/session-store.js +342 -0
  347. package/out/runtime/vscode/index.js +20 -0
  348. package/out/runtime/vscode/vscode-config-provider.js +77 -0
  349. package/out/runtime/vscode/vscode-edit-tracker.js +120 -0
  350. package/out/runtime/vscode/vscode-logger.js +30 -0
  351. package/out/runtime/vscode/vscode-permission-handler.js +72 -0
  352. package/out/runtime/vscode/vscode-session-store.js +22 -0
  353. package/out/scripts/agentide-litellm.ps1 +501 -0
  354. package/out/scripts/agentide-litellm.sh +700 -0
  355. package/out/scripts/agentide_litellm_hooks_v1.py +604 -0
  356. package/out/scripts/analytics/agent-fleet-widget.js +954 -0
  357. package/out/scripts/analytics/agentide-litellm-otel.config.yaml +160 -0
  358. package/out/scripts/analytics/default-seed-scripts.json +12 -0
  359. package/out/scripts/analytics/duckdbLocator.js +29 -0
  360. package/out/scripts/analytics/fleet-local-adapter.js +246 -0
  361. package/out/scripts/analytics/fleet-workflow.sh +263 -0
  362. package/out/scripts/analytics/generate-default-charts.py +685 -0
  363. package/out/scripts/analytics/hotspot-analysis-widget.js +909 -0
  364. package/out/scripts/analytics/index-traces.py +1394 -0
  365. package/out/scripts/analytics/install-analytics.sh +286 -0
  366. package/out/scripts/analytics/live-fleet-4-collector.cjs +315 -0
  367. package/out/scripts/analytics/live-fleet-4-daemon.mjs +134 -0
  368. package/out/scripts/analytics/live-fleet-4-widget.cjs +433 -0
  369. package/out/scripts/analytics/otel-collector.yaml +55 -0
  370. package/out/scripts/analytics/query-analytics.ps1 +396 -0
  371. package/out/scripts/analytics/query-analytics.sh +2551 -0
  372. package/out/scripts/analytics/session-comparison-widget.js +1468 -0
  373. package/out/scripts/analytics/session-timeline-widget.js +2137 -0
  374. package/out/scripts/analytics/setup-analytics.ps1 +432 -0
  375. package/out/scripts/analytics/setup-analytics.sh +854 -0
  376. package/out/scripts/analytics/start-analytics.ps1 +169 -0
  377. package/out/scripts/analytics/start-analytics.sh +323 -0
  378. package/out/scripts/analytics/token-cost-flamegraph-widget.js +954 -0
  379. package/out/scripts/analytics/token-cost-trend-widget.js +1062 -0
  380. package/out/scripts/analytics/workflows-collector.cjs +315 -0
  381. package/out/scripts/analytics/workflows-daemon.mjs +186 -0
  382. package/out/scripts/analytics/workflows-widget.cjs +433 -0
  383. package/out/scripts/analytics/wow-model-widget.js +191 -0
  384. package/out/scripts/gateway/Dockerfile.serve +45 -0
  385. package/out/scripts/gateway/docker-serve.sh +248 -0
  386. package/out/scripts/gateway/setup-gateway-server.ps1 +953 -0
  387. package/out/scripts/gateway/setup-gateway-server.sh +935 -0
  388. package/out/scripts/gateway/setup-gateway.ps1 +1813 -0
  389. package/out/scripts/gateway/setup-gateway.sh +1541 -0
  390. package/out/scripts/setup-cli.ps1 +86 -0
  391. package/out/scripts/setup-cli.sh +117 -0
  392. package/out/scripts/tools-manifest.json +83 -0
  393. package/out/scripts/vendor-tools.mjs +234 -0
  394. package/out/session.js +272 -0
  395. package/out/shared/agentEngines.js +170 -0
  396. package/out/shared/index.js +109 -0
  397. package/out/shared/models.js +235 -0
  398. package/out/shared/providers.js +202 -0
  399. package/out/skills/publish.js +178 -0
  400. package/out/spotlight/install.js +339 -0
  401. package/out/spotlight/publish.js +544 -0
  402. package/out/spotlight/yaml.js +31 -0
  403. package/out/store/github/setup.js +235 -0
  404. package/out/store/github/templates/build-index.ts +339 -0
  405. package/out/store/github/templates/build-index.yml +97 -0
  406. package/out/store/github/templates/package.json +11 -0
  407. package/out/store/index.js +755 -0
  408. package/out/store/oramaIndex.js +884 -0
  409. package/out/store/shared.js +241 -0
  410. package/out/sync.js +1827 -0
  411. package/out/terminalLogger.js +358 -0
  412. package/out/test/agentEnvFile.test.js +97 -0
  413. package/out/test/agentYaml.test.js +373 -0
  414. package/out/test/agentpack.test.js +639 -0
  415. package/out/test/analytics-lifecycle.test.js +174 -0
  416. package/out/test/analytics.test.js +524 -0
  417. package/out/test/auth-bootstrapApply.test.js +102 -0
  418. package/out/test/auth-broker.test.js +434 -0
  419. package/out/test/auth-callback.test.js +62 -0
  420. package/out/test/branding.test.js +229 -0
  421. package/out/test/cli-agent-id.test.js +55 -0
  422. package/out/test/credential-context.test.js +105 -0
  423. package/out/test/customEngineInstall.test.js +100 -0
  424. package/out/test/customRegistry.test.js +122 -0
  425. package/out/test/deploy-init.test.js +532 -0
  426. package/out/test/deps-auto-install.test.js +81 -0
  427. package/out/test/engine-integration.test.js +297 -0
  428. package/out/test/enginePaths.test.js +195 -0
  429. package/out/test/enginePublish.test.js +82 -0
  430. package/out/test/fleetDisplayUtils.test.js +96 -0
  431. package/out/test/gateway-client.test.js +381 -0
  432. package/out/test/gateway-lifecycle.test.js +608 -0
  433. package/out/test/gateway-outbound.test.js +531 -0
  434. package/out/test/gateway-reset-mappings.test.js +221 -0
  435. package/out/test/gateway-route-index.test.js +235 -0
  436. package/out/test/gateway-session-routing.test.js +47 -0
  437. package/out/test/gateway-session-store.test.js +216 -0
  438. package/out/test/github.test.js +232 -0
  439. package/out/test/headless-sync.test.js +279 -0
  440. package/out/test/helpers/manifest-fixtures.js +27 -0
  441. package/out/test/mcp-obo.test.js +82 -0
  442. package/out/test/mcp.test.js +307 -0
  443. package/out/test/openclaw-channel-routing.test.js +191 -0
  444. package/out/test/pathSafety.test.js +63 -0
  445. package/out/test/permissions.test.js +175 -0
  446. package/out/test/persistent-engine-worker.test.js +220 -0
  447. package/out/test/refreshPolicy.test.js +60 -0
  448. package/out/test/registry.test.js +351 -0
  449. package/out/test/runtime.test.js +349 -0
  450. package/out/test/scheduledFleetStorage.test.js +72 -0
  451. package/out/test/serve-hardening.test.js +192 -0
  452. package/out/test/serveClient.test.js +173 -0
  453. package/out/test/sessionJsonlFleet.test.js +78 -0
  454. package/out/test/shared.test.js +173 -0
  455. package/out/test/skills-mcp.test.js +299 -0
  456. package/out/test/spotlightPublish.test.js +299 -0
  457. package/out/test/spotlightYaml.test.js +58 -0
  458. package/out/test/state-sync-peer.test.js +74 -0
  459. package/out/test/store.test.js +331 -0
  460. package/out/test/stores.test.js +504 -0
  461. package/out/test/sync-switch.test.js +251 -0
  462. package/out/test/teamViewDiscovery.test.js +90 -0
  463. package/out/test/toolPath.test.js +120 -0
  464. package/out/test/utils.test.js +308 -0
  465. package/out/test/viewsConfigMerge.test.js +180 -0
  466. package/out/test/windows-command-line.test.js +75 -0
  467. package/out/utils/agentEnvFile.js +131 -0
  468. package/out/utils/binary.js +175 -0
  469. package/out/utils/index.js +37 -0
  470. package/out/utils/network.js +74 -0
  471. package/out/utils/pathSafety.js +60 -0
  472. package/out/utils/paths.js +116 -0
  473. package/out/utils/pid.js +180 -0
  474. package/out/utils/pythonRunner.js +258 -0
  475. package/out/utils/resolveNodeBinary.js +168 -0
  476. package/out/utils/toolPath.js +83 -0
  477. package/out/utils/windowsCommandLine.js +29 -0
  478. package/out/utils.js +915 -0
  479. package/out/workspaceFolders.js +59 -0
  480. package/package.json +41 -0
@@ -0,0 +1,259 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from 'node:child_process';
3
+ import fs from 'node:fs';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import process from 'node:process';
7
+
8
+ const DEFAULT_REPO_URL = 'git@github.com:agenthippoai/custom-engines.git';
9
+
10
+ function usage() {
11
+ return [
12
+ 'Usage:',
13
+ ' node install-engine.mjs <engine...> [options]',
14
+ '',
15
+ 'Options:',
16
+ ' --repo-url <url> Source Git repo when --source-root is omitted',
17
+ ' --ref <ref> Branch, tag, or SHA to checkout in the cache repo',
18
+ ' --source-root <path> Existing folder containing engine directories',
19
+ ' --cache-root <path> Git cache folder',
20
+ ' --install-root <path> Destination engines folder',
21
+ ' --no-npm-ci Skip npm ci',
22
+ ' --help Show this help',
23
+ ].join('\n');
24
+ }
25
+
26
+ function parseArgs(argv) {
27
+ const options = {
28
+ engines: [],
29
+ repoUrl: DEFAULT_REPO_URL,
30
+ ref: '',
31
+ sourceRoot: '',
32
+ cacheRoot: '',
33
+ installRoot: '',
34
+ noNpmCi: false,
35
+ };
36
+
37
+ for (let i = 0; i < argv.length; i++) {
38
+ const arg = argv[i];
39
+ if (arg === '--help' || arg === '-h') {
40
+ console.log(usage());
41
+ process.exit(0);
42
+ }
43
+ if (arg === '--no-npm-ci') {
44
+ options.noNpmCi = true;
45
+ continue;
46
+ }
47
+ if (arg.startsWith('--')) {
48
+ const [name, inlineValue] = arg.split(/=(.*)/s, 2);
49
+ const key = {
50
+ '--repo-url': 'repoUrl',
51
+ '--ref': 'ref',
52
+ '--source-root': 'sourceRoot',
53
+ '--cache-root': 'cacheRoot',
54
+ '--install-root': 'installRoot',
55
+ }[name];
56
+ if (!key) {
57
+ throw new Error(`Unknown option: ${name}`);
58
+ }
59
+ const value = inlineValue !== undefined ? inlineValue : argv[++i];
60
+ if (!value) {
61
+ throw new Error(`Missing value for ${name}`);
62
+ }
63
+ options[key] = value;
64
+ continue;
65
+ }
66
+ options.engines.push(arg);
67
+ }
68
+
69
+ if (options.engines.length === 0) {
70
+ throw new Error(`At least one engine id is required.\n\n${usage()}`);
71
+ }
72
+
73
+ return options;
74
+ }
75
+
76
+ function fullPath(value) {
77
+ return path.resolve(value.replace(/^~(?=$|[\\/])/, os.homedir()));
78
+ }
79
+
80
+ function commandExists(command) {
81
+ const result = spawnSync(command, ['--version'], {
82
+ stdio: 'ignore',
83
+ shell: process.platform === 'win32',
84
+ });
85
+ return result.status === 0;
86
+ }
87
+
88
+ function run(command, args, options = {}) {
89
+ console.log(`>> ${command} ${args.join(' ')}`);
90
+ const result = spawnSync(command, args, {
91
+ cwd: options.cwd,
92
+ stdio: 'inherit',
93
+ shell: process.platform === 'win32',
94
+ env: process.env,
95
+ });
96
+ if (result.error) {
97
+ throw result.error;
98
+ }
99
+ if (result.status !== 0) {
100
+ throw new Error(`Command failed with exit code ${result.status}: ${command} ${args.join(' ')}`);
101
+ }
102
+ }
103
+
104
+ function ensureSourceRoot(options) {
105
+ if (options.sourceRoot.trim()) {
106
+ const sourceRoot = fullPath(options.sourceRoot);
107
+ if (!fs.existsSync(sourceRoot) || !fs.statSync(sourceRoot).isDirectory()) {
108
+ throw new Error(`Source root does not exist: ${sourceRoot}`);
109
+ }
110
+ return sourceRoot;
111
+ }
112
+
113
+ if (!commandExists('git')) {
114
+ throw new Error('git is required when --source-root is not provided');
115
+ }
116
+
117
+ const cacheRoot = fullPath(
118
+ options.cacheRoot.trim() ||
119
+ path.join(os.homedir(), '.agent-hippo', 'cache', 'custom-engines', 'agenthippoai-custom-engines'),
120
+ );
121
+ fs.mkdirSync(path.dirname(cacheRoot), { recursive: true });
122
+
123
+ const gitDir = path.join(cacheRoot, '.git');
124
+ if (fs.existsSync(gitDir) && fs.statSync(gitDir).isDirectory()) {
125
+ run('git', ['-C', cacheRoot, 'fetch', '--all', '--tags', '--prune']);
126
+ if (options.ref.trim()) {
127
+ run('git', ['-C', cacheRoot, 'checkout', options.ref.trim()]);
128
+ } else {
129
+ run('git', ['-C', cacheRoot, 'pull', '--ff-only']);
130
+ }
131
+ return cacheRoot;
132
+ }
133
+
134
+ if (fs.existsSync(cacheRoot)) {
135
+ throw new Error(`Cache root exists but is not a Git checkout: ${cacheRoot}`);
136
+ }
137
+
138
+ run('git', ['clone', options.repoUrl, cacheRoot]);
139
+ if (options.ref.trim()) {
140
+ run('git', ['-C', cacheRoot, 'checkout', options.ref.trim()]);
141
+ }
142
+ return cacheRoot;
143
+ }
144
+
145
+ function assertDestinationWithinRoot(destination, installRoot) {
146
+ const resolvedRoot = fullPath(installRoot);
147
+ const resolvedDestination = fullPath(destination);
148
+ const rootPrefix = resolvedRoot.endsWith(path.sep) ? resolvedRoot : `${resolvedRoot}${path.sep}`;
149
+ if (!resolvedDestination.startsWith(rootPrefix)) {
150
+ throw new Error(`Refusing to write outside install root: ${resolvedDestination}`);
151
+ }
152
+ if (resolvedDestination === resolvedRoot) {
153
+ throw new Error('Refusing to replace the install root itself');
154
+ }
155
+ }
156
+
157
+ function copyDirectoryContents(source, destination) {
158
+ fs.mkdirSync(destination, { recursive: true });
159
+ for (const entry of fs.readdirSync(source, { withFileTypes: true })) {
160
+ if (entry.name === 'node_modules' || entry.name === '.git') {
161
+ continue;
162
+ }
163
+ const src = path.join(source, entry.name);
164
+ const dest = path.join(destination, entry.name);
165
+ if (entry.isDirectory()) {
166
+ fs.cpSync(src, dest, { recursive: true, force: true });
167
+ } else if (entry.isFile() || entry.isSymbolicLink()) {
168
+ fs.copyFileSync(src, dest);
169
+ }
170
+ }
171
+ }
172
+
173
+ function readManifest(manifestPath) {
174
+ let manifest;
175
+ try {
176
+ manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
177
+ } catch (err) {
178
+ throw new Error(`Failed to parse ${manifestPath}: ${err.message}`);
179
+ }
180
+ if (manifest.version !== 2) {
181
+ throw new Error(`Manifest version must be 2: ${manifestPath}`);
182
+ }
183
+ if (typeof manifest.id !== 'string' || !manifest.id.trim()) {
184
+ throw new Error(`Manifest is missing id: ${manifestPath}`);
185
+ }
186
+ if (typeof manifest.entry !== 'string' || !manifest.entry.trim()) {
187
+ throw new Error(`Manifest is missing entry: ${manifestPath}`);
188
+ }
189
+ return manifest;
190
+ }
191
+
192
+ function installEngine(engineName, sourceRoot, installRoot, options) {
193
+ const source = path.join(sourceRoot, engineName);
194
+ if (!fs.existsSync(source) || !fs.statSync(source).isDirectory()) {
195
+ throw new Error(`Engine "${engineName}" not found under source root: ${sourceRoot}`);
196
+ }
197
+
198
+ const sourceManifestPath = path.join(source, 'engine.manifest.json');
199
+ if (!fs.existsSync(sourceManifestPath)) {
200
+ throw new Error(`Missing engine.manifest.json for "${engineName}": ${sourceManifestPath}`);
201
+ }
202
+
203
+ const sourceManifest = readManifest(sourceManifestPath);
204
+ const engineId = sourceManifest.id.trim().toLowerCase();
205
+ const destination = path.join(installRoot, engineId);
206
+ assertDestinationWithinRoot(destination, installRoot);
207
+
208
+ console.log(`Installing engine "${engineName}" as "${engineId}"`);
209
+ fs.mkdirSync(installRoot, { recursive: true });
210
+ if (fs.existsSync(destination)) {
211
+ fs.rmSync(destination, { recursive: true, force: true });
212
+ }
213
+ fs.mkdirSync(destination, { recursive: true });
214
+ copyDirectoryContents(source, destination);
215
+
216
+ const manifest = readManifest(path.join(destination, 'engine.manifest.json'));
217
+ const entryPath = path.isAbsolute(manifest.entry)
218
+ ? manifest.entry
219
+ : path.resolve(destination, manifest.entry);
220
+ if (!fs.existsSync(entryPath)) {
221
+ throw new Error(`Manifest entry not found after install: ${entryPath}`);
222
+ }
223
+
224
+ const packageJson = path.join(destination, 'package.json');
225
+ if (fs.existsSync(packageJson) && !options.noNpmCi) {
226
+ if (!commandExists('npm')) {
227
+ throw new Error(`npm is required to install dependencies for "${engineId}"`);
228
+ }
229
+ const packageLock = path.join(destination, 'package-lock.json');
230
+ if (!fs.existsSync(packageLock)) {
231
+ throw new Error(`package-lock.json is required for deterministic npm ci: ${packageLock}`);
232
+ }
233
+ run('npm', ['ci', '--prefix', destination, '--omit=dev']);
234
+ }
235
+
236
+ if (!commandExists('node')) {
237
+ throw new Error('node is required for syntax validation');
238
+ }
239
+ run('node', ['--check', entryPath]);
240
+ console.log(`Installed custom engine "${engineId}" at ${destination}`);
241
+ }
242
+
243
+ try {
244
+ const options = parseArgs(process.argv.slice(2));
245
+ const sourceRoot = ensureSourceRoot(options);
246
+ const installRoot = fullPath(
247
+ options.installRoot.trim() ||
248
+ path.join(os.homedir(), '.agent-hippo', 'engines'),
249
+ );
250
+
251
+ for (const engine of options.engines) {
252
+ installEngine(engine, sourceRoot, installRoot, options);
253
+ }
254
+
255
+ console.log(`Done. AgentHippo will discover installed engines from: ${installRoot}`);
256
+ } catch (err) {
257
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
258
+ process.exit(1);
259
+ }
@@ -0,0 +1,189 @@
1
+ param(
2
+ [Parameter(Mandatory = $true, Position = 0)]
3
+ [string[]]$Engine,
4
+
5
+ [string]$RepoUrl = "git@github.com:agenthippoai/custom-engines.git",
6
+ [string]$Ref = "",
7
+ [string]$SourceRoot = "",
8
+ [string]$CacheRoot = "",
9
+ [string]$InstallRoot = "",
10
+ [switch]$NoNpmCi
11
+ )
12
+
13
+ $ErrorActionPreference = "Stop"
14
+
15
+ function Get-FullPath {
16
+ param([Parameter(Mandatory = $true)][string]$Path)
17
+ return [System.IO.Path]::GetFullPath($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($Path))
18
+ }
19
+
20
+ function Test-Command {
21
+ param([Parameter(Mandatory = $true)][string]$Name)
22
+ return $null -ne (Get-Command $Name -ErrorAction SilentlyContinue)
23
+ }
24
+
25
+ function Invoke-Logged {
26
+ param(
27
+ [Parameter(Mandatory = $true)][string]$FilePath,
28
+ [Parameter(Mandatory = $true)][string[]]$Arguments,
29
+ [string]$WorkingDirectory = ""
30
+ )
31
+ $display = "$FilePath $($Arguments -join ' ')"
32
+ Write-Host ">> $display"
33
+ if ($WorkingDirectory) {
34
+ & $FilePath @Arguments
35
+ } else {
36
+ & $FilePath @Arguments
37
+ }
38
+ if ($LASTEXITCODE -ne 0) {
39
+ throw "Command failed with exit code ${LASTEXITCODE}: $display"
40
+ }
41
+ }
42
+
43
+ function Ensure-SourceRoot {
44
+ param(
45
+ [Parameter(Mandatory = $true)][string]$RepoUrl,
46
+ [string]$Ref,
47
+ [string]$SourceRoot,
48
+ [string]$CacheRoot
49
+ )
50
+
51
+ if ($SourceRoot.Trim()) {
52
+ $resolved = Get-FullPath $SourceRoot
53
+ if (-not (Test-Path -LiteralPath $resolved -PathType Container)) {
54
+ throw "SourceRoot does not exist: $resolved"
55
+ }
56
+ return $resolved
57
+ }
58
+
59
+ if (-not (Test-Command git)) {
60
+ throw "git is required when -SourceRoot is not provided"
61
+ }
62
+
63
+ if (-not $CacheRoot.Trim()) {
64
+ $CacheRoot = Join-Path $HOME ".agent-hippo/cache/custom-engines/agenthippoai-custom-engines"
65
+ }
66
+ $cache = Get-FullPath $CacheRoot
67
+ $cacheParent = Split-Path -Parent $cache
68
+ New-Item -ItemType Directory -Path $cacheParent -Force | Out-Null
69
+
70
+ if (Test-Path -LiteralPath (Join-Path $cache ".git") -PathType Container) {
71
+ Invoke-Logged git @("-C", $cache, "fetch", "--all", "--tags", "--prune")
72
+ if ($Ref.Trim()) {
73
+ Invoke-Logged git @("-C", $cache, "checkout", $Ref)
74
+ } else {
75
+ Invoke-Logged git @("-C", $cache, "pull", "--ff-only")
76
+ }
77
+ } elseif (Test-Path -LiteralPath $cache) {
78
+ throw "CacheRoot exists but is not a Git checkout: $cache"
79
+ } else {
80
+ Invoke-Logged git @("clone", $RepoUrl, $cache)
81
+ if ($Ref.Trim()) {
82
+ Invoke-Logged git @("-C", $cache, "checkout", $Ref)
83
+ }
84
+ }
85
+
86
+ return $cache
87
+ }
88
+
89
+ function Copy-EngineFolder {
90
+ param(
91
+ [Parameter(Mandatory = $true)][string]$Source,
92
+ [Parameter(Mandatory = $true)][string]$Destination,
93
+ [Parameter(Mandatory = $true)][string]$InstallRoot
94
+ )
95
+
96
+ $installRootFull = Get-FullPath $InstallRoot
97
+ New-Item -ItemType Directory -Path $installRootFull -Force | Out-Null
98
+ $destFull = [System.IO.Path]::GetFullPath($Destination)
99
+ $installRootPrefix = $installRootFull.TrimEnd([System.IO.Path]::DirectorySeparatorChar, [System.IO.Path]::AltDirectorySeparatorChar) + [System.IO.Path]::DirectorySeparatorChar
100
+ if (-not $destFull.StartsWith($installRootPrefix, [System.StringComparison]::OrdinalIgnoreCase)) {
101
+ throw "Refusing to write outside InstallRoot. Destination: $destFull InstallRoot: $installRootFull"
102
+ }
103
+
104
+ if (Test-Path -LiteralPath $destFull) {
105
+ Remove-Item -LiteralPath $destFull -Recurse -Force
106
+ }
107
+ New-Item -ItemType Directory -Path $destFull -Force | Out-Null
108
+
109
+ Get-ChildItem -LiteralPath $Source -Force | ForEach-Object {
110
+ if ($_.Name -eq "node_modules" -or $_.Name -eq ".git") {
111
+ return
112
+ }
113
+ Copy-Item -LiteralPath $_.FullName -Destination $destFull -Recurse -Force
114
+ }
115
+ }
116
+
117
+ function Install-OneEngine {
118
+ param(
119
+ [Parameter(Mandatory = $true)][string]$EngineName,
120
+ [Parameter(Mandatory = $true)][string]$SourceRoot,
121
+ [Parameter(Mandatory = $true)][string]$InstallRoot,
122
+ [switch]$NoNpmCi
123
+ )
124
+
125
+ $source = Join-Path $SourceRoot $EngineName
126
+ if (-not (Test-Path -LiteralPath $source -PathType Container)) {
127
+ throw "Engine '$EngineName' not found under source root: $SourceRoot"
128
+ }
129
+
130
+ $sourceManifestPath = Join-Path $source "engine.manifest.json"
131
+ if (-not (Test-Path -LiteralPath $sourceManifestPath -PathType Leaf)) {
132
+ throw "Missing engine.manifest.json for '$EngineName': $sourceManifestPath"
133
+ }
134
+ $manifest = Get-Content -LiteralPath $sourceManifestPath -Raw | ConvertFrom-Json
135
+ if ($manifest.version -ne 2) {
136
+ throw "Engine '$EngineName' manifest version must be 2"
137
+ }
138
+ if (-not "$($manifest.id)".Trim()) {
139
+ throw "Engine '$EngineName' manifest is missing id"
140
+ }
141
+ if (-not "$($manifest.entry)".Trim()) {
142
+ throw "Engine '$EngineName' manifest is missing entry"
143
+ }
144
+
145
+ $engineId = "$($manifest.id)".Trim().ToLowerInvariant()
146
+ $dest = Join-Path $InstallRoot $engineId
147
+ Write-Host "Installing engine '$EngineName' as '$engineId'"
148
+ Copy-EngineFolder -Source $source -Destination $dest -InstallRoot $InstallRoot
149
+
150
+ $destManifestPath = Join-Path $dest "engine.manifest.json"
151
+ $destManifest = Get-Content -LiteralPath $destManifestPath -Raw | ConvertFrom-Json
152
+ $entry = "$($destManifest.entry)".Trim()
153
+ $entryPath = if ([System.IO.Path]::IsPathRooted($entry)) { $entry } else { Join-Path $dest $entry }
154
+ if (-not (Test-Path -LiteralPath $entryPath -PathType Leaf)) {
155
+ throw "Manifest entry not found after install: $entryPath"
156
+ }
157
+
158
+ $packageJson = Join-Path $dest "package.json"
159
+ if ((Test-Path -LiteralPath $packageJson -PathType Leaf) -and -not $NoNpmCi) {
160
+ if (-not (Test-Command npm)) {
161
+ throw "npm is required to install dependencies for '$engineId'"
162
+ }
163
+ $packageLock = Join-Path $dest "package-lock.json"
164
+ if (-not (Test-Path -LiteralPath $packageLock -PathType Leaf)) {
165
+ throw "package-lock.json is required for deterministic npm ci: $packageLock"
166
+ }
167
+ Invoke-Logged npm @("ci", "--prefix", $dest, "--omit=dev")
168
+ }
169
+
170
+ if (-not (Test-Command node)) {
171
+ throw "node is required for syntax validation"
172
+ }
173
+ Invoke-Logged node @("--check", $entryPath)
174
+
175
+ Write-Host "Installed custom engine '$engineId' at $dest"
176
+ }
177
+
178
+ if (-not $InstallRoot.Trim()) {
179
+ $InstallRoot = Join-Path $HOME ".agent-hippo/engines"
180
+ }
181
+
182
+ $sourceRootResolved = Ensure-SourceRoot -RepoUrl $RepoUrl -Ref $Ref -SourceRoot $SourceRoot -CacheRoot $CacheRoot
183
+ $installRootResolved = Get-FullPath $InstallRoot
184
+
185
+ foreach ($engineName in $Engine) {
186
+ Install-OneEngine -EngineName $engineName -SourceRoot $sourceRootResolved -InstallRoot $installRootResolved -NoNpmCi:$NoNpmCi
187
+ }
188
+
189
+ Write-Host "Done. AgentHippo will discover installed engines from: $installRootResolved"
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: agenthippo-cli
3
+ description: Ensure the AgentHippo CLI is installed and reachable, installing it automatically if missing. Use as a preflight before any skill or agent that invokes the agenthippo binary (debug-agent, agentpack-testbench, skill-installer, etc.), or when the user reports "agenthippo: command not found".
4
+ ---
5
+
6
+ # AgentHippo CLI
7
+
8
+ Ensure the `agenthippo` CLI is available before running agent commands.
9
+
10
+ ## Preflight (run this first)
11
+
12
+ ```bash
13
+ "${AGENTHIPPO_CLI_PATH:-agenthippo}" --version
14
+ ```
15
+
16
+ If this succeeds, the CLI is ready — no further action needed.
17
+
18
+ ## Quick local LiteLLM smoke test
19
+
20
+ Use this one-liner to verify the CLI can reach a local LiteLLM proxy and return a deterministic response:
21
+
22
+ ```bash
23
+ AGENTHIPPO_LITELLM_BASE_URL="http://localhost:4000" AGENTHIPPO_LITELLM_API_KEY="dummy" AGENTHIPPO_DEFAULT_MODEL="litellm/gpt-5.3-codex" AGENTHIPPO_DEFAULT_ENGINE="codex" "${AGENTHIPPO_CLI_PATH:-agenthippo}" ask "Reply with exactly: CLI_TEST_OK"
24
+ ```
25
+
26
+ Expected output:
27
+
28
+ ```text
29
+ CLI_TEST_OK
30
+ ```
31
+
32
+ ## When to use
33
+
34
+ - Any skill's preflight fails (`agenthippo --version` returns non-zero or command not found)
35
+ - User reports `agenthippo: command not found`
36
+ - Inside the AgentHippo IDE: use **Agent Hippo: Setup AgentHippo CLI** from the command palette — it handles PATH and IDE restart automatically.
37
+
38
+ ## Install / repair
39
+
40
+ ```bash
41
+ bash <skill_location>/scripts/install.sh
42
+ ```
43
+
44
+ Resolution order:
45
+ 1. `$AGENTHIPPO_CLI_PATH` — injected by the AgentHippo IDE
46
+ 2. `which agenthippo` — standard PATH
47
+ 3. Known install locations (`~/.local/bin`, Homebrew, pnpm, npm global)
48
+ 4. Downloads and runs `https://agenthippo.ai/install.sh` if still not found
49
+
50
+ ## After install
51
+
52
+ If the script exits with "not yet on PATH", reload your shell:
53
+
54
+ ```bash
55
+ source ~/.zshrc # zsh
56
+ source ~/.bashrc # bash
57
+ ```
58
+
59
+ Then re-run the preflight.
60
+
61
+ ## Windows
62
+
63
+ The install script requires WSL or Git Bash. For native PowerShell:
64
+
65
+ ```powershell
66
+ (Invoke-WebRequest https://agenthippo.ai/install.ps1).Content | Invoke-Expression
67
+ ```
68
+
69
+ Or: download `agenthippo.zip` from `https://agenthippo.ai/download`, extract, and run `.\install.ps1`.
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env bash
2
+ # Locate or install the agenthippo CLI.
3
+ # Exits 0 and prints the resolved path on success.
4
+ # Exits 1 with an actionable message on failure.
5
+ set -euo pipefail
6
+
7
+ BINARY="agenthippo"
8
+
9
+ resolve() {
10
+ # 1. IDE-injected path (most reliable inside Agent Hippo IDE)
11
+ if [[ -n "${AGENTHIPPO_CLI_PATH:-}" && -x "${AGENTHIPPO_CLI_PATH}" ]]; then
12
+ echo "${AGENTHIPPO_CLI_PATH}"; return 0
13
+ fi
14
+
15
+ # 2. PATH
16
+ if command -v "${BINARY}" >/dev/null 2>&1; then
17
+ command -v "${BINARY}"; return 0
18
+ fi
19
+
20
+ # 3. Known install locations (mirrors IDE binary.ts getCommonBinaryPaths)
21
+ local candidates=(
22
+ "$HOME/.local/bin/${BINARY}"
23
+ "$HOME/Library/pnpm/${BINARY}"
24
+ "$HOME/.local/share/pnpm/${BINARY}"
25
+ "$HOME/.npm-global/bin/${BINARY}"
26
+ "/opt/homebrew/bin/${BINARY}"
27
+ "/usr/local/bin/${BINARY}"
28
+ "/usr/bin/${BINARY}"
29
+ )
30
+ for c in "${candidates[@]}"; do
31
+ [[ -x "$c" ]] && { echo "$c"; return 0; }
32
+ done
33
+
34
+ return 1
35
+ }
36
+
37
+ if RESOLVED="$(resolve)"; then
38
+ echo "agenthippo: ${RESOLVED}"
39
+ "${RESOLVED}" --version 2>/dev/null || true
40
+ exit 0
41
+ fi
42
+
43
+ echo "agenthippo not found — installing..."
44
+
45
+ if command -v curl >/dev/null 2>&1; then
46
+ curl -fsSL https://agenthippo.ai/install.sh | bash
47
+ elif command -v wget >/dev/null 2>&1; then
48
+ wget -qO- https://agenthippo.ai/install.sh | bash
49
+ else
50
+ echo "ERROR: curl and wget unavailable." >&2
51
+ echo "Download manually: https://agenthippo.ai/download" >&2
52
+ exit 1
53
+ fi
54
+
55
+ # Re-resolve after install (PATH may not be updated in this shell)
56
+ if RESOLVED="$(resolve)"; then
57
+ echo "agenthippo installed: ${RESOLVED}"
58
+ "${RESOLVED}" --version 2>/dev/null || true
59
+ else
60
+ echo "Installed, but agenthippo is not yet on PATH." >&2
61
+ echo "Open a new terminal or run: source ~/.zshrc (or ~/.bashrc)" >&2
62
+ exit 1
63
+ fi