@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
package/out/mcp.js ADDED
@@ -0,0 +1,597 @@
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.AGENTHIPPO_MCP_SERVERS_ENV = exports.AGENTHIPPO_DATA_TOKEN_FILE_ENV = void 0;
40
+ exports.loadMcpServers = loadMcpServers;
41
+ exports.resolveMcpEnvVar = resolveMcpEnvVar;
42
+ exports.mcpConfigCacheSignatureSuffix = mcpConfigCacheSignatureSuffix;
43
+ exports.resolveMcpServerEnv = resolveMcpServerEnv;
44
+ exports.generateCodexMcpConfig = generateCodexMcpConfig;
45
+ exports.getDefaultMcpConfig = getDefaultMcpConfig;
46
+ exports.loadBundledMcpServers = loadBundledMcpServers;
47
+ exports.formatInlineMcpServers = formatInlineMcpServers;
48
+ exports.serializeInlineMcpServers = serializeInlineMcpServers;
49
+ exports.parseInlineMcpServers = parseInlineMcpServers;
50
+ const fs_1 = require("fs");
51
+ const path = __importStar(require("path"));
52
+ const credential_context_1 = require("./cli/credential-context");
53
+ const paths_1 = require("./agentpack/paths");
54
+ const agentEnvFile_1 = require("./utils/agentEnvFile");
55
+ // -----------------------------------------------------------------------------
56
+ // Constants
57
+ // -----------------------------------------------------------------------------
58
+ /** Special command value indicating a bundled server reference */
59
+ const ENABLE_BUNDLED_COMMAND = 'enable-bundled';
60
+ /** Special command value indicating a bundled server should be explicitly disabled */
61
+ const DISABLE_BUNDLED_COMMAND = 'disable-bundled';
62
+ /** Name of the MCP config file */
63
+ const MCP_CONFIG_FILE = '.mcp.json';
64
+ /** MCP servers subdirectory in base-prompts */
65
+ const MCP_SERVERS_DIR = 'mcp-servers';
66
+ /**
67
+ * Env var passed to stdio MCP child processes: path to the per-turn data credential
68
+ * file (OBO token, etc.). MCP servers read this file on each tool call — spawn env
69
+ * is fixed at process start and cannot use AsyncLocalStorage.
70
+ */
71
+ exports.AGENTHIPPO_DATA_TOKEN_FILE_ENV = 'AGENTHIPPO_DATA_TOKEN_FILE';
72
+ const ENV_PLACEHOLDER = /\$\{env:(\w+)\}/g;
73
+ const CREDENTIAL_PLACEHOLDER = /\$\{credential:(\w+)\}/g;
74
+ // -----------------------------------------------------------------------------
75
+ // Main API
76
+ // -----------------------------------------------------------------------------
77
+ /**
78
+ * Load MCP servers for an agent.
79
+ *
80
+ * All agents (including default) load from:
81
+ * <workspace>/.agentide/agents/<agentId>/mcp/.mcp.json
82
+ *
83
+ * @param agentId - Agent identifier ('default' or pack name)
84
+ * @param workspaceRoot - Workspace root path
85
+ * @param bundledBasePromptsDir - Path to extension's base-prompts directory (for bundled server resolution)
86
+ */
87
+ async function loadMcpServers(agentId, workspaceRoot, bundledBasePromptsDir) {
88
+ const mcpDir = (0, paths_1.getAgentMcpDir)(workspaceRoot, agentId || paths_1.AGENT_CONSTANTS.DEFAULT_AGENT_ID);
89
+ const configPath = path.join(mcpDir, MCP_CONFIG_FILE);
90
+ if (!await pathExists(configPath)) {
91
+ return [];
92
+ }
93
+ const bundledMcpDir = bundledBasePromptsDir
94
+ ? path.join(bundledBasePromptsDir, MCP_SERVERS_DIR)
95
+ : '';
96
+ return loadMcpConfigFile(configPath, mcpDir, workspaceRoot, bundledMcpDir);
97
+ }
98
+ /**
99
+ * Load MCP servers from a .mcp.json config file.
100
+ *
101
+ * @param configPath - Path to the .mcp.json file
102
+ * @param mcpDir - Directory containing the .mcp.json (for relative path resolution)
103
+ * @param workspaceRoot - Workspace root for .env file loading
104
+ * @param bundledMcpDir - Path to bundled MCP servers directory
105
+ */
106
+ async function loadMcpConfigFile(configPath, mcpDir, workspaceRoot, bundledMcpDir) {
107
+ let config;
108
+ try {
109
+ const raw = await fs_1.promises.readFile(configPath, 'utf-8');
110
+ config = JSON.parse(raw);
111
+ }
112
+ catch (e) {
113
+ console.warn(`[AgentIDE] Failed to load MCP config from ${configPath}:`, e);
114
+ return [];
115
+ }
116
+ if (!config.mcpServers) {
117
+ return [];
118
+ }
119
+ // Load .env files for environment variable resolution
120
+ const envSources = await loadEnvFiles(workspaceRoot, mcpDir);
121
+ const servers = [];
122
+ for (const [name, entry] of Object.entries(config.mcpServers)) {
123
+ try {
124
+ const server = await resolveServerEntry(name, entry, mcpDir, bundledMcpDir, envSources);
125
+ if (server) {
126
+ servers.push(server);
127
+ }
128
+ }
129
+ catch (e) {
130
+ console.warn(`[AgentIDE] Failed to resolve MCP server '${name}':`, e);
131
+ }
132
+ }
133
+ return servers;
134
+ }
135
+ /**
136
+ * Resolve a server entry to a fully resolved McpServerConfig.
137
+ */
138
+ async function resolveServerEntry(name, entry, mcpDir, bundledMcpDir, envSources) {
139
+ if (entry.command === DISABLE_BUNDLED_COMMAND) {
140
+ // Explicitly disabled in .mcp.json; skip this server entirely.
141
+ return null;
142
+ }
143
+ if (entry.command === ENABLE_BUNDLED_COMMAND) {
144
+ // Resolve bundled server
145
+ return resolveBundledServer(name, entry, bundledMcpDir, envSources);
146
+ }
147
+ // HTTP Streamable MCP server — no subprocess needed
148
+ if (entry.url) {
149
+ return {
150
+ name,
151
+ label: entry.label ?? name,
152
+ description: entry.description,
153
+ command: '',
154
+ args: [],
155
+ url: entry.url,
156
+ headers: resolveHeaders(entry.headers, envSources),
157
+ };
158
+ }
159
+ // Custom stdio server - resolve relative paths from mcpDir
160
+ return {
161
+ name,
162
+ label: entry.label ?? name,
163
+ description: entry.description,
164
+ command: entry.command ?? '',
165
+ args: resolveArgs(entry.args, mcpDir),
166
+ env: resolveEnv(entry.env, envSources),
167
+ };
168
+ }
169
+ /**
170
+ * Resolve a bundled server reference.
171
+ */
172
+ async function resolveBundledServer(name, entry, bundledMcpDir, envSources) {
173
+ const bundled = await loadBundledServerConfig(name, bundledMcpDir);
174
+ if (!bundled) {
175
+ return null;
176
+ }
177
+ const serverDir = path.join(bundledMcpDir, name);
178
+ // Merge bundled env with user-provided overrides (user env takes precedence)
179
+ const mergedEnv = { ...(bundled.env ?? {}) };
180
+ if (entry.env) {
181
+ for (const [key, value] of Object.entries(entry.env)) {
182
+ mergedEnv[key] = value;
183
+ }
184
+ }
185
+ return {
186
+ name,
187
+ label: entry.label ?? bundled.label ?? name,
188
+ description: entry.description ?? bundled.description,
189
+ command: bundled.command,
190
+ args: resolveArgs(bundled.args, serverDir),
191
+ env: resolveEnv(mergedEnv, envSources),
192
+ };
193
+ }
194
+ /**
195
+ * Load a bundled server config from base-prompts/mcp-servers/<name>/mcp.json.
196
+ */
197
+ async function loadBundledServerConfig(name, bundledMcpDir) {
198
+ if (!bundledMcpDir) {
199
+ console.warn(`[AgentIDE] Bundled MCP directory unavailable; cannot resolve '${name}'`);
200
+ return null;
201
+ }
202
+ const configPath = path.join(bundledMcpDir, name, 'mcp.json');
203
+ if (!await pathExists(configPath)) {
204
+ console.warn(`[AgentIDE] Bundled server '${name}' not found at ${configPath}`);
205
+ return null;
206
+ }
207
+ try {
208
+ const raw = await fs_1.promises.readFile(configPath, 'utf-8');
209
+ const config = JSON.parse(raw);
210
+ if (!config.command || typeof config.command !== 'string') {
211
+ console.warn(`[AgentIDE] Invalid bundled server config at ${configPath}: missing command`);
212
+ return null;
213
+ }
214
+ return config;
215
+ }
216
+ catch (e) {
217
+ console.warn(`[AgentIDE] Failed to load bundled server config from ${configPath}:`, e);
218
+ return null;
219
+ }
220
+ }
221
+ // -----------------------------------------------------------------------------
222
+ // Variable Resolution
223
+ // -----------------------------------------------------------------------------
224
+ /**
225
+ * Resolve variables in args array.
226
+ * - Relative paths (./) are resolved from serverDir
227
+ * - ${serverDir} is resolved to serverDir
228
+ */
229
+ function resolveArgs(args, serverDir) {
230
+ if (!args) {
231
+ return [];
232
+ }
233
+ return args.map(arg => {
234
+ let resolved = arg;
235
+ // Resolve ${serverDir}
236
+ resolved = resolved.replace(/\$\{serverDir\}/g, serverDir);
237
+ // Resolve relative paths
238
+ if (resolved.startsWith('./') || resolved.startsWith('../')) {
239
+ resolved = path.resolve(serverDir, resolved);
240
+ }
241
+ return resolved;
242
+ });
243
+ }
244
+ /**
245
+ * Resolve ${env:VAR_NAME} in env values.
246
+ *
247
+ * Lookup order (first match wins):
248
+ * 1. process.env (shell environment)
249
+ * 2. Workspace .env file (<workspace>/.env)
250
+ * 3. MCP directory .env file (<mcpDir>/.env)
251
+ *
252
+ * @param env - Environment variables with ${env:VAR_NAME} placeholders
253
+ * @param envSources - Additional env sources to check (loaded from .env files)
254
+ */
255
+ /**
256
+ * Resolve a single ${env:VAR} reference for MCP child processes.
257
+ *
258
+ * The turn's OBO data token is exposed two ways:
259
+ * - `${credential:dataToken}` placeholder (pack-author-facing; handled in resolveEnv).
260
+ * - A configurable set of env-var aliases (default `DATABRICKS_TOKEN`) for packs that
261
+ * reference the token via `${env:VAR}` directly. Override the alias list with the
262
+ * `AGENTHIPPO_DATA_TOKEN_ENV_VARS` env var (comma-separated) — keeps this helper
263
+ * vendor-neutral instead of hardcoding one provider's token name.
264
+ *
265
+ * When a turn-scoped data token file exists, the token is NOT baked into spawn env —
266
+ * MCP servers read it from AGENTHIPPO_DATA_TOKEN_FILE on each tool call instead.
267
+ */
268
+ function resolveMcpEnvVar(varName, envSources = {}) {
269
+ const cred = (0, credential_context_1.currentCredential)();
270
+ const tokenFile = cred?.dataTokenFile;
271
+ const aliases = getDataTokenEnvAliases();
272
+ const isDataTokenVar = varName === 'dataToken' || aliases.includes(varName);
273
+ if (tokenFile && isDataTokenVar) {
274
+ // Token lives in the per-turn file (AGENTHIPPO_DATA_TOKEN_FILE); don't bake into spawn env.
275
+ return '';
276
+ }
277
+ if (varName === 'dataToken') {
278
+ return cred?.dataToken?.trim() ?? '';
279
+ }
280
+ if (cred?.dataToken?.trim() && aliases.includes(varName)) {
281
+ return cred.dataToken.trim();
282
+ }
283
+ return process.env[varName] ?? envSources[varName] ?? '';
284
+ }
285
+ /**
286
+ * Env-var names that resolve to the turn's OBO data token when a pack references
287
+ * `${env:VAR}` directly. Defaults to `DATABRICKS_TOKEN`; override at deploy time via
288
+ * `AGENTHIPPO_DATA_TOKEN_ENV_VARS=VAR1,VAR2` (empty value → no aliases).
289
+ */
290
+ function getDataTokenEnvAliases() {
291
+ const raw = process.env.AGENTHIPPO_DATA_TOKEN_ENV_VARS;
292
+ if (raw !== undefined) {
293
+ return raw.split(',').map((v) => v.trim()).filter(Boolean);
294
+ }
295
+ return ['DATABRICKS_TOKEN'];
296
+ }
297
+ function envValueUsesCredentialDataToken(value) {
298
+ return /\$\{credential:dataToken\}/.test(value);
299
+ }
300
+ /** Suffix for Codex config.toml cache invalidation when MCP credential scope changes. */
301
+ function mcpConfigCacheSignatureSuffix() {
302
+ const cred = (0, credential_context_1.currentCredential)();
303
+ const aliases = getDataTokenEnvAliases();
304
+ if (cred?.dataTokenFile) {
305
+ return `file:${cred.dataTokenFile}:aliases=${aliases.join(',')}`;
306
+ }
307
+ if (cred?.dataToken?.trim()) {
308
+ return `inline-token:aliases=${aliases.join(',')}`;
309
+ }
310
+ return `no-token:aliases=${aliases.join(',')}`;
311
+ }
312
+ function resolveEnv(env, envSources = {}) {
313
+ if (!env) {
314
+ return undefined;
315
+ }
316
+ const resolved = {};
317
+ const tokenFile = (0, credential_context_1.currentCredential)()?.dataTokenFile;
318
+ if (tokenFile) {
319
+ resolved[exports.AGENTHIPPO_DATA_TOKEN_FILE_ENV] = tokenFile;
320
+ }
321
+ for (const [key, value] of Object.entries(env)) {
322
+ CREDENTIAL_PLACEHOLDER.lastIndex = 0;
323
+ if (envValueUsesCredentialDataToken(value)) {
324
+ // Credential-backed secret. When a per-turn token file exists, the key is intentionally
325
+ // NOT set here: the MCP server reads the token from AGENTHIPPO_DATA_TOKEN_FILE
326
+ // (injected above) on each tool call, so baking it into spawn env would be redundant
327
+ // and would leak the turn-scoped token into the long-lived child process env.
328
+ // Prefer the OBO token file, then inline token, then env fallback.
329
+ if (tokenFile) {
330
+ // AGENTHIPPO_DATA_TOKEN_FILE already injected above; don't bake the token here.
331
+ }
332
+ else if ((0, credential_context_1.currentCredential)()?.dataToken?.trim()) {
333
+ resolved[key] = (0, credential_context_1.currentCredential)().dataToken.trim();
334
+ }
335
+ else {
336
+ // No OBO credential (local dev / non-serve context): fall back to env var.
337
+ const fallback = process.env[key] ?? envSources[key] ?? '';
338
+ if (fallback) {
339
+ resolved[key] = fallback;
340
+ }
341
+ }
342
+ continue;
343
+ }
344
+ resolved[key] = value.replace(ENV_PLACEHOLDER, (_, varName) => resolveMcpEnvVar(varName, envSources));
345
+ }
346
+ return resolved;
347
+ }
348
+ /** Resolve MCP server env placeholders (exported for tests). */
349
+ function resolveMcpServerEnv(env, envSources = {}) {
350
+ return resolveEnv(env, envSources);
351
+ }
352
+ /**
353
+ * Resolve `${env:VAR}` placeholders in HTTP MCP server headers and drop entries that resolve
354
+ * to empty (e.g. an unset token env var) so we never send a header like `Authorization: `.
355
+ * Returns undefined when no usable headers remain.
356
+ */
357
+ function resolveHeaders(headers, envSources = {}) {
358
+ if (!headers) {
359
+ return undefined;
360
+ }
361
+ const resolved = {};
362
+ for (const [key, value] of Object.entries(headers)) {
363
+ const rv = value.replace(ENV_PLACEHOLDER, (_, varName) => resolvePlainEnvVar(varName, envSources));
364
+ if (rv) {
365
+ resolved[key] = rv;
366
+ }
367
+ }
368
+ return Object.keys(resolved).length > 0 ? resolved : undefined;
369
+ }
370
+ /** Header values resolve env vars only (no credential/dataToken semantics). */
371
+ function resolvePlainEnvVar(varName, envSources) {
372
+ return process.env[varName] ?? envSources[varName] ?? '';
373
+ }
374
+ /**
375
+ * Load environment variables from .env files.
376
+ *
377
+ * Checks these locations (later files override earlier):
378
+ * 1. <mcpDir>/.env (pack-specific defaults)
379
+ * 2. <workspace>/.env (workspace secrets)
380
+ *
381
+ * Note: process.env always takes priority over .env files.
382
+ */
383
+ async function loadEnvFiles(workspaceRoot, mcpDir) {
384
+ const envSources = {};
385
+ // Load in order of priority (lower priority first, so higher priority overwrites)
386
+ const envFiles = [
387
+ path.join(mcpDir, '.env'), // Pack MCP .env (lowest priority)
388
+ path.join(workspaceRoot, '.env'), // Workspace .env (higher priority)
389
+ ];
390
+ for (const envFile of envFiles) {
391
+ const parsed = await parseEnvFile(envFile);
392
+ Object.assign(envSources, parsed);
393
+ }
394
+ return envSources;
395
+ }
396
+ /**
397
+ * Parse a .env file into a key-value object.
398
+ *
399
+ * Supports:
400
+ * - KEY=value
401
+ * - KEY="quoted value"
402
+ * - KEY='single quoted'
403
+ * - # comments
404
+ * - Empty lines
405
+ */
406
+ async function parseEnvFile(filePath) {
407
+ try {
408
+ const content = await fs_1.promises.readFile(filePath, 'utf-8');
409
+ return (0, agentEnvFile_1.parseEnvContent)(content);
410
+ }
411
+ catch {
412
+ // File doesn't exist or can't be read
413
+ return {};
414
+ }
415
+ }
416
+ // -----------------------------------------------------------------------------
417
+ // Codex Config Generation
418
+ // -----------------------------------------------------------------------------
419
+ /**
420
+ * Generate MCP servers section for Codex config.toml
421
+ *
422
+ * Format:
423
+ * [mcp_servers.name]
424
+ * command = "node"
425
+ * args = ["/path/to/dist/index.js"]
426
+ * env = { KEY = "value" }
427
+ */
428
+ function generateCodexMcpConfig(servers, options) {
429
+ if (servers.length === 0) {
430
+ return '';
431
+ }
432
+ // `default_tools_approval_mode = "auto"` is the documented Codex 0.122+ per-server key
433
+ // (values: auto/prompt/approve) that lets MCP tools run without an interactive prompt.
434
+ // Only emit it in headless/serve auto-approve contexts — the interactive IDE path leaves
435
+ // it unset so users get Codex's normal approval prompts. The previous `approval_mode =
436
+ // "never"` was an invalid key/value and was silently ignored by the Codex CLI.
437
+ const approvalLine = options?.autoApprove ? 'default_tools_approval_mode = "auto"' : undefined;
438
+ const sections = servers.map(s => {
439
+ // HTTP Streamable MCP server — codex connects via URL, no subprocess
440
+ if (s.url) {
441
+ const urlLines = [
442
+ `[mcp_servers.${s.name}]`,
443
+ `url = ${JSON.stringify(s.url)}`,
444
+ ];
445
+ if (s.headers && Object.keys(s.headers).length > 0) {
446
+ const headerEntries = Object.entries(s.headers)
447
+ .map(([k, v]) => `${JSON.stringify(k)} = ${JSON.stringify(v)}`)
448
+ .join(', ');
449
+ urlLines.push(`http_headers = { ${headerEntries} }`);
450
+ }
451
+ if (approvalLine) {
452
+ urlLines.push(approvalLine);
453
+ }
454
+ return urlLines.join('\n');
455
+ }
456
+ const lines = [
457
+ `[mcp_servers.${s.name}]`,
458
+ `command = ${JSON.stringify(s.command)}`,
459
+ `args = ${JSON.stringify(s.args)}`,
460
+ ];
461
+ if (approvalLine) {
462
+ lines.push(approvalLine);
463
+ }
464
+ if (s.env && Object.keys(s.env).length > 0) {
465
+ // Use separate [mcp_servers.name.env] section — codex binary requires this form
466
+ lines.push('', `[mcp_servers.${s.name}.env]`);
467
+ for (const [k, v] of Object.entries(s.env)) {
468
+ lines.push(`${k} = ${JSON.stringify(v)}`);
469
+ }
470
+ }
471
+ return lines.join('\n');
472
+ });
473
+ return '\n# MCP Servers (AgentIDE)\n' + sections.join('\n\n');
474
+ }
475
+ // -----------------------------------------------------------------------------
476
+ // Sync Support
477
+ // -----------------------------------------------------------------------------
478
+ /**
479
+ * Get the default .mcp.json config content for syncing to a workspace.
480
+ * This creates the initial config that users can edit.
481
+ *
482
+ * @param bundledBasePromptsDir - Path to extension's base-prompts directory
483
+ */
484
+ async function getDefaultMcpConfig(bundledBasePromptsDir) {
485
+ const configPath = path.join(bundledBasePromptsDir, MCP_SERVERS_DIR, MCP_CONFIG_FILE);
486
+ if (!await pathExists(configPath)) {
487
+ return null;
488
+ }
489
+ try {
490
+ return await fs_1.promises.readFile(configPath, 'utf-8');
491
+ }
492
+ catch {
493
+ return null;
494
+ }
495
+ }
496
+ // -----------------------------------------------------------------------------
497
+ // Bundled Server Definitions
498
+ // -----------------------------------------------------------------------------
499
+ async function loadBundledMcpServers(basePromptsDir) {
500
+ const mcpDir = path.join(basePromptsDir, MCP_SERVERS_DIR);
501
+ if (!await pathExists(mcpDir)) {
502
+ return [];
503
+ }
504
+ const servers = [];
505
+ let entries;
506
+ try {
507
+ entries = await fs_1.promises.readdir(mcpDir, { withFileTypes: true });
508
+ }
509
+ catch {
510
+ return [];
511
+ }
512
+ for (const entry of entries) {
513
+ if (!entry.isDirectory()) {
514
+ continue;
515
+ }
516
+ const serverName = entry.name;
517
+ const config = await loadBundledServerConfig(serverName, mcpDir);
518
+ if (!config) {
519
+ continue;
520
+ }
521
+ const serverDir = path.join(mcpDir, serverName);
522
+ servers.push({
523
+ name: config.name ?? serverName,
524
+ label: config.label ?? serverName,
525
+ description: config.description,
526
+ command: config.command,
527
+ args: resolveArgs(config.args, serverDir),
528
+ env: resolveEnv(config.env),
529
+ });
530
+ }
531
+ return servers;
532
+ }
533
+ /** Env var carrying JSON-serialized {@link InlineMcpServers} into custom engine workers. */
534
+ exports.AGENTHIPPO_MCP_SERVERS_ENV = 'AGENTHIPPO_MCP_SERVERS';
535
+ /**
536
+ * Convert resolved pack MCP servers to the inline record shape engines consume.
537
+ *
538
+ * stdio servers map to `{ command, args, env }`. HTTP Streamable / SSE servers map to
539
+ * `{ type: 'http', url, headers? }` — the Cursor SDK (`@cursor/sdk` McpServerConfig) accepts
540
+ * this shape inline, so remote MCP servers are available to cursor/custom engines, not just
541
+ * to the Codex engine (which gets them via config.toml).
542
+ */
543
+ function formatInlineMcpServers(servers) {
544
+ const mcpServers = {};
545
+ for (const server of servers) {
546
+ if (server.url) {
547
+ mcpServers[server.name] = {
548
+ type: 'http',
549
+ url: server.url,
550
+ ...(server.headers && Object.keys(server.headers).length > 0 ? { headers: server.headers } : {}),
551
+ };
552
+ continue;
553
+ }
554
+ mcpServers[server.name] = {
555
+ command: server.command,
556
+ args: server.args,
557
+ ...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),
558
+ };
559
+ }
560
+ return mcpServers;
561
+ }
562
+ function serializeInlineMcpServers(servers) {
563
+ if (Object.keys(servers).length === 0) {
564
+ return undefined;
565
+ }
566
+ return JSON.stringify(servers);
567
+ }
568
+ function parseInlineMcpServers(raw) {
569
+ if (!raw?.trim()) {
570
+ return undefined;
571
+ }
572
+ try {
573
+ const parsed = JSON.parse(raw);
574
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
575
+ return undefined;
576
+ }
577
+ return parsed;
578
+ }
579
+ catch {
580
+ return undefined;
581
+ }
582
+ }
583
+ // -----------------------------------------------------------------------------
584
+ // Helpers
585
+ // -----------------------------------------------------------------------------
586
+ /**
587
+ * Check if a path exists on the filesystem.
588
+ */
589
+ async function pathExists(p) {
590
+ try {
591
+ await fs_1.promises.access(p);
592
+ return true;
593
+ }
594
+ catch {
595
+ return false;
596
+ }
597
+ }
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DEFAULT_PERMISSIONS = void 0;
7
+ exports.getDefaultPermissions = getDefaultPermissions;
8
+ exports._resetMappingConfigCache = _resetMappingConfigCache;
9
+ exports.parsePermissions = parsePermissions;
10
+ exports.parseManifestPermissions = parseManifestPermissions;
11
+ exports.enforcePermissions = enforcePermissions;
12
+ exports.toClaudeOptions = toClaudeOptions;
13
+ exports.toCodexOptions = toCodexOptions;
14
+ /**
15
+ * Default runtime permissions.
16
+ */
17
+ exports.DEFAULT_PERMISSIONS = {
18
+ fileAccess: 'full',
19
+ };
20
+ const PERMISSION_MAPPING_CONFIG = {
21
+ defaults: { fileAccess: 'full' },
22
+ claude: {
23
+ readOnly: { permissionMode: 'plan', allowDangerouslySkipPermissions: false },
24
+ workspaceWrite: { permissionMode: 'acceptEdits', allowDangerouslySkipPermissions: false },
25
+ fullAccess: { permissionMode: 'bypassPermissions', allowDangerouslySkipPermissions: true },
26
+ },
27
+ codex: {
28
+ approvalPolicy: 'never',
29
+ readOnly: { sandboxMode: 'read-only' },
30
+ workspaceWrite: { sandboxMode: 'workspace-write' },
31
+ fullAccess: { sandboxMode: 'danger-full-access' },
32
+ },
33
+ };
34
+ /**
35
+ * Get default permissions from static mapping config.
36
+ */
37
+ function getDefaultPermissions() {
38
+ return { ...PERMISSION_MAPPING_CONFIG.defaults };
39
+ }
40
+ /**
41
+ * No-op compatibility hook retained for existing tests/callers.
42
+ * @internal
43
+ */
44
+ function _resetMappingConfigCache() {
45
+ // no-op: config is now static and in-code
46
+ }
47
+ // =============================================================================
48
+ // Parse from Manifest
49
+ // =============================================================================
50
+ /**
51
+ * Parse permissions from an agent manifest.
52
+ * Falls back to defaults for missing fields.
53
+ */
54
+ function parsePermissions(manifest) {
55
+ const perms = manifest?.spec?.permissions;
56
+ const defaults = getDefaultPermissions();
57
+ return {
58
+ fileAccess: perms?.fileAccess ?? defaults.fileAccess,
59
+ };
60
+ }
61
+ /**
62
+ * Parse effective permissions from manifest.
63
+ */
64
+ function parseManifestPermissions(manifest) {
65
+ return parsePermissions(manifest);
66
+ }
67
+ // =============================================================================
68
+ // Enforcement
69
+ // =============================================================================
70
+ /**
71
+ * Resolve effective permissions with user settings taking precedence.
72
+ */
73
+ function enforcePermissions(_manifestPerms, userPerms) {
74
+ return {
75
+ fileAccess: userPerms.fileAccess,
76
+ };
77
+ }
78
+ /**
79
+ * Map unified permissions to Claude SDK options.
80
+ */
81
+ function toClaudeOptions(perms, workspaceFolders) {
82
+ const modeOpts = perms.fileAccess === 'read-only'
83
+ ? PERMISSION_MAPPING_CONFIG.claude.readOnly
84
+ : (perms.fileAccess === 'workspace-write'
85
+ ? PERMISSION_MAPPING_CONFIG.claude.workspaceWrite
86
+ : PERMISSION_MAPPING_CONFIG.claude.fullAccess);
87
+ return {
88
+ ...modeOpts,
89
+ // Writable/read-only workspace modes: constrain to workspace folders
90
+ // Full mode: undefined lets Claude use its defaults
91
+ additionalDirectories: perms.fileAccess === 'full' ? undefined : workspaceFolders,
92
+ };
93
+ }
94
+ /**
95
+ * Map unified permissions to Codex SDK options.
96
+ */
97
+ function toCodexOptions(perms, workspaceFolders) {
98
+ const fileOpts = perms.fileAccess === 'read-only'
99
+ ? PERMISSION_MAPPING_CONFIG.codex.readOnly
100
+ : (perms.fileAccess === 'workspace-write'
101
+ ? PERMISSION_MAPPING_CONFIG.codex.workspaceWrite
102
+ : PERMISSION_MAPPING_CONFIG.codex.fullAccess);
103
+ return {
104
+ approvalPolicy: PERMISSION_MAPPING_CONFIG.codex.approvalPolicy,
105
+ ...fileOpts,
106
+ additionalDirectories: workspaceFolders,
107
+ };
108
+ }