@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.
- package/LICENSE +21 -0
- package/bin/agenthippo.js +2 -0
- package/out/agentpack/github.js +547 -0
- package/out/agentpack/index.js +66 -0
- package/out/agentpack/install.js +297 -0
- package/out/agentpack/manager.js +441 -0
- package/out/agentpack/manifest.js +135 -0
- package/out/agentpack/paths.js +475 -0
- package/out/agentpack/publish.js +248 -0
- package/out/agentpack/stores.js +554 -0
- package/out/agentpack/types.js +5 -0
- package/out/analytics/dashboard/artifactManager.js +439 -0
- package/out/analytics/dashboard/fleetDisplayUtils.js +159 -0
- package/out/analytics/dashboard/fleetOrchestrator.js +142 -0
- package/out/analytics/dashboard/fleetRegistry.js +79 -0
- package/out/analytics/dashboard/fleetRowDefaults.js +87 -0
- package/out/analytics/dashboard/fleetScriptAdapter.js +146 -0
- package/out/analytics/dashboard/fleetStatusUtils.js +30 -0
- package/out/analytics/dashboard/fleetTitleUtils.js +68 -0
- package/out/analytics/dashboard/fleetTypes.js +29 -0
- package/out/analytics/dashboard/index.js +17 -0
- package/out/analytics/dashboard/indexingService.js +422 -0
- package/out/analytics/dashboard/localFleetAdapter.js +222 -0
- package/out/analytics/dashboard/performanceMonitor.js +76 -0
- package/out/analytics/dashboard/processManager.js +209 -0
- package/out/analytics/dashboard/provider.js +3885 -0
- package/out/analytics/dashboard/queryRunner.js +994 -0
- package/out/analytics/dashboard/refreshPolicy.js +16 -0
- package/out/analytics/dashboard/scheduledFleetFingerprint.js +22 -0
- package/out/analytics/dashboard/scheduledFleetStorage.js +241 -0
- package/out/analytics/dashboard/scheduledFleetUtils.js +22 -0
- package/out/analytics/dashboard/sessionEventFleetStats.js +118 -0
- package/out/analytics/dashboard/sessionJsonlFleet.js +204 -0
- package/out/analytics/dashboard/teamViewDiscovery.js +106 -0
- package/out/analytics/dashboard/viewsConfigMerge.js +221 -0
- package/out/analytics/dashboard/webview/analytics-panel.html +155 -0
- package/out/analytics/dashboard/webview/codicon.ttf +0 -0
- package/out/analytics/dashboard/webview/index.html +78 -0
- package/out/analytics/dashboard/webview/panel.js +2295 -0
- package/out/analytics/dashboard/webview/runtime-bridge.js +82 -0
- package/out/analytics/dashboard/webview/styles.css +1009 -0
- package/out/analytics/lifecycle.js +43 -0
- package/out/analytics/service.js +1279 -0
- package/out/analytics/sessionEvents.js +231 -0
- package/out/auth/bootstrapApply.js +72 -0
- package/out/auth/brokerClient.js +126 -0
- package/out/auth/callbackUri.js +59 -0
- package/out/auth/callbackUriParse.js +59 -0
- package/out/auth/githubStoreGate.js +70 -0
- package/out/auth/loopbackAuthServer.js +165 -0
- package/out/auth/pkce.js +9 -0
- package/out/auth/provider.js +239 -0
- package/out/auth/sessionStore.js +193 -0
- package/out/auth/signInFlow.js +182 -0
- package/out/auth/types.js +12 -0
- package/out/auth-broker/config.js +62 -0
- package/out/auth-broker/jwt.js +105 -0
- package/out/auth-broker/pkce.js +57 -0
- package/out/auth-broker/server.js +539 -0
- package/out/auth-broker/store.js +273 -0
- package/out/base-prompts/gateway/openclaw-starter.json5 +144 -0
- package/out/base-prompts/gateway/slack-socket-mode-minimal.manifest.json +44 -0
- package/out/base-prompts/mcp-servers/.mcp.json +13 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +142 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +13 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +1192 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +23 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +12 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +102 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +137 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +118 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +209 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +431 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +270 -0
- package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +18 -0
- package/out/base-prompts/rules/AGENTS.md +204 -0
- package/out/base-prompts/skills/agent-browser/SKILL.md +102 -0
- package/out/base-prompts/skills/agent-builder/SKILL.md +73 -0
- package/out/base-prompts/skills/agent-builder/references/agent-pack.md +63 -0
- package/out/base-prompts/skills/agent-builder/references/crewai.md +66 -0
- package/out/base-prompts/skills/agent-builder/references/langchain.md +60 -0
- package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +73 -0
- package/out/base-prompts/skills/agent-engine-creator/SKILL.md +586 -0
- package/out/base-prompts/skills/agent-engine-installer/SKILL.md +106 -0
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +259 -0
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +189 -0
- package/out/base-prompts/skills/agenthippo-cli/SKILL.md +69 -0
- package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +63 -0
- package/out/base-prompts/skills/agentpack-creator/SKILL.md +375 -0
- package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +261 -0
- package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +195 -0
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +391 -0
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +294 -0
- package/out/base-prompts/skills/agentpack-testbench/SKILL.md +135 -0
- package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +202 -0
- package/out/base-prompts/skills/algorithmic-art/SKILL.md +405 -0
- package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +599 -0
- package/out/base-prompts/skills/debug-agent/SKILL.md +83 -0
- package/out/base-prompts/skills/desktop-automation/SKILL.md +166 -0
- package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +441 -0
- package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +280 -0
- package/out/base-prompts/skills/docx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/docx/SKILL.md +197 -0
- package/out/base-prompts/skills/docx/docx-js.md +350 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +159 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +69 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/out/base-prompts/skills/docx/ooxml.md +610 -0
- package/out/base-prompts/skills/docx/scripts/__init__.py +1 -0
- package/out/base-prompts/skills/docx/scripts/document.py +1276 -0
- package/out/base-prompts/skills/docx/scripts/templates/comments.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/templates/people.xml +3 -0
- package/out/base-prompts/skills/docx/scripts/utilities.py +374 -0
- package/out/base-prompts/skills/gateway-outbound/SKILL.md +136 -0
- package/out/base-prompts/skills/mcp-builder/LICENSE.txt +202 -0
- package/out/base-prompts/skills/mcp-builder/SKILL.md +328 -0
- package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +602 -0
- package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/out/base-prompts/skills/mcp-builder/scripts/connections.py +151 -0
- package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/out/base-prompts/skills/openclaw/SKILL.md +406 -0
- package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +61 -0
- package/out/base-prompts/skills/pdf/LICENSE.txt +30 -0
- package/out/base-prompts/skills/pdf/SKILL.md +294 -0
- package/out/base-prompts/skills/pdf/forms.md +205 -0
- package/out/base-prompts/skills/pdf/reference.md +612 -0
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +41 -0
- package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/out/base-prompts/skills/pptx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/pptx/SKILL.md +484 -0
- package/out/base-prompts/skills/pptx/html2pptx.md +625 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/out/base-prompts/skills/pptx/ooxml.md +427 -0
- package/out/base-prompts/skills/pptx/scripts/html2pptx.js +984 -0
- package/out/base-prompts/skills/pptx/scripts/inventory.py +1020 -0
- package/out/base-prompts/skills/pptx/scripts/rearrange.py +231 -0
- package/out/base-prompts/skills/pptx/scripts/replace.py +385 -0
- package/out/base-prompts/skills/pptx/scripts/thumbnail.py +450 -0
- package/out/base-prompts/skills/prompt-lab/SKILL.md +149 -0
- package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/skill-creator/LICENSE.txt +202 -0
- package/out/base-prompts/skills/skill-creator/SKILL.md +371 -0
- package/out/base-prompts/skills/skill-creator/references/output-patterns.md +82 -0
- package/out/base-prompts/skills/skill-creator/references/workflows.md +28 -0
- package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +303 -0
- package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +110 -0
- package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/out/base-prompts/skills/skill-installer/SKILL.md +251 -0
- package/out/base-prompts/skills/skill-installer/references/store-api.md +219 -0
- package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +83 -0
- package/out/base-prompts/skills/spotlight-insights/SKILL.md +101 -0
- package/out/base-prompts/skills/spotlight-optimize/SKILL.md +93 -0
- package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/spotlight-query/SKILL.md +314 -0
- package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +163 -0
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +744 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +14 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +7 -0
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +5 -0
- package/out/base-prompts/skills/spotlight-report/SKILL.md +86 -0
- package/out/base-prompts/skills/spotlight-visualize/SKILL.md +92 -0
- package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +2551 -0
- package/out/base-prompts/skills/xlsx/LICENSE.txt +30 -0
- package/out/base-prompts/skills/xlsx/SKILL.md +289 -0
- package/out/base-prompts/skills/xlsx/recalc.py +178 -0
- package/out/branding.js +23 -0
- package/out/cli/commands/anywhere.js +66 -0
- package/out/cli/commands/ask.js +243 -0
- package/out/cli/commands/auth-broker.js +24 -0
- package/out/cli/commands/auth.js +219 -0
- package/out/cli/commands/chat.js +354 -0
- package/out/cli/commands/deploy.js +223 -0
- package/out/cli/commands/gateway.js +160 -0
- package/out/cli/commands/pack.js +220 -0
- package/out/cli/commands/probe-custom-engine.js +82 -0
- package/out/cli/commands/serve.js +583 -0
- package/out/cli/commands/store.js +919 -0
- package/out/cli/credential-context.js +113 -0
- package/out/cli/deploy-init.js +2087 -0
- package/out/cli/deps.js +238 -0
- package/out/cli/index.js +390 -0
- package/out/cli/pack-loader.js +376 -0
- package/out/cli/run-custom-engine-runner.js +318 -0
- package/out/cli/runtime.js +409 -0
- package/out/cli/serve-hardening.js +325 -0
- package/out/cli/state-sync.js +135 -0
- package/out/cli/utils.js +220 -0
- package/out/cli/vscode-shim.js +86 -0
- package/out/engines/base.js +159 -0
- package/out/engines/claude.js +1215 -0
- package/out/engines/codex.js +759 -0
- package/out/engines/custom.js +632 -0
- package/out/engines/customEngineIpc.js +95 -0
- package/out/engines/customEngineRunnerEmbed.js +107 -0
- package/out/engines/customRegistry.js +274 -0
- package/out/engines/embeddedCustomEngineRunner.generated.js +9 -0
- package/out/engines/engineApiKey.js +138 -0
- package/out/engines/factory.js +45 -0
- package/out/engines/install.js +372 -0
- package/out/engines/persistentEngineWorker.js +320 -0
- package/out/engines/publish.js +341 -0
- package/out/engines/types.js +17 -0
- package/out/examples/run-headless-repl.js +291 -0
- package/out/examples/run-headless.js +187 -0
- package/out/extension.js +4472 -0
- package/out/gateway/bridge.js +805 -0
- package/out/gateway/cli-agent-id.js +36 -0
- package/out/gateway/client.js +303 -0
- package/out/gateway/client.test.js +395 -0
- package/out/gateway/gateway-scope-errors.js +14 -0
- package/out/gateway/gatewayBackup.js +76 -0
- package/out/gateway/gatewayRouteIndex.js +371 -0
- package/out/gateway/gatewaySessionStore.js +243 -0
- package/out/gateway/index.js +31 -0
- package/out/gateway/lifecycle.js +3056 -0
- package/out/gateway/openclaw-channel-routing.js +317 -0
- package/out/gateway/outboundHandles.js +373 -0
- package/out/gateway/outboundPaths.js +72 -0
- package/out/gateway/outboundSend.js +254 -0
- package/out/gateway/protocol.js +48 -0
- package/out/gateway/resetMappings.js +52 -0
- package/out/gateway/service.js +1244 -0
- package/out/gateway/sessionRouting.js +77 -0
- package/out/headless/index.js +505 -0
- package/out/headless/sync.js +473 -0
- package/out/mcp/publish.js +143 -0
- package/out/mcp.js +597 -0
- package/out/permissions.js +108 -0
- package/out/permissions.mapping.yaml +68 -0
- package/out/registry/index.js +332 -0
- package/out/remote/handleRemoteChat.js +122 -0
- package/out/remote/remotePackStatusBar.js +103 -0
- package/out/remote/serveClient.js +216 -0
- package/out/remoteSkills.js +191 -0
- package/out/runtime/index.js +32 -0
- package/out/runtime/interfaces/config-provider.js +32 -0
- package/out/runtime/interfaces/edit-tracker.js +22 -0
- package/out/runtime/interfaces/index.js +29 -0
- package/out/runtime/interfaces/logger.js +40 -0
- package/out/runtime/interfaces/permission-handler.js +66 -0
- package/out/runtime/interfaces/session-store.js +342 -0
- package/out/runtime/vscode/index.js +20 -0
- package/out/runtime/vscode/vscode-config-provider.js +77 -0
- package/out/runtime/vscode/vscode-edit-tracker.js +120 -0
- package/out/runtime/vscode/vscode-logger.js +30 -0
- package/out/runtime/vscode/vscode-permission-handler.js +72 -0
- package/out/runtime/vscode/vscode-session-store.js +22 -0
- package/out/scripts/agentide-litellm.ps1 +501 -0
- package/out/scripts/agentide-litellm.sh +700 -0
- package/out/scripts/agentide_litellm_hooks_v1.py +604 -0
- package/out/scripts/analytics/agent-fleet-widget.js +954 -0
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +160 -0
- package/out/scripts/analytics/default-seed-scripts.json +12 -0
- package/out/scripts/analytics/duckdbLocator.js +29 -0
- package/out/scripts/analytics/fleet-local-adapter.js +246 -0
- package/out/scripts/analytics/fleet-workflow.sh +263 -0
- package/out/scripts/analytics/generate-default-charts.py +685 -0
- package/out/scripts/analytics/hotspot-analysis-widget.js +909 -0
- package/out/scripts/analytics/index-traces.py +1394 -0
- package/out/scripts/analytics/install-analytics.sh +286 -0
- package/out/scripts/analytics/live-fleet-4-collector.cjs +315 -0
- package/out/scripts/analytics/live-fleet-4-daemon.mjs +134 -0
- package/out/scripts/analytics/live-fleet-4-widget.cjs +433 -0
- package/out/scripts/analytics/otel-collector.yaml +55 -0
- package/out/scripts/analytics/query-analytics.ps1 +396 -0
- package/out/scripts/analytics/query-analytics.sh +2551 -0
- package/out/scripts/analytics/session-comparison-widget.js +1468 -0
- package/out/scripts/analytics/session-timeline-widget.js +2137 -0
- package/out/scripts/analytics/setup-analytics.ps1 +432 -0
- package/out/scripts/analytics/setup-analytics.sh +854 -0
- package/out/scripts/analytics/start-analytics.ps1 +169 -0
- package/out/scripts/analytics/start-analytics.sh +323 -0
- package/out/scripts/analytics/token-cost-flamegraph-widget.js +954 -0
- package/out/scripts/analytics/token-cost-trend-widget.js +1062 -0
- package/out/scripts/analytics/workflows-collector.cjs +315 -0
- package/out/scripts/analytics/workflows-daemon.mjs +186 -0
- package/out/scripts/analytics/workflows-widget.cjs +433 -0
- package/out/scripts/analytics/wow-model-widget.js +191 -0
- package/out/scripts/gateway/Dockerfile.serve +45 -0
- package/out/scripts/gateway/docker-serve.sh +248 -0
- package/out/scripts/gateway/setup-gateway-server.ps1 +953 -0
- package/out/scripts/gateway/setup-gateway-server.sh +935 -0
- package/out/scripts/gateway/setup-gateway.ps1 +1813 -0
- package/out/scripts/gateway/setup-gateway.sh +1541 -0
- package/out/scripts/setup-cli.ps1 +86 -0
- package/out/scripts/setup-cli.sh +117 -0
- package/out/scripts/tools-manifest.json +83 -0
- package/out/scripts/vendor-tools.mjs +234 -0
- package/out/session.js +272 -0
- package/out/shared/agentEngines.js +170 -0
- package/out/shared/index.js +109 -0
- package/out/shared/models.js +235 -0
- package/out/shared/providers.js +202 -0
- package/out/skills/publish.js +178 -0
- package/out/spotlight/install.js +339 -0
- package/out/spotlight/publish.js +544 -0
- package/out/spotlight/yaml.js +31 -0
- package/out/store/github/setup.js +235 -0
- package/out/store/github/templates/build-index.ts +339 -0
- package/out/store/github/templates/build-index.yml +97 -0
- package/out/store/github/templates/package.json +11 -0
- package/out/store/index.js +755 -0
- package/out/store/oramaIndex.js +884 -0
- package/out/store/shared.js +241 -0
- package/out/sync.js +1827 -0
- package/out/terminalLogger.js +358 -0
- package/out/test/agentEnvFile.test.js +97 -0
- package/out/test/agentYaml.test.js +373 -0
- package/out/test/agentpack.test.js +639 -0
- package/out/test/analytics-lifecycle.test.js +174 -0
- package/out/test/analytics.test.js +524 -0
- package/out/test/auth-bootstrapApply.test.js +102 -0
- package/out/test/auth-broker.test.js +434 -0
- package/out/test/auth-callback.test.js +62 -0
- package/out/test/branding.test.js +229 -0
- package/out/test/cli-agent-id.test.js +55 -0
- package/out/test/credential-context.test.js +105 -0
- package/out/test/customEngineInstall.test.js +100 -0
- package/out/test/customRegistry.test.js +122 -0
- package/out/test/deploy-init.test.js +532 -0
- package/out/test/deps-auto-install.test.js +81 -0
- package/out/test/engine-integration.test.js +297 -0
- package/out/test/enginePaths.test.js +195 -0
- package/out/test/enginePublish.test.js +82 -0
- package/out/test/fleetDisplayUtils.test.js +96 -0
- package/out/test/gateway-client.test.js +381 -0
- package/out/test/gateway-lifecycle.test.js +608 -0
- package/out/test/gateway-outbound.test.js +531 -0
- package/out/test/gateway-reset-mappings.test.js +221 -0
- package/out/test/gateway-route-index.test.js +235 -0
- package/out/test/gateway-session-routing.test.js +47 -0
- package/out/test/gateway-session-store.test.js +216 -0
- package/out/test/github.test.js +232 -0
- package/out/test/headless-sync.test.js +279 -0
- package/out/test/helpers/manifest-fixtures.js +27 -0
- package/out/test/mcp-obo.test.js +82 -0
- package/out/test/mcp.test.js +307 -0
- package/out/test/openclaw-channel-routing.test.js +191 -0
- package/out/test/pathSafety.test.js +63 -0
- package/out/test/permissions.test.js +175 -0
- package/out/test/persistent-engine-worker.test.js +220 -0
- package/out/test/refreshPolicy.test.js +60 -0
- package/out/test/registry.test.js +351 -0
- package/out/test/runtime.test.js +349 -0
- package/out/test/scheduledFleetStorage.test.js +72 -0
- package/out/test/serve-hardening.test.js +192 -0
- package/out/test/serveClient.test.js +173 -0
- package/out/test/sessionJsonlFleet.test.js +78 -0
- package/out/test/shared.test.js +173 -0
- package/out/test/skills-mcp.test.js +299 -0
- package/out/test/spotlightPublish.test.js +299 -0
- package/out/test/spotlightYaml.test.js +58 -0
- package/out/test/state-sync-peer.test.js +74 -0
- package/out/test/store.test.js +331 -0
- package/out/test/stores.test.js +504 -0
- package/out/test/sync-switch.test.js +251 -0
- package/out/test/teamViewDiscovery.test.js +90 -0
- package/out/test/toolPath.test.js +120 -0
- package/out/test/utils.test.js +308 -0
- package/out/test/viewsConfigMerge.test.js +180 -0
- package/out/test/windows-command-line.test.js +75 -0
- package/out/utils/agentEnvFile.js +131 -0
- package/out/utils/binary.js +175 -0
- package/out/utils/index.js +37 -0
- package/out/utils/network.js +74 -0
- package/out/utils/pathSafety.js +60 -0
- package/out/utils/paths.js +116 -0
- package/out/utils/pid.js +180 -0
- package/out/utils/pythonRunner.js +258 -0
- package/out/utils/resolveNodeBinary.js +168 -0
- package/out/utils/toolPath.js +83 -0
- package/out/utils/windowsCommandLine.js +29 -0
- package/out/utils.js +915 -0
- package/out/workspaceFolders.js +59 -0
- 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
|
+
```
|