@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,68 @@
1
+ # AgentIDE Permission Mapping
2
+ # Security-auditable mapping from unified permissions to engine SDK options
3
+ #
4
+ # RULE: Most restrictive wins - manifest cannot be bypassed by user settings
5
+ #
6
+ # See PLAN/perm-design.md for full documentation.
7
+
8
+ version: "1.0"
9
+
10
+ # Default permissions for agents without explicit permissions
11
+ defaults:
12
+ fileAccess: workspace-write # read-only | workspace-write | full
13
+
14
+ # Claude Agent SDK mapping
15
+ #
16
+ # NOTE: Claude does NOT have a sandboxMode equivalent for fileAccess.
17
+ # File access is controlled via `additionalDirectories` which lists allowed paths.
18
+ # The toClaudeOptions() function handles this by passing workspace folders directly.
19
+ #
20
+ # SECURITY: Claude's `additionalDirectories` is more of a suggestion than a hard
21
+ # sandbox - Claude can still potentially access files outside if it tries.
22
+ # This is an SDK limitation, not something we can fix in the mapping.
23
+ #
24
+ # permissionMode options used by V1:
25
+ # - 'plan': strict read-only (no tool execution)
26
+ # - 'acceptEdits': non-interactive auto-accept file edits (workspace-write)
27
+ # - 'bypassPermissions': non-interactive full access mode
28
+ claude:
29
+ # fileAccess: read-only
30
+ readOnly:
31
+ permissionMode: plan
32
+ allowDangerouslySkipPermissions: false
33
+
34
+ # fileAccess: workspace-write
35
+ workspaceWrite:
36
+ permissionMode: acceptEdits
37
+ allowDangerouslySkipPermissions: false
38
+
39
+ # fileAccess: full
40
+ fullAccess:
41
+ permissionMode: bypassPermissions
42
+ allowDangerouslySkipPermissions: true
43
+
44
+ # Codex SDK mapping
45
+ #
46
+ # NOTE: Codex has explicit sandboxMode for fileAccess control.
47
+ # Approval is non-interactive in V1.
48
+ # - workspace-write: Can only write to workspace folders
49
+ # - danger-full-access: Full filesystem access (requires explicit opt-in)
50
+ #
51
+ # SECURITY: Unlike Claude, Codex's `sandboxMode` is a HARD enforcement at the
52
+ # SDK level. The sandbox cannot be bypassed by the agent.
53
+ codex:
54
+ approvalPolicy: never
55
+
56
+ # fileAccess: read-only
57
+ readOnly:
58
+ sandboxMode: read-only
59
+
60
+ # fileAccess: workspace-write - Only workspace folders + additionalDirectories
61
+ # (additionalDirectories always includes all multi-root workspace folders)
62
+ workspaceWrite:
63
+ sandboxMode: workspace-write
64
+
65
+ # fileAccess: full - Full filesystem access
66
+ fullAccess:
67
+ sandboxMode: danger-full-access
68
+
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /*---------------------------------------------------------------------------------------------
6
+ * Local Registry - JSON file-based registry for pack/skill/MCP discovery.
7
+ *
8
+ * Design:
9
+ * - Uses simple JSON files for storage
10
+ * - Stores data in ~/.agentide/registry/
11
+ * - Provides search and lookup APIs
12
+ * - Easy to test with Mocha (no native dependencies)
13
+ *--------------------------------------------------------------------------------------------*/
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.LocalRegistry = void 0;
49
+ exports.getRegistry = getRegistry;
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const os = __importStar(require("os"));
53
+ function createEmptyData() {
54
+ return { packs: {}, skills: {}, mcp: {} };
55
+ }
56
+ // -----------------------------------------------------------------------------
57
+ // Registry Class
58
+ // -----------------------------------------------------------------------------
59
+ class LocalRegistry {
60
+ data = null;
61
+ registryPath;
62
+ constructor(registryPath, _outputChannel) {
63
+ this.registryPath = registryPath || path.join(os.homedir(), '.agentide', 'registry.json');
64
+ }
65
+ // -------------------------------------------------------------------------
66
+ // Data Management
67
+ // -------------------------------------------------------------------------
68
+ ensureDir() {
69
+ const dir = path.dirname(this.registryPath);
70
+ if (!fs.existsSync(dir)) {
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ }
73
+ }
74
+ load() {
75
+ if (this.data) {
76
+ return this.data;
77
+ }
78
+ if (fs.existsSync(this.registryPath)) {
79
+ try {
80
+ const raw = fs.readFileSync(this.registryPath, 'utf-8');
81
+ this.data = JSON.parse(raw);
82
+ }
83
+ catch {
84
+ this.data = createEmptyData();
85
+ }
86
+ }
87
+ else {
88
+ this.data = createEmptyData();
89
+ }
90
+ return this.data;
91
+ }
92
+ save() {
93
+ if (!this.data) {
94
+ return;
95
+ }
96
+ this.ensureDir();
97
+ fs.writeFileSync(this.registryPath, JSON.stringify(this.data, null, 2));
98
+ }
99
+ // -------------------------------------------------------------------------
100
+ // Pack Operations
101
+ // -------------------------------------------------------------------------
102
+ async registerPack(input) {
103
+ const data = this.load();
104
+ data.packs[input.slug] = {
105
+ slug: input.slug,
106
+ displayName: input.displayName,
107
+ description: input.description,
108
+ githubOwner: input.github?.owner,
109
+ githubRepo: input.github?.repo,
110
+ latestVersion: input.latestVersion,
111
+ tags: input.tags,
112
+ installs: input.stats.installs,
113
+ stars: input.stats.stars,
114
+ updatedAt: Date.now(),
115
+ };
116
+ this.save();
117
+ }
118
+ async getPack(slug) {
119
+ const data = this.load();
120
+ return data.packs[slug] || null;
121
+ }
122
+ async listPacks() {
123
+ const data = this.load();
124
+ return Object.values(data.packs).sort((a, b) => b.installs - a.installs);
125
+ }
126
+ async trackPackInstall(slug) {
127
+ const data = this.load();
128
+ const pack = data.packs[slug];
129
+ if (pack) {
130
+ pack.installs += 1;
131
+ pack.updatedAt = Date.now();
132
+ this.save();
133
+ }
134
+ }
135
+ // -------------------------------------------------------------------------
136
+ // Skill Operations
137
+ // -------------------------------------------------------------------------
138
+ async registerSkill(input) {
139
+ const data = this.load();
140
+ const existing = data.skills[input.slug];
141
+ // Merge installedTo: keep existing agent packs and add new one if provided
142
+ let installedTo = existing?.installedTo || [];
143
+ if (input.agentPackId && !installedTo.includes(input.agentPackId)) {
144
+ installedTo = [...installedTo, input.agentPackId];
145
+ }
146
+ data.skills[input.slug] = {
147
+ slug: input.slug,
148
+ displayName: input.displayName,
149
+ description: input.description,
150
+ githubOwner: input.github?.owner,
151
+ githubRepo: input.github?.repo,
152
+ githubPath: input.github?.path,
153
+ latestVersion: input.latestVersion,
154
+ tags: input.tags,
155
+ installs: input.stats.installs,
156
+ updatedAt: Date.now(),
157
+ installedTo,
158
+ };
159
+ this.save();
160
+ }
161
+ async getSkill(slug) {
162
+ const data = this.load();
163
+ return data.skills[slug] || null;
164
+ }
165
+ async listSkills() {
166
+ const data = this.load();
167
+ return Object.values(data.skills).sort((a, b) => b.installs - a.installs);
168
+ }
169
+ // -------------------------------------------------------------------------
170
+ // MCP Operations
171
+ // -------------------------------------------------------------------------
172
+ async registerMcp(input) {
173
+ const data = this.load();
174
+ const existing = data.mcp[input.slug];
175
+ // Merge installedTo: keep existing agent packs and add new one if provided
176
+ let installedTo = existing?.installedTo || [];
177
+ if (input.agentPackId && !installedTo.includes(input.agentPackId)) {
178
+ installedTo = [...installedTo, input.agentPackId];
179
+ }
180
+ data.mcp[input.slug] = {
181
+ slug: input.slug,
182
+ displayName: input.displayName,
183
+ description: input.description,
184
+ transport: input.transport,
185
+ githubOwner: input.github?.owner,
186
+ githubRepo: input.github?.repo,
187
+ npmPackage: input.npmPackage,
188
+ latestVersion: input.latestVersion,
189
+ tags: input.tags,
190
+ installs: input.stats.installs,
191
+ updatedAt: Date.now(),
192
+ installedTo,
193
+ };
194
+ this.save();
195
+ }
196
+ async getMcp(slug) {
197
+ const data = this.load();
198
+ return data.mcp[slug] || null;
199
+ }
200
+ async listMcp() {
201
+ const data = this.load();
202
+ return Object.values(data.mcp).sort((a, b) => b.installs - a.installs);
203
+ }
204
+ /**
205
+ * Check if a skill is installed to a specific agent pack.
206
+ */
207
+ async isSkillInstalledTo(slug, agentPackId) {
208
+ const skill = await this.getSkill(slug);
209
+ return skill?.installedTo?.includes(agentPackId) ?? false;
210
+ }
211
+ /**
212
+ * Check if an MCP is installed to a specific agent pack.
213
+ */
214
+ async isMcpInstalledTo(slug, agentPackId) {
215
+ const mcp = await this.getMcp(slug);
216
+ return mcp?.installedTo?.includes(agentPackId) ?? false;
217
+ }
218
+ /**
219
+ * Remove an agent pack from a skill's installedTo list.
220
+ * Used when uninstalling a skill from an agent pack.
221
+ */
222
+ async unregisterSkillFromPack(slug, agentPackId) {
223
+ const data = this.load();
224
+ const skill = data.skills[slug];
225
+ if (skill && skill.installedTo) {
226
+ skill.installedTo = skill.installedTo.filter(id => id !== agentPackId);
227
+ skill.updatedAt = Date.now();
228
+ this.save();
229
+ }
230
+ }
231
+ /**
232
+ * Remove an agent pack from an MCP's installedTo list.
233
+ * Used when uninstalling an MCP from an agent pack.
234
+ */
235
+ async unregisterMcpFromPack(slug, agentPackId) {
236
+ const data = this.load();
237
+ const mcp = data.mcp[slug];
238
+ if (mcp && mcp.installedTo) {
239
+ mcp.installedTo = mcp.installedTo.filter(id => id !== agentPackId);
240
+ mcp.updatedAt = Date.now();
241
+ this.save();
242
+ }
243
+ }
244
+ // -------------------------------------------------------------------------
245
+ // Search
246
+ // -------------------------------------------------------------------------
247
+ async search(query, options) {
248
+ const types = options?.types || ['pack', 'skill', 'mcp'];
249
+ const limit = options?.limit || 20;
250
+ const results = [];
251
+ const queryLower = query.toLowerCase();
252
+ const queryTerms = queryLower.split(/\s+/).filter(t => t.length > 0);
253
+ // Score function - returns 0 if no term matches
254
+ const score = (item, installs) => {
255
+ const text = `${item.slug} ${item.displayName} ${item.description || ''} ${item.tags.join(' ')}`.toLowerCase();
256
+ let termScore = 0;
257
+ for (const term of queryTerms) {
258
+ if (text.includes(term)) {
259
+ termScore += 10;
260
+ }
261
+ }
262
+ // Only add popularity boost if there's a term match
263
+ if (termScore === 0) {
264
+ return 0;
265
+ }
266
+ return termScore + installs / 100;
267
+ };
268
+ // Search packs
269
+ if (types.includes('pack')) {
270
+ const packs = await this.listPacks();
271
+ for (const pack of packs) {
272
+ const s = score(pack, pack.installs);
273
+ if (s > 0) {
274
+ results.push({
275
+ type: 'pack',
276
+ slug: pack.slug,
277
+ displayName: pack.displayName,
278
+ description: pack.description,
279
+ score: s,
280
+ data: pack,
281
+ });
282
+ }
283
+ }
284
+ }
285
+ // Search skills
286
+ if (types.includes('skill')) {
287
+ const skills = await this.listSkills();
288
+ for (const skill of skills) {
289
+ const s = score(skill, skill.installs);
290
+ if (s > 0) {
291
+ results.push({
292
+ type: 'skill',
293
+ slug: skill.slug,
294
+ displayName: skill.displayName,
295
+ description: skill.description,
296
+ score: s,
297
+ data: skill,
298
+ });
299
+ }
300
+ }
301
+ }
302
+ // Search MCP
303
+ if (types.includes('mcp')) {
304
+ const mcps = await this.listMcp();
305
+ for (const mcp of mcps) {
306
+ const s = score(mcp, mcp.installs);
307
+ if (s > 0) {
308
+ results.push({
309
+ type: 'mcp',
310
+ slug: mcp.slug,
311
+ displayName: mcp.displayName,
312
+ description: mcp.description,
313
+ score: s,
314
+ data: mcp,
315
+ });
316
+ }
317
+ }
318
+ }
319
+ return results.sort((a, b) => b.score - a.score).slice(0, limit);
320
+ }
321
+ }
322
+ exports.LocalRegistry = LocalRegistry;
323
+ // -----------------------------------------------------------------------------
324
+ // Singleton Instance
325
+ // -----------------------------------------------------------------------------
326
+ let _registry = null;
327
+ function getRegistry(outputChannel) {
328
+ if (!_registry) {
329
+ _registry = new LocalRegistry(undefined, outputChannel);
330
+ }
331
+ return _registry;
332
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isLoopbackServeUrl = isLoopbackServeUrl;
7
+ exports.handleRemoteServeChat = handleRemoteServeChat;
8
+ const base_js_1 = require("../engines/base.js");
9
+ const utils_js_1 = require("../utils.js");
10
+ const sessionEvents_js_1 = require("../analytics/sessionEvents.js");
11
+ const serveClient_js_1 = require("./serveClient.js");
12
+ function isLoopbackServeUrl(url) {
13
+ try {
14
+ const host = new URL(url).hostname;
15
+ return host === '127.0.0.1' || host === 'localhost' || host === '::1';
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ async function handleRemoteServeChat(deps, args) {
22
+ const { outputChannel, syncService, sessionEventWriter } = deps;
23
+ const { streamId, message, remoteUrl, remoteManifest, incomingOptions, gatewayEmitter } = args;
24
+ if (!streamId) {
25
+ return { error: 'streamId is required - non-streaming mode is no longer supported' };
26
+ }
27
+ const abortController = new AbortController();
28
+ deps.activeRunsByStreamId.set(streamId, {
29
+ streamId,
30
+ engine: 'remote',
31
+ startedAt: Date.now(),
32
+ abortController,
33
+ });
34
+ const ipcEmitter = (0, utils_js_1.createIPCStreamEmitter)(streamId);
35
+ const chatSessionResource = args.sessionResource;
36
+ const chatRequestId = args.requestId;
37
+ const questionEmitter = {
38
+ ...ipcEmitter,
39
+ async question(payload) {
40
+ if (chatSessionResource) {
41
+ return deps.askQuestionViaWorkbenchTool(chatSessionResource, chatRequestId, payload, abortController.signal);
42
+ }
43
+ return deps.askQuestionFromChatUI(streamId, payload);
44
+ },
45
+ };
46
+ const emitter = gatewayEmitter ? {
47
+ ...questionEmitter,
48
+ async thinking(delta) {
49
+ await ipcEmitter.thinking(delta);
50
+ await gatewayEmitter.thinking(`<thinking>${delta}</thinking>`);
51
+ },
52
+ async text(delta) {
53
+ await ipcEmitter.text(delta);
54
+ await gatewayEmitter.text(delta);
55
+ },
56
+ async toolStart(toolName, input, toolCallId, metadata) {
57
+ await ipcEmitter.toolStart(toolName, input, toolCallId, metadata);
58
+ await gatewayEmitter.toolStart(toolName, input, toolCallId, metadata);
59
+ },
60
+ async toolEnd(toolName, toolCallId, result, isError, metadata) {
61
+ await ipcEmitter.toolEnd(toolName, toolCallId, result, isError, metadata);
62
+ await gatewayEmitter.toolEnd(toolName, toolCallId, result, isError, metadata);
63
+ },
64
+ async progress(msg) {
65
+ await ipcEmitter.progress(msg);
66
+ await gatewayEmitter.progress(msg);
67
+ },
68
+ async question(payload) {
69
+ return questionEmitter.question(payload);
70
+ },
71
+ async error(msg) {
72
+ await ipcEmitter.error(msg);
73
+ await gatewayEmitter.error(msg);
74
+ },
75
+ async done() {
76
+ await ipcEmitter.done();
77
+ await gatewayEmitter.done();
78
+ },
79
+ } : questionEmitter;
80
+ const requestId = (0, base_js_1.generateRequestId)();
81
+ let auth = deps.getServeAuth ? await deps.getServeAuth() : undefined;
82
+ if (!isLoopbackServeUrl(remoteUrl) && !auth?.accessToken && deps.ensureSignedIn) {
83
+ auth = await deps.ensureSignedIn();
84
+ }
85
+ if (!isLoopbackServeUrl(remoteUrl) && !auth?.accessToken) {
86
+ const authError = 'Sign in to AgentHippo was cancelled or timed out. Use Command Palette → "Sign In to AgentHippo" to try again.';
87
+ await emitter.error(authError);
88
+ await emitter.done();
89
+ return { error: authError };
90
+ }
91
+ const remoteSessionId = incomingOptions.contextSessionId?.trim() ||
92
+ incomingOptions.sessionId?.trim() ||
93
+ `ide-remote-${streamId}`;
94
+ const observableEmitter = (0, sessionEvents_js_1.wrapEmitterWithObservability)(emitter, sessionEventWriter, remoteSessionId, requestId);
95
+ deps.log(outputChannel, `[AgentIDE] Remote serve chat: url=${remoteUrl}, session=${remoteSessionId}, agent=${remoteManifest?.metadata?.name ?? 'unknown'}`);
96
+ try {
97
+ syncService.incrementActiveAgentTurns();
98
+ await observableEmitter.emitTurnStart();
99
+ await (0, serveClient_js_1.streamRemoteServeChat)({
100
+ baseUrl: remoteUrl,
101
+ message,
102
+ sessionId: remoteSessionId,
103
+ signal: abortController.signal,
104
+ auth,
105
+ }, observableEmitter);
106
+ await observableEmitter.emitTurnEnd(true);
107
+ return { streaming: true };
108
+ }
109
+ catch (err) {
110
+ const errorMsg = err instanceof Error ? err.message : String(err);
111
+ deps.log(outputChannel, `[AgentIDE] Remote serve error: ${errorMsg}`);
112
+ await observableEmitter.error(errorMsg);
113
+ await observableEmitter.done();
114
+ await observableEmitter.emitTurnEnd(false);
115
+ return { error: errorMsg };
116
+ }
117
+ finally {
118
+ deps.rejectPendingQuestionsForStream(streamId, 'Run finished');
119
+ deps.activeRunsByStreamId.delete(streamId);
120
+ syncService.decrementActiveAgentTurns();
121
+ }
122
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.RemotePackStatusBar = void 0;
40
+ exports.formatRemotePackHost = formatRemotePackHost;
41
+ exports.formatRemotePackStatusLabel = formatRemotePackStatusLabel;
42
+ const vscode = __importStar(require("vscode"));
43
+ const serveClient_js_1 = require("./serveClient.js");
44
+ function formatRemotePackHost(url) {
45
+ try {
46
+ return new URL(url).host;
47
+ }
48
+ catch {
49
+ return url;
50
+ }
51
+ }
52
+ function formatRemotePackStatusLabel(packId, remoteUrl) {
53
+ return `Remote · ${packId} @ ${formatRemotePackHost(remoteUrl)}`;
54
+ }
55
+ class RemotePackStatusBar {
56
+ syncService;
57
+ getWorkspaceRoot;
58
+ outputChannel;
59
+ item;
60
+ isRemoteActive = false;
61
+ constructor(syncService, getWorkspaceRoot, outputChannel) {
62
+ this.syncService = syncService;
63
+ this.getWorkspaceRoot = getWorkspaceRoot;
64
+ this.outputChannel = outputChannel;
65
+ this.item = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 98);
66
+ this.item.name = 'AgentHippo Remote Agent';
67
+ }
68
+ async refresh(options) {
69
+ const wasRemote = this.isRemoteActive;
70
+ let manifest;
71
+ try {
72
+ manifest = await this.syncService.getActiveAgentManifest(this.getWorkspaceRoot(), this.outputChannel);
73
+ }
74
+ catch {
75
+ this.hide();
76
+ return;
77
+ }
78
+ const remoteUrl = (0, serveClient_js_1.getRemoteServeUrl)(manifest);
79
+ const packId = manifest?.metadata?.name;
80
+ if (remoteUrl && packId) {
81
+ this.item.text = `$(globe) ${formatRemotePackStatusLabel(packId, remoteUrl)}`;
82
+ this.item.tooltip = [
83
+ `Chat runs on remote serve at ${remoteUrl}.`,
84
+ 'Engine and model are fixed on the server; the mode/model picker has no effect.',
85
+ ].join('\n');
86
+ this.item.show();
87
+ this.isRemoteActive = true;
88
+ if (options?.notifyOnActivate && !wasRemote) {
89
+ void vscode.window.showInformationMessage(`Remote agent active: ${packId} @ ${formatRemotePackHost(remoteUrl)}. Engine/model picker has no effect.`);
90
+ }
91
+ return;
92
+ }
93
+ this.hide();
94
+ }
95
+ hide() {
96
+ this.item.hide();
97
+ this.isRemoteActive = false;
98
+ }
99
+ dispose() {
100
+ this.item.dispose();
101
+ }
102
+ }
103
+ exports.RemotePackStatusBar = RemotePackStatusBar;