@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,473 @@
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.syncPackMcpToWorkspace = syncPackMcpToWorkspace;
40
+ exports.syncPackToWorkspace = syncPackToWorkspace;
41
+ exports.computeSkillsSignature = computeSkillsSignature;
42
+ exports.createSkillsSignatureGetter = createSkillsSignatureGetter;
43
+ exports.createSessionDir = createSessionDir;
44
+ exports.getSessionDir = getSessionDir;
45
+ /**
46
+ * Headless Sync
47
+ *
48
+ * Simple one-time sync of pack content to workspace derived directories.
49
+ * This is a lightweight alternative to the full SyncService used in the extension.
50
+ *
51
+ * The extension's SyncService handles:
52
+ * - File watchers for live reload
53
+ * - Bi-directional sync
54
+ * - Manifest tracking
55
+ * - Remote skills sync
56
+ *
57
+ * This module does:
58
+ * - One-time copy of pack content to <brand>/agents/<packId>/ (where engines look)
59
+ * - Copy AGENTS.md to .claude/CLAUDE.md and .codex/AGENTS.md (derived dirs)
60
+ * - Symlink skills/ and rules/ directories
61
+ * - Create session directories
62
+ * - Compute skills signature for cache invalidation
63
+ */
64
+ const fs_1 = require("fs");
65
+ const path = __importStar(require("path"));
66
+ const crypto_1 = require("crypto");
67
+ const utils_1 = require("../utils");
68
+ const shared_1 = require("../shared");
69
+ const paths_1 = require("../agentpack/paths");
70
+ const manifest_1 = require("../agentpack/manifest");
71
+ const mcp_1 = require("../mcp");
72
+ const customRegistry_1 = require("../engines/customRegistry");
73
+ /**
74
+ * Merge pack agent.yaml spec.mcp configs into workspace .mcp.json so loadMcpServers()
75
+ * and inline custom-engine MCP work after syncPackToWorkspace (serve/ask).
76
+ */
77
+ async function syncPackMcpToWorkspace(packPath, workspaceRoot, packId, logger) {
78
+ const manifestPath = path.join(packPath, paths_1.AGENT_CONSTANTS.MANIFEST_FILE);
79
+ if (!(await (0, utils_1.pathExists)(manifestPath))) {
80
+ return;
81
+ }
82
+ let manifest;
83
+ try {
84
+ manifest = await (0, manifest_1.loadAgentManifest)(manifestPath);
85
+ }
86
+ catch (e) {
87
+ logInfo(logger, `[AgentIDE] Skipping pack MCP sync for ${packId}: ${e instanceof Error ? e.message : String(e)}`);
88
+ return;
89
+ }
90
+ const mcpEntries = manifest.spec?.mcp;
91
+ if (!mcpEntries?.length) {
92
+ return;
93
+ }
94
+ const agentideMcpDir = path.join(workspaceRoot, paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME, paths_1.AGENT_CONSTANTS.AGENTS_DIR, packId, paths_1.AGENT_CONSTANTS.MCP_DIR);
95
+ await fs_1.promises.mkdir(agentideMcpDir, { recursive: true });
96
+ const merged = { mcpServers: {} };
97
+ const targetPath = path.join(agentideMcpDir, '.mcp.json');
98
+ for (const entry of mcpEntries) {
99
+ const configRel = entry.config?.trim();
100
+ if (!configRel) {
101
+ continue;
102
+ }
103
+ const configPath = path.resolve(packPath, configRel);
104
+ if (!isWithin(packPath, configPath)) {
105
+ logInfo(logger, `[AgentIDE] Skipping MCP config ${configRel}: path escapes pack root`);
106
+ continue;
107
+ }
108
+ if (!(await (0, utils_1.pathExists)(configPath))) {
109
+ logInfo(logger, `[AgentIDE] Skipping MCP config ${configRel}: file not found`);
110
+ continue;
111
+ }
112
+ try {
113
+ const raw = JSON.parse(await fs_1.promises.readFile(configPath, 'utf8'));
114
+ const servers = raw.mcpServers;
115
+ if (servers && typeof servers === 'object') {
116
+ Object.assign(merged.mcpServers, servers);
117
+ }
118
+ }
119
+ catch (e) {
120
+ logInfo(logger, `[AgentIDE] Skipping MCP config ${configRel}: ${e instanceof Error ? e.message : String(e)}`);
121
+ }
122
+ }
123
+ // Copy pack mcp/ subdirs (server assets referenced via ${serverDir}/…).
124
+ const packMcpDir = path.join(packPath, paths_1.AGENT_CONSTANTS.MCP_DIR);
125
+ if (await (0, utils_1.pathExists)(packMcpDir)) {
126
+ const entries = await fs_1.promises.readdir(packMcpDir, { withFileTypes: true });
127
+ for (const entry of entries) {
128
+ if (!entry.isDirectory() || entry.name.startsWith('.')) {
129
+ continue;
130
+ }
131
+ const src = path.join(packMcpDir, entry.name);
132
+ const dst = path.join(agentideMcpDir, entry.name);
133
+ if (!(await (0, utils_1.pathExists)(dst))) {
134
+ await (0, utils_1.copyDirRecursive)(src, dst);
135
+ }
136
+ }
137
+ }
138
+ if (!merged.mcpServers || Object.keys(merged.mcpServers).length === 0) {
139
+ return;
140
+ }
141
+ await (0, utils_1.writeFileIfChanged)(targetPath, `${JSON.stringify(merged, null, 2)}\n`);
142
+ logInfo(logger, `[AgentIDE] Synced pack MCP config: ${targetPath}`);
143
+ }
144
+ function isRelativeLocalPath(value) {
145
+ if (!value || !value.trim()) {
146
+ return false;
147
+ }
148
+ if (path.isAbsolute(value)) {
149
+ return false;
150
+ }
151
+ if (/^(https?:\/\/|git@|ssh:\/\/)/i.test(value)) {
152
+ return false;
153
+ }
154
+ return true;
155
+ }
156
+ function isWithin(baseDir, candidate) {
157
+ const rel = path.relative(baseDir, candidate);
158
+ return rel !== '..' && !rel.startsWith(`..${path.sep}`) && !path.isAbsolute(rel);
159
+ }
160
+ async function isDirEmpty(targetDir) {
161
+ const entries = await fs_1.promises.readdir(targetDir);
162
+ return entries.length === 0;
163
+ }
164
+ async function seedPackDataIfNeeded(workspaceRoot, packPath, packId, logger) {
165
+ const manifestPath = path.join(packPath, paths_1.AGENT_CONSTANTS.MANIFEST_FILE);
166
+ if (!(await (0, utils_1.pathExists)(manifestPath))) {
167
+ return;
168
+ }
169
+ try {
170
+ const manifest = await (0, manifest_1.loadAgentManifest)(manifestPath);
171
+ const data = manifest.spec?.data;
172
+ if (!data) {
173
+ return;
174
+ }
175
+ const sourcePath = data.sourcePath?.trim() || './data';
176
+ const workspacePath = (data.workspacePath?.trim() || `.${path.sep}${paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME}${path.sep}data${path.sep}${packId}`)
177
+ .replace(/^(?:\.\/|\.\\)/, '');
178
+ if (!isRelativeLocalPath(sourcePath) || !isRelativeLocalPath(workspacePath)) {
179
+ logInfo(logger, `[AgentIDE] Skipping data sync for ${packId}: invalid spec.data paths`);
180
+ return;
181
+ }
182
+ const sourceDir = path.resolve(packPath, sourcePath);
183
+ const targetDir = path.resolve(workspaceRoot, workspacePath);
184
+ if (!isWithin(packPath, sourceDir) || !isWithin(workspaceRoot, targetDir)) {
185
+ logInfo(logger, `[AgentIDE] Skipping data sync for ${packId}: path escapes allowed root`);
186
+ return;
187
+ }
188
+ if (!(await (0, utils_1.pathExists)(sourceDir))) {
189
+ return;
190
+ }
191
+ if (!(await (0, utils_1.pathExists)(targetDir))) {
192
+ await (0, utils_1.copyDirRecursive)(sourceDir, targetDir);
193
+ logInfo(logger, `[AgentIDE] Seeded pack data for ${packId}: ${targetDir}`);
194
+ return;
195
+ }
196
+ const st = await fs_1.promises.stat(targetDir);
197
+ if (st.isDirectory() && await isDirEmpty(targetDir)) {
198
+ await (0, utils_1.copyDirRecursive)(sourceDir, targetDir);
199
+ logInfo(logger, `[AgentIDE] Seeded pack data for ${packId}: ${targetDir}`);
200
+ }
201
+ }
202
+ catch (e) {
203
+ logInfo(logger, `[AgentIDE] Skipping data sync for ${packId}: ${e instanceof Error ? e.message : String(e)}`);
204
+ }
205
+ }
206
+ async function skillDirHasReadableSkillMd(skillDir) {
207
+ const skillMd = path.join(skillDir, 'SKILL.md');
208
+ try {
209
+ const stat = await fs_1.promises.lstat(skillMd);
210
+ if (stat.isSymbolicLink()) {
211
+ const link = await fs_1.promises.readlink(skillMd);
212
+ const linkAbs = path.isAbsolute(link) ? link : path.resolve(path.dirname(skillMd), link);
213
+ if (path.resolve(linkAbs) === path.resolve(skillMd)) {
214
+ return false;
215
+ }
216
+ }
217
+ await fs_1.promises.access(skillMd);
218
+ return true;
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ async function mergeBundledSkillsIntoAgentideDir(bundledBasePromptsDir, agentideSkillsDir, logger) {
225
+ const bundledSkillsDir = path.join(bundledBasePromptsDir, 'skills');
226
+ if (!(await (0, utils_1.pathExists)(bundledSkillsDir))) {
227
+ return;
228
+ }
229
+ await fs_1.promises.mkdir(agentideSkillsDir, { recursive: true });
230
+ const entries = await fs_1.promises.readdir(bundledSkillsDir, { withFileTypes: true });
231
+ for (const entry of entries) {
232
+ if (!entry.isDirectory()) {
233
+ continue;
234
+ }
235
+ const dstSkill = path.join(agentideSkillsDir, entry.name);
236
+ if (await (0, utils_1.pathExists)(dstSkill) && await skillDirHasReadableSkillMd(dstSkill)) {
237
+ continue;
238
+ }
239
+ if (await (0, utils_1.pathExists)(dstSkill)) {
240
+ await fs_1.promises.rm(dstSkill, { recursive: true, force: true });
241
+ }
242
+ await (0, utils_1.copyDirRecursive)(path.join(bundledSkillsDir, entry.name), dstSkill);
243
+ logInfo(logger, `[AgentIDE] Bootstrapped bundled skill: ${entry.name}`);
244
+ }
245
+ }
246
+ /**
247
+ * Sync pack content to workspace directories.
248
+ *
249
+ * This prepares the workspace so that the engine SDKs can find the pack's
250
+ * AGENTS.md, rules, and skills. Syncs to both:
251
+ * - <brand>/agents/<packId>/ (where engines look for skills)
252
+ * - .claude/ or .codex/ (derived dirs for rules files)
253
+ *
254
+ * @param workspaceRoot - The workspace directory where the engine will run
255
+ * @param packPath - Path to the pack (e.g., ~/<brand>/agents/joker/1.0.0/)
256
+ * @param packId - The pack ID (e.g., 'joker' or 'default')
257
+ * @param engine - Which engine to sync for ('claude' or 'codex')
258
+ * @param logger - Logger for output
259
+ * @param bundledBasePromptsDir - Optional path to extension's base-prompts (for default agent MCP sync)
260
+ */
261
+ async function syncPackToWorkspace(workspaceRoot, packPath, packId, engine, logger, bundledBasePromptsDir) {
262
+ const builtinEngine = shared_1.AGENT_ENGINES[engine];
263
+ const engineConfig = builtinEngine
264
+ ? {
265
+ workspaceDir: builtinEngine.workspaceDir,
266
+ rulesFile: builtinEngine.rulesFile,
267
+ includeSkills: true,
268
+ includeRules: true,
269
+ }
270
+ : (() => {
271
+ const manifest = (0, customRegistry_1.tryResolveCustomEngineManifest)(workspaceRoot, engine);
272
+ if (!manifest) {
273
+ throw new Error(`Unknown engine: ${engine}`);
274
+ }
275
+ if (!manifest.workspaceSync?.enabled) {
276
+ return undefined;
277
+ }
278
+ return {
279
+ workspaceDir: manifest.workspaceSync.dir,
280
+ rulesFile: manifest.workspaceSync.rulesFile,
281
+ includeSkills: manifest.workspaceSync.includeSkills,
282
+ includeRules: manifest.workspaceSync.includeRules,
283
+ };
284
+ })();
285
+ const agentsMdPath = path.join(packPath, 'AGENTS.md');
286
+ const contextMdPath = path.join(packPath, 'context.md');
287
+ const skillsDir = path.join(packPath, 'skills');
288
+ const rulesDir = path.join(packPath, 'rules');
289
+ // 1. Ensure workspace has .gitignore for derived dirs
290
+ await (0, utils_1.ensureWorkspaceGitAndGitignore)(workspaceRoot, logger);
291
+ // 2. Sync to <brand>/agents/<packId>/ (where engines look for skills)
292
+ const agentideAgentsDir = path.join(workspaceRoot, paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME, paths_1.AGENT_CONSTANTS.AGENTS_DIR, packId);
293
+ await fs_1.promises.mkdir(agentideAgentsDir, { recursive: true });
294
+ // Copy AGENTS.md to <brand>/agents/<packId>/
295
+ if (await (0, utils_1.pathExists)(agentsMdPath)) {
296
+ const agentsContent = await fs_1.promises.readFile(agentsMdPath, 'utf8');
297
+ await (0, utils_1.writeFileIfChanged)(path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.AGENTS_MD), agentsContent);
298
+ }
299
+ // Copy context.md to <brand>/agents/<packId>/
300
+ if (await (0, utils_1.pathExists)(contextMdPath)) {
301
+ const contextContent = await fs_1.promises.readFile(contextMdPath, 'utf8');
302
+ await (0, utils_1.writeFileIfChanged)(path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.CONTEXT_MD), contextContent);
303
+ }
304
+ // Copy GHOST_TEXT.md (inline completions prompt) if pack includes one
305
+ const ghostTextPath = path.join(packPath, paths_1.AGENT_CONSTANTS.GHOST_TEXT_FILE);
306
+ if (await (0, utils_1.pathExists)(ghostTextPath)) {
307
+ const ghostTextContent = await fs_1.promises.readFile(ghostTextPath, 'utf8');
308
+ await (0, utils_1.writeFileIfChanged)(path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.GHOST_TEXT_FILE), ghostTextContent);
309
+ logInfo(logger, `[AgentIDE] Synced GHOST_TEXT.md to ${paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME}`);
310
+ }
311
+ // Sync skills/ to <brand>/agents/<packId>/skills/
312
+ const agentideSkillsDir = path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.SKILLS_DIR);
313
+ const resolvedSkillsDir = path.resolve(skillsDir);
314
+ const resolvedAgentideSkillsDir = path.resolve(agentideSkillsDir);
315
+ if (await (0, utils_1.pathExists)(skillsDir)) {
316
+ if (resolvedSkillsDir === resolvedAgentideSkillsDir) {
317
+ logInfo(logger, `[AgentIDE] Skipping skills self-sync (pack already under ${paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME}/agents/${packId})`);
318
+ }
319
+ else {
320
+ await (0, utils_1.syncDirByFileLinks)(skillsDir, agentideSkillsDir, logger, `${paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME}/agents/${packId}/skills`);
321
+ logInfo(logger, `[AgentIDE] Synced skills to ${paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME}: ${agentideSkillsDir}`);
322
+ }
323
+ }
324
+ if (bundledBasePromptsDir) {
325
+ await mergeBundledSkillsIntoAgentideDir(bundledBasePromptsDir, agentideSkillsDir, logger);
326
+ }
327
+ // Sync rules/ to <brand>/agents/<packId>/rules/
328
+ const agentideRulesDir = path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.RULES_DIR);
329
+ if (await (0, utils_1.pathExists)(rulesDir)) {
330
+ await fs_1.promises.mkdir(agentideRulesDir, { recursive: true });
331
+ const entries = await fs_1.promises.readdir(rulesDir, { withFileTypes: true });
332
+ for (const entry of entries) {
333
+ if (!entry.isFile() || !entry.name.toLowerCase().endsWith('.md')) {
334
+ continue;
335
+ }
336
+ const src = path.join(rulesDir, entry.name);
337
+ const dst = path.join(agentideRulesDir, entry.name);
338
+ await (0, utils_1.symlinkOrCopyFile)(src, dst, logger, `rules/${entry.name}`, { force: true });
339
+ }
340
+ }
341
+ // Sync MCP config to <brand>/agents/<packId>/mcp/.mcp.json (for default agent)
342
+ if (packId === paths_1.AGENT_CONSTANTS.DEFAULT_AGENT_ID && bundledBasePromptsDir) {
343
+ const mcpConfig = await (0, mcp_1.getDefaultMcpConfig)(bundledBasePromptsDir);
344
+ if (mcpConfig) {
345
+ const agentideMcpDir = path.join(agentideAgentsDir, paths_1.AGENT_CONSTANTS.MCP_DIR);
346
+ await fs_1.promises.mkdir(agentideMcpDir, { recursive: true });
347
+ const mcpConfigPath = path.join(agentideMcpDir, '.mcp.json');
348
+ await (0, utils_1.writeFileIfChanged)(mcpConfigPath, mcpConfig);
349
+ logInfo(logger, `[AgentIDE] Synced MCP config: ${mcpConfigPath}`);
350
+ }
351
+ }
352
+ // Pack-declared MCP (agent.yaml spec.mcp → workspace .mcp.json for inline engine pass-through)
353
+ await syncPackMcpToWorkspace(packPath, workspaceRoot, packId, logger);
354
+ // Seed optional data directory into workspace (seed-if-empty)
355
+ await seedPackDataIfNeeded(workspaceRoot, packPath, packId, logger);
356
+ if (!engineConfig) {
357
+ return;
358
+ }
359
+ // 3. Sync to derived directory (.claude/, .codex/, or manifest workspaceSync.dir)
360
+ const derivedDir = path.join(workspaceRoot, engineConfig.workspaceDir);
361
+ await fs_1.promises.mkdir(derivedDir, { recursive: true });
362
+ // Read and combine AGENTS.md with context.md
363
+ let content = '';
364
+ if (await (0, utils_1.pathExists)(agentsMdPath)) {
365
+ content = await fs_1.promises.readFile(agentsMdPath, 'utf8');
366
+ }
367
+ if (await (0, utils_1.pathExists)(contextMdPath)) {
368
+ const contextContent = await fs_1.promises.readFile(contextMdPath, 'utf8');
369
+ content = content.trimEnd() + '\n\n---\n\n' + contextContent.trimEnd() + '\n';
370
+ }
371
+ // Write to engine-specific rules file
372
+ const rulesFilePath = path.join(derivedDir, engineConfig.rulesFile);
373
+ if (content) {
374
+ await (0, utils_1.writeFileIfChanged)(rulesFilePath, content);
375
+ logInfo(logger, `[AgentIDE] Synced rules: ${rulesFilePath}`);
376
+ }
377
+ // Sync skills/ to derived dir (pack + bundled skills under agentide agents dir)
378
+ const derivedSkillsDir = path.join(derivedDir, 'skills');
379
+ if (engineConfig.includeSkills && await (0, utils_1.pathExists)(agentideSkillsDir)) {
380
+ await (0, utils_1.syncDirByFileLinks)(agentideSkillsDir, derivedSkillsDir, logger, `${engineConfig.workspaceDir}/skills`);
381
+ }
382
+ // Sync rules/ fragments to derived dir
383
+ const derivedRulesDir = path.join(derivedDir, 'rules');
384
+ if (engineConfig.includeRules && await (0, utils_1.pathExists)(rulesDir)) {
385
+ await fs_1.promises.mkdir(derivedRulesDir, { recursive: true });
386
+ const entries = await fs_1.promises.readdir(rulesDir, { withFileTypes: true });
387
+ for (const entry of entries) {
388
+ if (!entry.isFile() || !entry.name.toLowerCase().endsWith('.md')) {
389
+ continue;
390
+ }
391
+ const src = path.join(rulesDir, entry.name);
392
+ const dst = path.join(derivedRulesDir, entry.name);
393
+ await (0, utils_1.symlinkOrCopyFile)(src, dst, logger, `rules/${entry.name}`, { force: true });
394
+ }
395
+ }
396
+ logInfo(logger, `[AgentIDE] Pack '${packId}' synced to workspace: ${workspaceRoot}`);
397
+ }
398
+ // -----------------------------------------------------------------------------
399
+ // Skills Signature
400
+ // -----------------------------------------------------------------------------
401
+ /**
402
+ * Compute a signature for the skills directory (for cache invalidation).
403
+ * This matches what SyncService.getSkillsSignature does but is standalone.
404
+ *
405
+ * @param workspaceRoot - The workspace root directory
406
+ * @param packId - The pack ID to get skills signature for
407
+ * @returns Hash signature or undefined if no skills
408
+ */
409
+ function computeSkillsSignature(workspaceRoot, packId) {
410
+ const skillsDir = path.join(workspaceRoot, paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME, paths_1.AGENT_CONSTANTS.AGENTS_DIR, packId, paths_1.AGENT_CONSTANTS.SKILLS_DIR);
411
+ try {
412
+ const fs = require('fs');
413
+ if (!fs.existsSync(skillsDir)) {
414
+ return undefined;
415
+ }
416
+ const hash = (0, crypto_1.createHash)('sha256');
417
+ const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
418
+ for (const entry of entries) {
419
+ if (!entry.isDirectory() || entry.name.startsWith('.')) {
420
+ continue;
421
+ }
422
+ const skillMdPath = path.join(skillsDir, entry.name, 'SKILL.md');
423
+ if (fs.existsSync(skillMdPath)) {
424
+ const stat = fs.statSync(skillMdPath);
425
+ hash.update(`${entry.name}:${stat.mtimeMs}`);
426
+ }
427
+ }
428
+ return hash.digest('hex').slice(0, 16);
429
+ }
430
+ catch {
431
+ return undefined;
432
+ }
433
+ }
434
+ /**
435
+ * Create a getter function for skills signature compatible with engine constructor.
436
+ */
437
+ function createSkillsSignatureGetter(packId) {
438
+ return (workspaceRoot) => computeSkillsSignature(workspaceRoot, packId);
439
+ }
440
+ // -----------------------------------------------------------------------------
441
+ // Session Management
442
+ // -----------------------------------------------------------------------------
443
+ /**
444
+ * Create a session directory and return the session ID.
445
+ * Creates <brand>/sessions/<sessionId>/ in the workspace.
446
+ *
447
+ * @param workspaceRoot - The workspace root directory
448
+ * @returns The session ID (UUID)
449
+ */
450
+ async function createSessionDir(workspaceRoot) {
451
+ const sessionId = (0, crypto_1.randomUUID)();
452
+ const sessionDir = path.join(workspaceRoot, paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME, paths_1.AGENT_CONSTANTS.SESSIONS_DIR, sessionId);
453
+ await fs_1.promises.mkdir(sessionDir, { recursive: true });
454
+ return sessionId;
455
+ }
456
+ /**
457
+ * Get the session directory path for a given session ID.
458
+ */
459
+ function getSessionDir(workspaceRoot, sessionId) {
460
+ return path.join(workspaceRoot, paths_1.AGENT_CONSTANTS.AGENTIDE_DIR_NAME, paths_1.AGENT_CONSTANTS.SESSIONS_DIR, sessionId);
461
+ }
462
+ // -----------------------------------------------------------------------------
463
+ // Helpers
464
+ // -----------------------------------------------------------------------------
465
+ /** Helper to log a message */
466
+ function logInfo(logger, msg) {
467
+ if (logger.appendLine) {
468
+ logger.appendLine(msg);
469
+ }
470
+ else if (logger.info) {
471
+ logger.info(msg);
472
+ }
473
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) AgentHippo.ai. All rights reserved.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /*---------------------------------------------------------------------------------------------
6
+ * MCP server validation and file collection for publishing.
7
+ * Publishing uses the central store via publishToStore() in store/index.ts.
8
+ *--------------------------------------------------------------------------------------------*/
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.validateMcpConfig = validateMcpConfig;
44
+ exports.createMcpManifest = createMcpManifest;
45
+ exports.collectMcpFiles = collectMcpFiles;
46
+ const fs_1 = require("fs");
47
+ const path = __importStar(require("path"));
48
+ // -----------------------------------------------------------------------------
49
+ // Validation
50
+ // -----------------------------------------------------------------------------
51
+ /**
52
+ * Validate MCP server configuration.
53
+ */
54
+ function validateMcpConfig(config) {
55
+ const errors = [];
56
+ const warnings = [];
57
+ if (!config.name) {
58
+ errors.push('MCP server config missing: name');
59
+ }
60
+ if (!config.version) {
61
+ errors.push('MCP server config missing: version');
62
+ }
63
+ else if (!/^\d+\.\d+\.\d+/.test(config.version)) {
64
+ errors.push(`Invalid version format: ${config.version}. Use semver (e.g., 1.0.0)`);
65
+ }
66
+ if (!config.transport) {
67
+ errors.push('MCP server config missing: transport (stdio, sse, or http)');
68
+ }
69
+ else if (!['stdio', 'sse', 'http'].includes(config.transport)) {
70
+ errors.push(`Invalid transport: ${config.transport}. Must be stdio, sse, or http`);
71
+ }
72
+ // Transport-specific validation
73
+ if (config.transport === 'stdio') {
74
+ if (!config.command && !config.npmPackage) {
75
+ errors.push('stdio transport requires command or npmPackage');
76
+ }
77
+ }
78
+ else if (config.transport === 'sse' || config.transport === 'http') {
79
+ if (!config.url) {
80
+ warnings.push(`${config.transport} transport typically requires a url`);
81
+ }
82
+ }
83
+ if (!config.description) {
84
+ warnings.push('Consider adding a description for discoverability');
85
+ }
86
+ return { valid: errors.length === 0, errors, warnings };
87
+ }
88
+ // -----------------------------------------------------------------------------
89
+ // Manifest Creation
90
+ // -----------------------------------------------------------------------------
91
+ /**
92
+ * Create an MCP manifest object from config.
93
+ */
94
+ function createMcpManifest(config) {
95
+ return {
96
+ name: config.name,
97
+ version: config.version,
98
+ description: config.description,
99
+ transport: config.transport,
100
+ command: config.command,
101
+ args: config.args,
102
+ env: config.env,
103
+ url: config.url,
104
+ npmPackage: config.npmPackage,
105
+ };
106
+ }
107
+ // -----------------------------------------------------------------------------
108
+ // File Collection
109
+ // -----------------------------------------------------------------------------
110
+ /**
111
+ * Collect all files from an MCP server directory.
112
+ */
113
+ async function collectMcpFiles(dir) {
114
+ const files = [];
115
+ async function walk(currentDir, prefix) {
116
+ const entries = await fs_1.promises.readdir(currentDir);
117
+ for (const entry of entries) {
118
+ // Skip common non-source files
119
+ if (entry.startsWith('.') ||
120
+ entry === 'node_modules' ||
121
+ entry === 'dist' ||
122
+ entry === 'build') {
123
+ continue;
124
+ }
125
+ const fullPath = path.join(currentDir, entry);
126
+ const relativePath = prefix ? `${prefix}/${entry}` : entry;
127
+ const stat = await fs_1.promises.stat(fullPath);
128
+ if (stat.isDirectory()) {
129
+ await walk(fullPath, relativePath);
130
+ }
131
+ else if (stat.isFile()) {
132
+ // Only include source files
133
+ const ext = path.extname(entry).toLowerCase();
134
+ if (['.ts', '.js', '.json', '.md', '.py', '.sh', '.yaml', '.yml'].includes(ext)) {
135
+ const content = await fs_1.promises.readFile(fullPath, 'utf-8');
136
+ files.push({ path: relativePath, content });
137
+ }
138
+ }
139
+ }
140
+ }
141
+ await walk(dir, '');
142
+ return files;
143
+ }