@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,376 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.resolvePackPath = resolvePackPath;
40
+ exports.listAvailablePacks = listAvailablePacks;
41
+ exports.loadAgentPack = loadAgentPack;
42
+ exports.getDefaultConfig = getDefaultConfig;
43
+ exports.getEnvDefaultModel = getEnvDefaultModel;
44
+ exports.getApiConfig = getApiConfig;
45
+ exports.getFileAccess = getFileAccess;
46
+ /**
47
+ * Agent Pack Loader
48
+ *
49
+ * Loads and validates agent packs from the filesystem.
50
+ */
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ const yaml = __importStar(require("js-yaml"));
55
+ const branding_1 = require("../branding");
56
+ // -----------------------------------------------------------------------------
57
+ // Constants
58
+ // -----------------------------------------------------------------------------
59
+ function getEnvVar(primary, legacy) {
60
+ return process.env[primary] ?? (legacy ? process.env[legacy] : undefined);
61
+ }
62
+ const AGENTHIPPO_HOME = process.env.AGENTHIPPO_HOME || path.join(os.homedir(), branding_1.AGENTIDE_DIR_NAME);
63
+ const USER_AGENTS_DIR = path.join(AGENTHIPPO_HOME, 'agents');
64
+ const AGENTS_SUBDIR = 'agents';
65
+ // -----------------------------------------------------------------------------
66
+ // Pack Resolution
67
+ // -----------------------------------------------------------------------------
68
+ /**
69
+ * Resolve a pack path with version support.
70
+ *
71
+ * Resolution order:
72
+ * 1. Check for current.txt pointer → use that version
73
+ * 2. Check if basePath itself has agent.yaml → flat structure
74
+ * 3. Auto-detect version directories (semver-like: X.Y.Z) → use latest
75
+ */
76
+ function resolveVersionedPath(basePath) {
77
+ if (!fs.existsSync(basePath)) {
78
+ return undefined;
79
+ }
80
+ // 1. Check for current.txt version pointer
81
+ const currentFile = path.join(basePath, 'current.txt');
82
+ if (fs.existsSync(currentFile)) {
83
+ const version = fs.readFileSync(currentFile, 'utf-8').trim();
84
+ const versionPath = path.join(basePath, version);
85
+ if (fs.existsSync(versionPath)) {
86
+ return versionPath;
87
+ }
88
+ }
89
+ // 2. Flat structure - agent.yaml directly in basePath
90
+ const flatManifest = path.join(basePath, 'agent.yaml');
91
+ if (fs.existsSync(flatManifest)) {
92
+ return basePath;
93
+ }
94
+ // 3. Auto-detect version directories (look for semver-like: X.Y.Z or X.Y.Z-xxx)
95
+ try {
96
+ const entries = fs.readdirSync(basePath, { withFileTypes: true });
97
+ const versionDirs = entries
98
+ .filter(e => e.isDirectory() && /^\d+\.\d+\.\d+/.test(e.name))
99
+ .map(e => e.name)
100
+ .sort((a, b) => {
101
+ // Sort by semver (descending - latest first)
102
+ const [aMajor, aMinor, aPatch] = a.split('.').map(n => parseInt(n, 10) || 0);
103
+ const [bMajor, bMinor, bPatch] = b.split('.').map(n => parseInt(n, 10) || 0);
104
+ if (bMajor !== aMajor) {
105
+ return bMajor - aMajor;
106
+ }
107
+ if (bMinor !== aMinor) {
108
+ return bMinor - aMinor;
109
+ }
110
+ return bPatch - aPatch;
111
+ });
112
+ // Use latest version that has agent.yaml
113
+ for (const version of versionDirs) {
114
+ const versionPath = path.join(basePath, version);
115
+ const manifestPath = path.join(versionPath, 'agent.yaml');
116
+ if (fs.existsSync(manifestPath)) {
117
+ return versionPath;
118
+ }
119
+ }
120
+ }
121
+ catch {
122
+ // Ignore read errors
123
+ }
124
+ return undefined;
125
+ }
126
+ /**
127
+ * Find an agent pack by name or path.
128
+ *
129
+ * Search order:
130
+ * 1. Explicit path (absolute or relative to cwd)
131
+ * 2. Direct folder in cwd: ./<name> (convenience for development)
132
+ * 3. Local agents folder: ./agents/<name> (in cwd, for development)
133
+ * 4. Workspace branding folder: <workspace>/<brand>/agents/<name>
134
+ * 5. User agent library: ~/<brand>/agents/<name>
135
+ *
136
+ * @param nameOrPath - Pack name or path
137
+ * @param workspaceRoot - Workspace root directory (for workspace-local packs)
138
+ */
139
+ function resolvePackPath(nameOrPath, workspaceRoot) {
140
+ // 1. Explicit path (absolute or relative to cwd)
141
+ // This handles both absolute paths and relative paths like "./myagent" or "../agents/myagent"
142
+ if (path.isAbsolute(nameOrPath) || nameOrPath.startsWith('./') || nameOrPath.startsWith('../')) {
143
+ const resolvedPath = path.isAbsolute(nameOrPath) ? nameOrPath : path.resolve(process.cwd(), nameOrPath);
144
+ if (fs.existsSync(resolvedPath)) {
145
+ try {
146
+ if (fs.statSync(resolvedPath).isDirectory()) {
147
+ return resolveVersionedPath(resolvedPath) ?? resolvedPath;
148
+ }
149
+ }
150
+ catch {
151
+ // Ignore stat errors, fall back to raw path.
152
+ }
153
+ return resolvedPath;
154
+ }
155
+ // If explicit path doesn't exist, don't fall through to other search locations
156
+ return undefined;
157
+ }
158
+ // From here, nameOrPath is just a name (e.g., "joker1"), not a path
159
+ // Search in standard locations in priority order
160
+ // 2. Direct folder in cwd: ./<name> (convenience for development)
161
+ const cwdDirectPath = path.join(process.cwd(), nameOrPath);
162
+ const cwdDirectResolved = resolveVersionedPath(cwdDirectPath);
163
+ if (cwdDirectResolved) {
164
+ return cwdDirectResolved;
165
+ }
166
+ // 3. Local agents folder: ./agents/<name> (in cwd, for development)
167
+ const localAgentsPath = path.join(process.cwd(), AGENTS_SUBDIR, nameOrPath);
168
+ const localResolved = resolveVersionedPath(localAgentsPath);
169
+ if (localResolved) {
170
+ return localResolved;
171
+ }
172
+ // 4. Workspace branding folder: <workspace>/<brand>/agents/<name>
173
+ if (workspaceRoot) {
174
+ const workspacePackPath = path.join(workspaceRoot, branding_1.AGENTIDE_DIR_NAME, AGENTS_SUBDIR, nameOrPath);
175
+ const resolved = resolveVersionedPath(workspacePackPath);
176
+ if (resolved) {
177
+ return resolved;
178
+ }
179
+ }
180
+ // 5. User agent library: ~/<brand>/agents/<name>
181
+ const ualPath = path.join(USER_AGENTS_DIR, nameOrPath);
182
+ const resolved = resolveVersionedPath(ualPath);
183
+ if (resolved) {
184
+ return resolved;
185
+ }
186
+ return undefined;
187
+ }
188
+ /**
189
+ * List packs from a directory.
190
+ */
191
+ function listPacksFromDir(agentsDir, source) {
192
+ const packs = [];
193
+ if (!fs.existsSync(agentsDir)) {
194
+ return packs;
195
+ }
196
+ const entries = fs.readdirSync(agentsDir, { withFileTypes: true });
197
+ for (const entry of entries) {
198
+ if (!entry.isDirectory()) {
199
+ continue;
200
+ }
201
+ if (entry.name.startsWith('.')) {
202
+ continue;
203
+ }
204
+ const packPath = path.join(agentsDir, entry.name);
205
+ const resolvedPath = resolveVersionedPath(packPath);
206
+ if (!resolvedPath) {
207
+ continue;
208
+ }
209
+ // Extract version from resolved path
210
+ let version;
211
+ if (resolvedPath !== packPath) {
212
+ version = path.basename(resolvedPath);
213
+ }
214
+ packs.push({
215
+ name: entry.name,
216
+ path: resolvedPath,
217
+ version,
218
+ source,
219
+ });
220
+ }
221
+ return packs;
222
+ }
223
+ /**
224
+ * List all available agent packs.
225
+ *
226
+ * @param workspaceRoot - Workspace root to search for workspace-local packs
227
+ * @returns Array of packs from both workspace and user library
228
+ */
229
+ function listAvailablePacks(workspaceRoot) {
230
+ const packs = [];
231
+ const seen = new Set();
232
+ // 1. Workspace-local packs (higher priority)
233
+ if (workspaceRoot) {
234
+ const workspaceAgentsDir = path.join(workspaceRoot, branding_1.AGENTIDE_DIR_NAME, AGENTS_SUBDIR);
235
+ const workspacePacks = listPacksFromDir(workspaceAgentsDir, 'workspace');
236
+ for (const pack of workspacePacks) {
237
+ packs.push(pack);
238
+ seen.add(pack.name);
239
+ }
240
+ }
241
+ // 2. User library packs (skip if already in workspace)
242
+ const userPacks = listPacksFromDir(USER_AGENTS_DIR, 'user-library');
243
+ for (const pack of userPacks) {
244
+ if (!seen.has(pack.name)) {
245
+ packs.push(pack);
246
+ }
247
+ }
248
+ return packs;
249
+ }
250
+ // -----------------------------------------------------------------------------
251
+ // Pack Loading
252
+ // -----------------------------------------------------------------------------
253
+ /**
254
+ * Load an agent pack from the filesystem.
255
+ *
256
+ * @param nameOrPath - Pack name or path
257
+ * @param workspaceRoot - Workspace root for finding workspace-local packs
258
+ */
259
+ async function loadAgentPack(nameOrPath, workspaceRoot) {
260
+ const packPath = resolvePackPath(nameOrPath, workspaceRoot);
261
+ if (!packPath) {
262
+ const isExplicitPath = path.isAbsolute(nameOrPath) || nameOrPath.startsWith('./') || nameOrPath.startsWith('../');
263
+ const searchedLocations = isExplicitPath
264
+ ? [path.resolve(process.cwd(), nameOrPath)]
265
+ : [
266
+ `${process.cwd()}/${nameOrPath}`,
267
+ `${process.cwd()}/agents/${nameOrPath}`,
268
+ workspaceRoot ? `${workspaceRoot}/${branding_1.AGENTIDE_DIR_NAME}/agents/${nameOrPath}` : null,
269
+ `${USER_AGENTS_DIR}/${nameOrPath}`,
270
+ ].filter(Boolean);
271
+ throw new Error(`Agent pack not found: ${nameOrPath}\n Searched: ${searchedLocations.join(', ')}`);
272
+ }
273
+ // Load manifest
274
+ const manifestPath = path.join(packPath, 'agent.yaml');
275
+ if (!fs.existsSync(manifestPath)) {
276
+ throw new Error(`Missing agent.yaml in pack: ${packPath}`);
277
+ }
278
+ const manifestContent = fs.readFileSync(manifestPath, 'utf-8');
279
+ const manifest = yaml.load(manifestContent);
280
+ // Validate manifest
281
+ validateManifest(manifest, manifestPath);
282
+ const normalizedManifest = normalizeManifestForRuntime(manifest);
283
+ // Load system prompt
284
+ let systemPrompt = '';
285
+ const systemPromptPath = path.join(packPath, 'AGENTS.md');
286
+ if (fs.existsSync(systemPromptPath)) {
287
+ systemPrompt = fs.readFileSync(systemPromptPath, 'utf-8');
288
+ }
289
+ // Load rules
290
+ const rules = [];
291
+ return {
292
+ manifest: normalizedManifest,
293
+ packPath,
294
+ systemPrompt,
295
+ rules,
296
+ };
297
+ }
298
+ function normalizeManifestForRuntime(manifest) {
299
+ const rawEngine = manifest.spec.engine?.trim() ?? '';
300
+ const normalizedEngine = rawEngine.toLowerCase();
301
+ if (rawEngine !== normalizedEngine) {
302
+ return {
303
+ ...manifest,
304
+ spec: {
305
+ ...manifest.spec,
306
+ engine: normalizedEngine,
307
+ },
308
+ };
309
+ }
310
+ return manifest;
311
+ }
312
+ /**
313
+ * Validate a pack manifest.
314
+ */
315
+ function validateManifest(manifest, sourcePath) {
316
+ const errors = [];
317
+ if (!manifest.metadata?.name) {
318
+ errors.push('Missing metadata.name');
319
+ }
320
+ if (!manifest.metadata?.version) {
321
+ errors.push('Missing metadata.version');
322
+ }
323
+ if (!manifest.spec?.engine?.trim()) {
324
+ errors.push('Missing spec.engine');
325
+ }
326
+ const normalizedEngine = manifest.spec?.engine?.trim().toLowerCase();
327
+ if (normalizedEngine === 'custom') {
328
+ errors.push('Invalid spec.engine: use the concrete custom engine id (for example, openclaw), not "custom"');
329
+ }
330
+ if (manifest.spec?.cheapModel !== undefined && typeof manifest.spec.cheapModel !== 'string') {
331
+ errors.push('Invalid spec.cheapModel: must be a string when provided');
332
+ }
333
+ if (errors.length > 0) {
334
+ throw new Error(`Invalid agent manifest at ${sourcePath}:\n - ${errors.join('\n - ')}`);
335
+ }
336
+ }
337
+ /**
338
+ * Get default engine and model when no pack is specified.
339
+ */
340
+ function getDefaultConfig() {
341
+ const rawEngine = (getEnvVar('AGENTHIPPO_DEFAULT_ENGINE', 'AGENTIDE_DEFAULT_ENGINE') || 'claude').trim().toLowerCase();
342
+ return {
343
+ engine: rawEngine,
344
+ model: getEnvVar('AGENTHIPPO_DEFAULT_MODEL', 'AGENTIDE_DEFAULT_MODEL') || 'claude-sonnet-4-5-20250929',
345
+ };
346
+ }
347
+ /**
348
+ * Returns the env-configured default model without a hardcoded fallback.
349
+ * Used after custom engine manifest defaults so AGENTHIPPO_DEFAULT_MODEL only
350
+ * wins when no request, pack, or manifest model is available.
351
+ */
352
+ function getEnvDefaultModel() {
353
+ return getEnvVar('AGENTHIPPO_DEFAULT_MODEL', 'AGENTIDE_DEFAULT_MODEL')?.trim() || undefined;
354
+ }
355
+ /**
356
+ * Get API configuration from environment.
357
+ */
358
+ function getApiConfig() {
359
+ const litellmApiKey = getEnvVar('AGENTHIPPO_LITELLM_API_KEY', 'AGENTIDE_LITELLM_API_KEY');
360
+ const litellmBaseUrl = getEnvVar('AGENTHIPPO_LITELLM_BASE_URL', 'AGENTIDE_LITELLM_BASE_URL');
361
+ const anthropicApiKey = process.env.ANTHROPIC_API_KEY || process.env.CLAUDE_API_KEY;
362
+ const openaiApiKey = process.env.OPENAI_API_KEY;
363
+ const apiKey = litellmApiKey || anthropicApiKey || openaiApiKey;
364
+ const useLiteLLM = Boolean(litellmApiKey && litellmBaseUrl);
365
+ return {
366
+ apiKey,
367
+ baseUrl: litellmBaseUrl,
368
+ useLiteLLM,
369
+ };
370
+ }
371
+ /**
372
+ * Get file access mode from pack manifest.
373
+ */
374
+ function getFileAccess(pack) {
375
+ return pack?.manifest.spec.permissions?.fileAccess ?? 'workspace-write';
376
+ }
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runCustomEngineRunnerMain = runCustomEngineRunnerMain;
40
+ const node_readline_1 = require("node:readline");
41
+ const node_url_1 = require("node:url");
42
+ const path = __importStar(require("node:path"));
43
+ /** Must stay self-contained — this file is embedded and run from ~/.agent-hippo/cache/cli/. */
44
+ const AGENTHIPPO_MCP_SERVERS_ENV = 'AGENTHIPPO_MCP_SERVERS';
45
+ function parseInlineMcpServers(raw) {
46
+ if (!raw?.trim()) {
47
+ return undefined;
48
+ }
49
+ try {
50
+ const parsed = JSON.parse(raw);
51
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
52
+ return undefined;
53
+ }
54
+ return parsed;
55
+ }
56
+ catch {
57
+ return undefined;
58
+ }
59
+ }
60
+ function emitEvent(obj) {
61
+ process.stdout.write(`${JSON.stringify(obj)}\n`);
62
+ }
63
+ const runtime = {
64
+ logger: {
65
+ info: () => { },
66
+ warn: () => { },
67
+ error: () => { },
68
+ },
69
+ };
70
+ /** Apply the engine entry's directory to cwd + NODE_PATH so its node_modules resolve. */
71
+ function applyEngineDir(entryPath) {
72
+ const engineDir = path.dirname(entryPath);
73
+ process.chdir(engineDir);
74
+ const engineNodeModules = path.join(engineDir, 'node_modules');
75
+ const existingNodePath = process.env.NODE_PATH?.trim();
76
+ process.env.NODE_PATH = existingNodePath
77
+ ? `${engineNodeModules}${path.delimiter}${existingNodePath}`
78
+ : engineNodeModules;
79
+ }
80
+ /** Import the engine module and instantiate the exported engine (must provide run(turn)). */
81
+ async function loadEngine(entryPath, engineExport) {
82
+ const mod = (await import((0, node_url_1.pathToFileURL)(entryPath).href));
83
+ const exported = (engineExport ? (mod[engineExport] ?? mod.default?.[engineExport]) : undefined) ??
84
+ mod.default;
85
+ const EngineClass = typeof exported === 'function' ? exported : null;
86
+ const engine = EngineClass ? new EngineClass() : exported;
87
+ if (!engine || typeof engine.run !== 'function') {
88
+ throw new Error('Engine export must provide run(turn)');
89
+ }
90
+ return engine;
91
+ }
92
+ /**
93
+ * Build a CustomEngineTurn from an env map (shared by one-shot and persistent modes).
94
+ *
95
+ * ENGINE CONTRACT: in persistent mode a single warm worker serves many chat sessions, and its
96
+ * process.env is frozen at first spawn (the *first* turn's secrets/session keys). Per-turn values
97
+ * arrive here in `env` (the worker's per-turn `run` message), never on process.env. Engines must
98
+ * therefore read all per-turn state from `turn.env`/`turn.routing`/`turn.session` and never from
99
+ * `process.env` directly, or they will see the spawn-time values for the worker's whole lifetime
100
+ * and cross-wire sessions.
101
+ */
102
+ function buildTurn(env, emitter, signal) {
103
+ const entryPath = env.AGENTHIPPO_ENGINE_ENTRY?.trim() ?? '';
104
+ const engineDir = path.dirname(entryPath);
105
+ const message = env.AGENTHIPPO_MESSAGE ?? '';
106
+ const workspaceRoot = env.AGENTHIPPO_WORKSPACE_ROOT ?? process.cwd();
107
+ const modelId = env.AGENTHIPPO_MODEL_ID ?? 'auto';
108
+ const sessionKey = env.AGENTHIPPO_CONVERSATION_KEY?.trim()
109
+ || env.AGENTIDE_CHAT_SESSION_ID?.trim()
110
+ || env.AGENTHIPPO_CHAT_SESSION_ID?.trim()
111
+ || 'runner';
112
+ const chatSessionId = env.AGENTIDE_CHAT_SESSION_ID?.trim()
113
+ || env.AGENTHIPPO_CHAT_SESSION_ID?.trim()
114
+ || sessionKey;
115
+ const contextSessionId = env.AGENTHIPPO_CONTEXT_SESSION_ID?.trim() || chatSessionId;
116
+ const mcpServers = parseInlineMcpServers(env[AGENTHIPPO_MCP_SERVERS_ENV]);
117
+ return {
118
+ message,
119
+ modelId,
120
+ workspaceRoot,
121
+ additionalDirectories: [],
122
+ permissions: { fileAccess: 'full' },
123
+ env: { ...env },
124
+ routing: {
125
+ useLiteLLM: env.AGENTHIPPO_USE_LITELLM === 'true',
126
+ ...(env.AGENTHIPPO_API_KEY ? { apiKey: env.AGENTHIPPO_API_KEY } : {}),
127
+ ...(env.AGENTHIPPO_BASE_URL ? { baseUrl: env.AGENTHIPPO_BASE_URL } : {}),
128
+ ...(env.AGENTHIPPO_OPENAI_BASE_URL ? { openaiBaseUrl: env.AGENTHIPPO_OPENAI_BASE_URL } : {}),
129
+ },
130
+ session: {
131
+ key: sessionKey,
132
+ chatSessionId,
133
+ contextSessionId,
134
+ isEphemeral: env.AGENTHIPPO_IS_EPHEMERAL === 'true',
135
+ engineHomeDir: env.AGENTHIPPO_ENGINE_HOME?.trim() || engineDir,
136
+ engineSessionDir: env.AGENTHIPPO_ENGINE_SESSION_DIR?.trim() || engineDir,
137
+ nativeSessionId: env.AGENTHIPPO_NATIVE_SESSION_ID?.trim() || undefined,
138
+ contextFilePath: env.AGENTHIPPO_CONTEXT_EXPORT_PATH?.trim() || undefined,
139
+ terminalLogPath: env.AGENTHIPPO_TERMINAL_LOG_PATH?.trim() || undefined,
140
+ attachmentsDir: env.AGENTHIPPO_ATTACHMENTS_DIR?.trim() || undefined,
141
+ },
142
+ agent: { id: env.AGENTHIPPO_ACTIVE_AGENT ?? 'default' },
143
+ ...(mcpServers ? { mcpServers } : {}),
144
+ emitter,
145
+ runtime,
146
+ signal,
147
+ };
148
+ }
149
+ /**
150
+ * One-shot mode (strategy "node-subprocess"): build one turn from process.env, run, exit.
151
+ * Parent sets AGENTHIPPO_* env vars before spawn.
152
+ */
153
+ async function runOnce() {
154
+ const entryPath = process.env.AGENTHIPPO_ENGINE_ENTRY?.trim();
155
+ if (!entryPath) {
156
+ emitEvent({ type: 'error', message: 'AGENTHIPPO_ENGINE_ENTRY is required' });
157
+ return 1;
158
+ }
159
+ applyEngineDir(entryPath);
160
+ let doneEmitted = false;
161
+ const emitter = {
162
+ async text(delta) { emitEvent({ type: 'text', delta }); },
163
+ async thinking(delta) { emitEvent({ type: 'thinking', delta }); },
164
+ async toolStart(toolName, input, toolCallId) { emitEvent({ type: 'toolStart', toolName, input, toolCallId }); },
165
+ async toolEnd(toolName, toolCallId, result, isError) { emitEvent({ type: 'toolEnd', toolName, toolCallId, result, isError }); },
166
+ async progress(msg) { emitEvent({ type: 'progress', message: msg }); },
167
+ async error(msg) { emitEvent({ type: 'error', message: msg }); },
168
+ async done() {
169
+ // Engines call done(); runner also calls done() after run — emit at most once.
170
+ if (doneEmitted) {
171
+ return;
172
+ }
173
+ doneEmitted = true;
174
+ emitEvent({ type: 'done' });
175
+ },
176
+ async question() {
177
+ return { selected: [], freeText: null, declined: true };
178
+ },
179
+ };
180
+ try {
181
+ const engine = await loadEngine(entryPath, process.env.AGENTHIPPO_ENGINE_EXPORT?.trim());
182
+ if (process.env.AGENTHIPPO_CUSTOM_ENGINE_PROBE === 'import') {
183
+ emitEvent({ type: 'probe', ok: true });
184
+ return 0;
185
+ }
186
+ const turn = buildTurn(process.env, emitter);
187
+ const result = await engine.run(turn);
188
+ if (result?.nativeSessionId) {
189
+ emitEvent({ type: 'nativeSessionId', nativeSessionId: result.nativeSessionId });
190
+ }
191
+ await emitter.done();
192
+ return 0;
193
+ }
194
+ catch (err) {
195
+ const msg = err instanceof Error ? err.message : String(err);
196
+ emitEvent({ type: 'error', message: msg });
197
+ return 1;
198
+ }
199
+ }
200
+ /**
201
+ * Persistent mode (strategy "persistent-worker"): load the engine once (SDK stays warm),
202
+ * then serve turns from stdin NDJSON requests, tagging each event with its run id so the
203
+ * host can multiplex concurrent turns. The host recycles this child on failure.
204
+ */
205
+ async function runPersistent() {
206
+ const entryPath = process.env.AGENTHIPPO_ENGINE_ENTRY?.trim();
207
+ if (!entryPath) {
208
+ emitEvent({ type: 'error', message: 'AGENTHIPPO_ENGINE_ENTRY is required' });
209
+ process.exit(1);
210
+ }
211
+ applyEngineDir(entryPath);
212
+ let engine;
213
+ try {
214
+ engine = await loadEngine(entryPath, process.env.AGENTHIPPO_ENGINE_EXPORT?.trim());
215
+ }
216
+ catch (err) {
217
+ emitEvent({ type: 'error', message: err instanceof Error ? err.message : String(err) });
218
+ process.exit(1);
219
+ }
220
+ const controllers = new Map();
221
+ const makeEmitter = (id) => {
222
+ const emit = (event) => emitEvent({ id, event });
223
+ let doneEmitted = false;
224
+ return {
225
+ async text(delta) { emit({ type: 'text', delta }); },
226
+ async thinking(delta) { emit({ type: 'thinking', delta }); },
227
+ async toolStart(toolName, input, toolCallId) { emit({ type: 'toolStart', toolName, input, toolCallId }); },
228
+ async toolEnd(toolName, toolCallId, result, isError) { emit({ type: 'toolEnd', toolName, toolCallId, result, isError }); },
229
+ async progress(msg) { emit({ type: 'progress', message: msg }); },
230
+ async error(msg) { emit({ type: 'error', message: msg }); },
231
+ async done() {
232
+ if (doneEmitted) {
233
+ return;
234
+ }
235
+ doneEmitted = true;
236
+ emit({ type: 'done' });
237
+ },
238
+ async question() {
239
+ return { selected: [], freeText: null, declined: true };
240
+ },
241
+ };
242
+ };
243
+ const handleRun = async (id, runEnv) => {
244
+ const controller = new AbortController();
245
+ controllers.set(id, controller);
246
+ const emitter = makeEmitter(id);
247
+ try {
248
+ // Build the turn purely from this turn's runEnv — it is a complete environment
249
+ // (host buildRunnerChildEnv spreads process.env + the per-turn block). Do NOT merge
250
+ // the worker's process.env or mutate it: a warm worker serves many chat sessions, and
251
+ // per-session keys (AGENTHIPPO_NATIVE_SESSION_ID/CONVERSATION_KEY) are only present for
252
+ // sessions that have them, so leaking them across turns cross-wires Cursor sessions.
253
+ const turn = buildTurn(runEnv, emitter, controller.signal);
254
+ const result = await engine.run(turn);
255
+ await emitter.done();
256
+ // Terminal control message — sent after the engine fully settles so nativeSessionId
257
+ // is captured even though engines call done() mid-run.
258
+ emitEvent({ type: 'result', id, nativeSessionId: result?.nativeSessionId });
259
+ }
260
+ catch (err) {
261
+ const message = err instanceof Error ? err.message : String(err);
262
+ emitEvent({ id, event: { type: 'error', message } });
263
+ emitEvent({ type: 'failed', id, message });
264
+ }
265
+ finally {
266
+ controllers.delete(id);
267
+ }
268
+ };
269
+ const rl = (0, node_readline_1.createInterface)({ input: process.stdin });
270
+ rl.on('line', line => {
271
+ const trimmed = line.trim();
272
+ if (!trimmed) {
273
+ return;
274
+ }
275
+ let req;
276
+ try {
277
+ req = JSON.parse(trimmed);
278
+ }
279
+ catch {
280
+ return;
281
+ }
282
+ if (req.type === 'run' && typeof req.id === 'string') {
283
+ void handleRun(req.id, req.env ?? {});
284
+ }
285
+ else if (req.type === 'abort' && typeof req.id === 'string') {
286
+ controllers.get(req.id)?.abort();
287
+ }
288
+ else if (req.type === 'shutdown') {
289
+ rl.close();
290
+ }
291
+ });
292
+ rl.on('close', () => {
293
+ for (const controller of controllers.values()) {
294
+ controller.abort();
295
+ }
296
+ process.exit(0);
297
+ });
298
+ emitEvent({ type: 'ready' });
299
+ }
300
+ /**
301
+ * Exported one-shot entry. NOTE: this is always one-shot regardless of AGENTHIPPO_RUNNER_MODE —
302
+ * persistent mode is selected only by the module-bottom dispatch below (the real CLI entrypoint),
303
+ * not by this function. Callers that import this module get one-shot behavior from this export.
304
+ */
305
+ async function runCustomEngineRunnerMain() {
306
+ return runOnce();
307
+ }
308
+ // Module-level dispatch is the actual entrypoint: the mode is fixed at spawn by the env var the
309
+ // host sets, so importing this module for its export still runs the correct loop for that mode.
310
+ if (process.env.AGENTHIPPO_RUNNER_MODE === 'persistent') {
311
+ void runPersistent();
312
+ }
313
+ else {
314
+ void runCustomEngineRunnerMain().then(code => { process.exit(code); }, err => {
315
+ emitEvent({ type: 'error', message: err instanceof Error ? err.message : String(err) });
316
+ process.exit(1);
317
+ });
318
+ }