@oddessentials/agent-guild 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 (342) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/bin/agent-guild-report.mjs +134 -0
  4. package/bin/agent-guild.mjs +240 -0
  5. package/config/providers.default.json +124 -0
  6. package/examples/claude-code-settings.json +48 -0
  7. package/examples/codex-hooks.json +45 -0
  8. package/examples/gemini-settings.json +61 -0
  9. package/examples/grok-hooks.json +55 -0
  10. package/examples/providers.json +27 -0
  11. package/node_modules/@xterm/addon-fit/LICENSE +19 -0
  12. package/node_modules/@xterm/addon-fit/README.md +24 -0
  13. package/node_modules/@xterm/addon-fit/lib/addon-fit.js +2 -0
  14. package/node_modules/@xterm/addon-fit/lib/addon-fit.js.map +1 -0
  15. package/node_modules/@xterm/addon-fit/lib/addon-fit.mjs +18 -0
  16. package/node_modules/@xterm/addon-fit/lib/addon-fit.mjs.map +7 -0
  17. package/node_modules/@xterm/addon-fit/package.json +26 -0
  18. package/node_modules/@xterm/addon-fit/src/FitAddon.ts +92 -0
  19. package/node_modules/@xterm/addon-fit/typings/addon-fit.d.ts +55 -0
  20. package/node_modules/@xterm/addon-serialize/README.md +42 -0
  21. package/node_modules/@xterm/addon-serialize/lib/addon-serialize.js +2 -0
  22. package/node_modules/@xterm/addon-serialize/lib/addon-serialize.js.map +1 -0
  23. package/node_modules/@xterm/addon-serialize/lib/addon-serialize.mjs +19 -0
  24. package/node_modules/@xterm/addon-serialize/lib/addon-serialize.mjs.map +7 -0
  25. package/node_modules/@xterm/addon-serialize/package.json +29 -0
  26. package/node_modules/@xterm/addon-serialize/src/SerializeAddon.ts +695 -0
  27. package/node_modules/@xterm/addon-serialize/typings/addon-serialize.d.ts +116 -0
  28. package/node_modules/@xterm/addon-web-links/LICENSE +19 -0
  29. package/node_modules/@xterm/addon-web-links/README.md +21 -0
  30. package/node_modules/@xterm/addon-web-links/lib/addon-web-links.js +2 -0
  31. package/node_modules/@xterm/addon-web-links/lib/addon-web-links.js.map +1 -0
  32. package/node_modules/@xterm/addon-web-links/lib/addon-web-links.mjs +18 -0
  33. package/node_modules/@xterm/addon-web-links/lib/addon-web-links.mjs.map +7 -0
  34. package/node_modules/@xterm/addon-web-links/package.json +26 -0
  35. package/node_modules/@xterm/addon-web-links/src/WebLinkProvider.ts +199 -0
  36. package/node_modules/@xterm/addon-web-links/src/WebLinksAddon.ts +58 -0
  37. package/node_modules/@xterm/addon-web-links/typings/addon-web-links.d.ts +57 -0
  38. package/node_modules/@xterm/headless/README.md +31 -0
  39. package/node_modules/@xterm/headless/lib-headless/xterm-headless.js +2 -0
  40. package/node_modules/@xterm/headless/lib-headless/xterm-headless.js.map +1 -0
  41. package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
  42. package/node_modules/@xterm/headless/lib-headless/xterm-headless.mjs.map +7 -0
  43. package/node_modules/@xterm/headless/package.json +29 -0
  44. package/node_modules/@xterm/headless/typings/xterm-headless.d.ts +1385 -0
  45. package/node_modules/@xterm/xterm/LICENSE +21 -0
  46. package/node_modules/@xterm/xterm/README.md +243 -0
  47. package/node_modules/@xterm/xterm/css/xterm.css +285 -0
  48. package/node_modules/@xterm/xterm/lib/xterm.js +2 -0
  49. package/node_modules/@xterm/xterm/lib/xterm.js.map +1 -0
  50. package/node_modules/@xterm/xterm/lib/xterm.mjs +53 -0
  51. package/node_modules/@xterm/xterm/lib/xterm.mjs.map +7 -0
  52. package/node_modules/@xterm/xterm/package.json +111 -0
  53. package/node_modules/@xterm/xterm/src/browser/AccessibilityManager.ts +435 -0
  54. package/node_modules/@xterm/xterm/src/browser/Clipboard.ts +93 -0
  55. package/node_modules/@xterm/xterm/src/browser/ColorContrastCache.ts +34 -0
  56. package/node_modules/@xterm/xterm/src/browser/CoreBrowserTerminal.ts +1339 -0
  57. package/node_modules/@xterm/xterm/src/browser/Linkifier.ts +403 -0
  58. package/node_modules/@xterm/xterm/src/browser/LocalizableStrings.ts +23 -0
  59. package/node_modules/@xterm/xterm/src/browser/OscLinkProvider.ts +129 -0
  60. package/node_modules/@xterm/xterm/src/browser/RenderDebouncer.ts +84 -0
  61. package/node_modules/@xterm/xterm/src/browser/TimeBasedDebouncer.ts +86 -0
  62. package/node_modules/@xterm/xterm/src/browser/Types.ts +226 -0
  63. package/node_modules/@xterm/xterm/src/browser/Viewport.ts +192 -0
  64. package/node_modules/@xterm/xterm/src/browser/decorations/BufferDecorationRenderer.ts +139 -0
  65. package/node_modules/@xterm/xterm/src/browser/decorations/ColorZoneStore.ts +117 -0
  66. package/node_modules/@xterm/xterm/src/browser/decorations/OverviewRulerRenderer.ts +214 -0
  67. package/node_modules/@xterm/xterm/src/browser/input/CompositionHelper.ts +248 -0
  68. package/node_modules/@xterm/xterm/src/browser/input/Mouse.ts +54 -0
  69. package/node_modules/@xterm/xterm/src/browser/input/MoveToCell.ts +251 -0
  70. package/node_modules/@xterm/xterm/src/browser/public/Terminal.ts +275 -0
  71. package/node_modules/@xterm/xterm/src/browser/renderer/dom/DomRenderer.ts +542 -0
  72. package/node_modules/@xterm/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts +546 -0
  73. package/node_modules/@xterm/xterm/src/browser/renderer/dom/WidthCache.ts +167 -0
  74. package/node_modules/@xterm/xterm/src/browser/renderer/shared/Constants.ts +6 -0
  75. package/node_modules/@xterm/xterm/src/browser/renderer/shared/RendererUtils.ts +95 -0
  76. package/node_modules/@xterm/xterm/src/browser/renderer/shared/SelectionRenderModel.ts +93 -0
  77. package/node_modules/@xterm/xterm/src/browser/renderer/shared/Types.ts +84 -0
  78. package/node_modules/@xterm/xterm/src/browser/selection/SelectionModel.ts +144 -0
  79. package/node_modules/@xterm/xterm/src/browser/selection/Types.ts +15 -0
  80. package/node_modules/@xterm/xterm/src/browser/services/CharSizeService.ts +127 -0
  81. package/node_modules/@xterm/xterm/src/browser/services/CharacterJoinerService.ts +339 -0
  82. package/node_modules/@xterm/xterm/src/browser/services/CoreBrowserService.ts +137 -0
  83. package/node_modules/@xterm/xterm/src/browser/services/LinkProviderService.ts +28 -0
  84. package/node_modules/@xterm/xterm/src/browser/services/MouseService.ts +46 -0
  85. package/node_modules/@xterm/xterm/src/browser/services/RenderService.ts +376 -0
  86. package/node_modules/@xterm/xterm/src/browser/services/SelectionService.ts +1039 -0
  87. package/node_modules/@xterm/xterm/src/browser/services/Services.ts +158 -0
  88. package/node_modules/@xterm/xterm/src/browser/services/ThemeService.ts +198 -0
  89. package/node_modules/@xterm/xterm/src/browser/shared/Constants.ts +8 -0
  90. package/node_modules/@xterm/xterm/src/common/CircularList.ts +241 -0
  91. package/node_modules/@xterm/xterm/src/common/Clone.ts +23 -0
  92. package/node_modules/@xterm/xterm/src/common/Color.ts +376 -0
  93. package/node_modules/@xterm/xterm/src/common/CoreTerminal.ts +283 -0
  94. package/node_modules/@xterm/xterm/src/common/InputHandler.ts +3495 -0
  95. package/node_modules/@xterm/xterm/src/common/MultiKeyMap.ts +42 -0
  96. package/node_modules/@xterm/xterm/src/common/Platform.ts +44 -0
  97. package/node_modules/@xterm/xterm/src/common/SortedList.ts +194 -0
  98. package/node_modules/@xterm/xterm/src/common/TaskQueue.ts +166 -0
  99. package/node_modules/@xterm/xterm/src/common/TypedArrayUtils.ts +17 -0
  100. package/node_modules/@xterm/xterm/src/common/Types.ts +552 -0
  101. package/node_modules/@xterm/xterm/src/common/WindowsMode.ts +27 -0
  102. package/node_modules/@xterm/xterm/src/common/buffer/AttributeData.ts +211 -0
  103. package/node_modules/@xterm/xterm/src/common/buffer/Buffer.ts +662 -0
  104. package/node_modules/@xterm/xterm/src/common/buffer/BufferLine.ts +551 -0
  105. package/node_modules/@xterm/xterm/src/common/buffer/BufferRange.ts +13 -0
  106. package/node_modules/@xterm/xterm/src/common/buffer/BufferReflow.ts +226 -0
  107. package/node_modules/@xterm/xterm/src/common/buffer/BufferSet.ts +134 -0
  108. package/node_modules/@xterm/xterm/src/common/buffer/CellData.ts +94 -0
  109. package/node_modules/@xterm/xterm/src/common/buffer/Constants.ts +157 -0
  110. package/node_modules/@xterm/xterm/src/common/buffer/Marker.ts +43 -0
  111. package/node_modules/@xterm/xterm/src/common/buffer/Types.ts +52 -0
  112. package/node_modules/@xterm/xterm/src/common/data/Charsets.ts +256 -0
  113. package/node_modules/@xterm/xterm/src/common/data/EscapeSequences.ts +153 -0
  114. package/node_modules/@xterm/xterm/src/common/input/Keyboard.ts +373 -0
  115. package/node_modules/@xterm/xterm/src/common/input/TextDecoder.ts +346 -0
  116. package/node_modules/@xterm/xterm/src/common/input/UnicodeV6.ts +145 -0
  117. package/node_modules/@xterm/xterm/src/common/input/WriteBuffer.ts +247 -0
  118. package/node_modules/@xterm/xterm/src/common/input/XParseColor.ts +80 -0
  119. package/node_modules/@xterm/xterm/src/common/parser/Constants.ts +58 -0
  120. package/node_modules/@xterm/xterm/src/common/parser/DcsParser.ts +192 -0
  121. package/node_modules/@xterm/xterm/src/common/parser/EscapeSequenceParser.ts +792 -0
  122. package/node_modules/@xterm/xterm/src/common/parser/OscParser.ts +238 -0
  123. package/node_modules/@xterm/xterm/src/common/parser/Params.ts +229 -0
  124. package/node_modules/@xterm/xterm/src/common/parser/Types.ts +275 -0
  125. package/node_modules/@xterm/xterm/src/common/public/AddonManager.ts +53 -0
  126. package/node_modules/@xterm/xterm/src/common/public/BufferApiView.ts +35 -0
  127. package/node_modules/@xterm/xterm/src/common/public/BufferLineApiView.ts +29 -0
  128. package/node_modules/@xterm/xterm/src/common/public/BufferNamespaceApi.ts +36 -0
  129. package/node_modules/@xterm/xterm/src/common/public/ParserApi.ts +37 -0
  130. package/node_modules/@xterm/xterm/src/common/public/UnicodeApi.ts +27 -0
  131. package/node_modules/@xterm/xterm/src/common/services/BufferService.ts +154 -0
  132. package/node_modules/@xterm/xterm/src/common/services/CharsetService.ts +34 -0
  133. package/node_modules/@xterm/xterm/src/common/services/CoreMouseService.ts +365 -0
  134. package/node_modules/@xterm/xterm/src/common/services/CoreService.ts +92 -0
  135. package/node_modules/@xterm/xterm/src/common/services/DecorationService.ts +140 -0
  136. package/node_modules/@xterm/xterm/src/common/services/InstantiationService.ts +85 -0
  137. package/node_modules/@xterm/xterm/src/common/services/LogService.ts +124 -0
  138. package/node_modules/@xterm/xterm/src/common/services/OptionsService.ts +212 -0
  139. package/node_modules/@xterm/xterm/src/common/services/OscLinkService.ts +115 -0
  140. package/node_modules/@xterm/xterm/src/common/services/ServiceRegistry.ts +49 -0
  141. package/node_modules/@xterm/xterm/src/common/services/Services.ts +396 -0
  142. package/node_modules/@xterm/xterm/src/common/services/UnicodeService.ts +111 -0
  143. package/node_modules/@xterm/xterm/src/vs/base/browser/browser.ts +141 -0
  144. package/node_modules/@xterm/xterm/src/vs/base/browser/canIUse.ts +49 -0
  145. package/node_modules/@xterm/xterm/src/vs/base/browser/dom.ts +2369 -0
  146. package/node_modules/@xterm/xterm/src/vs/base/browser/fastDomNode.ts +316 -0
  147. package/node_modules/@xterm/xterm/src/vs/base/browser/globalPointerMoveMonitor.ts +112 -0
  148. package/node_modules/@xterm/xterm/src/vs/base/browser/iframe.ts +135 -0
  149. package/node_modules/@xterm/xterm/src/vs/base/browser/keyboardEvent.ts +213 -0
  150. package/node_modules/@xterm/xterm/src/vs/base/browser/mouseEvent.ts +229 -0
  151. package/node_modules/@xterm/xterm/src/vs/base/browser/touch.ts +372 -0
  152. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/abstractScrollbar.ts +303 -0
  153. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/horizontalScrollbar.ts +114 -0
  154. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollableElement.ts +720 -0
  155. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts +165 -0
  156. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarArrow.ts +114 -0
  157. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarState.ts +243 -0
  158. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.ts +118 -0
  159. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/scrollbar/verticalScrollbar.ts +116 -0
  160. package/node_modules/@xterm/xterm/src/vs/base/browser/ui/widget.ts +57 -0
  161. package/node_modules/@xterm/xterm/src/vs/base/browser/window.ts +14 -0
  162. package/node_modules/@xterm/xterm/src/vs/base/common/arrays.ts +887 -0
  163. package/node_modules/@xterm/xterm/src/vs/base/common/arraysFind.ts +202 -0
  164. package/node_modules/@xterm/xterm/src/vs/base/common/assert.ts +71 -0
  165. package/node_modules/@xterm/xterm/src/vs/base/common/async.ts +1992 -0
  166. package/node_modules/@xterm/xterm/src/vs/base/common/cancellation.ts +148 -0
  167. package/node_modules/@xterm/xterm/src/vs/base/common/charCode.ts +450 -0
  168. package/node_modules/@xterm/xterm/src/vs/base/common/collections.ts +140 -0
  169. package/node_modules/@xterm/xterm/src/vs/base/common/decorators.ts +130 -0
  170. package/node_modules/@xterm/xterm/src/vs/base/common/equals.ts +146 -0
  171. package/node_modules/@xterm/xterm/src/vs/base/common/errors.ts +303 -0
  172. package/node_modules/@xterm/xterm/src/vs/base/common/event.ts +1778 -0
  173. package/node_modules/@xterm/xterm/src/vs/base/common/functional.ts +32 -0
  174. package/node_modules/@xterm/xterm/src/vs/base/common/hash.ts +316 -0
  175. package/node_modules/@xterm/xterm/src/vs/base/common/iterator.ts +159 -0
  176. package/node_modules/@xterm/xterm/src/vs/base/common/keyCodes.ts +526 -0
  177. package/node_modules/@xterm/xterm/src/vs/base/common/keybindings.ts +284 -0
  178. package/node_modules/@xterm/xterm/src/vs/base/common/lazy.ts +47 -0
  179. package/node_modules/@xterm/xterm/src/vs/base/common/lifecycle.ts +801 -0
  180. package/node_modules/@xterm/xterm/src/vs/base/common/linkedList.ts +142 -0
  181. package/node_modules/@xterm/xterm/src/vs/base/common/map.ts +202 -0
  182. package/node_modules/@xterm/xterm/src/vs/base/common/numbers.ts +98 -0
  183. package/node_modules/@xterm/xterm/src/vs/base/common/observable.ts +76 -0
  184. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/api.ts +31 -0
  185. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/autorun.ts +281 -0
  186. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/base.ts +489 -0
  187. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/debugName.ts +145 -0
  188. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/derived.ts +428 -0
  189. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/lazyObservableValue.ts +146 -0
  190. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/logging.ts +328 -0
  191. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/promise.ts +209 -0
  192. package/node_modules/@xterm/xterm/src/vs/base/common/observableInternal/utils.ts +610 -0
  193. package/node_modules/@xterm/xterm/src/vs/base/common/platform.ts +281 -0
  194. package/node_modules/@xterm/xterm/src/vs/base/common/scrollable.ts +522 -0
  195. package/node_modules/@xterm/xterm/src/vs/base/common/sequence.ts +34 -0
  196. package/node_modules/@xterm/xterm/src/vs/base/common/stopwatch.ts +43 -0
  197. package/node_modules/@xterm/xterm/src/vs/base/common/strings.ts +557 -0
  198. package/node_modules/@xterm/xterm/src/vs/base/common/symbols.ts +9 -0
  199. package/node_modules/@xterm/xterm/src/vs/base/common/uint.ts +59 -0
  200. package/node_modules/@xterm/xterm/src/vs/patches/nls.ts +90 -0
  201. package/node_modules/@xterm/xterm/src/vs/typings/base-common.d.ts +20 -0
  202. package/node_modules/@xterm/xterm/src/vs/typings/require.d.ts +42 -0
  203. package/node_modules/@xterm/xterm/src/vs/typings/vscode-globals-nls.d.ts +36 -0
  204. package/node_modules/@xterm/xterm/src/vs/typings/vscode-globals-product.d.ts +33 -0
  205. package/node_modules/@xterm/xterm/typings/xterm.d.ts +1957 -0
  206. package/node_modules/node-addon-api/LICENSE.md +9 -0
  207. package/node_modules/node-addon-api/README.md +319 -0
  208. package/node_modules/node-addon-api/common.gypi +20 -0
  209. package/node_modules/node-addon-api/except.gypi +25 -0
  210. package/node_modules/node-addon-api/index.js +12 -0
  211. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  212. package/node_modules/node-addon-api/napi-inl.h +6607 -0
  213. package/node_modules/node-addon-api/napi.h +3201 -0
  214. package/node_modules/node-addon-api/node_addon_api.gyp +32 -0
  215. package/node_modules/node-addon-api/node_api.gyp +9 -0
  216. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  217. package/node_modules/node-addon-api/nothing.c +0 -0
  218. package/node_modules/node-addon-api/package-support.json +21 -0
  219. package/node_modules/node-addon-api/package.json +480 -0
  220. package/node_modules/node-addon-api/tools/README.md +73 -0
  221. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  222. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  223. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  224. package/node_modules/node-addon-api/tools/eslint-format.js +79 -0
  225. package/node_modules/node-pty/LICENSE +69 -0
  226. package/node_modules/node-pty/README.md +164 -0
  227. package/node_modules/node-pty/binding.gyp +150 -0
  228. package/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  229. package/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  230. package/node_modules/node-pty/lib/index.js +52 -0
  231. package/node_modules/node-pty/lib/interfaces.js +7 -0
  232. package/node_modules/node-pty/lib/shared/conout.js +10 -0
  233. package/node_modules/node-pty/lib/terminal.js +190 -0
  234. package/node_modules/node-pty/lib/types.js +7 -0
  235. package/node_modules/node-pty/lib/unixTerminal.js +351 -0
  236. package/node_modules/node-pty/lib/utils.js +38 -0
  237. package/node_modules/node-pty/lib/windowsConoutConnection.js +131 -0
  238. package/node_modules/node-pty/lib/windowsPtyAgent.js +344 -0
  239. package/node_modules/node-pty/lib/windowsTerminal.js +209 -0
  240. package/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  241. package/node_modules/node-pty/package.json +66 -0
  242. package/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  243. package/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  244. package/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  245. package/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  246. package/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  247. package/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  248. package/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  249. package/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  250. package/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  251. package/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  252. package/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  253. package/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  254. package/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  255. package/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  256. package/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  257. package/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  258. package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  259. package/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  260. package/node_modules/node-pty/scripts/post-install.js +76 -0
  261. package/node_modules/node-pty/scripts/prebuild.js +34 -0
  262. package/node_modules/node-pty/src/unix/pty.cc +876 -0
  263. package/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  264. package/node_modules/node-pty/src/win/conpty.cc +616 -0
  265. package/node_modules/node-pty/src/win/conpty.h +41 -0
  266. package/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  267. package/node_modules/node-pty/src/win/path_util.cc +95 -0
  268. package/node_modules/node-pty/src/win/path_util.h +26 -0
  269. package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-arm64/OpenConsole.exe +0 -0
  270. package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-arm64/conpty.dll +0 -0
  271. package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-x64/OpenConsole.exe +0 -0
  272. package/node_modules/node-pty/third_party/conpty/1.25.260303002/win10-x64/conpty.dll +0 -0
  273. package/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  274. package/node_modules/ws/LICENSE +20 -0
  275. package/node_modules/ws/README.md +548 -0
  276. package/node_modules/ws/browser.js +8 -0
  277. package/node_modules/ws/index.js +22 -0
  278. package/node_modules/ws/lib/buffer-util.js +131 -0
  279. package/node_modules/ws/lib/constants.js +19 -0
  280. package/node_modules/ws/lib/event-target.js +292 -0
  281. package/node_modules/ws/lib/extension.js +203 -0
  282. package/node_modules/ws/lib/limiter.js +55 -0
  283. package/node_modules/ws/lib/permessage-deflate.js +530 -0
  284. package/node_modules/ws/lib/receiver.js +743 -0
  285. package/node_modules/ws/lib/sender.js +607 -0
  286. package/node_modules/ws/lib/stream.js +161 -0
  287. package/node_modules/ws/lib/subprotocol.js +62 -0
  288. package/node_modules/ws/lib/validation.js +152 -0
  289. package/node_modules/ws/lib/websocket-server.js +562 -0
  290. package/node_modules/ws/lib/websocket.js +1421 -0
  291. package/node_modules/ws/package.json +74 -0
  292. package/node_modules/ws/wrapper.mjs +21 -0
  293. package/package.json +52 -0
  294. package/src/manager/command-resolver.mjs +140 -0
  295. package/src/manager/config.mjs +94 -0
  296. package/src/manager/install-channels.mjs +268 -0
  297. package/src/manager/main.mjs +136 -0
  298. package/src/manager/providers.mjs +601 -0
  299. package/src/manager/report-shims.mjs +104 -0
  300. package/src/manager/server.mjs +421 -0
  301. package/src/manager/session-manager.mjs +306 -0
  302. package/src/manager/session.mjs +531 -0
  303. package/src/manager/shell-env.mjs +150 -0
  304. package/src/manager/usage.mjs +535 -0
  305. package/src/manager/versions.mjs +62 -0
  306. package/src/report/hooks.mjs +150 -0
  307. package/web/app.js +916 -0
  308. package/web/art/art.css +186 -0
  309. package/web/art/characters/anthropic/idle.png +0 -0
  310. package/web/art/characters/anthropic/locked.png +0 -0
  311. package/web/art/characters/anthropic/working.png +0 -0
  312. package/web/art/characters/google/idle.png +0 -0
  313. package/web/art/characters/google/locked.png +0 -0
  314. package/web/art/characters/google/working.png +0 -0
  315. package/web/art/characters/openai/idle.png +0 -0
  316. package/web/art/characters/openai/locked.png +0 -0
  317. package/web/art/characters/openai/working.png +0 -0
  318. package/web/art/characters/shell/idle.png +0 -0
  319. package/web/art/characters/shell/locked.png +0 -0
  320. package/web/art/characters/shell/working.png +0 -0
  321. package/web/art/characters/xai/idle.png +0 -0
  322. package/web/art/characters/xai/locked.png +0 -0
  323. package/web/art/characters/xai/working.png +0 -0
  324. package/web/art/familiars/aether.png +0 -0
  325. package/web/art/familiars/flame.png +0 -0
  326. package/web/art/familiars/leaf.png +0 -0
  327. package/web/art/familiars/night.png +0 -0
  328. package/web/art/icons/anthropic.png +0 -0
  329. package/web/art/icons/google.png +0 -0
  330. package/web/art/icons/openai.png +0 -0
  331. package/web/art/icons/shell.png +0 -0
  332. package/web/art/icons/xai.png +0 -0
  333. package/web/art/page.png +0 -0
  334. package/web/art/ui/frame.png +0 -0
  335. package/web/art/ui/gem-mana.png +0 -0
  336. package/web/art/ui/gem-vitality.png +0 -0
  337. package/web/art/ui/guild-crest.png +0 -0
  338. package/web/art/ui/level-medallion.png +0 -0
  339. package/web/art/ui/padlock.png +0 -0
  340. package/web/icons/README.md +8 -0
  341. package/web/index.html +154 -0
  342. package/web/styles.css +226 -0
@@ -0,0 +1,306 @@
1
+ // Owns every Session. The HTTP/WebSocket layer and any future front end talk
2
+ // to this object; nothing here knows about browsers.
3
+
4
+ import { EventEmitter } from 'node:events';
5
+ import fs from 'node:fs';
6
+ import os from 'node:os';
7
+ import path from 'node:path';
8
+ import crypto from 'node:crypto';
9
+ import { Session, newId, clampDimension } from './session.mjs';
10
+ import { prependPath } from './report-shims.mjs';
11
+ import { CHANNEL_LABELS } from './install-channels.mjs';
12
+
13
+ export const MAX_SESSIONS = 32;
14
+
15
+ function httpError(status, message, code) {
16
+ return Object.assign(new Error(message), { status, code });
17
+ }
18
+
19
+ /**
20
+ * Layer environment objects. On Windows, variable names are
21
+ * case-insensitive, so a later "PATH" must replace an inherited "Path"
22
+ * rather than sit beside it.
23
+ */
24
+ export function mergeEnv(layers, platform = process.platform) {
25
+ const out = {};
26
+ const keyFor = new Map();
27
+ for (const layer of layers) {
28
+ for (const [key, value] of Object.entries(layer || {})) {
29
+ if (value === undefined || value === null) continue;
30
+ if (platform === 'win32') {
31
+ const existing = keyFor.get(key.toUpperCase());
32
+ if (existing !== undefined && existing !== key) delete out[existing];
33
+ keyFor.set(key.toUpperCase(), key);
34
+ }
35
+ out[key] = String(value);
36
+ }
37
+ }
38
+ return out;
39
+ }
40
+
41
+ export class SessionManager extends EventEmitter {
42
+ /**
43
+ * @param {object} opts
44
+ * @param {import('./providers.mjs').ProviderRegistry} opts.registry
45
+ * @param {object} opts.baseEnv environment the tools inherit
46
+ * @param {() => string} opts.getApiUrl base URL handed to tools for reporting
47
+ * @param {object} [opts.sessionDefaults] passed through to Session
48
+ * @param {string|null} [opts.shimDir] folder with the agent-guild-report launchers, put first on PATH
49
+ */
50
+ constructor({ registry, baseEnv, getApiUrl, sessionDefaults = {}, shimDir = null }) {
51
+ super();
52
+ this.registry = registry;
53
+ this.baseEnv = baseEnv;
54
+ this.getApiUrl = getApiUrl;
55
+ this.sessionDefaults = sessionDefaults;
56
+ this.shimDir = shimDir;
57
+ this.sessions = new Map();
58
+ /** Removed sessions whose process has not exited yet. */
59
+ this.exiting = new Set();
60
+ /** True once shutdown has begun; no new session may start after that. */
61
+ this.closing = false;
62
+ this.installing = new Set();
63
+ }
64
+
65
+ list() {
66
+ return [...this.sessions.values()].map((s) => s.toJSON());
67
+ }
68
+
69
+ get(id) {
70
+ const session = this.sessions.get(id);
71
+ if (!session) throw httpError(404, `no session with id "${id}"`, 'not_found');
72
+ return session;
73
+ }
74
+
75
+ resolveCwd(cwd) {
76
+ if (cwd === undefined || cwd === null || String(cwd).trim() === '') return os.homedir();
77
+ let dir = String(cwd).trim();
78
+ if (dir === '~' || dir.startsWith('~/') || dir.startsWith('~\\')) dir = path.join(os.homedir(), dir.slice(1));
79
+ dir = path.resolve(dir);
80
+ let stat;
81
+ try { stat = fs.statSync(dir); } catch { throw httpError(400, `working directory does not exist: ${dir}`, 'bad_cwd'); }
82
+ if (!stat.isDirectory()) throw httpError(400, `working directory is not a folder: ${dir}`, 'bad_cwd');
83
+ return dir;
84
+ }
85
+
86
+ create({ providerId, cwd, cols, rows, name, args, resume } = {}) {
87
+ const provider = this.registry.get(String(providerId || ''));
88
+ if (!provider) throw httpError(404, `unknown provider "${providerId}"`, 'unknown_provider');
89
+ if (args !== undefined && (!Array.isArray(args) || args.some((a) => typeof a !== 'string'))) {
90
+ throw httpError(400, 'args must be an array of strings', 'bad_args');
91
+ }
92
+ const resumeId = cleanResumeId(resume);
93
+ const workDir = this.resolveCwd(cwd);
94
+ const spawnSpec = this.registry.spawnSpec(provider, args || [], resumeId);
95
+ const session = this._spawn({ provider, spawnSpec, cwd: workDir, cols, rows, name, resume: resumeId });
96
+ const model = modelFromArgs([...provider.args, ...(args || [])]);
97
+ if (model) session.setModel({ name: model }, 'args');
98
+ return session;
99
+ }
100
+
101
+ /**
102
+ * Refuses while sessions of that provider are running unless `force` is
103
+ * set, because replacing a tool under a running process can break it.
104
+ */
105
+ async install(providerId, { force = false } = {}) {
106
+ const provider = this.registry.get(String(providerId || ''));
107
+ if (!provider) throw httpError(404, `unknown provider "${providerId}"`, 'unknown_provider');
108
+ if (this.closing) throw httpError(503, 'the session manager is stopping', 'manager_stopping');
109
+ const guard = () => {
110
+ const running = this.runningFor(provider.id);
111
+ if (running > 0 && !force) {
112
+ const err = httpError(409, `${running} ${provider.tool} session(s) are running; updating the tool now may break them`, 'provider_in_use');
113
+ err.running = running;
114
+ throw err;
115
+ }
116
+ };
117
+ guard();
118
+ if (this.installing.has(provider.id) || this.installsRunningFor(provider.id) > 0) {
119
+ throw httpError(409, `${provider.tool} is already being installed or updated`, 'install_in_progress');
120
+ }
121
+ this.installing.add(provider.id);
122
+ try {
123
+ if (this.registry.resolve(provider)) {
124
+ const { spec, channel } = await this.registry.updateSpec(provider);
125
+ guard();
126
+ const name = `Update ${provider.tool} (${CHANNEL_LABELS[channel]})`;
127
+ return this._spawn({ provider, spawnSpec: spec, cwd: os.homedir(), name, task: 'install', installKind: 'update' });
128
+ }
129
+ const spawnSpec = await this.registry.installSpec(provider);
130
+ guard();
131
+ return this._spawn({ provider, spawnSpec, cwd: os.homedir(), name: `Install ${provider.tool}`, task: 'install', installKind: 'install' });
132
+ } finally {
133
+ this.installing.delete(provider.id);
134
+ }
135
+ }
136
+
137
+ installsRunningFor(providerId) {
138
+ let n = 0;
139
+ for (const s of this.sessions.values()) if (s.status === 'running' && s.task === 'install' && s.provider.id === providerId) n++;
140
+ return n;
141
+ }
142
+
143
+ runningFor(providerId) {
144
+ let n = 0;
145
+ for (const s of this.sessions.values()) if (s.status === 'running' && s.task === null && s.provider.id === providerId) n++;
146
+ return n;
147
+ }
148
+
149
+ /** Sessions whose process is still running, install sessions included. */
150
+ runningCount() {
151
+ let n = 0;
152
+ for (const s of this.sessions.values()) if (s.status === 'running') n++;
153
+ return n;
154
+ }
155
+
156
+ _spawn({ provider, spawnSpec, cwd, cols, rows, name, resume = null, task = null, installKind = null }) {
157
+ if (this.closing) throw httpError(503, 'the session manager is stopping', 'manager_stopping');
158
+ if (this.sessions.size >= MAX_SESSIONS) {
159
+ throw httpError(429, `session limit reached (${MAX_SESSIONS}); remove finished sessions first`, 'too_many_sessions');
160
+ }
161
+ const description = this.registry.describe(provider);
162
+ const id = newId();
163
+ const reportToken = crypto.randomBytes(16).toString('hex');
164
+
165
+ // The tool's hooks run `agent-guild-report` by name, so the launchers
166
+ // go first on PATH, after any provider PATH override.
167
+ const env = prependPath(mergeEnv([this.baseEnv, provider.env, {
168
+ TERM: 'xterm-256color',
169
+ COLORTERM: 'truecolor',
170
+ AGENT_GUILD_SESSION_ID: id,
171
+ AGENT_GUILD_PROVIDER: provider.id,
172
+ AGENT_GUILD_URL: this.getApiUrl(),
173
+ AGENT_GUILD_REPORT_TOKEN: reportToken,
174
+ AGENT_GUILD_NODE: process.execPath,
175
+ }]), this.shimDir);
176
+ // The tool runs in its own terminal, not in the terminal or multiplexer
177
+ // the manager was started from: Claude Code would otherwise open
178
+ // agent-team panes in that tmux window, outside the page, and tools
179
+ // would tune their output to a terminal program that is not there.
180
+ for (const key of ['TMUX', 'TMUX_PANE', 'STY', 'TERM_PROGRAM', 'TERM_PROGRAM_VERSION', 'ZELLIJ', 'ZELLIJ_SESSION_NAME', 'ZELLIJ_PANE_ID']) delete env[key];
181
+
182
+ let session;
183
+ try {
184
+ session = new Session({
185
+ ...this.sessionDefaults,
186
+ id,
187
+ provider: description,
188
+ spawnSpec,
189
+ cwd,
190
+ env,
191
+ cols: clampDimension(cols, 120, 2, 1000),
192
+ rows: clampDimension(rows, 32, 1, 500),
193
+ name,
194
+ reportToken,
195
+ resume,
196
+ task,
197
+ });
198
+ } catch (err) {
199
+ throw httpError(500, `could not start ${provider.tool}: ${err.message}`, 'spawn_failed');
200
+ }
201
+
202
+ session.on('changed', () => {
203
+ if (this.sessions.has(id)) this.emit('event', { type: 'session.updated', session: session.toJSON() });
204
+ });
205
+ session.on('warning', (msg) => console.warn(`[session ${id}] ${msg}`));
206
+ if (task === 'install') {
207
+ session.on('exit', () => {
208
+ this.registry.finishInstall(provider.id, { exitCode: session.exitCode, kind: installKind }).catch(() => {});
209
+ });
210
+ }
211
+ this.sessions.set(id, session);
212
+ this.emit('event', { type: 'session.created', session: session.toJSON() });
213
+ return session;
214
+ }
215
+
216
+ stop(id) {
217
+ const session = this.get(id);
218
+ session.kill();
219
+ return session;
220
+ }
221
+
222
+ /** Remove a session from the list, ending its process if still running. */
223
+ remove(id) {
224
+ const session = this.get(id);
225
+ this.sessions.delete(id);
226
+ session._broadcast({ type: 'removed' });
227
+ if (session.status === 'running') {
228
+ this.exiting.add(session);
229
+ session.exited.then(() => this.exiting.delete(session));
230
+ }
231
+ session.dispose();
232
+ this.emit('event', { type: 'session.removed', sessionId: id });
233
+ }
234
+
235
+ /** Accepts either the session's own report token or the API token. */
236
+ reportAgent(id, report, auth) {
237
+ return this._reportingSession(id, auth).reportAgent(report, 'api');
238
+ }
239
+
240
+ reportModel(id, report, auth) {
241
+ return this._reportingSession(id, auth).reportModel(report);
242
+ }
243
+
244
+ _reportingSession(id, { reportToken, trusted = false } = {}) {
245
+ const session = this.sessions.get(id);
246
+ // Without the API token, an unknown session and a wrong token look the
247
+ // same, so the endpoint does not reveal which session ids exist.
248
+ if (!trusted && !(session && timingSafeEqualString(reportToken, session.reportToken))) {
249
+ throw httpError(401, 'invalid report token', 'unauthorized');
250
+ }
251
+ if (!session) throw httpError(404, `no session with id "${id}"`, 'not_found');
252
+ return session;
253
+ }
254
+
255
+ /**
256
+ * End every session and wait, up to `timeoutMs`, for the processes to
257
+ * exit. Waiting matters on Windows, where ending a ConPTY process is slow.
258
+ * Resolves to `{ remaining }`: how many processes had not confirmed their
259
+ * exit when the wait ended, so a caller can tell a timeout from a clean
260
+ * teardown.
261
+ */
262
+ async shutdown({ graceMs = 1500, timeoutMs = 5000 } = {}) {
263
+ this.closing = true;
264
+ const sessions = [...this.sessions.values()];
265
+ this.sessions.clear();
266
+ const pending = new Set([...sessions.filter((s) => s.status === 'running'), ...this.exiting]);
267
+ for (const session of pending) session.exited.then(() => pending.delete(session));
268
+ for (const session of sessions) session.dispose({ graceMs });
269
+ if (pending.size === 0) return { remaining: 0 };
270
+ let timer;
271
+ await Promise.race([
272
+ Promise.all([...pending].map((s) => s.exited)),
273
+ new Promise((resolve) => { timer = setTimeout(resolve, timeoutMs); }),
274
+ ]);
275
+ clearTimeout(timer);
276
+ return { remaining: pending.size };
277
+ }
278
+ }
279
+
280
+ /** The model named by a --model, --model=, or -m argument, or null. */
281
+ export function modelFromArgs(args) {
282
+ for (let i = 0; i < args.length; i++) {
283
+ if ((args[i] === '--model' || args[i] === '-m') && args[i + 1]) return args[i + 1];
284
+ if (args[i].startsWith('--model=') && args[i].length > 8) return args[i].slice(8);
285
+ }
286
+ return null;
287
+ }
288
+
289
+ const MAX_RESUME_ID = 200;
290
+
291
+ /** A session id or name to resume: one printable line, or null when absent. */
292
+ export function cleanResumeId(resume) {
293
+ if (resume === undefined || resume === null) return null;
294
+ const id = String(resume).trim();
295
+ if (!id || id.length > MAX_RESUME_ID || /\p{Cc}/u.test(id)) {
296
+ throw httpError(400, `resume must be a printable id of at most ${MAX_RESUME_ID} characters`, 'bad_resume');
297
+ }
298
+ return id;
299
+ }
300
+
301
+ export function timingSafeEqualString(a, b) {
302
+ if (typeof a !== 'string' || typeof b !== 'string') return false;
303
+ const ab = Buffer.from(a);
304
+ const bb = Buffer.from(b);
305
+ return ab.length === bb.length && crypto.timingSafeEqual(ab, bb);
306
+ }