@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,422 @@
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.IndexingService = void 0;
40
+ const vscode = __importStar(require("vscode"));
41
+ const path = __importStar(require("path"));
42
+ const fs_1 = require("fs");
43
+ const pythonRunner_1 = require("../../utils/pythonRunner");
44
+ const toolPath_1 = require("../../utils/toolPath");
45
+ /**
46
+ * Manages background JSONL → DuckDB indexing.
47
+ *
48
+ * Key responsibilities:
49
+ * - Watch traces directory for new JSONL files
50
+ * - Debounce indexing triggers after file changes (default 15s)
51
+ * - Spawn background indexing subprocess with resource limits
52
+ * - Track indexing state and emit progress updates
53
+ * - Persist state to disk (.duckdb-index.json)
54
+ * - Gracefully handle errors and fall back to JSONL
55
+ */
56
+ class IndexingService {
57
+ tracesDir;
58
+ outputChannel;
59
+ performanceMonitor;
60
+ static EXIT_CODE_ALREADY_RUNNING = 3;
61
+ watcher;
62
+ indexingProcess;
63
+ retryTimeout;
64
+ indexProgress = { status: 'idle', percent: 0 };
65
+ indexState = {
66
+ version: 1,
67
+ indexed: false,
68
+ lastMtime: 0,
69
+ duckdbPath: '',
70
+ };
71
+ progressChangeEmitter = new vscode.EventEmitter();
72
+ indexCompleteEmitter = new vscode.EventEmitter();
73
+ indexErrorEmitter = new vscode.EventEmitter();
74
+ disposables = [];
75
+ failureCount = 0;
76
+ static MAX_FAILURES = 3;
77
+ constructor(tracesDir, outputChannel, performanceMonitor) {
78
+ this.tracesDir = tracesDir;
79
+ this.outputChannel = outputChannel;
80
+ this.performanceMonitor = performanceMonitor;
81
+ this.indexState.duckdbPath = path.join(tracesDir, 'analytics.duckdb');
82
+ this.disposables.push(this.progressChangeEmitter, this.indexCompleteEmitter, this.indexErrorEmitter);
83
+ }
84
+ /**
85
+ * Initialize indexing service: load state, start file watcher, check if re-indexing needed.
86
+ */
87
+ async initialize() {
88
+ try {
89
+ // Load persisted state
90
+ await this.loadIndexState();
91
+ // Start watching traces directory
92
+ this.startFileWatcher();
93
+ // Check if indexing needed on startup
94
+ await this.checkAndScheduleIndexing();
95
+ }
96
+ catch (error) {
97
+ this.outputChannel.appendLine(`[Dashboard] Indexing initialization failed: ${error}`);
98
+ }
99
+ }
100
+ /**
101
+ * Load persisted indexing state from disk.
102
+ */
103
+ async loadIndexState() {
104
+ const stateFile = path.join(this.tracesDir, '.duckdb-index.json');
105
+ try {
106
+ const content = await fs_1.promises.readFile(stateFile, 'utf-8');
107
+ const saved = JSON.parse(content);
108
+ if (saved.version === 1) {
109
+ this.indexState = {
110
+ version: 1,
111
+ indexed: saved.indexed ?? false,
112
+ lastMtime: saved.lastMtime ?? 0,
113
+ duckdbPath: saved.duckdbPath || this.indexState.duckdbPath,
114
+ indexedAt: saved.indexedAt,
115
+ };
116
+ }
117
+ }
118
+ catch {
119
+ // File doesn't exist or is invalid; use defaults
120
+ }
121
+ }
122
+ /**
123
+ * Save indexing state to disk.
124
+ */
125
+ async saveIndexState() {
126
+ const stateFile = path.join(this.tracesDir, '.duckdb-index.json');
127
+ try {
128
+ await fs_1.promises.writeFile(stateFile, JSON.stringify(this.indexState, null, 2), 'utf-8');
129
+ }
130
+ catch (error) {
131
+ this.outputChannel.appendLine(`[Dashboard] Failed to save indexing state: ${error}`);
132
+ }
133
+ }
134
+ /**
135
+ * Start watching traces directory for new JSONL files.
136
+ */
137
+ startFileWatcher() {
138
+ const tracesPattern = new vscode.RelativePattern(this.tracesDir, '*.jsonl');
139
+ this.watcher = vscode.workspace.createFileSystemWatcher(tracesPattern);
140
+ // Listen for file creates, changes, and deletes
141
+ this.watcher.onDidCreate(() => this.scheduleIndexing());
142
+ this.watcher.onDidChange(() => this.scheduleIndexing());
143
+ this.watcher.onDidDelete(() => this.scheduleIndexing());
144
+ this.disposables.push(this.watcher);
145
+ }
146
+ /**
147
+ * Check if re-indexing is needed by comparing file mtimes.
148
+ * Schedule indexing if needed.
149
+ */
150
+ async checkAndScheduleIndexing() {
151
+ try {
152
+ const currentMtime = await this.getLatestJSONLMtime();
153
+ if (currentMtime > this.indexState.lastMtime) {
154
+ this.scheduleIndexing();
155
+ }
156
+ }
157
+ catch {
158
+ // Best-effort; if we can't check, it's ok to skip
159
+ }
160
+ }
161
+ /**
162
+ * Get the maximum mtime of all JSONL files in traces directory.
163
+ * Used to detect if new traces have been added.
164
+ */
165
+ async getLatestJSONLMtime() {
166
+ try {
167
+ const entries = await fs_1.promises.readdir(this.tracesDir, { withFileTypes: true });
168
+ let maxMtime = 0;
169
+ for (const entry of entries) {
170
+ if (entry.isFile() && entry.name.endsWith('.jsonl')) {
171
+ const filePath = path.join(this.tracesDir, entry.name);
172
+ const stats = await fs_1.promises.stat(filePath);
173
+ maxMtime = Math.max(maxMtime, stats.mtimeMs);
174
+ }
175
+ }
176
+ return maxMtime;
177
+ }
178
+ catch {
179
+ return 0;
180
+ }
181
+ }
182
+ /**
183
+ * Schedule background indexing with debouncing.
184
+ * If already scheduled, this is a no-op unless force is true.
185
+ * @param overrides.debounceMs - Use a shorter debounce when Fleet view needs fresher data (e.g. 500).
186
+ */
187
+ scheduleIndexing(force = false, overrides) {
188
+ if (!force && this.indexingProcess) {
189
+ // Already scheduled; wait for debounce
190
+ return;
191
+ }
192
+ // Clear existing timer
193
+ if (this.indexingProcess) {
194
+ clearTimeout(this.indexingProcess);
195
+ }
196
+ const config = this.getIndexingConfig();
197
+ if (!config.enabled) {
198
+ this.outputChannel.appendLine('[Dashboard] Background indexing is disabled');
199
+ return;
200
+ }
201
+ const debounceMs = overrides?.debounceMs ?? config.debounceMs;
202
+ this.indexingProcess = setTimeout(() => {
203
+ this.indexingProcess = undefined;
204
+ void this.startIndexing();
205
+ }, debounceMs);
206
+ }
207
+ /**
208
+ * Get current indexing configuration from VS Code settings.
209
+ */
210
+ getIndexingConfig() {
211
+ const config = vscode.workspace.getConfiguration('agentide.analytics');
212
+ return {
213
+ enabled: config.get('backgroundIndexing', true),
214
+ debounceMs: config.get('indexingDebounceMs', 15000),
215
+ timeoutSeconds: config.get('indexingTimeoutSeconds', 300),
216
+ };
217
+ }
218
+ /**
219
+ * Start background indexing process.
220
+ */
221
+ async startIndexing() {
222
+ const config = this.getIndexingConfig();
223
+ // Update progress
224
+ this.setProgress({ status: 'indexing', percent: 0 });
225
+ this.performanceMonitor.logIndexingStarted(this.tracesDir);
226
+ try {
227
+ const startTime = Date.now();
228
+ // Get path to index-traces.py script
229
+ const scriptPath = this.resolveIndexScriptPath();
230
+ // Execute indexing subprocess with dependency management and timeout.
231
+ const result = await (0, pythonRunner_1.runPythonWithDeps)({
232
+ scriptPath,
233
+ args: [this.tracesDir],
234
+ deps: ['duckdb'],
235
+ analyticsRoot: path.dirname(this.tracesDir),
236
+ execOptions: {
237
+ timeout: config.timeoutSeconds * 1000,
238
+ env: {
239
+ ...process.env,
240
+ PATH: (0, toolPath_1.augmentPathForTools)(process.env.PATH ?? ''),
241
+ AGENTIDE_TRACES_DIR: this.tracesDir,
242
+ AGENTIDE_INDEX_DB_PATH: this.indexState.duckdbPath,
243
+ },
244
+ },
245
+ log: (message) => this.outputChannel.appendLine(message),
246
+ preserveNonZeroExit: true,
247
+ });
248
+ const durationMs = Date.now() - startTime;
249
+ // Another process currently owns indexing lock; treat as a no-op, not failure.
250
+ if (result.code === IndexingService.EXIT_CODE_ALREADY_RUNNING) {
251
+ let message = 'Indexing already in progress';
252
+ try {
253
+ const output = JSON.parse(result.stdout);
254
+ if (typeof output.message === 'string' && output.message.trim().length > 0) {
255
+ message = output.message;
256
+ }
257
+ }
258
+ catch {
259
+ // Best-effort parse only.
260
+ }
261
+ this.setProgress({ status: 'idle', percent: 0, message });
262
+ this.failureCount = 0;
263
+ return;
264
+ }
265
+ // Parse output
266
+ if (result.code === 0 || result.code === 2) {
267
+ // code 2 = already indexed / no data (idempotent)
268
+ if (!result.stdout || result.stdout.trim().length === 0) {
269
+ // The indexer always emits a JSON line; empty stdout means the launcher
270
+ // (e.g. uv) exited with a colliding code without running the script.
271
+ throw new Error(`Indexing produced no output (exit ${result.code}). stderr: ${result.stderr || '(empty)'}`);
272
+ }
273
+ const output = JSON.parse(result.stdout);
274
+ const outputIndexed = output.indexed === true;
275
+ const hasAnyJsonl = (await this.getLatestJSONLMtime()) > 0;
276
+ if (outputIndexed) {
277
+ this.indexState.indexed = true;
278
+ this.indexState.lastMtime = await this.getLatestJSONLMtime();
279
+ this.indexState.indexedAt = new Date().toISOString();
280
+ await this.saveIndexState();
281
+ this.setProgress({ status: 'complete', percent: 100 });
282
+ this.performanceMonitor.logIndexingComplete(this.indexState.duckdbPath, durationMs);
283
+ this.failureCount = 0; // Reset failure count on success
284
+ this.indexCompleteEmitter.fire();
285
+ }
286
+ else if (!hasAnyJsonl) {
287
+ // Empty traces dir is a valid no-op state; don't treat as failure.
288
+ this.indexState.indexed = false;
289
+ this.indexState.lastMtime = 0;
290
+ await this.saveIndexState();
291
+ this.setProgress({ status: 'idle', percent: 0, message: output.message ?? 'No trace files to index' });
292
+ this.failureCount = 0;
293
+ }
294
+ else {
295
+ throw new Error('Indexing returned success but indexed=false');
296
+ }
297
+ }
298
+ else {
299
+ throw new Error(`Indexing script failed: ${result.stderr}`);
300
+ }
301
+ }
302
+ catch (error) {
303
+ this.failureCount++;
304
+ this.performanceMonitor.logIndexingError(error, this.failureCount < IndexingService.MAX_FAILURES);
305
+ this.setProgress({
306
+ status: 'error',
307
+ percent: 0,
308
+ error: error,
309
+ });
310
+ this.indexErrorEmitter.fire(error);
311
+ // Auto-retry up to MAX_FAILURES times, then give up
312
+ if (this.failureCount < IndexingService.MAX_FAILURES) {
313
+ const retryDelayMs = 10000 * this.failureCount; // Exponential backoff
314
+ this.outputChannel.appendLine(`[Dashboard] Indexing will retry in ${retryDelayMs}ms (attempt ${this.failureCount}/${IndexingService.MAX_FAILURES})`);
315
+ this.retryTimeout = setTimeout(() => {
316
+ void this.startIndexing();
317
+ }, retryDelayMs);
318
+ }
319
+ else {
320
+ this.outputChannel.appendLine('[Dashboard] Indexing disabled after multiple failures; will use JSONL fallback');
321
+ this.disableIndexing();
322
+ }
323
+ }
324
+ }
325
+ /**
326
+ * Disable indexing for the rest of the session.
327
+ */
328
+ disableIndexing() {
329
+ vscode.workspace
330
+ .getConfiguration('agentide.analytics')
331
+ .update('backgroundIndexing', false, vscode.ConfigurationTarget.WorkspaceFolder);
332
+ }
333
+ resolveIndexScriptPath() {
334
+ // Runtime locations:
335
+ // - dev: extensions/agentide/src/analytics/dashboard -> ../../scripts/analytics/index-traces.py
336
+ // - packaged out: extensions/agentide/out/analytics/dashboard -> ../../scripts/analytics/index-traces.py
337
+ return path.resolve(__dirname, '../../scripts/analytics/index-traces.py');
338
+ }
339
+ /**
340
+ * Update progress state and emit event.
341
+ */
342
+ setProgress(progress) {
343
+ this.indexProgress = progress;
344
+ this.progressChangeEmitter.fire(progress);
345
+ }
346
+ /**
347
+ * Check if indexing is currently in progress.
348
+ */
349
+ isIndexing() {
350
+ return this.indexProgress.status === 'indexing';
351
+ }
352
+ /**
353
+ * Check if database is indexed and ready to use.
354
+ */
355
+ async isIndexed() {
356
+ if (this.indexState.indexed) {
357
+ // Verify database file still exists
358
+ try {
359
+ await fs_1.promises.access(this.indexState.duckdbPath);
360
+ return true;
361
+ }
362
+ catch {
363
+ // Database was deleted; mark as not indexed
364
+ this.indexState.indexed = false;
365
+ await this.saveIndexState();
366
+ return false;
367
+ }
368
+ }
369
+ return false;
370
+ }
371
+ /**
372
+ * Get current progress state.
373
+ */
374
+ getProgress() {
375
+ return this.indexProgress;
376
+ }
377
+ /**
378
+ * Get path to indexed database (or empty string if not indexed).
379
+ */
380
+ getIndexPath() {
381
+ return this.indexState.indexed ? this.indexState.duckdbPath : '';
382
+ }
383
+ /**
384
+ * Event: indexing progress changed.
385
+ */
386
+ onProgressChange(listener) {
387
+ return this.progressChangeEmitter.event(listener);
388
+ }
389
+ /**
390
+ * Event: indexing completed successfully.
391
+ */
392
+ onIndexComplete(listener) {
393
+ return this.indexCompleteEmitter.event(listener);
394
+ }
395
+ /**
396
+ * Event: indexing failed with error.
397
+ */
398
+ onIndexError(listener) {
399
+ return this.indexErrorEmitter.event(listener);
400
+ }
401
+ /**
402
+ * Cancel any pending indexing operations.
403
+ */
404
+ cancelIndexing() {
405
+ if (this.indexingProcess) {
406
+ clearTimeout(this.indexingProcess);
407
+ this.indexingProcess = undefined;
408
+ }
409
+ if (this.retryTimeout) {
410
+ clearTimeout(this.retryTimeout);
411
+ this.retryTimeout = undefined;
412
+ }
413
+ }
414
+ /**
415
+ * Cleanup: stop watcher, cancel pending operations.
416
+ */
417
+ dispose() {
418
+ this.cancelIndexing();
419
+ vscode.Disposable.from(...this.disposables).dispose();
420
+ }
421
+ }
422
+ exports.IndexingService = IndexingService;
@@ -0,0 +1,222 @@
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.getScheduledFleetRequests = getScheduledFleetRequests;
40
+ exports.createLocalFleetAdapter = createLocalFleetAdapter;
41
+ const vscode = __importStar(require("vscode"));
42
+ const fleetTypes_1 = require("./fleetTypes");
43
+ const fleetDisplayUtils_1 = require("./fleetDisplayUtils");
44
+ const fleetRowDefaults_1 = require("./fleetRowDefaults");
45
+ const scheduledFleetStorage_1 = require("./scheduledFleetStorage");
46
+ const LOCAL_SOURCE_ID = 'local';
47
+ const FUTURE_START_SCHEDULED_MS = 60_000;
48
+ const RECENT_END_IN_PROGRESS_MS = 90_000;
49
+ /** Trace rows with no end time older than this are treated as done (avoids "Running for 2947m" ghosts). */
50
+ const STALE_IN_PROGRESS_WITHOUT_END_MS = 15 * 60_000;
51
+ function normalizeStatus(session) {
52
+ const now = Date.now();
53
+ const startedMs = Date.parse(session.startedAt);
54
+ const endedMs = Date.parse(session.endedAt);
55
+ if (Number.isFinite(startedMs) && startedMs > now + FUTURE_START_SCHEDULED_MS) {
56
+ return 'scheduled';
57
+ }
58
+ if (!Number.isFinite(endedMs) || endedMs <= 0 || (Number.isFinite(startedMs) && endedMs < startedMs)) {
59
+ if (Number.isFinite(startedMs) && startedMs < now - STALE_IN_PROGRESS_WITHOUT_END_MS) {
60
+ return 'done';
61
+ }
62
+ return 'in_progress';
63
+ }
64
+ if (endedMs > now - RECENT_END_IN_PROGRESS_MS) {
65
+ return 'in_progress';
66
+ }
67
+ return 'done';
68
+ }
69
+ function normalizeRowStatus(row) {
70
+ if (row.status !== 'in_progress') {
71
+ return;
72
+ }
73
+ const normalized = normalizeStatus({
74
+ sessionId: row.sessionId,
75
+ agentId: row.agentId,
76
+ startedAt: row.startedAt,
77
+ endedAt: row.endedAt,
78
+ turns: row.turns,
79
+ totalTokens: row.totalTokens,
80
+ model: row.model,
81
+ engine: row.engine,
82
+ });
83
+ if (normalized !== 'in_progress') {
84
+ row.status = normalized;
85
+ }
86
+ }
87
+ function toRow(sessionId, agentId, startedAt, endedAt, status, taskTitle, model, engine, turns, totalTokens) {
88
+ return (0, fleetRowDefaults_1.buildFleetSessionRow)(LOCAL_SOURCE_ID, {
89
+ sessionId,
90
+ agentId,
91
+ status,
92
+ startedAt,
93
+ endedAt,
94
+ taskTitle,
95
+ model,
96
+ engine,
97
+ channelType: 'none',
98
+ channelTarget: '',
99
+ turns,
100
+ totalTokens,
101
+ disconnectCapable: false,
102
+ });
103
+ }
104
+ /** Returns scheduled chat requests for fleet merge (used by orchestrator for formal local script). */
105
+ async function getScheduledFleetRequests() {
106
+ return (0, scheduledFleetStorage_1.loadScheduledFleetRequests)();
107
+ }
108
+ /**
109
+ * Local fleet source adapter: trace-derived sessions + scheduled chat requests, merged and status-normalized.
110
+ */
111
+ function createLocalFleetAdapter(queryRunner) {
112
+ return {
113
+ async fetch(filters) {
114
+ const dashboardFilters = { scope: filters.scope, projectId: filters.projectId, agentId: filters.agentId };
115
+ let sessions = [];
116
+ try {
117
+ sessions = await queryRunner.getFleetSessions(500, dashboardFilters);
118
+ }
119
+ catch {
120
+ // Trace DB may be missing; continue with scheduled only.
121
+ }
122
+ const scheduledRequests = await getScheduledFleetRequests();
123
+ const scheduleHintsByChatSessionId = (0, fleetDisplayUtils_1.buildScheduleHintsByChatSessionId)(await (0, scheduledFleetStorage_1.loadScheduledFleetEnrichmentHints)());
124
+ const sessionsById = new Map();
125
+ for (const session of sessions) {
126
+ const status = normalizeStatus(session);
127
+ sessionsById.set(session.sessionId, toRow(session.sessionId, session.agentId, session.startedAt, session.endedAt, status, session.agentPack ?? session.agentId ?? session.sessionId ?? 'Task', session.model ?? 'unknown', session.engine ?? '', session.turns ?? 0, session.totalTokens ?? 0));
128
+ }
129
+ for (const scheduled of scheduledRequests) {
130
+ if (filters.agentId && scheduled.agentId && scheduled.agentId !== filters.agentId) {
131
+ continue;
132
+ }
133
+ const runAtIso = new Date(scheduled.runAt).toISOString();
134
+ const messagePreview = scheduled.messageText.length > 80
135
+ ? `${scheduled.messageText.slice(0, 77)}...`
136
+ : scheduled.messageText;
137
+ const scheduleRowKey = `schedule:${scheduled.id}`;
138
+ // Unique fleet PK per schedule; channelTarget holds the chat session id for Spotlight open.
139
+ const scheduleRow = (0, fleetRowDefaults_1.buildFleetSessionRow)(LOCAL_SOURCE_ID, {
140
+ sessionId: scheduleRowKey,
141
+ agentId: scheduled.agentId,
142
+ status: 'scheduled',
143
+ startedAt: runAtIso,
144
+ endedAt: '',
145
+ taskTitle: messagePreview || scheduled.agentId || scheduled.sessionId || 'Scheduled task',
146
+ model: scheduled.model ?? 'scheduled',
147
+ engine: scheduled.engine ?? (0, fleetDisplayUtils_1.inferFleetEngineId)(scheduled.model),
148
+ channelType: 'none',
149
+ channelTarget: scheduled.sessionId,
150
+ turns: 0,
151
+ totalTokens: 0,
152
+ disconnectCapable: false,
153
+ });
154
+ sessionsById.set(scheduleRowKey, scheduleRow);
155
+ }
156
+ const sessionIdsForTitles = [...new Set(Array.from(sessionsById.values()).flatMap(row => {
157
+ const ids = [];
158
+ if (row.sessionId && !row.sessionId.startsWith('schedule:')) {
159
+ ids.push(row.sessionId);
160
+ }
161
+ const linked = String(row.channelTarget ?? '').trim();
162
+ if (linked) {
163
+ ids.push(linked);
164
+ }
165
+ return ids;
166
+ }))];
167
+ if (sessionIdsForTitles.length > 0) {
168
+ try {
169
+ const titleMap = await vscode.commands.executeCommand('agentide.resolveFleetSessionTitles', sessionIdsForTitles);
170
+ if (titleMap && typeof titleMap === 'object') {
171
+ for (const row of sessionsById.values()) {
172
+ const linked = String(row.channelTarget ?? '').trim();
173
+ const titleKeys = [row.sessionId, linked].filter(Boolean);
174
+ for (const key of titleKeys) {
175
+ const t = typeof titleMap[key] === 'string' ? titleMap[key].trim() : '';
176
+ if (t
177
+ && (!row.taskTitle || row.taskTitle === row.sessionId || row.taskTitle === (row.agentId ?? ''))) {
178
+ row.taskTitle = t;
179
+ break;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ catch {
186
+ // Command exists only in AgentHippo workbench builds.
187
+ }
188
+ }
189
+ const persistedCardTitleIds = Array.from(sessionsById.values())
190
+ .map(row => String(row.sessionId ?? '').trim())
191
+ .filter(id => id && !id.startsWith('schedule:'));
192
+ if (persistedCardTitleIds.length > 0) {
193
+ try {
194
+ const cardTitleMap = await queryRunner.readFleetCardTitles(persistedCardTitleIds);
195
+ for (const row of sessionsById.values()) {
196
+ const saved = typeof cardTitleMap[row.sessionId] === 'string'
197
+ ? cardTitleMap[row.sessionId].trim()
198
+ : '';
199
+ if (saved) {
200
+ row.cardTitle = saved;
201
+ }
202
+ }
203
+ }
204
+ catch {
205
+ // fleet_sessions may be unavailable during first refresh.
206
+ }
207
+ }
208
+ for (const row of sessionsById.values()) {
209
+ const linkedSessionId = row.sessionId.startsWith('schedule:')
210
+ ? String(row.channelTarget ?? '').trim()
211
+ : row.sessionId;
212
+ const scheduleHint = linkedSessionId
213
+ ? scheduleHintsByChatSessionId.get(linkedSessionId)
214
+ : undefined;
215
+ (0, fleetDisplayUtils_1.enrichFleetRowMetadata)(row, scheduleHint);
216
+ normalizeRowStatus(row);
217
+ }
218
+ const rows = Array.from(sessionsById.values()).sort(fleetTypes_1.compareFleetSessionsByStatusThenStart);
219
+ return rows;
220
+ },
221
+ };
222
+ }