@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,314 @@
1
+ ---
2
+ name: spotlight-query
3
+ description: Query and analyze agent session traces — costs, tool usage, regressions, and request debugging. Uses DuckDB on local OTEL traces. Query Tool scripts/query-analytics.sh — DuckDB-based query tool with pre-built queries and schema check.
4
+ ---
5
+
6
+ # Spotlight Query
7
+
8
+ Analyze agent session data from local OTEL traces. All data stays local.
9
+
10
+ ## Data Model
11
+
12
+ **Traces** (`~/.{{BRAND_FOLDER}}/analytics/traces/*.jsonl`)
13
+
14
+ Each LLM call produces a span with:
15
+ - `cost`, `input_tokens`, `output_tokens`, `model`, `duration_ms`
16
+ - `session_id` — groups calls into one conversation
17
+ - `request_id` — groups calls for one user message (multiple LLM calls per request is common)
18
+ - `project_id` — workspace-level grouping
19
+ - `agent_id`, `agent_version`, `source`, `engine` — enriched metadata (automatic for {{AGENT_BRAND}} agents)
20
+
21
+ Canonical source for these IDs in queries:
22
+ - `metadata.requester_custom_headers` via `x-litellm-metadata-*` keys
23
+
24
+ **Session Events** (`~/.{{BRAND_FOLDER}}/analytics/sessions/<session_id>.jsonl`)
25
+
26
+
27
+ ⚠️ **CRITICAL: `model_calls.input_messages_raw`, `model_calls.output_messages_raw`, and `metadata.requester_custom_headers` can be very large (MB-scale per row).**
28
+ - For broad/unknown queries, always write SQL output to a tmp artifact first (for example `~/.{{BRAND_FOLDER}}/analytics/tmp/...`) instead of printing full rows to chat.
29
+ - Then drill down in stages: `raw artifact -> summary (row count + key ids/timestamps) -> filtered candidates -> final answer`.
30
+ - Never paste raw blob columns to chat by default; extract only needed fields (`role`, `ts`, `content_text`), render multipart messages as per-part tail previews in chat, and keep the full extracted message text in a local artifact.
31
+
32
+ ## Query Tool
33
+
34
+ `scripts/query-analytics.sh` — DuckDB-based query tool with pre-built queries.
35
+
36
+ **Schema-first workflow (always do this before custom SQL):**
37
+ - Verify flags and built-ins: `scripts/query-analytics.sh --help`
38
+ - Inspect indexed table schema via script SQL passthrough:
39
+ - `scripts/query-analytics.sh --sql "DESCRIBE model_calls;"`
40
+
41
+
42
+ The "Data Model" section above describes the *conceptual* LLM span attributes from raw OTEL traces. The **indexed DuckDB `spans` table flattens these into columns**:`
43
+
44
+
45
+ **Runtime guidance (important):**
46
+ - Use indexed analytics DB (`~/.{{BRAND_FOLDER}}/analytics/traces/analytics.duckdb`, table `spans`) for routine dashboard/skill analysis.
47
+ - Avoid `read_json(...*.jsonl)` in repeated runtime queries; use it only for indexing/recovery workflows.
48
+ - Respect DuckDB runtime controls when provided:
49
+ - `AGENTIDE_DUCKDB_MEMORY_LIMIT_MB`
50
+ - `AGENTIDE_DUCKDB_THREADS`
51
+ - `AGENTIDE_DUCKDB_QUERY_TIMEOUT_SECONDS`
52
+ - `AGENTIDE_DUCKDB_TEMP_DIRECTORY`
53
+ - If indexed DB is missing/stale, reindex/setup first instead of repeatedly scanning JSONL.
54
+ - For dashboard-facing queries, default to `FROM spans` with bounded result sizes (`LIMIT`/top-N).
55
+
56
+ **Indexing trigger (important):**
57
+ - The indexing script is bundled with the extension (`scripts/analytics/index-traces.py`).
58
+ - There is currently no stable public CLI entrypoint such as `agenthippo spotlight index`.
59
+ - For supported manual triggering, use Spotlight status in VS Code (`Show Spotlight Status` -> `Indexing`).
60
+ - In agent workflows, treat reindex as setup/recovery and avoid assuming a guaranteed command-line verb exists.
61
+
62
+ ```bash
63
+ duckdb ~/.{{BRAND_FOLDER}}/analytics/traces/analytics.duckdb -c "SELECT COUNT(*) FROM spans;"
64
+ ```
65
+
66
+ ```bash
67
+ chmod +x scripts/query-analytics.sh
68
+ scripts/query-analytics.sh --help # see all flags
69
+ scripts/query-analytics.sh --cost # total cost summary
70
+ scripts/query-analytics.sh --problems # find outlier sessions
71
+ ```
72
+
73
+ **Key capabilities:**
74
+ - Cost breakdowns: by session, model, agent, engine, framework, request
75
+ - Debugging: session details, compact session debug bundle, request details, unified timeline
76
+ - Regression: version comparison, top expensive sessions
77
+ - Health: errors, latency percentiles, statistical outliers
78
+ - Tools: loop detection, usage stats
79
+
80
+ Recommended agent-first entrypoint:
81
+ - `scripts/query-analytics.sh --session-debug <session-id>`
82
+ - Returns a bounded bundle with summary, recent requests, tool signals, and latest message previews.
83
+ - Message previews stay compact by default and may emit an artifact path under `~/.{{BRAND_FOLDER}}/analytics/tmp/` with the full extracted message content for the selected rows.
84
+
85
+ ### Common Query Pattern: Latest Messages in a Session
86
+
87
+ ```bash
88
+ scripts/query-analytics.sh --sql "
89
+ SELECT created_at, agent_id, span_name, model, ROUND(cost, 6) AS cost, duration_ms
90
+ FROM spans
91
+ WHERE session_id = '<SESSION_ID>'
92
+ ORDER BY created_at DESC
93
+ LIMIT 10
94
+ "
95
+ ```
96
+
97
+ For custom analysis: `--sql "SELECT ..."` — the script exposes reusable CTEs (`${BASE_QUERY}`, `${EXTRACT_ATTRS}`) documented in `references/otel-schema.md`.
98
+
99
+ If you orchestrate queries from Python, prefer running wrapper scripts with `uv run ...` when Python dependencies are involved elsewhere in the workflow. Avoid relying on global `python3` package state.
100
+
101
+ ## Token-Efficient Query Workflow (important)
102
+
103
+ When running analytics, keep tool outputs small to reduce chat context/token usage.
104
+
105
+ - Prefer SQL-side reduction first: select only needed columns, filter early (`WHERE`), aggregate (`GROUP BY`), and cap rows (`LIMIT`).
106
+ - For potentially large outputs, write/pipe results to a local file (do not print large blobs to chat).
107
+ - Store intermediate artifacts under `~/.{{BRAND_FOLDER}}/analytics/tmp/` (or another local temp path).
108
+ - In chat, report only:
109
+ - file path
110
+ - row count
111
+ - Read back only targeted slices needed for the user request (specific offsets/sections), not whole files.
112
+ - Use staged drill-down: broad summary query → narrowed query → detailed evidence query.
113
+ - Avoid `SELECT *` on high-payload tables (`model_calls`) unless explicitly debugging internals.
114
+ - On message extraction, never return `input_messages_raw` / `output_messages_raw` directly by default; aggregate text-bearing message parts into `content_text`, build chat previews from per-part tails, and store full extracted text in a local artifact when needed.
115
+
116
+ Example pattern:
117
+
118
+ ```bash
119
+ # 1) Save full result locally
120
+ scripts/query-analytics.sh --sql "SELECT ..." > ~/.{{BRAND_FOLDER}}/analytics/tmp/session-detail.tsv
121
+
122
+ # 2) Return a bounded preview to chat
123
+ scripts/query-analytics.sh --sql "SELECT ... LIMIT 20"
124
+
125
+ # 3) Follow up with targeted reads/queries only as needed
126
+ ```
127
+
128
+ ### Large-Payload Safe Message Extraction
129
+
130
+ `model_calls.input_messages_raw` and `model_calls.output_messages_raw` can be MB-scale per row.
131
+ Use two-step SQL: first isolate the latest relevant call, then extract just message text.
132
+
133
+ Latest user text for a session:
134
+ ```bash
135
+ scripts/query-analytics.sh --sql "
136
+ WITH latest_call AS (
137
+ SELECT start_ms, input_messages_raw
138
+ FROM model_calls
139
+ WHERE session_id = '<SESSION_ID>'
140
+ ORDER BY start_ms DESC
141
+ LIMIT 1
142
+ ),
143
+ messages AS (
144
+ SELECT
145
+ CAST(message.key AS BIGINT) + 1 AS seq_in_session,
146
+ LOWER(COALESCE(json_extract_string(message.value, '$.role'), 'unknown')) AS role,
147
+ message.value AS message_json,
148
+ to_timestamp((SELECT start_ms FROM latest_call) / 1000.0) AS ts
149
+ FROM latest_call, json_each(COALESCE(input_messages_raw, '[]'::JSON)) message
150
+ ),
151
+ expanded AS (
152
+ SELECT
153
+ messages.seq_in_session,
154
+ messages.role,
155
+ COALESCE(
156
+ NULLIF(string_agg(
157
+ COALESCE(
158
+ NULLIF(json_extract_string(part.value, '$.text'), ''),
159
+ NULLIF(json_extract_string(part.value, '$.content'), '')
160
+ ),
161
+ '\n' ORDER BY CAST(part.key AS BIGINT)
162
+ ), ''),
163
+ COALESCE(
164
+ NULLIF(json_extract_string(messages.message_json, '$.text'), ''),
165
+ NULLIF(json_extract_string(messages.message_json, '$.content'), ''),
166
+ ''
167
+ )
168
+ ) AS content_text,
169
+ messages.ts
170
+ FROM messages
171
+ LEFT JOIN json_each(COALESCE(json_extract(messages.message_json, '$.parts'), '[]'::JSON)) part ON TRUE
172
+ GROUP BY messages.seq_in_session, messages.role, messages.message_json, messages.ts
173
+ )
174
+ SELECT ts, role,
175
+ content_text
176
+ FROM expanded
177
+ WHERE role = 'user' AND content_text <> ''
178
+ ORDER BY seq_in_session DESC
179
+ LIMIT 1;
180
+ "
181
+ ```
182
+
183
+ Latest assistant text for a session:
184
+ ```bash
185
+ scripts/query-analytics.sh --sql "
186
+ WITH latest_assistant_call AS (
187
+ SELECT start_ms, output_messages_raw
188
+ FROM model_calls
189
+ WHERE session_id = '<SESSION_ID>'
190
+ AND output_messages_raw IS NOT NULL
191
+ AND output_messages_raw <> ''
192
+ ORDER BY start_ms DESC
193
+ LIMIT 1
194
+ ),
195
+ messages AS (
196
+ SELECT
197
+ CAST(message.key AS BIGINT) + 1 AS seq_in_session,
198
+ LOWER(COALESCE(json_extract_string(message.value, '$.role'), 'assistant')) AS role,
199
+ message.value AS message_json,
200
+ to_timestamp((SELECT start_ms FROM latest_assistant_call) / 1000.0) AS ts
201
+ FROM latest_assistant_call, json_each(COALESCE(output_messages_raw, '[]'::JSON)) message
202
+ ),
203
+ expanded AS (
204
+ SELECT
205
+ messages.seq_in_session,
206
+ messages.role,
207
+ COALESCE(
208
+ NULLIF(string_agg(
209
+ COALESCE(
210
+ NULLIF(json_extract_string(part.value, '$.text'), ''),
211
+ NULLIF(json_extract_string(part.value, '$.content'), '')
212
+ ),
213
+ '\n' ORDER BY CAST(part.key AS BIGINT)
214
+ ), ''),
215
+ COALESCE(
216
+ NULLIF(json_extract_string(messages.message_json, '$.text'), ''),
217
+ NULLIF(json_extract_string(messages.message_json, '$.content'), ''),
218
+ ''
219
+ )
220
+ ) AS content_text,
221
+ messages.ts
222
+ FROM messages
223
+ LEFT JOIN json_each(COALESCE(json_extract(messages.message_json, '$.parts'), '[]'::JSON)) part ON TRUE
224
+ GROUP BY messages.seq_in_session, messages.role, messages.message_json, messages.ts
225
+ )
226
+ SELECT ts, role,
227
+ content_text
228
+ FROM expanded
229
+ WHERE role = 'assistant' AND content_text <> ''
230
+ ORDER BY seq_in_session DESC
231
+ LIMIT 1;
232
+ "
233
+ ```
234
+
235
+
236
+ ## Quick Filters (Dashboard-aligned)
237
+
238
+ Use these filters to match the Spotlight dashboard controls:
239
+
240
+ - **Agent pack filter (`agent_id`)**:
241
+ ```bash
242
+ scripts/query-analytics.sh --sql "
243
+ ${BASE_QUERY},
244
+ extracted AS (${EXTRACT_ATTRS})
245
+ SELECT agent_id, COUNT(*) AS requests, ROUND(SUM(cost), 6) AS total_cost
246
+ FROM extracted
247
+ WHERE agent_id = 'my-agent-pack'
248
+ GROUP BY agent_id
249
+ "
250
+ ```
251
+ - **Workspace filter (`project_id`)**:
252
+ ```bash
253
+ scripts/query-analytics.sh --sql "
254
+ ${BASE_QUERY},
255
+ extracted AS (${EXTRACT_ATTRS})
256
+ SELECT project_id, COUNT(*) AS requests, ROUND(SUM(cost), 6) AS total_cost
257
+ FROM extracted
258
+ WHERE project_id = 'my-workspace'
259
+ GROUP BY project_id
260
+ "
261
+ ```
262
+
263
+ ## Analysis Patterns
264
+
265
+ ### Cost Investigation
266
+ 1. **Broad → narrow**: Start with aggregates (total, by model, by agent), then find outliers (problems, largest requests), then drill into specific sessions/requests.
267
+ 2. **Cost drivers**: High `input_tokens` = prompt bloat or large context. High `output_tokens` = verbose responses. Many LLM calls per request = loops or retries.
268
+
269
+ ### Debugging a Session
270
+ 1. **Overview**: Session summary, cost per request within the session.
271
+ 2. **Anomalies**: Tool loops (same tool >5x), latency spikes, error spans.
272
+ 3. **Timeline**: Interleave LLM calls with tool events to see cause/effect.
273
+
274
+ ### Regression Detection
275
+ Compare versions of an agent: if avg cost or tokens increased, check for new rules in AGENTS.md, expanded context, or changed tool behavior.
276
+
277
+ ### Root Cause Heuristics
278
+
279
+ | Symptom | Likely cause | What to check |
280
+ |---|---|---|
281
+ | High cost | Prompt bloat, wrong model tier | `input_tokens` distribution, model breakdown |
282
+ | Many LLM calls per request | Tool loops, retries | Tool call patterns, error rate |
283
+ | High latency | Large context, slow model | `duration_ms` vs `input_tokens` correlation |
284
+ | Inconsistent behavior | No structured output | Output message patterns across requests |
285
+
286
+ ## Output Format
287
+
288
+ ```
289
+ ## Analysis: <context>
290
+
291
+ ### Summary
292
+ - [key metrics]
293
+
294
+ ### Findings
295
+ 1. [observation with data]
296
+ 2. [observation with data]
297
+
298
+ ### Recommendations
299
+ - [ ] Actionable item with expected impact
300
+ ```
301
+
302
+ ## If No Traces
303
+
304
+ Spotlight requires OTEL Collector + LiteLLM with `callbacks: ["otel"]`.
305
+
306
+ **Options:**
307
+
308
+ 1. **Manual:** Tell user to run **"Setup Spotlight"** from VS Code command palette
309
+
310
+ 2. **Automated (if user agrees):** Use `$AGENTIDE_ANALYTICS_SCRIPTS_DIR` (set by the extension):
311
+ ```bash
312
+ "$AGENTIDE_ANALYTICS_SCRIPTS_DIR/setup-analytics.sh" --check # verify status
313
+ "$AGENTIDE_ANALYTICS_SCRIPTS_DIR/setup-analytics.sh" --yes # non-interactive setup
314
+ ```
@@ -0,0 +1,163 @@
1
+ # OTEL Schema Reference
2
+
3
+ Reference for writing custom DuckDB queries against OTEL trace data.
4
+
5
+ ## File Locations
6
+
7
+ ```
8
+ ~/.{{BRAND_FOLDER}}/analytics/traces/*.jsonl # OTEL spans (one file per hour)
9
+ ~/.{{BRAND_FOLDER}}/analytics/sessions/<id>.jsonl # IDE events per session
10
+ ```
11
+
12
+ The query script (`scripts/query-analytics.sh`) automatically resolves these paths.
13
+
14
+ ## Trace File Structure
15
+
16
+ Each `.jsonl` line is a batch with nested spans:
17
+
18
+ ```
19
+ resourceSpans[].scopeSpans[].spans[]
20
+ ```
21
+
22
+ Each span has:
23
+ - `traceId`, `spanId`, `parentSpanId`, `name`
24
+ - `startTimeUnixNano`, `endTimeUnixNano`
25
+ - `attributes[]` — key-value pairs (the useful data)
26
+ - `status.code` — 0=unset, 1=ok, 2=error
27
+
28
+ ## Key Attributes
29
+
30
+ Cost and tokens:
31
+ - `gen_ai.cost.total_cost`, `gen_ai.cost.currency`
32
+ - `gen_ai.usage.input_tokens`, `gen_ai.usage.output_tokens`
33
+
34
+ Model:
35
+ - `gen_ai.request.model` (requested), `gen_ai.response.model` (actual)
36
+ - Fallback: `llm.openai.model`
37
+
38
+ Messages (canonical):
39
+ - `gen_ai.input.messages` — full input message history snapshot for the call
40
+ - `gen_ai.output.messages` — generated assistant output for the call
41
+
42
+ Important semantics:
43
+ - `gen_ai.input.messages` is usually a full prompt snapshot, not an append-only delta.
44
+ - Later calls often repeat earlier conversation context in this field.
45
+ - For "latest message" debugging, prefer the latest call (or merged indexed row) for a request/session.
46
+
47
+ Output generation event (optional, event attributes):
48
+ - Event name: `gen_ai.output.generated`
49
+ - `gen_ai.output.preview`
50
+ - `gen_ai.output.length`
51
+ - `gen_ai.output.truncated`
52
+ - `gen_ai.response.model`
53
+
54
+ Note: current Spotlight indexed schema stores canonical input/output message attributes. Event-only output fields are available in raw traces unless explicitly indexed.
55
+
56
+ Canonical analytics metadata source:
57
+ - `metadata.requester_custom_headers` (single source of truth)
58
+ - Contains:
59
+ - `x-litellm-metadata-session-id`
60
+ - `x-litellm-metadata-user-id`
61
+ - `x-litellm-metadata-project-id`
62
+ - `x-litellm-metadata-request-id`
63
+ - `x-litellm-metadata-agent-id`
64
+ - `x-litellm-metadata-agent-version`
65
+ - `x-litellm-metadata-source`
66
+ - `x-litellm-metadata-engine`
67
+
68
+ Session/Request IDs:
69
+ - `session_id`, `user_id`, `project_id` — grouping dimensions
70
+ - `request_id` — single user message (multiple LLM calls per request)
71
+
72
+ Agent metadata:
73
+ - `agent_id`, `agent_version`, `engine`, `source`
74
+
75
+ Errors:
76
+ - `span.name = "Failed Proxy Server Request"`
77
+ - `status.code = 2`
78
+ - `exception.message`, `exception.type`, `llm.provider.error_code`
79
+
80
+ ## DuckDB Extraction
81
+
82
+ The query script uses these patterns — reuse them for custom SQL:
83
+
84
+ ```sql
85
+ -- Extract attribute value by key
86
+ (SELECT a.value.stringValue
87
+ FROM UNNEST(s.attributes) a
88
+ WHERE a.key = 'gen_ai.request.model') as model
89
+
90
+ -- For numeric values
91
+ (SELECT a.value.doubleValue
92
+ FROM UNNEST(s.attributes) a
93
+ WHERE a.key = 'gen_ai.cost.total_cost') as cost
94
+
95
+ -- Canonical metadata extraction (single source)
96
+ NULLIF(regexp_extract(
97
+ (SELECT a.value.stringValue
98
+ FROM UNNEST(s.attributes) a
99
+ WHERE a.key = 'metadata.requester_custom_headers'),
100
+ 'x-litellm-metadata-project-id'': ''([^'']+)''', 1
101
+ ), '') as project_id
102
+
103
+ -- Duration in ms
104
+ (s.endTimeUnixNano - s.startTimeUnixNano) / 1e6 as duration_ms
105
+ ```
106
+
107
+ ## Using the Script's CTEs
108
+
109
+ `scripts/query-analytics.sh --sql "..."` exposes:
110
+
111
+ ```sql
112
+ ${BASE_QUERY} -- loads and flattens all spans from traces/*.jsonl
113
+ ${EXTRACT_ATTRS} -- extracts common attributes into columns
114
+ ```
115
+
116
+ Example custom query:
117
+
118
+ ```bash
119
+ scripts/query-analytics.sh --sql "
120
+ WITH base AS (${BASE_QUERY}),
121
+ attrs AS (${EXTRACT_ATTRS})
122
+ SELECT model, COUNT(*) as calls, SUM(cost) as total_cost
123
+ FROM attrs
124
+ WHERE cost > 0
125
+ GROUP BY model
126
+ ORDER BY total_cost DESC
127
+ "
128
+ ```
129
+
130
+ ## Session Events Structure
131
+
132
+ `sessions/<id>.jsonl` — one event per line:
133
+
134
+ ```json
135
+ {"type":"tool_start","tool":"Read","ts":1699000000000,"args":{...}}
136
+ {"type":"tool_end","tool":"Read","ts":1699000001000,"result":"success"}
137
+ {"type":"file_edit","path":"/src/app.ts","ts":1699000002000}
138
+ ```
139
+
140
+ Common event types: `tool_start`, `tool_end`, `file_read`, `file_edit`, `shell_command`, `llm_start`, `llm_end`.
141
+
142
+ ## Filtering Tips
143
+
144
+ LLM call spans (have cost data):
145
+ ```sql
146
+ WHERE cost IS NOT NULL AND cost > 0
147
+ ```
148
+
149
+ Error spans:
150
+ ```sql
151
+ WHERE span_name = 'Failed Proxy Server Request'
152
+ OR status_code = 2
153
+ ```
154
+
155
+ Specific session:
156
+ ```sql
157
+ WHERE session_id = 'abc123'
158
+ ```
159
+
160
+ Time range:
161
+ ```sql
162
+ WHERE start_time > now() - INTERVAL 24 HOUR
163
+ ```