@agenthippo-ai/agenthippo 1.110.9 → 1.110.19

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 (533) hide show
  1. package/out/agentpack/types.js +2 -5
  2. package/out/analytics/dashboard/artifactManager.js +2 -439
  3. package/out/analytics/dashboard/fleetDisplayUtils.js +2 -162
  4. package/out/analytics/dashboard/fleetOrchestrator.js +3 -142
  5. package/out/analytics/dashboard/fleetRegistry.js +2 -79
  6. package/out/analytics/dashboard/fleetRowDefaults.js +2 -87
  7. package/out/analytics/dashboard/fleetScriptAdapter.js +2 -146
  8. package/out/analytics/dashboard/fleetTypes.js +2 -29
  9. package/out/analytics/dashboard/index.js +2 -17
  10. package/out/analytics/dashboard/indexingService.js +2 -422
  11. package/out/analytics/dashboard/localFleetAdapter.js +2 -222
  12. package/out/analytics/dashboard/performanceMonitor.js +5 -76
  13. package/out/analytics/dashboard/processManager.js +2 -209
  14. package/out/analytics/dashboard/provider.js +38 -3817
  15. package/out/analytics/dashboard/queryRunner.js +62 -750
  16. package/out/analytics/dashboard/scheduledFleetStorage.js +2 -241
  17. package/out/analytics/dashboard/sessionJsonlFleet.js +3 -204
  18. package/out/analytics/dashboard/teamViewDiscovery.js +2 -106
  19. package/out/analytics/dashboard/webview/panel.js +34 -2318
  20. package/out/analytics/dashboard/webview/runtime-bridge.js +2 -82
  21. package/out/analytics/lifecycle.js +2 -43
  22. package/out/analytics/service.js +8 -1277
  23. package/out/auth/authBaseUrl.js +2 -59
  24. package/out/auth/bootstrapApply.js +2 -71
  25. package/out/auth/brokerClient.js +2 -160
  26. package/out/auth/callbackUri.js +2 -59
  27. package/out/auth/githubStoreGate.js +2 -70
  28. package/out/auth/loopbackAuthServer.js +4 -159
  29. package/out/auth/onboardingPrompt.js +2 -112
  30. package/out/auth/pkce.js +2 -9
  31. package/out/auth/provider.js +2 -226
  32. package/out/auth/sessionStore.js +2 -156
  33. package/out/auth/signInFlow.js +2 -183
  34. package/out/cli/index.js +619 -551
  35. package/out/cli/run-custom-engine-runner.js +3 -318
  36. package/out/cli/vscode-shim.js +2 -86
  37. package/out/engines/factory.js +2 -45
  38. package/out/engines/types.js +2 -17
  39. package/out/examples/run-headless-repl.js +6 -286
  40. package/out/examples/run-headless.js +2 -187
  41. package/out/extension.js +32 -4473
  42. package/out/gateway/gatewayRouteIndex.js +6 -371
  43. package/out/gateway/gatewaySessionStore.js +3 -243
  44. package/out/gateway/index.js +2 -31
  45. package/out/gateway/resetMappings.js +2 -52
  46. package/out/gateway/service.js +5 -1249
  47. package/out/mcp/publish.js +2 -143
  48. package/out/remote/handleRemoteChat.js +2 -169
  49. package/out/remote/remotePackStatusBar.js +3 -103
  50. package/out/remote/remoteTrust.js +6 -277
  51. package/out/remote/serveClient.js +4 -277
  52. package/out/remoteSkills.js +3 -191
  53. package/out/runtime/index.js +2 -32
  54. package/out/runtime/vscode/index.js +2 -20
  55. package/out/runtime/vscode/vscode-config-provider.js +2 -77
  56. package/out/runtime/vscode/vscode-edit-tracker.js +2 -122
  57. package/out/runtime/vscode/vscode-logger.js +2 -30
  58. package/out/runtime/vscode/vscode-permission-handler.js +2 -72
  59. package/out/scripts/agentide-litellm.sh +0 -1
  60. package/out/scripts/agentide_litellm_hooks_v1.py +170 -418
  61. package/out/scripts/analytics/agent-fleet-widget.js +18 -257
  62. package/out/scripts/analytics/agentide-litellm-otel.config.yaml +4 -4
  63. package/out/scripts/analytics/duckdbLocator.js +2 -28
  64. package/out/scripts/analytics/generate-default-charts.py +43 -323
  65. package/out/scripts/analytics/hotspot-analysis-widget.js +4 -430
  66. package/out/scripts/analytics/index-traces.py +78 -1036
  67. package/out/scripts/analytics/session-comparison-widget.js +26 -472
  68. package/out/scripts/analytics/session-timeline-widget.js +25 -846
  69. package/out/scripts/analytics/setup-analytics.ps1 +8 -1
  70. package/out/scripts/analytics/setup-analytics.sh +13 -2
  71. package/out/scripts/analytics/token-cost-flamegraph-widget.js +4 -461
  72. package/out/scripts/analytics/token-cost-trend-widget.js +4 -534
  73. package/out/scripts/analytics/workflows-collector.cjs +4 -314
  74. package/out/scripts/analytics/workflows-daemon.mjs +9 -185
  75. package/out/scripts/analytics/workflows-widget.cjs +15 -159
  76. package/out/scripts/analytics/wow-model-widget.js +10 -120
  77. package/out/scripts/vendor-tools.mjs +2 -233
  78. package/out/skills/publish.js +3 -178
  79. package/out/store/github/setup.js +7 -212
  80. package/out/store/oramaIndex.js +2 -884
  81. package/out/sync.js +26 -1829
  82. package/out/terminalLogger.js +5 -358
  83. package/out/utils/pathSafety.js +2 -60
  84. package/out/utils/pythonRunner.js +4 -258
  85. package/out/utils/toolPath.js +2 -83
  86. package/out/workspaceFolders.js +2 -59
  87. package/package.json +1 -1
  88. package/out/agentpack/github.js +0 -547
  89. package/out/agentpack/index.js +0 -67
  90. package/out/agentpack/install.js +0 -297
  91. package/out/agentpack/manager.js +0 -441
  92. package/out/agentpack/manifest.js +0 -135
  93. package/out/agentpack/paths.js +0 -498
  94. package/out/agentpack/publish.js +0 -248
  95. package/out/agentpack/stores.js +0 -554
  96. package/out/analytics/dashboard/fleetStatusUtils.js +0 -30
  97. package/out/analytics/dashboard/fleetTitleUtils.js +0 -68
  98. package/out/analytics/dashboard/refreshPolicy.js +0 -16
  99. package/out/analytics/dashboard/scheduledFleetFingerprint.js +0 -22
  100. package/out/analytics/dashboard/scheduledFleetUtils.js +0 -22
  101. package/out/analytics/dashboard/sessionEventFleetStats.js +0 -118
  102. package/out/analytics/dashboard/viewsConfigMerge.js +0 -221
  103. package/out/analytics/dashboard/webview/codicon.ttf +0 -0
  104. package/out/analytics/identity.js +0 -0
  105. package/out/analytics/sessionEvents.js +0 -323
  106. package/out/auth/callbackUriParse.js +0 -59
  107. package/out/auth/types.js +0 -12
  108. package/out/auth-broker/config.js +0 -112
  109. package/out/auth-broker/jwt.js +0 -105
  110. package/out/auth-broker/pkce.js +0 -59
  111. package/out/auth-broker/server.js +0 -677
  112. package/out/auth-broker/store.js +0 -275
  113. package/out/authority/warrant.js +0 -206
  114. package/out/base-prompts/mcp-servers/.mcp.json +0 -13
  115. package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +0 -142
  116. package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +0 -13
  117. package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +0 -1192
  118. package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +0 -23
  119. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +0 -12
  120. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +0 -102
  121. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +0 -137
  122. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +0 -118
  123. package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +0 -209
  124. package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +0 -431
  125. package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +0 -270
  126. package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +0 -18
  127. package/out/base-prompts/rules/AGENTS.md +0 -204
  128. package/out/base-prompts/skills/agent-browser/SKILL.md +0 -102
  129. package/out/base-prompts/skills/agent-builder/SKILL.md +0 -73
  130. package/out/base-prompts/skills/agent-builder/references/agent-pack.md +0 -63
  131. package/out/base-prompts/skills/agent-builder/references/crewai.md +0 -66
  132. package/out/base-prompts/skills/agent-builder/references/langchain.md +0 -60
  133. package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +0 -73
  134. package/out/base-prompts/skills/agent-engine-creator/SKILL.md +0 -586
  135. package/out/base-prompts/skills/agent-engine-installer/SKILL.md +0 -106
  136. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +0 -259
  137. package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +0 -189
  138. package/out/base-prompts/skills/agenthippo-cli/SKILL.md +0 -69
  139. package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +0 -63
  140. package/out/base-prompts/skills/agentpack-creator/SKILL.md +0 -375
  141. package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +0 -261
  142. package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +0 -195
  143. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +0 -391
  144. package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +0 -294
  145. package/out/base-prompts/skills/agentpack-testbench/SKILL.md +0 -135
  146. package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +0 -202
  147. package/out/base-prompts/skills/algorithmic-art/SKILL.md +0 -405
  148. package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +0 -223
  149. package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +0 -599
  150. package/out/base-prompts/skills/debug-agent/SKILL.md +0 -83
  151. package/out/base-prompts/skills/desktop-automation/SKILL.md +0 -166
  152. package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +0 -441
  153. package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +0 -280
  154. package/out/base-prompts/skills/docx/LICENSE.txt +0 -30
  155. package/out/base-prompts/skills/docx/SKILL.md +0 -197
  156. package/out/base-prompts/skills/docx/docx-js.md +0 -350
  157. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  158. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  159. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  160. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  161. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  162. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  163. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  164. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  165. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  166. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  167. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  168. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  169. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  170. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  171. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  172. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  173. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  174. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  175. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  176. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  177. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  178. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  179. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  180. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  181. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  182. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  183. package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  184. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  185. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  186. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  187. package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  188. package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
  189. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  190. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  191. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  192. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  193. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  194. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  195. package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  196. package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +0 -159
  197. package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +0 -29
  198. package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +0 -69
  199. package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
  200. package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +0 -951
  201. package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +0 -274
  202. package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
  203. package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
  204. package/out/base-prompts/skills/docx/ooxml.md +0 -610
  205. package/out/base-prompts/skills/docx/scripts/__init__.py +0 -1
  206. package/out/base-prompts/skills/docx/scripts/document.py +0 -1276
  207. package/out/base-prompts/skills/docx/scripts/templates/comments.xml +0 -3
  208. package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  209. package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  210. package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +0 -3
  211. package/out/base-prompts/skills/docx/scripts/templates/people.xml +0 -3
  212. package/out/base-prompts/skills/docx/scripts/utilities.py +0 -374
  213. package/out/base-prompts/skills/gateway-outbound/SKILL.md +0 -136
  214. package/out/base-prompts/skills/mcp-builder/LICENSE.txt +0 -202
  215. package/out/base-prompts/skills/mcp-builder/SKILL.md +0 -328
  216. package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +0 -602
  217. package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  218. package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  219. package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  220. package/out/base-prompts/skills/mcp-builder/scripts/connections.py +0 -151
  221. package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +0 -373
  222. package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  223. package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +0 -2
  224. package/out/base-prompts/skills/openclaw/SKILL.md +0 -406
  225. package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +0 -61
  226. package/out/base-prompts/skills/pdf/LICENSE.txt +0 -30
  227. package/out/base-prompts/skills/pdf/SKILL.md +0 -294
  228. package/out/base-prompts/skills/pdf/forms.md +0 -205
  229. package/out/base-prompts/skills/pdf/reference.md +0 -612
  230. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +0 -70
  231. package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
  232. package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +0 -12
  233. package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
  234. package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +0 -41
  235. package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +0 -152
  236. package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +0 -114
  237. package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
  238. package/out/base-prompts/skills/pptx/LICENSE.txt +0 -30
  239. package/out/base-prompts/skills/pptx/SKILL.md +0 -484
  240. package/out/base-prompts/skills/pptx/html2pptx.md +0 -625
  241. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  242. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  243. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  244. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  245. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  246. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  247. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  248. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  249. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  250. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  251. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  252. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  253. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  254. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  255. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  256. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  257. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  258. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  259. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  260. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  261. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  262. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  263. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  264. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  265. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  266. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  267. package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  268. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  269. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  270. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  271. package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  272. package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
  273. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  274. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  275. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  276. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  277. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  278. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  279. package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  280. package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +0 -159
  281. package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +0 -29
  282. package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +0 -69
  283. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
  284. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +0 -951
  285. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
  286. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
  287. package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
  288. package/out/base-prompts/skills/pptx/ooxml.md +0 -427
  289. package/out/base-prompts/skills/pptx/scripts/html2pptx.js +0 -984
  290. package/out/base-prompts/skills/pptx/scripts/inventory.py +0 -1020
  291. package/out/base-prompts/skills/pptx/scripts/rearrange.py +0 -231
  292. package/out/base-prompts/skills/pptx/scripts/replace.py +0 -385
  293. package/out/base-prompts/skills/pptx/scripts/thumbnail.py +0 -450
  294. package/out/base-prompts/skills/prompt-lab/SKILL.md +0 -149
  295. package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +0 -2551
  296. package/out/base-prompts/skills/skill-creator/LICENSE.txt +0 -202
  297. package/out/base-prompts/skills/skill-creator/SKILL.md +0 -371
  298. package/out/base-prompts/skills/skill-creator/references/output-patterns.md +0 -82
  299. package/out/base-prompts/skills/skill-creator/references/workflows.md +0 -28
  300. package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +0 -303
  301. package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +0 -110
  302. package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +0 -95
  303. package/out/base-prompts/skills/skill-installer/SKILL.md +0 -251
  304. package/out/base-prompts/skills/skill-installer/references/store-api.md +0 -219
  305. package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +0 -83
  306. package/out/base-prompts/skills/spotlight-insights/SKILL.md +0 -101
  307. package/out/base-prompts/skills/spotlight-optimize/SKILL.md +0 -93
  308. package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +0 -2551
  309. package/out/base-prompts/skills/spotlight-query/SKILL.md +0 -314
  310. package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +0 -163
  311. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +0 -2551
  312. package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +0 -744
  313. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +0 -14
  314. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +0 -7
  315. package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +0 -5
  316. package/out/base-prompts/skills/spotlight-report/SKILL.md +0 -86
  317. package/out/base-prompts/skills/spotlight-visualize/SKILL.md +0 -92
  318. package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +0 -2551
  319. package/out/base-prompts/skills/xlsx/LICENSE.txt +0 -30
  320. package/out/base-prompts/skills/xlsx/SKILL.md +0 -289
  321. package/out/base-prompts/skills/xlsx/recalc.py +0 -178
  322. package/out/branding.js +0 -49
  323. package/out/cli/commands/anywhere.js +0 -66
  324. package/out/cli/commands/ask.js +0 -246
  325. package/out/cli/commands/auth-broker.js +0 -24
  326. package/out/cli/commands/auth.js +0 -219
  327. package/out/cli/commands/chat.js +0 -357
  328. package/out/cli/commands/conformance.js +0 -249
  329. package/out/cli/commands/data-plane.js +0 -67
  330. package/out/cli/commands/deploy.js +0 -263
  331. package/out/cli/commands/gateway.js +0 -218
  332. package/out/cli/commands/idp.js +0 -85
  333. package/out/cli/commands/pack.js +0 -399
  334. package/out/cli/commands/probe-custom-engine.js +0 -82
  335. package/out/cli/commands/sandbox.js +0 -332
  336. package/out/cli/commands/serve.js +0 -1758
  337. package/out/cli/commands/store.js +0 -927
  338. package/out/cli/credential-context.js +0 -91
  339. package/out/cli/data-plane/broker.js +0 -78
  340. package/out/cli/data-plane/connector-host.js +0 -121
  341. package/out/cli/data-plane/egress.js +0 -189
  342. package/out/cli/data-plane/gateway.js +0 -218
  343. package/out/cli/data-plane/index.js +0 -152
  344. package/out/cli/data-plane/registry.js +0 -89
  345. package/out/cli/data-plane/remote.js +0 -106
  346. package/out/cli/data-plane/sidecar.js +0 -161
  347. package/out/cli/deploy/blueprints/registry.js +0 -84
  348. package/out/cli/deploy/layers/identity.js +0 -172
  349. package/out/cli/deploy-init.js +0 -3023
  350. package/out/cli/deps.js +0 -342
  351. package/out/cli/idp-init.js +0 -338
  352. package/out/cli/pack-install-ref.js +0 -15
  353. package/out/cli/pack-loader.js +0 -418
  354. package/out/cli/pack-runtime.js +0 -61
  355. package/out/cli/runtime.js +0 -450
  356. package/out/cli/serve-hardening.js +0 -607
  357. package/out/cli/state-sync.js +0 -424
  358. package/out/cli/utils.js +0 -231
  359. package/out/engines/base.js +0 -188
  360. package/out/engines/claude.js +0 -1254
  361. package/out/engines/codex.js +0 -862
  362. package/out/engines/custom.js +0 -674
  363. package/out/engines/customEngineIpc.js +0 -95
  364. package/out/engines/customEngineRunnerEmbed.js +0 -107
  365. package/out/engines/customRegistry.js +0 -274
  366. package/out/engines/embeddedCustomEngineRunner.generated.js +0 -9
  367. package/out/engines/engineApiKey.js +0 -138
  368. package/out/engines/install.js +0 -372
  369. package/out/engines/persistentEngineWorker.js +0 -320
  370. package/out/engines/publish.js +0 -341
  371. package/out/evidence/sessionShip.js +0 -610
  372. package/out/gateway/bridge.js +0 -843
  373. package/out/gateway/cli-agent-id.js +0 -36
  374. package/out/gateway/client.js +0 -336
  375. package/out/gateway/client.test.js +0 -395
  376. package/out/gateway/gateway-scope-errors.js +0 -14
  377. package/out/gateway/gatewayBackup.js +0 -76
  378. package/out/gateway/installSource.js +0 -68
  379. package/out/gateway/lifecycle.js +0 -3190
  380. package/out/gateway/openclaw-channel-routing.js +0 -317
  381. package/out/gateway/outboundHandles.js +0 -373
  382. package/out/gateway/outboundPaths.js +0 -75
  383. package/out/gateway/outboundSend.js +0 -254
  384. package/out/gateway/protocol.js +0 -48
  385. package/out/gateway/secretsPreflight.js +0 -90
  386. package/out/gateway/sessionRouting.js +0 -77
  387. package/out/headless/index.js +0 -539
  388. package/out/headless/sync.js +0 -473
  389. package/out/live-e2e/mcp-demo/server.mjs +0 -32
  390. package/out/live-probe/connector.mjs +0 -8
  391. package/out/live-probe/env-report.mjs +0 -8
  392. package/out/mcp.js +0 -654
  393. package/out/pack/caps.js +0 -271
  394. package/out/pack/governor.js +0 -309
  395. package/out/pack/lease-schema.js +0 -270
  396. package/out/pack/lease.js +0 -640
  397. package/out/pack/reconcile.js +0 -217
  398. package/out/pack/signature.js +0 -839
  399. package/out/permissions.js +0 -108
  400. package/out/permissions.mapping.yaml +0 -68
  401. package/out/registry/index.js +0 -332
  402. package/out/runner/host.js +0 -131
  403. package/out/runner/protocol.js +0 -108
  404. package/out/runner/remoteEngine.js +0 -130
  405. package/out/runtime/interfaces/config-provider.js +0 -32
  406. package/out/runtime/interfaces/edit-tracker.js +0 -24
  407. package/out/runtime/interfaces/index.js +0 -29
  408. package/out/runtime/interfaces/logger.js +0 -40
  409. package/out/runtime/interfaces/permission-handler.js +0 -66
  410. package/out/runtime/interfaces/session-store.js +0 -342
  411. package/out/runtime/vscode/vscode-session-store.js +0 -22
  412. package/out/sandbox/containerDriver.js +0 -570
  413. package/out/sandbox/processDriver.js +0 -315
  414. package/out/sandbox/sandboxRunner.js +0 -191
  415. package/out/sandbox/support.js +0 -301
  416. package/out/sandbox/types.js +0 -55
  417. package/out/scripts/analytics/fleet-local-adapter.js +0 -246
  418. package/out/scripts/analytics/live-fleet-4-collector.cjs +0 -315
  419. package/out/scripts/analytics/live-fleet-4-daemon.mjs +0 -134
  420. package/out/scripts/analytics/live-fleet-4-widget.cjs +0 -433
  421. package/out/scripts/gateway/Dockerfile.serve +0 -45
  422. package/out/scripts/gateway/docker-serve.sh +0 -248
  423. package/out/scripts/gateway/setup-gateway-server.ps1 +0 -953
  424. package/out/scripts/gateway/setup-gateway-server.sh +0 -935
  425. package/out/session.js +0 -272
  426. package/out/shared/agentEngines.js +0 -170
  427. package/out/shared/index.js +0 -109
  428. package/out/shared/models.js +0 -136
  429. package/out/shared/providers.js +0 -205
  430. package/out/spotlight/install.js +0 -345
  431. package/out/spotlight/publish.js +0 -544
  432. package/out/spotlight/yaml.js +0 -31
  433. package/out/store/index.js +0 -786
  434. package/out/store/shared.js +0 -241
  435. package/out/test/agentEnvFile.test.js +0 -97
  436. package/out/test/agentYaml.test.js +0 -373
  437. package/out/test/agentpack.test.js +0 -639
  438. package/out/test/analytics-lifecycle.test.js +0 -174
  439. package/out/test/analytics.test.js +0 -756
  440. package/out/test/auth-baseurl.test.js +0 -132
  441. package/out/test/auth-bootstrapApply.test.js +0 -123
  442. package/out/test/auth-broker-hardening.test.js +0 -227
  443. package/out/test/auth-broker.test.js +0 -541
  444. package/out/test/auth-callback.test.js +0 -62
  445. package/out/test/blueprint-registry.test.js +0 -105
  446. package/out/test/branding.test.js +0 -242
  447. package/out/test/caps-governor.test.js +0 -455
  448. package/out/test/cli-agent-id.test.js +0 -55
  449. package/out/test/codex-new-file-survival.test.js +0 -119
  450. package/out/test/configuration-scopes.test.js +0 -131
  451. package/out/test/credential-context.test.js +0 -160
  452. package/out/test/custom-env-layering.test.js +0 -151
  453. package/out/test/customEngineInstall.test.js +0 -100
  454. package/out/test/customRegistry.test.js +0 -122
  455. package/out/test/data-plane-engine-wiring.test.js +0 -250
  456. package/out/test/data-plane.test.js +0 -311
  457. package/out/test/deploy-init.test.js +0 -854
  458. package/out/test/deps-auto-install.test.js +0 -81
  459. package/out/test/egress-broker.test.js +0 -172
  460. package/out/test/engine-integration.test.js +0 -297
  461. package/out/test/enginePaths.test.js +0 -195
  462. package/out/test/enginePublish.test.js +0 -82
  463. package/out/test/fleetDisplayUtils.test.js +0 -100
  464. package/out/test/gateway-client.test.js +0 -409
  465. package/out/test/gateway-install-source.test.js +0 -111
  466. package/out/test/gateway-lifecycle.test.js +0 -608
  467. package/out/test/gateway-outbound.test.js +0 -538
  468. package/out/test/gateway-reset-mappings.test.js +0 -221
  469. package/out/test/gateway-route-index.test.js +0 -235
  470. package/out/test/gateway-secrets-preflight.test.js +0 -127
  471. package/out/test/gateway-session-routing.test.js +0 -65
  472. package/out/test/gateway-session-store.test.js +0 -216
  473. package/out/test/github.test.js +0 -232
  474. package/out/test/governor-hardening.test.js +0 -217
  475. package/out/test/headless-sync.test.js +0 -301
  476. package/out/test/helpers/manifest-fixtures.js +0 -27
  477. package/out/test/idp-init.test.js +0 -151
  478. package/out/test/lease-signature.test.js +0 -357
  479. package/out/test/lease-trust-root.test.js +0 -273
  480. package/out/test/lease-validation.test.js +0 -169
  481. package/out/test/lease.test.js +0 -114
  482. package/out/test/mcp-obo.test.js +0 -107
  483. package/out/test/mcp.test.js +0 -389
  484. package/out/test/model-routing.test.js +0 -133
  485. package/out/test/openclaw-channel-routing.test.js +0 -191
  486. package/out/test/pack-admission.test.js +0 -216
  487. package/out/test/pack-digest-parity.test.js +0 -140
  488. package/out/test/pack-reconcile.test.js +0 -183
  489. package/out/test/pack-signature-artifact.test.js +0 -103
  490. package/out/test/pack-signature.test.js +0 -176
  491. package/out/test/pack-trust-root.test.js +0 -202
  492. package/out/test/pathSafety.test.js +0 -63
  493. package/out/test/permissions.test.js +0 -175
  494. package/out/test/persistent-engine-worker.test.js +0 -220
  495. package/out/test/refreshPolicy.test.js +0 -60
  496. package/out/test/registry.test.js +0 -351
  497. package/out/test/remote-trust.test.js +0 -242
  498. package/out/test/runner-protocol.test.js +0 -249
  499. package/out/test/runtime.test.js +0 -349
  500. package/out/test/sandbox-driver.test.js +0 -553
  501. package/out/test/sandbox-hardening.test.js +0 -395
  502. package/out/test/sandbox-runner.test.js +0 -343
  503. package/out/test/scheduledFleetStorage.test.js +0 -72
  504. package/out/test/serve-gateway-turn.test.js +0 -267
  505. package/out/test/serve-hardening.test.js +0 -418
  506. package/out/test/serveClient.test.js +0 -209
  507. package/out/test/sessionJsonlFleet.test.js +0 -78
  508. package/out/test/sessionShip.test.js +0 -560
  509. package/out/test/shared.test.js +0 -173
  510. package/out/test/skills-mcp.test.js +0 -299
  511. package/out/test/spotlightPublish.test.js +0 -327
  512. package/out/test/spotlightYaml.test.js +0 -58
  513. package/out/test/state-sync-peer.test.js +0 -156
  514. package/out/test/store-install-safe.test.js +0 -69
  515. package/out/test/store.test.js +0 -331
  516. package/out/test/stores.test.js +0 -504
  517. package/out/test/sync-switch.test.js +0 -251
  518. package/out/test/teamViewDiscovery.test.js +0 -90
  519. package/out/test/tls-bypass.test.js +0 -90
  520. package/out/test/toolPath.test.js +0 -120
  521. package/out/test/utils.test.js +0 -308
  522. package/out/test/viewsConfigMerge.test.js +0 -180
  523. package/out/test/warrant.test.js +0 -138
  524. package/out/test/windows-command-line.test.js +0 -75
  525. package/out/utils/agentEnvFile.js +0 -131
  526. package/out/utils/binary.js +0 -175
  527. package/out/utils/index.js +0 -37
  528. package/out/utils/network.js +0 -74
  529. package/out/utils/paths.js +0 -116
  530. package/out/utils/pid.js +0 -180
  531. package/out/utils/resolveNodeBinary.js +0 -168
  532. package/out/utils/windowsCommandLine.js +0 -29
  533. package/out/utils.js +0 -968
package/out/pack/caps.js DELETED
@@ -1,271 +0,0 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) AgentHippo.ai. All rights reserved.
4
- *--------------------------------------------------------------------------------------------*/
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CapMeter = exports.CAP_ENV_ALIASES = exports.parseCapPolicy = exports.STRICTEST_ON_BREACH = exports.ON_BREACH_ALIASES = exports.ON_BREACH_ACTIONS = exports.LEASE_CAP_FIELDS = exports.LEASE_CAP_ALIASES = exports.DEPRECATED_CAP_SPELLINGS = void 0;
7
- exports.resolveOnBreach = resolveOnBreach;
8
- exports.mergeCaps = mergeCaps;
9
- exports.capsAreUnbounded = capsAreUnbounded;
10
- exports.capsFromEnv = capsFromEnv;
11
- /**
12
- * Caps and the live kill switch — the enforcement half of the control plane (serve-v4-clean §5).
13
- *
14
- * `assertAdmitted` already answers "may this artifact run here, now?" at sandbox CREATION. That is
15
- * necessary and not sufficient for an enterprise control plane, which also needs:
16
- *
17
- * caps — a bound on what one session may consume, enforced by serve rather than requested of
18
- * the agent. A cap the agent could talk its way past is not a cap.
19
- * kill — "stop now", not "stop admitting". Lease revocation alone leaves running sandboxes alive
20
- * until their TTL (up to 30 minutes); an operator hitting the emergency stop means the
21
- * work ends, so the lease watcher below destroys live sandboxes too.
22
- *
23
- * Precedence is deliberate: an operator's local limit may only ever be *tighter* than the
24
- * control plane's. A self-hosted deployment can impose more restraint on itself, never less —
25
- * so a compromised or misconfigured instance cannot raise its own ceiling by editing a flag.
26
- */
27
- const lease_schema_1 = require("./lease-schema");
28
- /**
29
- * Re-exported so callers outside pack/ have ONE import site for the cap vocabulary.
30
- *
31
- * The tables themselves live in `lease-schema.ts`, next to the lease validator that consumes them,
32
- * because the whole point is that a lease field, an env var and a CLI flag are held to the same
33
- * vocabulary. Adding an alias in one place changes all three.
34
- */
35
- var lease_schema_2 = require("./lease-schema");
36
- Object.defineProperty(exports, "DEPRECATED_CAP_SPELLINGS", { enumerable: true, get: function () { return lease_schema_2.DEPRECATED_CAP_SPELLINGS; } });
37
- Object.defineProperty(exports, "LEASE_CAP_ALIASES", { enumerable: true, get: function () { return lease_schema_2.LEASE_CAP_ALIASES; } });
38
- Object.defineProperty(exports, "LEASE_CAP_FIELDS", { enumerable: true, get: function () { return lease_schema_2.LEASE_CAP_FIELDS; } });
39
- Object.defineProperty(exports, "ON_BREACH_ACTIONS", { enumerable: true, get: function () { return lease_schema_2.ON_BREACH_ACTIONS; } });
40
- Object.defineProperty(exports, "ON_BREACH_ALIASES", { enumerable: true, get: function () { return lease_schema_2.ON_BREACH_ALIASES; } });
41
- Object.defineProperty(exports, "STRICTEST_ON_BREACH", { enumerable: true, get: function () { return lease_schema_2.STRICTEST_ON_BREACH; } });
42
- Object.defineProperty(exports, "parseCapPolicy", { enumerable: true, get: function () { return lease_schema_2.parseCapPolicy; } });
43
- /** Env var aliases, old spelling → current spelling. */
44
- exports.CAP_ENV_ALIASES = {
45
- AGENTHIPPO_MAX_CONCURRENT_CELLS: 'AGENTHIPPO_MAX_CONCURRENT_SANDBOXES',
46
- };
47
- /**
48
- * Resolve a breach action from ANY untrusted source (env, CLI flag, lease field).
49
- *
50
- * The governing rule, and the reason this is one function rather than three:
51
- * **an unrecognised action fails closed to the STRICTER action, loudly. It never softens.**
52
- *
53
- * It used to soften, in two places at once. `capsFromEnv` mapped an unknown value to `undefined`,
54
- * and `cli/index.ts` did the same for `--cap-on-breach`; `mergeCaps` then found no
55
- * `'destroy-sandbox'` on either side and `governor.enforce` defaulted to `revoke-inference`. So a
56
- * typo — or the perfectly reasonable pre-rename value `destroy-cell` — quietly downgraded
57
- * enforcement from "end the session" to "take away its model route", while the console showed the
58
- * stricter setting the operator had typed.
59
- *
60
- * @param source what to name in the warning, e.g. `AGENTHIPPO_CAP_ON_BREACH` or `--cap-on-breach`.
61
- */
62
- function resolveOnBreach(raw, source) {
63
- const value = raw?.trim();
64
- if (!value) {
65
- return { action: undefined, warnings: [] };
66
- }
67
- if (value in lease_schema_1.ON_BREACH_ACTIONS) {
68
- return { action: value, warnings: [] };
69
- }
70
- const aliased = lease_schema_1.ON_BREACH_ALIASES[value];
71
- if (aliased) {
72
- return {
73
- action: aliased,
74
- warnings: [
75
- `${source}="${value}" is DEPRECATED; use "${lease_schema_1.DEPRECATED_CAP_SPELLINGS[value] ?? aliased}". ` +
76
- `Treating it as "${aliased}". The old spelling will stop being accepted.`,
77
- ],
78
- };
79
- }
80
- return {
81
- action: lease_schema_1.STRICTEST_ON_BREACH,
82
- warnings: [
83
- `${source}="${value}" is not a breach action this build understands. ` +
84
- `FAILING CLOSED to "${lease_schema_1.STRICTEST_ON_BREACH}" — an unreadable enforcement setting must never ` +
85
- `weaken enforcement. Known actions: ${Object.keys(lease_schema_1.ON_BREACH_ACTIONS).join(', ')}.`,
86
- ],
87
- };
88
- }
89
- /** Ceiling on metered sessions, so an unbounded instance cannot grow meters without limit. */
90
- const MAX_METERED_SESSIONS = 10_000;
91
- /**
92
- * Tighten-only merge. `local` may lower any bound the control plane set, never raise it, and may
93
- * only escalate the breach action (revoke → destroy), never soften it.
94
- */
95
- function mergeCaps(controlPlane, local) {
96
- const cp = controlPlane ?? {};
97
- const lo = local ?? {};
98
- const tighter = (a, b) => {
99
- if (a === undefined) {
100
- return b;
101
- }
102
- if (b === undefined) {
103
- return a;
104
- }
105
- return Math.min(a, b);
106
- };
107
- return {
108
- maxTurnsPerSession: tighter(cp.maxTurnsPerSession, lo.maxTurnsPerSession),
109
- maxSessionSeconds: tighter(cp.maxSessionSeconds, lo.maxSessionSeconds),
110
- maxConcurrentSandboxes: tighter(cp.maxConcurrentSandboxes, lo.maxConcurrentSandboxes),
111
- // destroy is stricter than revoke; either side may escalate, neither may soften.
112
- onBreach: cp.onBreach === 'destroy-sandbox' || lo.onBreach === 'destroy-sandbox'
113
- ? 'destroy-sandbox'
114
- : (cp.onBreach ?? lo.onBreach),
115
- };
116
- }
117
- /** True when no bound is set at all — lets callers skip the machinery entirely. */
118
- function capsAreUnbounded(caps) {
119
- return caps.maxTurnsPerSession === undefined
120
- && caps.maxSessionSeconds === undefined
121
- && caps.maxConcurrentSandboxes === undefined;
122
- }
123
- /**
124
- * Per-session meter. Checked BEFORE a turn runs: a cap discovered afterwards has already let the
125
- * spend happen, so `check` is the gate and `record` only advances the counters.
126
- */
127
- class CapMeter {
128
- caps;
129
- sessions = new Map();
130
- constructor(caps) {
131
- this.caps = caps;
132
- }
133
- /**
134
- * Adopt caps the control plane pushed since boot.
135
- *
136
- * Caps used to be read from the lease exactly ONCE, at construction, so tightening a cap in
137
- * the control plane did nothing until every instance was restarted — the fleet reported the
138
- * new policy while enforcing the old one. Live-caught by the control-plane acceptance test.
139
- * Existing per-session counters are deliberately kept: a lowered cap must bite immediately on
140
- * sessions already over it, not hand them a fresh allowance.
141
- */
142
- setCaps(caps) {
143
- this.caps = caps;
144
- }
145
- /** Current policy in force — surfaced on the admin/health endpoint. */
146
- policy() {
147
- return this.caps;
148
- }
149
- /**
150
- * @param liveSandboxes Current live sandbox count — concurrency is an instance-wide bound, so it is
151
- * supplied by the caller rather than tracked here.
152
- */
153
- check(sessionKey, liveSandboxes, nowMs = Date.now()) {
154
- const usage = this.sessions.get(sessionKey);
155
- if (this.caps.maxTurnsPerSession !== undefined && usage && usage.turns >= this.caps.maxTurnsPerSession) {
156
- return {
157
- allowed: false,
158
- cap: 'turns',
159
- reason: `session turn cap reached (${usage.turns}/${this.caps.maxTurnsPerSession})`,
160
- };
161
- }
162
- if (this.caps.maxSessionSeconds !== undefined && usage) {
163
- const elapsed = Math.floor((nowMs - usage.startedAtMs) / 1000);
164
- if (elapsed >= this.caps.maxSessionSeconds) {
165
- return {
166
- allowed: false,
167
- cap: 'duration',
168
- reason: `session duration cap reached (${elapsed}s/${this.caps.maxSessionSeconds}s)`,
169
- };
170
- }
171
- }
172
- // Concurrency applies only to sessions that would need a NEW sandbox; an established session
173
- // reuses its own, so counting it against the cap would strand it once the fleet filled up.
174
- if (this.caps.maxConcurrentSandboxes !== undefined && !usage && liveSandboxes >= this.caps.maxConcurrentSandboxes) {
175
- return {
176
- allowed: false,
177
- cap: 'concurrency',
178
- reason: `instance is at its concurrent sandbox cap (${liveSandboxes}/${this.caps.maxConcurrentSandboxes})`,
179
- };
180
- }
181
- return { allowed: true };
182
- }
183
- /**
184
- * Advance the counters for a turn that actually ran.
185
- *
186
- * Metering happens even when caps are currently unbounded, and that is the point: caps can be
187
- * tightened from the control plane mid-flight, and a session that ran fifty turns under an
188
- * unbounded policy must not then receive a fresh allowance the moment a cap appears. Counting
189
- * only while a cap happens to be set is precisely the kind of gap an agent can be steered into.
190
- */
191
- record(sessionKey, nowMs = Date.now()) {
192
- const existing = this.sessions.get(sessionKey);
193
- if (existing) {
194
- existing.turns += 1;
195
- return;
196
- }
197
- // Bounded so an unbounded, long-lived instance cannot accumulate meters forever; the
198
- // oldest session is the one least likely to still be running.
199
- if (this.sessions.size >= MAX_METERED_SESSIONS) {
200
- let oldestKey;
201
- let oldestAt = Infinity;
202
- for (const [key, usage] of this.sessions) {
203
- if (usage.startedAtMs < oldestAt) {
204
- oldestAt = usage.startedAtMs;
205
- oldestKey = key;
206
- }
207
- }
208
- if (oldestKey) {
209
- this.sessions.delete(oldestKey);
210
- }
211
- }
212
- this.sessions.set(sessionKey, { turns: 1, startedAtMs: nowMs });
213
- }
214
- /** Drop a session's meter — called when its sandbox is destroyed so a fresh session starts clean. */
215
- forget(sessionKey) {
216
- this.sessions.delete(sessionKey);
217
- }
218
- usage(sessionKey) {
219
- const u = this.sessions.get(sessionKey);
220
- if (!u) {
221
- return undefined;
222
- }
223
- return { turns: u.turns, ageSeconds: Math.floor((Date.now() - u.startedAtMs) / 1000) };
224
- }
225
- }
226
- exports.CapMeter = CapMeter;
227
- /**
228
- * Parse `AGENTHIPPO_MAX_*` style env, ignoring blanks and non-numbers rather than guessing.
229
- *
230
- * LOCAL config, so the rules differ from a lease deliberately: a typo in an operator's own env is
231
- * dropped (they can see and fix it, and dropping it only affects their own instance), whereas the
232
- * same typo arriving from a control plane means the fleet believes a cap is in force that is not.
233
- * The `onBreach` vocabulary, however, comes from the same table `parseCapPolicy` uses, so a value
234
- * that is valid in a lease is valid here and vice versa — including any back-compat aliases layered
235
- * into `ON_BREACH_ALIASES`.
236
- */
237
- function capsFromEnv(env = process.env, warn = (m) => console.warn(`Warning: ${m}`)) {
238
- const num = (raw) => {
239
- const v = parseInt((raw ?? '').trim(), 10);
240
- return Number.isFinite(v) && v > 0 ? v : undefined;
241
- };
242
- /** Current spelling wins; a deprecated one is honoured once, loudly. */
243
- const numWithAlias = (current) => {
244
- const direct = num(env[current]);
245
- if (direct !== undefined) {
246
- return direct;
247
- }
248
- for (const [old, replacement] of Object.entries(exports.CAP_ENV_ALIASES)) {
249
- if (replacement !== current) {
250
- continue;
251
- }
252
- const legacy = num(env[old]);
253
- if (legacy === undefined) {
254
- continue;
255
- }
256
- warn(`${old} is DEPRECATED; use ${current}. Honouring it for now.`);
257
- return legacy;
258
- }
259
- return undefined;
260
- };
261
- const breach = resolveOnBreach(env.AGENTHIPPO_CAP_ON_BREACH, 'AGENTHIPPO_CAP_ON_BREACH');
262
- for (const w of breach.warnings) {
263
- warn(w);
264
- }
265
- return {
266
- maxTurnsPerSession: numWithAlias('AGENTHIPPO_MAX_TURNS_PER_SESSION'),
267
- maxSessionSeconds: numWithAlias('AGENTHIPPO_MAX_SESSION_SECONDS'),
268
- maxConcurrentSandboxes: numWithAlias('AGENTHIPPO_MAX_CONCURRENT_SANDBOXES'),
269
- onBreach: breach.action,
270
- };
271
- }
@@ -1,309 +0,0 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) AgentHippo.ai. All rights reserved.
4
- *--------------------------------------------------------------------------------------------*/
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.effectiveDenyMode = effectiveDenyMode;
7
- exports.createGovernor = createGovernor;
8
- exports.withGovernor = withGovernor;
9
- const caps_1 = require("./caps");
10
- const lease_1 = require("./lease");
11
- /**
12
- * What a deny mode MEANS on this deployment, as opposed to what it was written as.
13
- *
14
- * Without a sandbox driver there is no non-cooperative way to stop a turn already executing in
15
- * this process, so `kill` degrades to `drain`. The degradation is real and unavoidable at this
16
- * layer; what is not acceptable is reporting `kill` while doing `drain`.
17
- */
18
- function effectiveDenyMode(mode, supportsInFlightTermination) {
19
- if (mode === 'kill' && !supportsInFlightTermination) {
20
- return 'drain';
21
- }
22
- return mode;
23
- }
24
- function createGovernor(opts) {
25
- const meter = new caps_1.CapMeter(opts.caps);
26
- // Not const: every lease poll re-merges the control plane's caps over the local ones.
27
- let unbounded = (0, caps_1.capsAreUnbounded)(opts.caps);
28
- let timer;
29
- /** Latches once the lease kills us: no further turn may sneak through between polls. */
30
- let killed;
31
- /** Last lease seen, so per-session deny checks need no fetch on the turn path. */
32
- let currentLease;
33
- /**
34
- * sessionKey → the verified user it belongs to, learned from `admitTurn`.
35
- *
36
- * Only the turn path knows the resolved identity, but the lease WATCHER is what ends running
37
- * work — so without remembering it, a `user`-scoped kill could refuse the next turn and still
38
- * leave the user's live sandbox running.
39
- */
40
- const sessionUsers = new Map();
41
- /** True unless the deployment has no way to end a running turn — see GovernableSandboxes. */
42
- const canTerminateInFlight = opts.sandboxes.supportsInFlightTermination !== false;
43
- /** Session rules extended to the users behind them, so id rotation does not escape. */
44
- let followedUsers = new Map();
45
- /** Kill rules already reported as degraded, so the warning is loud once, not every poll. */
46
- const degradedKillsReported = new Set();
47
- const audit = (event, fields) => {
48
- try {
49
- opts.audit?.(event, fields);
50
- }
51
- catch { /* evidence must never break enforcement */ }
52
- };
53
- /**
54
- * Bounded on purpose: a long-lived serve sees unbounded distinct session keys (every anonymous
55
- * gateway sender gets a fresh uuid), and an unbounded map here would be a slow leak in the one
56
- * component that must never be the reason an instance falls over. Oldest-first eviction costs
57
- * only the ability to kill an already-idle session by user scope.
58
- */
59
- const MAX_TRACKED_SESSION_USERS = 10_000;
60
- const rememberSessionUser = (sessionKey, userId) => {
61
- if (sessionUsers.size >= MAX_TRACKED_SESSION_USERS && !sessionUsers.has(sessionKey)) {
62
- const oldest = sessionUsers.keys().next();
63
- if (!oldest.done) {
64
- sessionUsers.delete(oldest.value);
65
- }
66
- }
67
- sessionUsers.set(sessionKey, userId);
68
- };
69
- const enforce = async (sessionKey, decision) => {
70
- // The MERGED policy, not the local one: a control plane that escalates revoke → destroy
71
- // must be obeyed on the next breach, not on the next restart.
72
- const action = meter.policy().onBreach ?? 'revoke-inference';
73
- try {
74
- if (action === 'destroy-sandbox') {
75
- // The SANDBOX is destroyed; the session's meter deliberately survives it.
76
- // `meter.forget` here reset turns and the duration clock, so a breached session got
77
- // a brand-new budget and `maxTurnsPerSession: 10` degraded into "one refused turn
78
- // every ten, forever" — a cap that renews on breach is not a cap.
79
- await opts.sandboxes.destroySession(sessionKey);
80
- }
81
- else {
82
- // Narrower: the session keeps its sandbox (and its state, for inspection) but loses
83
- // the model route, so it cannot spend another token.
84
- await opts.sandboxes.revokeRoute(sessionKey, 'inference');
85
- }
86
- }
87
- catch (err) {
88
- // A tier-0 sandbox cannot revoke a single route; falling back to destroy keeps the cap
89
- // honest instead of silently letting the session continue.
90
- opts.logger?.warn(`[Governor] ${action} failed for ${sessionKey}, destroying instead: ${err instanceof Error ? err.message : String(err)}`);
91
- await opts.sandboxes.destroySession(sessionKey).catch(() => undefined);
92
- // Same rule as the deliberate destroy above: the meter outlives the sandbox, or the
93
- // fallback path quietly hands back the budget the primary path refused.
94
- }
95
- opts.logger?.warn(`[Governor] cap breach on ${sessionKey}: ${decision.reason} — ${action}`);
96
- audit('cap_breach', { sessionKey, cap: decision.cap, reason: decision.reason, action });
97
- };
98
- const killAll = async (reason) => {
99
- const live = opts.sandboxes.sandboxes();
100
- for (const c of live) {
101
- await opts.sandboxes.destroySession(c.sessionKey).catch(() => undefined);
102
- // The meter deliberately SURVIVES the kill, for exactly the reason `enforce` gives when
103
- // it destroys a sandbox on a cap breach: a cap that renews when the sandbox goes away is
104
- // not a cap. `meter.forget` here meant a kill-then-restore (a billing hold lifted, a
105
- // drill, an operator toggling the switch) handed every session a brand-new turn and
106
- // duration budget — so the cheapest way past a cap was to trip the kill switch. The two
107
- // paths now agree: destroying a sandbox never returns budget.
108
- }
109
- if (live.length > 0) {
110
- opts.logger?.warn(`[Governor] kill switch: destroyed ${live.length} live sandbox(s) — ${reason}`);
111
- }
112
- else if (!canTerminateInFlight) {
113
- // Without a driver there is nothing to destroy, and the kill switch reduces to refusing
114
- // the next turn. Say so rather than logging a successful stop of zero sandboxes.
115
- opts.logger?.warn(`[Governor] kill switch: no sandbox driver, so nothing running can be stopped — ` +
116
- `in-flight turns will finish and only NEW turns are refused (${reason}). Run with --sandbox for true in-flight kill.`);
117
- }
118
- audit('kill_switch', { reason, destroyed: live.length, inFlightTerminated: canTerminateInFlight });
119
- return live.length;
120
- };
121
- const checkLease = async () => {
122
- if (!opts.getLease) {
123
- return;
124
- }
125
- try {
126
- const lease = await opts.getLease();
127
- // Adopt caps the control plane has pushed since boot. Same tighten-only merge as at
128
- // construction, re-applied every poll: an operator who lowers a cap in the console
129
- // must not have to restart the fleet for it to bite. Without this the instance
130
- // reported the new policy while enforcing the boot-time one.
131
- const merged = (0, caps_1.mergeCaps)(lease?.caps, opts.caps);
132
- meter.setCaps(merged);
133
- unbounded = (0, caps_1.capsAreUnbounded)(merged);
134
- // Cache the deny rules so `admitTurn` stays synchronous and cheap: enforcement latency
135
- // is the poll interval, exactly like the kill switch, rather than a fetch per turn.
136
- currentLease = lease;
137
- // Recomputed each poll from what the turn path has learned, so a session stop reaches the
138
- // user's other sessions even after they rotate `session_id`.
139
- followedUsers = (0, lease_1.resolveFollowedUsers)(lease, sessionUsers);
140
- // A `kill` rule this deployment cannot honour must not be reported as honoured. Warn
141
- // once per rule, before sweeping, so an operator learns immediately that the rule they
142
- // just published means `drain` here.
143
- if (!canTerminateInFlight) {
144
- for (const rule of lease?.deny ?? []) {
145
- if (rule.mode !== 'kill') {
146
- continue;
147
- }
148
- const id = `${rule.scope}:${rule.match}`;
149
- if (degradedKillsReported.has(id)) {
150
- continue;
151
- }
152
- degradedKillsReported.add(id);
153
- opts.logger?.warn(`[Governor] deny(kill) on ${id} DEGRADED TO DRAIN: this deployment has no sandbox driver, so a turn ` +
154
- 'already executing cannot be stopped. It will run to completion; only the next turn is refused. ' +
155
- 'Run serve with --sandbox for a kill that ends work mid-flight.');
156
- audit('deny_kill_degraded', { scope: rule.scope, match: rule.match, effectiveMode: 'drain' });
157
- }
158
- }
159
- // `kill` rules end work already running. `drain` deliberately does not — it lets the
160
- // in-flight turn finish and only refuses the next one.
161
- for (const sandbox of opts.sandboxes.sandboxes()) {
162
- const v = (0, lease_1.denyVerdict)(lease, {
163
- sessionKey: sandbox.sessionKey,
164
- pack: opts.pack ?? '',
165
- userHash: opts.userHash,
166
- // Remembered from this session's turns, so a `user`-scoped kill reaches a
167
- // gateway session whose key carries no `u<hash>--` prefix to read it off.
168
- userId: sessionUsers.get(sandbox.sessionKey),
169
- followedUsers,
170
- });
171
- if (v.denied && effectiveDenyMode(v.mode, canTerminateInFlight) === 'kill') {
172
- await opts.sandboxes.destroySession(sandbox.sessionKey).catch(() => undefined);
173
- sessionUsers.delete(sandbox.sessionKey);
174
- // The meter survives, same rule as `killAll` and `enforce`: a stop order must not
175
- // hand the session a fresh budget when it is lifted.
176
- opts.logger?.warn(`[Governor] deny(kill) destroyed ${sandbox.sandboxId} — ${v.reason}`);
177
- audit('session_killed', { sessionKey: sandbox.sessionKey, sandboxId: sandbox.sandboxId, reason: v.reason });
178
- }
179
- }
180
- const verdict = (0, lease_1.leaseIsDead)(lease);
181
- if (verdict.dead) {
182
- killed = verdict.reason ?? 'lease revoked';
183
- await killAll(killed);
184
- }
185
- else if (killed) {
186
- // A restored lease lifts the latch — an operator can turn the fleet back on
187
- // without restarting every instance.
188
- opts.logger?.info('[Governor] lease restored — accepting turns again');
189
- audit('kill_switch_lifted', {});
190
- killed = undefined;
191
- }
192
- }
193
- catch (err) {
194
- // Fail-open on transport, exactly like the lease source: a control-plane outage must
195
- // not take a customer's fleet down.
196
- opts.logger?.warn(`[Governor] lease check failed: ${err instanceof Error ? err.message : String(err)}`);
197
- }
198
- };
199
- return {
200
- async admitTurn(sessionKey, userId) {
201
- if (killed) {
202
- return { allowed: false, reason: `stopped by the control plane: ${killed}` };
203
- }
204
- if (userId) {
205
- rememberSessionUser(sessionKey, userId);
206
- }
207
- // Scoped stop orders refuse NEW work in both modes; the difference between drain and
208
- // kill is only what happened to the turn already running, decided at the last poll.
209
- const denied = (0, lease_1.denyVerdict)(currentLease, {
210
- sessionKey,
211
- pack: opts.pack ?? '',
212
- userHash: opts.userHash,
213
- userId: userId ?? sessionUsers.get(sessionKey),
214
- // A session stop follows the user, so sending a fresh `session_id` does not escape it.
215
- // Recomputed here as well as on the poll because the identity behind THIS session may
216
- // only just have become known — waiting a poll would admit exactly the turn we are
217
- // trying to refuse.
218
- followedUsers: (0, lease_1.resolveFollowedUsers)(currentLease, sessionUsers),
219
- });
220
- if (denied.denied) {
221
- return { allowed: false, reason: denied.reason };
222
- }
223
- // What is running, not just whether it may run: signature + pin, for the no-sandbox
224
- // path where nothing else asks. Before the caps check, because an unsigned or
225
- // unpinned pack must be refused whether or not the session has budget left.
226
- if (opts.admitPack) {
227
- // The lease the poll last saw — the SAME view the kill and deny checks just used,
228
- // and no fetch on the turn path.
229
- const packVerdict = opts.admitPack(sessionKey, currentLease);
230
- if (!packVerdict.allowed) {
231
- return { allowed: false, reason: packVerdict.reason ?? 'refused by pack admission' };
232
- }
233
- }
234
- if (unbounded) {
235
- return { allowed: true };
236
- }
237
- const decision = meter.check(sessionKey, opts.sandboxes.sandboxes().length);
238
- if (!decision.allowed) {
239
- // Concurrency is a "come back later" refusal about the INSTANCE — there is no
240
- // offending session to punish, and revoking someone else's route would be wrong.
241
- if (decision.cap !== 'concurrency') {
242
- await enforce(sessionKey, decision);
243
- }
244
- }
245
- return decision;
246
- },
247
- recordTurn(sessionKey) {
248
- // Always meter, even while unbounded: caps can be tightened mid-flight from the
249
- // control plane, and a session must not get a clean slate the moment one appears.
250
- meter.record(sessionKey);
251
- },
252
- killAll,
253
- refresh: checkLease,
254
- start() {
255
- if (!opts.getLease || timer) {
256
- return;
257
- }
258
- // One constant for the poll interval, shared with the lease source's cache — see
259
- // DEFAULT_LEASE_POLL_SECONDS. These two used to disagree (30 vs 60) and the banner
260
- // printed the smaller one.
261
- const everyMs = (0, lease_1.resolveLeasePollSeconds)(opts.pollSeconds) * 1000;
262
- timer = setInterval(() => { void checkLease(); }, everyMs);
263
- timer.unref?.();
264
- void checkLease();
265
- },
266
- stop() {
267
- if (timer) {
268
- clearInterval(timer);
269
- timer = undefined;
270
- }
271
- },
272
- // The caps ACTUALLY in force, which after a poll may be tighter than the boot-time ones.
273
- policy: () => meter.policy(),
274
- };
275
- }
276
- /**
277
- * Put the governor in front of a runner, so every turn passes the gate no matter which endpoint
278
- * it arrived on. serve has three call sites into `runner.run`; decorating the runner covers all
279
- * of them and cannot be forgotten when a fourth is added — the same relocation trick
280
- * `createSandboxRunner` uses one layer down.
281
- */
282
- function withGovernor(runner, governor) {
283
- return {
284
- async run(options) {
285
- const sessionKey = options.sessionId ?? 'default';
286
- // The identity serve resolved for this turn — what makes "stop this user" exact.
287
- const decision = await governor.admitTurn(sessionKey, options.analyticsUserId);
288
- if (!decision.allowed) {
289
- // A refusal is a normal, reportable outcome — not an exception. The caller turns
290
- // this into a 429/403 with the operator's reason intact.
291
- return {
292
- success: false,
293
- text: '',
294
- thinking: '',
295
- toolCalls: [],
296
- error: decision.reason ?? 'refused by policy',
297
- };
298
- }
299
- // Counted BEFORE the turn runs: a turn that crashes or is aborted still consumed the
300
- // budget, and not counting it would let a session retry past its cap forever.
301
- governor.recordTurn(sessionKey);
302
- return runner.run(options);
303
- },
304
- dispose() {
305
- governor.stop();
306
- runner.dispose();
307
- },
308
- };
309
- }