@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,169 @@
1
+ #
2
+ # Analytics -- Start/Stop OTEL Collector (Windows)
3
+ #
4
+ # Usage:
5
+ # .\start-analytics.ps1 # Start collector
6
+ # .\start-analytics.ps1 -ForceDaemon # Start (kill orphans first)
7
+ # .\start-analytics.ps1 -Stop # Stop collector
8
+ # .\start-analytics.ps1 -Status # Check status
9
+ #
10
+
11
+ param(
12
+ [switch]$ForceDaemon,
13
+ [switch]$Stop,
14
+ [switch]$Status
15
+ )
16
+
17
+ $ErrorActionPreference = "Stop"
18
+
19
+ $AgentHomeDir = if ($env:AGENT_HOME_DIR) { $env:AGENT_HOME_DIR } else { Join-Path $env:USERPROFILE ".agent-hippo" }
20
+ $AnalyticsDir = Join-Path $AgentHomeDir "analytics"
21
+ $BinDir = Join-Path $AgentHomeDir "bin"
22
+ $PidFile = Join-Path $AnalyticsDir "otelcol.pid"
23
+ $ConfigFile = Join-Path $AnalyticsDir "config\otel-collector.yaml"
24
+
25
+ function Log-Info { param([string]$msg) Write-Host ("[INFO] {0}" -f $msg) -ForegroundColor Blue }
26
+ function Log-Success { param([string]$msg) Write-Host ("[OK] {0}" -f $msg) -ForegroundColor Green }
27
+ function Log-Warn { param([string]$msg) Write-Host ("[WARN] {0}" -f $msg) -ForegroundColor Yellow }
28
+ function Log-Error { param([string]$msg) Write-Host ("[ERROR] {0}" -f $msg) -ForegroundColor Red }
29
+
30
+ function Get-OtelBinary {
31
+ # Check system PATH
32
+ $systemOtel = Get-Command otelcol-contrib -ErrorAction SilentlyContinue
33
+ if ($systemOtel) { return $systemOtel.Source }
34
+
35
+ # Check local bin
36
+ $localOtel = Join-Path $BinDir "otelcol-contrib.exe"
37
+ if (Test-Path $localOtel) { return $localOtel }
38
+
39
+ return $null
40
+ }
41
+
42
+ function Get-RunningPid {
43
+ if (-not (Test-Path $PidFile)) { return $null }
44
+ $content = Get-Content $PidFile -ErrorAction SilentlyContinue | Select-Object -First 1
45
+ $otelPid = [int]0
46
+ if ([int]::TryParse($content, [ref]$otelPid)) {
47
+ try {
48
+ $proc = Get-Process -Id $otelPid -ErrorAction SilentlyContinue
49
+ if ($proc) { return $otelPid }
50
+ } catch {}
51
+ }
52
+ # Stale PID file
53
+ Remove-Item $PidFile -Force -ErrorAction SilentlyContinue
54
+ return $null
55
+ }
56
+
57
+ function Get-MatchingCollectorProcesses {
58
+ $normalizedConfig = [System.IO.Path]::GetFullPath($ConfigFile).ToLowerInvariant()
59
+ return @(Get-CimInstance Win32_Process -Filter "Name = 'otelcol-contrib.exe'" -ErrorAction SilentlyContinue | Where-Object {
60
+ $commandLine = $_.CommandLine
61
+ $commandLine -and $commandLine.ToLowerInvariant().Contains($normalizedConfig)
62
+ })
63
+ }
64
+
65
+ # --- Status ---
66
+ if ($Status) {
67
+ $otelPid = Get-RunningPid
68
+ if ($otelPid) {
69
+ Log-Success ("OTEL Collector running (PID: {0})" -f $otelPid)
70
+ } else {
71
+ Log-Warn "OTEL Collector not running"
72
+ }
73
+ exit 0
74
+ }
75
+
76
+ # --- Stop ---
77
+ if ($Stop) {
78
+ $stopped = $false
79
+ $otelPid = Get-RunningPid
80
+ if ($otelPid) {
81
+ Log-Info ("Stopping OTEL Collector (PID: {0})..." -f $otelPid)
82
+ Stop-Process -Id $otelPid -Force -ErrorAction SilentlyContinue
83
+ Remove-Item $PidFile -Force -ErrorAction SilentlyContinue
84
+ $stopped = $true
85
+ }
86
+
87
+ # Also stop any collector that is using this home's config file.
88
+ $procs = @(Get-MatchingCollectorProcesses)
89
+ if ($procs) {
90
+ $procs | ForEach-Object {
91
+ if ($_.ProcessId -ne $otelPid) {
92
+ Log-Info ("Stopping orphaned OTEL Collector (PID: {0})..." -f $_.ProcessId)
93
+ Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue
94
+ $stopped = $true
95
+ }
96
+ }
97
+ }
98
+ Remove-Item $PidFile -Force -ErrorAction SilentlyContinue
99
+
100
+ if ($stopped) {
101
+ Log-Success "OTEL Collector stopped"
102
+ } else {
103
+ Log-Info "OTEL Collector not running"
104
+ }
105
+ exit 0
106
+ }
107
+
108
+ # --- Start ---
109
+ if ($ForceDaemon) {
110
+ # Kill any tracked or orphaned collector for this Spotlight config first.
111
+ $existingPid = Get-RunningPid
112
+ if ($existingPid) {
113
+ Log-Info "Stopping existing OTEL Collector (PID: $existingPid)..."
114
+ Stop-Process -Id $existingPid -Force -ErrorAction SilentlyContinue
115
+ Start-Sleep 1
116
+ }
117
+
118
+ $matchingCollectors = @(Get-MatchingCollectorProcesses)
119
+ foreach ($collector in $matchingCollectors) {
120
+ if ($collector.ProcessId -eq $existingPid) {
121
+ continue
122
+ }
123
+ Log-Info "Stopping orphaned OTEL Collector (PID: $($collector.ProcessId))..."
124
+ Stop-Process -Id $collector.ProcessId -Force -ErrorAction SilentlyContinue
125
+ }
126
+ if ($matchingCollectors.Count -gt 0) {
127
+ Start-Sleep 1
128
+ }
129
+ Remove-Item $PidFile -Force -ErrorAction SilentlyContinue
130
+ }
131
+
132
+ $otelBin = Get-OtelBinary
133
+ if (-not $otelBin) {
134
+ Log-Error "OTEL Collector not found. Run 'Setup Analytics' first."
135
+ exit 1
136
+ }
137
+
138
+ if (-not (Test-Path $ConfigFile)) {
139
+ Log-Error ("OTEL Collector config not found at {0}" -f $ConfigFile)
140
+ Log-Info "Run 'Setup Analytics' to create the configuration."
141
+ exit 1
142
+ }
143
+
144
+ # Create traces directory
145
+ New-Item -ItemType Directory -Path (Join-Path $AnalyticsDir "traces") -Force | Out-Null
146
+
147
+ Log-Info "Starting OTEL Collector..."
148
+ $proc = Start-Process -FilePath $otelBin `
149
+ -ArgumentList "--config", $ConfigFile `
150
+ -WindowStyle Hidden `
151
+ -PassThru `
152
+ -RedirectStandardOutput (Join-Path $AnalyticsDir "otelcol.log") `
153
+ -RedirectStandardError (Join-Path $AnalyticsDir "otelcol.error.log")
154
+
155
+ # Write PID file
156
+ Set-Content -Path $PidFile -Value $proc.Id
157
+
158
+ Start-Sleep 2
159
+
160
+ # Verify it's still running
161
+ try {
162
+ $check = Get-Process -Id $proc.Id -ErrorAction Stop
163
+ Log-Success "OTEL Collector started (PID: $($proc.Id))"
164
+ } catch {
165
+ $errorLog = Join-Path $AnalyticsDir "otelcol.error.log"
166
+ Log-Error ("OTEL Collector failed to start. Check {0}" -f $errorLog)
167
+ Remove-Item $PidFile -Force -ErrorAction SilentlyContinue
168
+ exit 1
169
+ }
@@ -0,0 +1,323 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Copyright (c) AgentHippo.ai. All rights reserved.
4
+ #
5
+ # Start AgentHippo Analytics Stack
6
+ # Runs OTEL Collector in background to receive traces from LiteLLM
7
+ #
8
+ # Usage:
9
+ # ./start-analytics.sh # Start in foreground
10
+ # ./start-analytics.sh --daemon # Start in background
11
+ # ./start-analytics.sh --stop # Stop background process
12
+ # ./start-analytics.sh --status # Check if running
13
+ #
14
+
15
+ set -euo pipefail
16
+
17
+ # AGENT_HOME_DIR is set by the extension with the branded directory path
18
+ # Falls back to ~/.agent-hippo for manual script runs
19
+ AGENT_HOME_DIR="${AGENT_HOME_DIR:-$HOME/.agent-hippo}"
20
+ ANALYTICS_DIR="${AGENT_HOME_DIR}/analytics"
21
+ BIN_DIR="${AGENT_HOME_DIR}/bin"
22
+ PID_FILE="${ANALYTICS_DIR}/otelcol.pid"
23
+ LOG_FILE="${ANALYTICS_DIR}/otelcol.log"
24
+ CONFIG_FILE="${ANALYTICS_DIR}/config/otel-collector.yaml"
25
+
26
+ # Colors
27
+ RED='\033[0;31m'
28
+ GREEN='\033[0;32m'
29
+ YELLOW='\033[1;33m'
30
+ BLUE='\033[0;34m'
31
+ NC='\033[0m'
32
+
33
+ log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
34
+ log_success() { echo -e "${GREEN}[OK]${NC} $1"; }
35
+ log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
36
+ log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
37
+
38
+ # Find otelcol-contrib binary
39
+ find_otelcol() {
40
+ if command -v otelcol-contrib &> /dev/null; then
41
+ echo "otelcol-contrib"
42
+ elif [[ -x "${BIN_DIR}/otelcol-contrib" ]]; then
43
+ echo "${BIN_DIR}/otelcol-contrib"
44
+ else
45
+ log_error "OTEL Collector not found. Run install-analytics.sh first."
46
+ exit 1
47
+ fi
48
+ }
49
+
50
+ # Check if our tracked process is running
51
+ is_running() {
52
+ if [[ -f "${PID_FILE}" ]]; then
53
+ local pid=$(cat "${PID_FILE}")
54
+ if kill -0 "${pid}" 2>/dev/null; then
55
+ return 0
56
+ else
57
+ # PID file exists but process is dead - clean up stale PID file
58
+ rm -f "${PID_FILE}"
59
+ fi
60
+ fi
61
+ return 1
62
+ }
63
+
64
+ # Check if port is in use (returns 0 if in use)
65
+ port_in_use() {
66
+ local port=$1
67
+ if command -v lsof &> /dev/null; then
68
+ lsof -i :"${port}" &>/dev/null
69
+ elif command -v ss &> /dev/null; then
70
+ ss -ltn | grep -q ":${port} "
71
+ elif command -v netstat &> /dev/null; then
72
+ netstat -an | grep -q "[:.]${port} .*LISTEN"
73
+ else
74
+ # Can't check, assume not in use
75
+ return 1
76
+ fi
77
+ }
78
+
79
+ # Find orphan otelcol processes (not tracked by our PID file)
80
+ find_orphan_otelcol() {
81
+ local our_pid=""
82
+ if [[ -f "${PID_FILE}" ]]; then
83
+ our_pid=$(cat "${PID_FILE}")
84
+ fi
85
+
86
+ # Find all otelcol-contrib processes
87
+ local pids=$(pgrep -f "otelcol-contrib" 2>/dev/null || true)
88
+
89
+ for pid in $pids; do
90
+ if [[ -n "$our_pid" && "$pid" == "$our_pid" ]]; then
91
+ continue # Skip our tracked process
92
+ fi
93
+ # Return first orphan found
94
+ echo "$pid"
95
+ return 0
96
+ done
97
+ return 1
98
+ }
99
+
100
+ # Kill orphan collector if user confirms
101
+ handle_orphan_collector() {
102
+ local orphan_pid=$1
103
+ local orphan_cmdline=$(ps -p "$orphan_pid" -o command= 2>/dev/null || echo "unknown")
104
+
105
+ log_warn "Found orphan OTEL Collector (PID: ${orphan_pid})"
106
+ log_warn "Command: ${orphan_cmdline}"
107
+
108
+ if [[ "${FORCE:-}" == "1" ]] || [[ "${1:-}" == "--force" ]]; then
109
+ log_info "Killing orphan process..."
110
+ kill "${orphan_pid}" 2>/dev/null || true
111
+ sleep 1
112
+ if kill -0 "${orphan_pid}" 2>/dev/null; then
113
+ kill -9 "${orphan_pid}" 2>/dev/null || true
114
+ fi
115
+ return 0
116
+ fi
117
+
118
+ log_error "Port 4317 is in use by an orphan collector."
119
+ log_error "This may be a leftover from a previous installation."
120
+ echo ""
121
+ echo "To fix, run one of:"
122
+ echo " kill ${orphan_pid} # Kill the orphan process"
123
+ echo " FORCE=1 $0 --daemon # Auto-kill and restart"
124
+ echo ""
125
+ return 1
126
+ }
127
+
128
+ # Start in foreground
129
+ start_foreground() {
130
+ local otelcol=$(find_otelcol)
131
+
132
+ log_info "Starting OTEL Collector (foreground)..."
133
+ log_info "Config: ${CONFIG_FILE}"
134
+ log_info "Traces: ${ANALYTICS_DIR}/traces/"
135
+ log_info "OTLP endpoint: http://127.0.0.1:4317 (gRPC), http://127.0.0.1:4318 (HTTP)"
136
+ echo ""
137
+ log_info "Press Ctrl+C to stop"
138
+ echo ""
139
+
140
+ exec "${otelcol}" --config "${CONFIG_FILE}"
141
+ }
142
+
143
+ # Start in background
144
+ start_daemon() {
145
+ if is_running; then
146
+ log_warn "OTEL Collector already running (PID: $(cat ${PID_FILE}))"
147
+ return 0
148
+ fi
149
+
150
+ local otelcol=$(find_otelcol)
151
+
152
+ # Check for port conflicts before starting
153
+ if port_in_use 4317; then
154
+ local orphan_pid=$(find_orphan_otelcol || true)
155
+ if [[ -n "$orphan_pid" ]]; then
156
+ if [[ "${FORCE:-}" == "1" ]]; then
157
+ log_warn "Port 4317 in use by orphan process (PID: ${orphan_pid}). Killing..."
158
+ kill "${orphan_pid}" 2>/dev/null || true
159
+ sleep 1
160
+ # Force kill if still running
161
+ if kill -0 "${orphan_pid}" 2>/dev/null; then
162
+ kill -9 "${orphan_pid}" 2>/dev/null || true
163
+ sleep 1
164
+ fi
165
+ else
166
+ handle_orphan_collector "$orphan_pid"
167
+ exit 1
168
+ fi
169
+ else
170
+ log_error "Port 4317 is in use by another process."
171
+ log_error "Check with: lsof -i :4317"
172
+ exit 1
173
+ fi
174
+ fi
175
+
176
+ # Ensure directories exist
177
+ mkdir -p "${ANALYTICS_DIR}/traces"
178
+ mkdir -p "$(dirname "${LOG_FILE}")"
179
+
180
+ log_info "Starting OTEL Collector (daemon)..."
181
+
182
+ # Export AGENT_HOME_DIR for the config file's environment variable substitution
183
+ export AGENT_HOME_DIR
184
+ nohup "${otelcol}" --config "${CONFIG_FILE}" > "${LOG_FILE}" 2>&1 &
185
+ echo $! > "${PID_FILE}"
186
+
187
+ sleep 1
188
+
189
+ if is_running; then
190
+ log_success "OTEL Collector started (PID: $(cat ${PID_FILE}))"
191
+ log_info "Log: ${LOG_FILE}"
192
+ log_info "OTLP endpoint: http://127.0.0.1:4318 (HTTP), http://127.0.0.1:4317 (gRPC)"
193
+ else
194
+ log_error "Failed to start OTEL Collector. Check ${LOG_FILE}"
195
+ # Show last few lines of log for debugging
196
+ if [[ -f "${LOG_FILE}" ]]; then
197
+ echo ""
198
+ log_info "Last 5 lines of log:"
199
+ tail -5 "${LOG_FILE}" 2>/dev/null || true
200
+ fi
201
+ exit 1
202
+ fi
203
+ }
204
+
205
+ # Stop daemon
206
+ stop_daemon() {
207
+ local stopped=0
208
+
209
+ # Stop tracked process
210
+ if is_running; then
211
+ local pid=$(cat "${PID_FILE}")
212
+ log_info "Stopping OTEL Collector (PID: ${pid})..."
213
+ kill "${pid}" 2>/dev/null || true
214
+ rm -f "${PID_FILE}"
215
+ stopped=1
216
+ fi
217
+
218
+ # Also check for orphan processes
219
+ local orphan_pid=$(find_orphan_otelcol || true)
220
+ if [[ -n "$orphan_pid" ]]; then
221
+ log_info "Stopping orphan OTEL Collector (PID: ${orphan_pid})..."
222
+ kill "${orphan_pid}" 2>/dev/null || true
223
+ sleep 1
224
+ # Force kill if still running
225
+ if kill -0 "${orphan_pid}" 2>/dev/null; then
226
+ kill -9 "${orphan_pid}" 2>/dev/null || true
227
+ fi
228
+ stopped=1
229
+ fi
230
+
231
+ if [[ $stopped -eq 1 ]]; then
232
+ log_success "OTEL Collector stopped"
233
+ else
234
+ log_warn "OTEL Collector not running"
235
+ fi
236
+ }
237
+
238
+ # Show status
239
+ show_status() {
240
+ echo ""
241
+ echo "🦛 AgentHippo Analytics Status"
242
+ echo "=============================="
243
+ echo ""
244
+
245
+ # OTEL Collector status
246
+ if is_running; then
247
+ echo -e "OTEL Collector: ${GREEN}Running${NC} (PID: $(cat ${PID_FILE}))"
248
+ echo " OTLP gRPC: http://127.0.0.1:4317"
249
+ echo " OTLP HTTP: http://127.0.0.1:4318"
250
+ else
251
+ # Check for orphan processes
252
+ local orphan_pid=$(find_orphan_otelcol || true)
253
+ if [[ -n "$orphan_pid" ]]; then
254
+ echo -e "OTEL Collector: ${YELLOW}Orphan${NC} (PID: ${orphan_pid})"
255
+ echo -e " ${YELLOW}âš  Not managed by this installation${NC}"
256
+ local orphan_cmd=$(ps -p "$orphan_pid" -o command= 2>/dev/null | head -c 60 || echo "unknown")
257
+ echo " Command: ${orphan_cmd}..."
258
+ echo ""
259
+ echo " To take control, run:"
260
+ echo " kill ${orphan_pid} && $0 --daemon"
261
+ echo " Or auto-fix with:"
262
+ echo " FORCE=1 $0 --daemon"
263
+ elif port_in_use 4317; then
264
+ echo -e "OTEL Collector: ${RED}Port Conflict${NC}"
265
+ echo -e " ${RED}âš  Port 4317 in use by another process${NC}"
266
+ echo " Check with: lsof -i :4317"
267
+ else
268
+ echo -e "OTEL Collector: ${RED}Stopped${NC}"
269
+ fi
270
+ fi
271
+ echo ""
272
+
273
+ # Trace files
274
+ local trace_count=$(find "${ANALYTICS_DIR}/traces" -name "*.jsonl" 2>/dev/null | wc -l | tr -d ' ')
275
+ local trace_size=$(du -sh "${ANALYTICS_DIR}/traces" 2>/dev/null | cut -f1 || echo "0")
276
+ echo "Traces:"
277
+ echo " Directory: ${ANALYTICS_DIR}/traces/"
278
+ echo " Files: ${trace_count}"
279
+ echo " Size: ${trace_size}"
280
+ echo ""
281
+
282
+ # DuckDB availability
283
+ if command -v duckdb &> /dev/null || [[ -x "${BIN_DIR}/duckdb" ]]; then
284
+ echo -e "DuckDB: ${GREEN}Available${NC}"
285
+ else
286
+ echo -e "DuckDB: ${YELLOW}Not installed${NC}"
287
+ fi
288
+ echo ""
289
+ }
290
+
291
+ # Main
292
+ case "${1:-}" in
293
+ --daemon|-d)
294
+ start_daemon
295
+ ;;
296
+ --force-daemon)
297
+ FORCE=1 start_daemon
298
+ ;;
299
+ --stop)
300
+ stop_daemon
301
+ ;;
302
+ --status|-s)
303
+ show_status
304
+ ;;
305
+ --help|-h)
306
+ echo "Usage: $0 [--daemon|--stop|--status]"
307
+ echo ""
308
+ echo "Options:"
309
+ echo " (none) Start in foreground"
310
+ echo " --daemon Start in background"
311
+ echo " --force-daemon Start in background, killing orphan processes if needed"
312
+ echo " --stop Stop background process"
313
+ echo " --status Show status"
314
+ echo ""
315
+ echo "Environment:"
316
+ echo " AGENT_HOME_DIR Base directory (default: ~/.agent-hippo)"
317
+ echo " FORCE=1 Auto-kill orphan processes on port conflict"
318
+ ;;
319
+ *)
320
+ start_foreground
321
+ ;;
322
+ esac
323
+