@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,195 @@
1
+ # Writing Effective AGENTS.md Files
2
+
3
+ Guide for crafting AGENTS.md files that produce consistent, useful agent behavior.
4
+
5
+ ## The Four Pillars
6
+
7
+ Every effective AGENTS.md needs these sections:
8
+
9
+ ### 1. Core Behaviors (What the agent DOES)
10
+
11
+ **Good**: Specific, actionable, measurable
12
+ ```markdown
13
+ 1. **Systematic Review**: Check every function for input validation before processing
14
+ 2. **Context Gathering**: Read related files before proposing changes
15
+ 3. **Incremental Changes**: Modify one file at a time, verify after each
16
+ ```
17
+
18
+ **Bad**: Vague, generic, unmeasurable
19
+ ```markdown
20
+ 1. Help with code
21
+ 2. Be helpful
22
+ 3. Do good work
23
+ ```
24
+
25
+ **Tips**:
26
+ - Use action verbs: "Analyze", "Verify", "Generate", "Check"
27
+ - Be specific about scope: "all TypeScript files" vs "the codebase"
28
+ - Include quality criteria: "until all tests pass" vs "until done"
29
+
30
+ ### 2. Workflow (HOW the agent works)
31
+
32
+ **Good**: Step-by-step with decision points
33
+ ```markdown
34
+ 1. **Understand**: Read the user's request and identify affected files
35
+ 2. **Research**: Examine relevant code, tests, and documentation
36
+ 3. **Plan**: Outline changes before implementing
37
+ 4. **Execute**: Make changes incrementally with verification
38
+ 5. **Validate**: Run tests and check for regressions
39
+ ```
40
+
41
+ **Bad**: Missing steps, unclear sequence
42
+ ```markdown
43
+ 1. Look at the code
44
+ 2. Fix it
45
+ ```
46
+
47
+ **Tips**:
48
+ - Match workflow to typical task complexity
49
+ - Include verification/validation steps
50
+ - Add decision points for ambiguous cases
51
+
52
+ ### 3. Constraints (What the agent must NOT do)
53
+
54
+ **Good**: Explicit boundaries with rationale
55
+ ```markdown
56
+ - Never modify files outside the `src/` directory
57
+ - Always ask before deleting files or removing functionality
58
+ - Don't refactor adjacent code unless explicitly asked
59
+ ```
60
+
61
+ **Bad**: Too vague or too restrictive
62
+ ```markdown
63
+ - Be careful
64
+ - Don't break things
65
+ ```
66
+
67
+ **Tips**:
68
+ - List 3-5 specific constraints
69
+ - Focus on high-impact restrictions (destructive operations, scope limits)
70
+ - Include "escape hatches": "unless the user explicitly requests otherwise"
71
+
72
+ ### 4. Output Format (How results are presented)
73
+
74
+ **Good**: Concrete structure with examples
75
+ ```markdown
76
+ Present findings in this format:
77
+
78
+ ### Summary
79
+ One paragraph overview of what was found/done.
80
+
81
+ ### Changes
82
+ | File | Change | Rationale |
83
+ |------|--------|-----------|
84
+ | ... | ... | ... |
85
+
86
+ ### Next Steps
87
+ Bullet list of recommended follow-up actions.
88
+ ```
89
+
90
+ **Bad**: No format guidance
91
+ ```markdown
92
+ Just explain what you did.
93
+ ```
94
+
95
+ **Tips**:
96
+ - Use markdown structure (headers, lists, tables)
97
+ - Include a minimal example
98
+ - Specify when to use different formats (short vs. long responses)
99
+
100
+ ## Common Patterns
101
+
102
+ ### Decision Tree Pattern
103
+
104
+ When the agent needs to handle multiple scenarios:
105
+
106
+ ```markdown
107
+ ## Handling Requests
108
+
109
+ For **new features**:
110
+ 1. Create design outline
111
+ 2. Get user approval
112
+ 3. Implement incrementally
113
+
114
+ For **bug fixes**:
115
+ 1. Reproduce the issue
116
+ 2. Identify root cause
117
+ 3. Implement minimal fix
118
+ 4. Add regression test
119
+
120
+ For **refactoring**:
121
+ 1. Ensure test coverage exists
122
+ 2. Make changes in small steps
123
+ 3. Verify tests pass after each step
124
+ ```
125
+
126
+ ### Progressive Detail Pattern
127
+
128
+ When the agent should adapt response length:
129
+
130
+ ```markdown
131
+ ## Response Guidelines
132
+
133
+ **Simple questions**: Direct answer, 1-3 sentences
134
+
135
+ **Code changes**: Summary + diff + explanation
136
+
137
+ **Complex tasks**:
138
+ 1. Outline/plan first
139
+ 2. Implementation in stages
140
+ 3. Summary with next steps
141
+ ```
142
+
143
+ ### Verification Loop Pattern
144
+
145
+ When the agent should self-check:
146
+
147
+ ```markdown
148
+ ## Quality Checklist
149
+
150
+ Before completing any task, verify:
151
+ - [ ] All modified files saved
152
+ - [ ] No new linting errors introduced
153
+ - [ ] Tests still pass (or new tests added)
154
+ - [ ] Changes match the original request
155
+ ```
156
+
157
+ ## Anti-Patterns to Avoid
158
+
159
+ ### 1. Aspirational Instructions
160
+
161
+ **Bad**: "Write perfect, bug-free code every time"
162
+ **Good**: "Run tests after changes and fix any failures"
163
+
164
+ ### 2. Contradictory Constraints
165
+
166
+ **Bad**: "Be thorough" + "Keep responses short"
167
+ **Good**: "Prioritize completeness for complex tasks, brevity for simple questions"
168
+
169
+ ### 3. Implicit Assumptions
170
+
171
+ **Bad**: "Follow project conventions"
172
+ **Good**: "Follow project conventions as defined in `.prettierrc` and `eslint.config.js`"
173
+
174
+ ### 4. Missing Scope
175
+
176
+ **Bad**: "Review the code"
177
+ **Good**: "Review code in the current PR / changed files / specified directory"
178
+
179
+ ## Iteration Tips
180
+
181
+ 1. **Start Minimal**: Write the shortest AGENTS.md that could work
182
+ 2. **Test Quickly**: Use the agent, note what goes wrong
183
+ 3. **Add Specificity**: Address observed issues with specific instructions
184
+ 4. **Remove Clutter**: Delete instructions that don't affect behavior
185
+ 5. **Version Changes**: Update version in agent.yaml when changing behavior
186
+
187
+ ## Token Efficiency
188
+
189
+ AGENTS.md content is loaded into every conversation. Keep it lean:
190
+
191
+ - **Target**: 50-200 lines for most agents
192
+ - **Split large content**: Use `rules/` directory for detailed guidelines
193
+ - **Reference over repeat**: Point to documentation instead of copying it
194
+ - **Examples over explanations**: A 5-line example beats a 20-line explanation
195
+
@@ -0,0 +1,391 @@
1
+ #!/usr/bin/env python3
2
+ # Copyright (c) AgentHippo.ai. All rights reserved.
3
+ """
4
+ AgentPack Initializer - Creates a new agent pack with template files
5
+
6
+ Usage:
7
+ init_pack.py <pack-name> --path <path> [--engine <engine>] [--description <description>]
8
+
9
+ Examples:
10
+ init_pack.py code-reviewer --path .agent-hippo/agents
11
+ init_pack.py security-auditor --path .agent-hippo/agents --engine claude
12
+ init_pack.py my-agent --path .agent-hippo/agents --engine codex --description "A custom agent for my project"
13
+
14
+ The script creates a complete agent pack structure with:
15
+ - agent.yaml manifest
16
+ - AGENTS.md with TODO placeholders
17
+ - rules/, skills/, mcp/ directories
18
+ """
19
+
20
+ import argparse
21
+ import hashlib
22
+ import json
23
+ import os
24
+ import sys
25
+ from pathlib import Path
26
+ from datetime import datetime, timezone
27
+
28
+ # =============================================================================
29
+ # Templates
30
+ # =============================================================================
31
+
32
+ AGENT_YAML_TEMPLATE = """# {pack_name} Agent Manifest
33
+ apiVersion: agenthippo.ai/v1
34
+ kind: Agent
35
+ metadata:
36
+ name: {pack_name}
37
+ version: 0.1.0
38
+ author: {author}
39
+ description: "{description}"
40
+
41
+ spec:
42
+ engine: {engine}
43
+ model: {model}
44
+
45
+ skills: []
46
+ # Uncomment to add pack-specific skills:
47
+ # - path: ./skills/my-skill
48
+
49
+ permissions:
50
+ fileAccess: full # read-only | workspace-write | full
51
+
52
+ visibility: internal # internal | team | public
53
+ """
54
+
55
+ AGENTS_MD_TEMPLATE = """# {pack_title} Agent
56
+
57
+ {description}
58
+
59
+ ## Core Behaviors
60
+
61
+ {behaviors_section}
62
+
63
+ ## Workflow
64
+
65
+ {workflow_section}
66
+
67
+ ## Constraints
68
+
69
+ {constraints_section}
70
+
71
+ ## Output Format
72
+
73
+ {output_section}
74
+ """
75
+
76
+ # Default content for TODO sections
77
+ BEHAVIORS_TODO = """<!-- TODO: Define 3-5 specific behaviors this agent should exhibit -->
78
+ <!-- Example:
79
+ 1. **Thorough Analysis**: Examine all relevant files before making recommendations
80
+ 2. **Clear Communication**: Explain reasoning in plain language
81
+ 3. **Incremental Changes**: Prefer small, targeted modifications over large rewrites
82
+ -->
83
+
84
+ 1. **[Behavior 1]**: [Describe what this agent does in this area]
85
+ 2. **[Behavior 2]**: [Describe what this agent does in this area]
86
+ 3. **[Behavior 3]**: [Describe what this agent does in this area]
87
+ """
88
+
89
+ WORKFLOW_TODO = """<!-- TODO: Describe the step-by-step process this agent follows -->
90
+ <!-- Example:
91
+ 1. Understand the request and gather context
92
+ 2. Analyze relevant files and dependencies
93
+ 3. Propose a solution with rationale
94
+ 4. Implement changes incrementally
95
+ 5. Verify the solution works
96
+ -->
97
+
98
+ 1. **Understand**: [First step]
99
+ 2. **Analyze**: [Second step]
100
+ 3. **Execute**: [Third step]
101
+ 4. **Verify**: [Fourth step]
102
+ """
103
+
104
+ CONSTRAINTS_TODO = """<!-- TODO: Define what this agent should NOT do -->
105
+ <!-- Example:
106
+ - Never modify files outside the specified scope
107
+ - Always ask for clarification before destructive operations
108
+ - Prefer existing patterns over introducing new ones
109
+ -->
110
+
111
+ - [Constraint 1]
112
+ - [Constraint 2]
113
+ - [Constraint 3]
114
+ """
115
+
116
+ OUTPUT_TODO = """<!-- TODO: Describe how this agent should format its responses -->
117
+ <!-- Example:
118
+ Provide responses in the following format:
119
+ 1. **Summary**: Brief overview of what was done
120
+ 2. **Changes**: List of files modified with explanations
121
+ 3. **Next Steps**: Suggested follow-up actions
122
+ -->
123
+
124
+ [Describe the expected output format for this agent's responses]
125
+ """
126
+
127
+
128
+ def title_case(name: str) -> str:
129
+ """Convert a pack name (hyphenated, underscored, or spaced) to Title Case."""
130
+ import re
131
+ # Split on common separators: hyphens, underscores, spaces
132
+ words = re.split(r'[-_\s]+', name)
133
+ return ' '.join(word.capitalize() for word in words if word)
134
+
135
+
136
+ def get_author() -> str:
137
+ """Get the author name from environment or default."""
138
+ return os.environ.get('USER', os.environ.get('USERNAME', 'unknown'))
139
+
140
+
141
+ def get_model_for_engine(engine: str) -> str:
142
+ """Get the default model for an engine.
143
+
144
+ Note: These are fallback defaults. When creating a pack via the UI,
145
+ the current session's model is captured and passed explicitly.
146
+ """
147
+ return 'claude-sonnet-4' if engine == 'claude' else 'codex'
148
+
149
+
150
+ def compute_feature_hash(pack_name: str, engine: str, version: str) -> str:
151
+ """Compute a simple feature set hash for the pack."""
152
+ content = f"{pack_name}:{engine}:{version}"
153
+ return hashlib.sha256(content.encode()).hexdigest()[:16]
154
+
155
+
156
+ def register_pack_in_manifest(
157
+ pack_name: str,
158
+ agentide_dir: Path,
159
+ engine: str,
160
+ version: str = '0.1.0',
161
+ ) -> bool:
162
+ """
163
+ Register the pack in the installed-agents.json file.
164
+
165
+ Args:
166
+ pack_name: Name of the agent pack
167
+ agentide_dir: Path to the .agent-hippo directory
168
+ engine: Preferred engine ('claude' or 'codex')
169
+ version: Pack version
170
+
171
+ Returns:
172
+ True if successful, False otherwise
173
+ """
174
+ agents_file_path = agentide_dir / 'installed-agents.json'
175
+
176
+ # Load existing file or create new one
177
+ if agents_file_path.exists():
178
+ try:
179
+ data = json.loads(agents_file_path.read_text())
180
+ except json.JSONDecodeError:
181
+ data = {}
182
+ else:
183
+ data = {}
184
+
185
+ # Ensure required fields exist
186
+ if 'version' not in data:
187
+ data['version'] = 1
188
+ if 'agents' not in data:
189
+ data['agents'] = []
190
+
191
+ # Remove existing entry for this pack (if re-creating)
192
+ data['agents'] = [
193
+ a for a in data['agents'] if a.get('id') != pack_name
194
+ ]
195
+
196
+ # Add new entry
197
+ entry = {
198
+ 'id': pack_name,
199
+ 'version': version,
200
+ 'source': 'local',
201
+ 'installedAt': datetime.now(timezone.utc).isoformat(),
202
+ 'featureSetHash': compute_feature_hash(pack_name, engine, version),
203
+ 'preferredEngine': engine,
204
+ 'status': 'active',
205
+ }
206
+ data['agents'].append(entry)
207
+
208
+ # Write file
209
+ try:
210
+ agents_file_path.write_text(json.dumps(data, indent=2))
211
+ return True
212
+ except Exception as e:
213
+ print(f"⚠️ Warning: Could not update installed-agents.json: {e}")
214
+ return False
215
+
216
+
217
+ def validate_pack_name(name: str) -> bool:
218
+ """Validate pack name is valid as a directory name."""
219
+ import re
220
+ if not name or not name.strip():
221
+ return False
222
+ # Reject path separators and problematic filesystem characters
223
+ if re.search(r'[/\\:*?"<>|]', name):
224
+ return False
225
+ # Reject hidden directories
226
+ if name.startswith('.'):
227
+ return False
228
+ return True
229
+
230
+
231
+ def init_pack(
232
+ pack_name: str,
233
+ path: str,
234
+ engine: str = 'claude',
235
+ description: str = '',
236
+ model: str = '',
237
+ ) -> Path | None:
238
+ """
239
+ Initialize a new agent pack directory with template files.
240
+
241
+ Args:
242
+ pack_name: Name of the agent pack (e.g., 'code-reviewer')
243
+ path: Parent directory where the pack will be created
244
+ engine: Preferred engine ('claude' or 'codex')
245
+ description: Optional description of the agent
246
+ model: Preferred model ID (e.g., 'claude-sonnet-4'). If not specified, uses default for engine.
247
+
248
+ Returns:
249
+ Path to created pack directory, or None if error
250
+ """
251
+ # Validate pack name
252
+ if not validate_pack_name(pack_name):
253
+ print(f"❌ Error: Pack name '{pack_name}' is invalid.")
254
+ print(" Pack names cannot be empty, start with a dot, or contain path separators.")
255
+ return None
256
+
257
+ # Determine pack directory path
258
+ pack_dir = Path(path).resolve() / pack_name
259
+
260
+ # Check if directory already exists
261
+ if pack_dir.exists():
262
+ print(f"❌ Error: Pack directory already exists: {pack_dir}")
263
+ return None
264
+
265
+ # Create pack directory structure
266
+ try:
267
+ pack_dir.mkdir(parents=True, exist_ok=False)
268
+ print(f"✅ Created pack directory: {pack_dir}")
269
+
270
+ (pack_dir / 'rules').mkdir(exist_ok=True)
271
+ print("✅ Created rules/")
272
+
273
+ (pack_dir / 'skills').mkdir(exist_ok=True)
274
+ print("✅ Created skills/")
275
+
276
+ (pack_dir / 'mcp').mkdir(exist_ok=True)
277
+ print("✅ Created mcp/")
278
+
279
+ except Exception as e:
280
+ print(f"❌ Error creating directories: {e}")
281
+ return None
282
+
283
+ # Create agent.yaml
284
+ pack_title = title_case(pack_name)
285
+ # Use provided model or default based on engine
286
+ resolved_model = model.strip() if model else get_model_for_engine(engine)
287
+ agent_yaml_content = AGENT_YAML_TEMPLATE.format(
288
+ pack_name=pack_name,
289
+ author=get_author(),
290
+ description=description or f'A specialized agent for {pack_title.lower()} tasks',
291
+ engine=engine,
292
+ model=resolved_model,
293
+ )
294
+
295
+ try:
296
+ (pack_dir / 'agent.yaml').write_text(agent_yaml_content)
297
+ print("✅ Created agent.yaml")
298
+ except Exception as e:
299
+ print(f"❌ Error creating agent.yaml: {e}")
300
+ return None
301
+
302
+ # Create AGENTS.md
303
+ agents_md_content = AGENTS_MD_TEMPLATE.format(
304
+ pack_title=pack_title,
305
+ description=description or f'You are a specialized agent for {pack_title.lower()} tasks.',
306
+ behaviors_section=BEHAVIORS_TODO,
307
+ workflow_section=WORKFLOW_TODO,
308
+ constraints_section=CONSTRAINTS_TODO,
309
+ output_section=OUTPUT_TODO,
310
+ )
311
+
312
+ try:
313
+ (pack_dir / 'AGENTS.md').write_text(agents_md_content)
314
+ print("✅ Created AGENTS.md")
315
+ except Exception as e:
316
+ print(f"❌ Error creating AGENTS.md: {e}")
317
+ return None
318
+
319
+ # Register pack in the manifest so it shows up in "Set Active Agent Pack"
320
+ # The manifest is at .agent-hippo/agentide.manifest.json (parent of "agents" dir)
321
+ agentide_dir = Path(path).resolve().parent
322
+ if register_pack_in_manifest(pack_name, agentide_dir, engine):
323
+ print("✅ Registered pack in manifest")
324
+ else:
325
+ print("⚠️ Pack created but failed to registere (add it manually to the manifest or reload window to trigger auto-repair)")
326
+
327
+ print(f"\n🎉 Agent pack '{pack_name}' initialized successfully!")
328
+ print(f"\n📁 Pack location: {pack_dir}")
329
+ print("\n📝 Next steps:")
330
+ print(" 1. Edit AGENTS.md to define agent behavior")
331
+ print(" 2. Add rule fragments to rules/ (optional)")
332
+ print(" 3. Add skills to skills/ (optional)")
333
+ print(" 4. Run 'Set Active Agent Pack' command to activate")
334
+
335
+ return pack_dir
336
+
337
+
338
+ def main():
339
+ parser = argparse.ArgumentParser(
340
+ description='Initialize a new AgentPack with template files',
341
+ formatter_class=argparse.RawDescriptionHelpFormatter,
342
+ epilog="""
343
+ Examples:
344
+ %(prog)s code-reviewer --path .agent-hippo/agents
345
+ %(prog)s security-auditor --path .agent-hippo/agents --engine claude
346
+ %(prog)s my-agent --path .agent-hippo/agents --engine codex --description "Custom agent"
347
+ """
348
+ )
349
+
350
+ parser.add_argument(
351
+ 'pack_name',
352
+ help='Name of the agent pack (lowercase, hyphens allowed)'
353
+ )
354
+ parser.add_argument(
355
+ '--path',
356
+ required=True,
357
+ help='Parent directory for the pack (e.g., .agent-hippo/agents)'
358
+ )
359
+ parser.add_argument(
360
+ '--engine',
361
+ choices=['claude', 'codex'],
362
+ default='claude',
363
+ help='Preferred engine (default: claude)'
364
+ )
365
+ parser.add_argument(
366
+ '--description',
367
+ default='',
368
+ help='Description of the agent pack'
369
+ )
370
+ parser.add_argument(
371
+ '--model',
372
+ default='',
373
+ help='Preferred model ID (e.g., claude-sonnet-4). Defaults based on engine if not specified.'
374
+ )
375
+
376
+ args = parser.parse_args()
377
+
378
+ result = init_pack(
379
+ pack_name=args.pack_name,
380
+ path=args.path,
381
+ engine=args.engine,
382
+ description=args.description,
383
+ model=args.model,
384
+ )
385
+
386
+ sys.exit(0 if result else 1)
387
+
388
+
389
+ if __name__ == '__main__':
390
+ main()
391
+