@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,180 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * PID File Utilities
4
+ *
5
+ * Shared utilities for fast process status checks using PID files.
6
+ * Cost: ~1-2ms (file read + signal check, no process spawn)
7
+ *
8
+ * Used by:
9
+ * - Gateway lifecycle manager (Agent Anywhere)
10
+ * - Analytics service (Spotlight)
11
+ *--------------------------------------------------------------------------------------------*/
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.isProcessRunning = isProcessRunning;
47
+ exports.isProcessRunningAsync = isProcessRunningAsync;
48
+ exports.isPidFileProcessRunning = isPidFileProcessRunning;
49
+ exports.readPidFile = readPidFile;
50
+ exports.writePidFile = writePidFile;
51
+ exports.removePidFile = removePidFile;
52
+ exports.checkPidFileWithCleanup = checkPidFileWithCleanup;
53
+ const fs_1 = require("fs");
54
+ const path = __importStar(require("path"));
55
+ /**
56
+ * Check if a process with the given PID is running.
57
+ * Uses process.kill(pid, 0) which is synchronous and sub-millisecond.
58
+ *
59
+ * Cross-platform behavior:
60
+ * - Unix: Signal 0 checks if process exists without killing it
61
+ * - Windows: Returns true if process exists, throws EPERM if exists but no permission,
62
+ * throws ESRCH if process doesn't exist
63
+ */
64
+ function isProcessRunning(pid) {
65
+ try {
66
+ process.kill(pid, 0);
67
+ return true;
68
+ }
69
+ catch (err) {
70
+ // EPERM = process exists but we don't have permission (Windows)
71
+ // ESRCH = process doesn't exist
72
+ const errObj = err;
73
+ if (errObj?.code === 'EPERM') {
74
+ return true;
75
+ }
76
+ return false;
77
+ }
78
+ }
79
+ /**
80
+ * Check if a process with the given PID is running (async wrapper for consistency).
81
+ */
82
+ async function isProcessRunningAsync(pid) {
83
+ return isProcessRunning(pid);
84
+ }
85
+ /**
86
+ * Read a PID file and check if the process is running.
87
+ * Cost: ~1-2ms (file read + signal check, no process spawn)
88
+ *
89
+ * @param pidFile - Path to the PID file
90
+ * @returns true if the process is running, false otherwise
91
+ */
92
+ async function isPidFileProcessRunning(pidFile) {
93
+ try {
94
+ const pidContent = await fs_1.promises.readFile(pidFile, 'utf8').catch(() => null);
95
+ if (!pidContent) {
96
+ return false;
97
+ }
98
+ const pid = parseInt(pidContent.trim().split('\n')[0], 10);
99
+ if (isNaN(pid)) {
100
+ return false;
101
+ }
102
+ return isProcessRunning(pid);
103
+ }
104
+ catch {
105
+ return false;
106
+ }
107
+ }
108
+ /**
109
+ * Read and parse a PID file.
110
+ * Returns null if file doesn't exist or is invalid.
111
+ *
112
+ * @param pidFile - Path to the PID file
113
+ * @returns Parsed PID data or null
114
+ */
115
+ async function readPidFile(pidFile) {
116
+ try {
117
+ const content = await fs_1.promises.readFile(pidFile, 'utf8');
118
+ const lines = content.trim().split('\n');
119
+ const pid = parseInt(lines[0], 10);
120
+ if (isNaN(pid)) {
121
+ return null;
122
+ }
123
+ return {
124
+ pid,
125
+ metadata: lines.slice(1),
126
+ };
127
+ }
128
+ catch {
129
+ return null;
130
+ }
131
+ }
132
+ /**
133
+ * Write a PID file with optional metadata lines.
134
+ *
135
+ * @param pidFile - Path to the PID file
136
+ * @param pid - Process ID to write
137
+ * @param metadata - Optional additional lines to write (e.g., port, binary path)
138
+ */
139
+ async function writePidFile(pidFile, pid, ...metadata) {
140
+ try {
141
+ const dir = path.dirname(pidFile);
142
+ await fs_1.promises.mkdir(dir, { recursive: true });
143
+ const content = [pid, ...metadata].join('\n') + '\n';
144
+ await fs_1.promises.writeFile(pidFile, content, 'utf8');
145
+ }
146
+ catch {
147
+ // Non-fatal: fast detection just won't work
148
+ }
149
+ }
150
+ /**
151
+ * Remove a PID file.
152
+ *
153
+ * @param pidFile - Path to the PID file
154
+ */
155
+ async function removePidFile(pidFile) {
156
+ try {
157
+ await fs_1.promises.unlink(pidFile);
158
+ }
159
+ catch {
160
+ // File may not exist
161
+ }
162
+ }
163
+ /**
164
+ * Check if PID file exists and process is running; clean up if stale.
165
+ *
166
+ * @param pidFile - Path to the PID file
167
+ * @returns The PID data if process is running, null otherwise
168
+ */
169
+ async function checkPidFileWithCleanup(pidFile) {
170
+ const data = await readPidFile(pidFile);
171
+ if (!data) {
172
+ return null;
173
+ }
174
+ if (!isProcessRunning(data.pid)) {
175
+ // Stale PID file, clean it up
176
+ await removePidFile(pidFile);
177
+ return null;
178
+ }
179
+ return data;
180
+ }
@@ -0,0 +1,258 @@
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.runPythonWithDeps = runPythonWithDeps;
40
+ const child_process_1 = require("child_process");
41
+ const fs_1 = require("fs");
42
+ const path = __importStar(require("path"));
43
+ const util_1 = require("util");
44
+ const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
45
+ const DEFAULT_MAX_BUFFER = 10 * 1024 * 1024;
46
+ function getDefaultInterpreterCandidates() {
47
+ return process.platform === 'win32' ? ['python', 'python3'] : ['python3', 'python'];
48
+ }
49
+ function getVenvPythonCandidates(venvDir) {
50
+ if (process.platform === 'win32') {
51
+ return [
52
+ path.join(venvDir, 'Scripts', 'python.exe'),
53
+ path.join(venvDir, 'Scripts', 'python'),
54
+ ];
55
+ }
56
+ return [
57
+ path.join(venvDir, 'bin', 'python3'),
58
+ path.join(venvDir, 'bin', 'python'),
59
+ ];
60
+ }
61
+ function isMissingExecutable(error) {
62
+ return Boolean(error?.code === 'ENOENT');
63
+ }
64
+ function hasExitCode(error) {
65
+ return typeof error?.code === 'number';
66
+ }
67
+ function looksLikeMissingInterpreterText(text, interpreter) {
68
+ const haystack = text.toLowerCase();
69
+ const needle = interpreter.toLowerCase();
70
+ return (haystack.includes('not found') || haystack.includes('no such file'))
71
+ && haystack.includes(needle);
72
+ }
73
+ function looksLikeMissingInterpreter(error, interpreter) {
74
+ const failure = error;
75
+ const stderr = typeof failure?.stderr === 'string' ? failure.stderr.toLowerCase() : '';
76
+ const message = typeof failure?.message === 'string' ? failure.message.toLowerCase() : '';
77
+ return looksLikeMissingInterpreterText(`${stderr}\n${message}`, interpreter);
78
+ }
79
+ function looksLikeMissingInterpreterResult(result, interpreter) {
80
+ return looksLikeMissingInterpreterText(result.stderr, interpreter);
81
+ }
82
+ /**
83
+ * Detect failures that originate from `uv` itself (interpreter discovery, environment
84
+ * setup, package resolution) rather than from the script it was asked to run. uv prints
85
+ * such errors as a line beginning with `error:` and never executes the target script, so
86
+ * its exit code is meaningless to callers expecting the script's own contract. When this
87
+ * happens we must fall back to the local venv instead of passing uv's exit code through.
88
+ *
89
+ * Example seen on Windows where uv scans an inaccessible system Python install:
90
+ * error: failed to open file `C:\ProgramData\miniconda3\Scripts\archspec.exe`: Access is denied. (os error 5)
91
+ */
92
+ function looksLikeUvOwnFailure(text) {
93
+ if (!text) {
94
+ return false;
95
+ }
96
+ // uv may colorize its output; strip ANSI escapes before matching.
97
+ // eslint-disable-next-line no-control-regex
98
+ const plain = text.replace(/\x1b\[[0-9;]*m/g, '');
99
+ return /^error:/m.test(plain);
100
+ }
101
+ function extractCommandFailure(error) {
102
+ return error;
103
+ }
104
+ async function executeCommand(command, args, execOptions, preserveNonZeroExit) {
105
+ try {
106
+ const result = await execFileAsync(command, args, {
107
+ timeout: execOptions.timeout,
108
+ maxBuffer: execOptions.maxBuffer ?? DEFAULT_MAX_BUFFER,
109
+ env: execOptions.env,
110
+ cwd: execOptions.cwd,
111
+ signal: execOptions.signal,
112
+ });
113
+ return {
114
+ stdout: result.stdout,
115
+ stderr: result.stderr,
116
+ code: 0,
117
+ };
118
+ }
119
+ catch (error) {
120
+ const failure = extractCommandFailure(error);
121
+ if (preserveNonZeroExit && typeof failure.code === 'number') {
122
+ return {
123
+ stdout: typeof failure.stdout === 'string' ? failure.stdout : '',
124
+ stderr: typeof failure.stderr === 'string' ? failure.stderr : '',
125
+ code: failure.code,
126
+ };
127
+ }
128
+ throw error;
129
+ }
130
+ }
131
+ async function tryUvRun(request, interpreters) {
132
+ const depArgs = request.deps.flatMap(dep => ['--with', dep]);
133
+ const preserveNonZeroExit = request.preserveNonZeroExit ?? false;
134
+ let sawUvBinary = false;
135
+ for (const interpreter of interpreters) {
136
+ try {
137
+ sawUvBinary = true;
138
+ const result = await executeCommand('uv', ['run', ...depArgs, interpreter, request.scriptPath, ...request.args], request.execOptions, preserveNonZeroExit);
139
+ if (result.code !== 0 && preserveNonZeroExit && looksLikeMissingInterpreterResult(result, interpreter)) {
140
+ request.log?.(`[Dashboard] uv could not find ${interpreter}; trying next interpreter`);
141
+ continue;
142
+ }
143
+ if (result.code !== 0 && looksLikeUvOwnFailure(result.stderr)) {
144
+ request.log?.('[Dashboard] uv failed before running the script; falling back to local venv');
145
+ return undefined;
146
+ }
147
+ return result;
148
+ }
149
+ catch (error) {
150
+ if (isMissingExecutable(error)) {
151
+ request.log?.('[Dashboard] uv not found; falling back to local venv');
152
+ return undefined;
153
+ }
154
+ if (hasExitCode(error) && looksLikeMissingInterpreter(error, interpreter)) {
155
+ request.log?.(`[Dashboard] uv could not find ${interpreter}; trying next interpreter`);
156
+ continue;
157
+ }
158
+ if (hasExitCode(error) && looksLikeUvOwnFailure(extractCommandFailure(error).stderr)) {
159
+ request.log?.('[Dashboard] uv failed before running the script; falling back to local venv');
160
+ return undefined;
161
+ }
162
+ throw error;
163
+ }
164
+ }
165
+ if (sawUvBinary) {
166
+ request.log?.('[Dashboard] uv run failed for available interpreter candidates; falling back to local venv');
167
+ }
168
+ return undefined;
169
+ }
170
+ function findExistingVenvPython(venvDir) {
171
+ const candidates = getVenvPythonCandidates(venvDir);
172
+ for (const candidate of candidates) {
173
+ if ((0, fs_1.existsSync)(candidate)) {
174
+ return candidate;
175
+ }
176
+ }
177
+ return undefined;
178
+ }
179
+ async function ensureVenv(request, venvDir, interpreters) {
180
+ let venvPython = findExistingVenvPython(venvDir);
181
+ if (venvPython) {
182
+ return venvPython;
183
+ }
184
+ request.log?.(`[Dashboard] Creating Python venv at ${venvDir}`);
185
+ let lastError;
186
+ for (const interpreter of interpreters) {
187
+ try {
188
+ await executeCommand(interpreter, ['-m', 'venv', venvDir], {
189
+ timeout: request.execOptions.timeout,
190
+ env: request.execOptions.env,
191
+ cwd: request.execOptions.cwd,
192
+ signal: request.execOptions.signal,
193
+ }, false);
194
+ venvPython = findExistingVenvPython(venvDir);
195
+ if (venvPython) {
196
+ return venvPython;
197
+ }
198
+ }
199
+ catch (error) {
200
+ lastError = error;
201
+ if (isMissingExecutable(error)) {
202
+ continue;
203
+ }
204
+ throw error;
205
+ }
206
+ }
207
+ if (lastError) {
208
+ throw lastError;
209
+ }
210
+ throw new Error('Unable to create Python virtual environment: no usable interpreter found');
211
+ }
212
+ function toMissingDepsMessage(deps, interpreters) {
213
+ const missing = deps.length > 0 ? deps.join(', ') : 'required packages';
214
+ const preferred = interpreters[0] ?? 'python';
215
+ const installCommand = deps.length > 0
216
+ ? `${preferred} -m pip install ${deps.join(' ')}`
217
+ : `${preferred} -m pip install <packages>`;
218
+ return `Missing Python dependency (${missing}). Install uv (recommended: https://docs.astral.sh/uv/) or run: ${installCommand}`;
219
+ }
220
+ async function runPythonWithDeps(request) {
221
+ const interpreters = request.interpreterCandidates && request.interpreterCandidates.length > 0
222
+ ? request.interpreterCandidates
223
+ : getDefaultInterpreterCandidates();
224
+ const preserveNonZeroExit = request.preserveNonZeroExit ?? false;
225
+ const uvResult = await tryUvRun(request, interpreters);
226
+ if (uvResult) {
227
+ return uvResult;
228
+ }
229
+ const venvDir = path.join(request.analyticsRoot, '.venv');
230
+ const venvPython = await ensureVenv(request, venvDir, interpreters);
231
+ try {
232
+ if (request.deps.length > 0) {
233
+ const pipArgs = request.requirementsPath && (0, fs_1.existsSync)(request.requirementsPath)
234
+ ? ['-m', 'pip', 'install', '--quiet', '-r', request.requirementsPath]
235
+ : ['-m', 'pip', 'install', '--quiet', ...request.deps];
236
+ await executeCommand(venvPython, pipArgs, {
237
+ timeout: Math.max(request.execOptions.timeout, 120_000),
238
+ env: request.execOptions.env,
239
+ cwd: request.execOptions.cwd,
240
+ signal: request.execOptions.signal,
241
+ maxBuffer: request.execOptions.maxBuffer,
242
+ }, false);
243
+ request.log?.(`[Dashboard] Python venv deps ready: ${request.deps.join(', ')}`);
244
+ }
245
+ return await executeCommand(venvPython, [request.scriptPath, ...request.args], request.execOptions, preserveNonZeroExit);
246
+ }
247
+ catch (error) {
248
+ const failure = extractCommandFailure(error);
249
+ const errMsg = [
250
+ typeof failure.message === 'string' ? failure.message : '',
251
+ typeof failure.stderr === 'string' ? failure.stderr : '',
252
+ ].join('\n');
253
+ if (errMsg.includes('ModuleNotFoundError') || errMsg.includes('No module named')) {
254
+ throw new Error(toMissingDepsMessage(request.deps, interpreters));
255
+ }
256
+ throw error;
257
+ }
258
+ }
@@ -0,0 +1,168 @@
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.getNodeBinaryCandidates = getNodeBinaryCandidates;
40
+ exports.resolveNodeBinary = resolveNodeBinary;
41
+ exports.prependPathDir = prependPathDir;
42
+ /**
43
+ * Resolve a Node.js binary for custom-engine subprocesses.
44
+ * Mirrors Agent Anywhere / gateway setup precedence:
45
+ * NODE_BIN → gateway install.json nodePath → ~/.agenthippo/tools/node → PATH/common paths → npm_node_execpath (last resort).
46
+ *
47
+ * Rationale:
48
+ * - In IDE hosts (VS Code/Cursor) on Windows, `npm_node_execpath` can point at a bundled helper
49
+ * `node.exe` path that is missing or unstable across updates. Treat it as a last resort.
50
+ * - Prefer a real Node binary (or managed gateway bootstrap node) that is known to spawn reliably.
51
+ */
52
+ const fs = __importStar(require("fs"));
53
+ const os = __importStar(require("os"));
54
+ const path = __importStar(require("path"));
55
+ const binary_1 = require("./binary");
56
+ const IS_WINDOWS = process.platform === 'win32';
57
+ const NODE_FILE = IS_WINDOWS ? 'node.exe' : 'node';
58
+ const GATEWAY_INSTALL_MANIFEST = path.join(os.homedir(), '.agenthippo', 'gateway', 'install.json');
59
+ const BOOTSTRAP_NODE_ROOT = path.join(os.homedir(), '.agenthippo', 'tools', 'node');
60
+ function isExecutable(filePath) {
61
+ try {
62
+ const mode = IS_WINDOWS ? fs.constants.F_OK : fs.constants.X_OK;
63
+ fs.accessSync(filePath, mode);
64
+ return true;
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ function readGatewayInstallNodePath() {
71
+ try {
72
+ if (!fs.existsSync(GATEWAY_INSTALL_MANIFEST)) {
73
+ return undefined;
74
+ }
75
+ const raw = fs.readFileSync(GATEWAY_INSTALL_MANIFEST, 'utf8').replace(/^\uFEFF/, '');
76
+ const parsed = JSON.parse(raw);
77
+ const candidate = parsed.nodePath?.trim();
78
+ return candidate && isExecutable(candidate) ? candidate : undefined;
79
+ }
80
+ catch {
81
+ return undefined;
82
+ }
83
+ }
84
+ /** Same scan as setup-gateway.sh: find bootstrap node under .agenthippo/tools/node (newest first). */
85
+ function listBootstrapNodePaths() {
86
+ if (!fs.existsSync(BOOTSTRAP_NODE_ROOT)) {
87
+ return [];
88
+ }
89
+ const found = [];
90
+ const scan = (dir, depth) => {
91
+ if (depth > 4) {
92
+ return;
93
+ }
94
+ let entries;
95
+ try {
96
+ entries = fs.readdirSync(dir, { withFileTypes: true });
97
+ }
98
+ catch {
99
+ return;
100
+ }
101
+ for (const entry of entries) {
102
+ const full = path.join(dir, entry.name);
103
+ if (entry.isDirectory()) {
104
+ scan(full, depth + 1);
105
+ }
106
+ else if (entry.isFile() && entry.name === NODE_FILE && dir.endsWith(`${path.sep}bin`)) {
107
+ found.push(full);
108
+ }
109
+ }
110
+ };
111
+ scan(BOOTSTRAP_NODE_ROOT, 0);
112
+ return found.sort().reverse();
113
+ }
114
+ function uniqueExisting(paths) {
115
+ const seen = new Set();
116
+ const out = [];
117
+ for (const candidate of paths) {
118
+ const normalized = path.resolve(candidate);
119
+ if (seen.has(normalized) || !isExecutable(normalized)) {
120
+ continue;
121
+ }
122
+ seen.add(normalized);
123
+ out.push(normalized);
124
+ }
125
+ return out;
126
+ }
127
+ /**
128
+ * Ordered Node binary candidates (first match wins when passed to pickNodeBinary).
129
+ */
130
+ function getNodeBinaryCandidates() {
131
+ const candidates = [];
132
+ if (process.env.NODE_BIN?.trim()) {
133
+ candidates.push(process.env.NODE_BIN.trim());
134
+ }
135
+ const gatewayNode = readGatewayInstallNodePath();
136
+ if (gatewayNode) {
137
+ candidates.push(gatewayNode);
138
+ }
139
+ candidates.push(...listBootstrapNodePaths());
140
+ // npm_node_execpath is frequently set inside Electron-based IDE hosts; treat as a last resort.
141
+ if (process.env.npm_node_execpath?.trim()) {
142
+ candidates.push(process.env.npm_node_execpath.trim());
143
+ }
144
+ return uniqueExisting(candidates);
145
+ }
146
+ /**
147
+ * Resolve Node for spawning custom-engine runner. Falls back to PATH via findBinaryCached.
148
+ */
149
+ async function resolveNodeBinary() {
150
+ const explicit = getNodeBinaryCandidates();
151
+ if (explicit.length > 0) {
152
+ return explicit[0];
153
+ }
154
+ const fromPath = await (0, binary_1.findBinaryCached)('node', (0, binary_1.getCommonBinaryPaths)('node'));
155
+ if (fromPath) {
156
+ return fromPath;
157
+ }
158
+ return 'node';
159
+ }
160
+ /** Prepend the Node binary's bin directory to PATH (for child ripgrep/npm tooling). */
161
+ function prependPathDir(env, dir) {
162
+ if (!dir?.trim()) {
163
+ return;
164
+ }
165
+ const entry = dir.trim();
166
+ const current = env.PATH?.trim();
167
+ env.PATH = current ? `${entry}${path.delimiter}${current}` : entry;
168
+ }
@@ -0,0 +1,83 @@
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.augmentPathForTools = augmentPathForTools;
40
+ const os = __importStar(require("os"));
41
+ const path = __importStar(require("path"));
42
+ /**
43
+ * Prepend common tool binary locations to PATH.
44
+ * When VS Code is launched from the Dock/Finder/Start menu (not a terminal),
45
+ * it inherits a minimal PATH that often excludes ~/.local/bin, Homebrew, etc.
46
+ * This ensures uv, python3, pip, and other tools are discoverable.
47
+ */
48
+ function augmentPathForTools(currentPath) {
49
+ const home = os.homedir();
50
+ if (!home) {
51
+ return currentPath;
52
+ }
53
+ const sep = path.delimiter;
54
+ const extraDirs = getCandidateDirs(home);
55
+ const existing = new Set(currentPath.split(sep).filter(Boolean));
56
+ const toAdd = extraDirs.filter(d => d && !existing.has(d));
57
+ if (toAdd.length === 0) {
58
+ return currentPath;
59
+ }
60
+ return currentPath ? [...toAdd, currentPath].join(sep) : toAdd.join(sep);
61
+ }
62
+ function getCandidateDirs(home) {
63
+ if (process.platform === 'win32') {
64
+ const localAppData = process.env.LOCALAPPDATA ?? path.join(home, 'AppData', 'Local');
65
+ const programFiles = process.env.ProgramFiles ?? 'C:\\Program Files';
66
+ return [
67
+ path.join(home, '.local', 'bin'), // uv official installer
68
+ path.join(home, '.cargo', 'bin'), // cargo install
69
+ path.join(localAppData, 'Microsoft', 'WinGet', 'Links'), // winget shims
70
+ path.join(localAppData, 'Programs', 'uv'), // uv via some installers
71
+ path.join(home, 'scoop', 'shims'), // scoop
72
+ path.join(programFiles, 'uv'),
73
+ ];
74
+ }
75
+ return [
76
+ path.join(home, '.local', 'bin'), // pip install --user, uv official installer
77
+ path.join(home, '.cargo', 'bin'), // cargo install
78
+ path.join(home, '.uv', 'bin'), // uv self-install
79
+ '/opt/homebrew/bin', // Homebrew (Apple Silicon)
80
+ '/usr/local/bin', // Homebrew (Intel Mac), system tools
81
+ '/home/linuxbrew/.linuxbrew/bin', // Linuxbrew
82
+ ];
83
+ }