language-operator 0.1.81 → 0.1.82

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 (427) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/agents/README.md +16 -0
  3. data/.claude/agents/changelog-writer.md +181 -0
  4. data/.claude/hooks/README.md +43 -0
  5. data/.claude/hooks/node_modules/.bin/esbuild +1 -0
  6. data/.claude/hooks/node_modules/.bin/tsc +1 -0
  7. data/.claude/hooks/node_modules/.bin/tsserver +1 -0
  8. data/.claude/hooks/node_modules/.bin/tsx +1 -0
  9. data/.claude/hooks/node_modules/.package-lock.json +136 -0
  10. data/.claude/hooks/node_modules/@esbuild/linux-x64/README.md +3 -0
  11. data/.claude/hooks/node_modules/@esbuild/linux-x64/bin/esbuild +0 -0
  12. data/.claude/hooks/node_modules/@esbuild/linux-x64/package.json +20 -0
  13. data/.claude/hooks/node_modules/@types/node/LICENSE +21 -0
  14. data/.claude/hooks/node_modules/@types/node/README.md +15 -0
  15. data/.claude/hooks/node_modules/@types/node/assert/strict.d.ts +105 -0
  16. data/.claude/hooks/node_modules/@types/node/assert.d.ts +955 -0
  17. data/.claude/hooks/node_modules/@types/node/async_hooks.d.ts +623 -0
  18. data/.claude/hooks/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  19. data/.claude/hooks/node_modules/@types/node/buffer.d.ts +1810 -0
  20. data/.claude/hooks/node_modules/@types/node/child_process.d.ts +1428 -0
  21. data/.claude/hooks/node_modules/@types/node/cluster.d.ts +486 -0
  22. data/.claude/hooks/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  23. data/.claude/hooks/node_modules/@types/node/console.d.ts +151 -0
  24. data/.claude/hooks/node_modules/@types/node/constants.d.ts +20 -0
  25. data/.claude/hooks/node_modules/@types/node/crypto.d.ts +4065 -0
  26. data/.claude/hooks/node_modules/@types/node/dgram.d.ts +564 -0
  27. data/.claude/hooks/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  28. data/.claude/hooks/node_modules/@types/node/dns/promises.d.ts +503 -0
  29. data/.claude/hooks/node_modules/@types/node/dns.d.ts +922 -0
  30. data/.claude/hooks/node_modules/@types/node/domain.d.ts +166 -0
  31. data/.claude/hooks/node_modules/@types/node/events.d.ts +1054 -0
  32. data/.claude/hooks/node_modules/@types/node/fs/promises.d.ts +1316 -0
  33. data/.claude/hooks/node_modules/@types/node/fs.d.ts +4676 -0
  34. data/.claude/hooks/node_modules/@types/node/globals.d.ts +150 -0
  35. data/.claude/hooks/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  36. data/.claude/hooks/node_modules/@types/node/http.d.ts +2143 -0
  37. data/.claude/hooks/node_modules/@types/node/http2.d.ts +2480 -0
  38. data/.claude/hooks/node_modules/@types/node/https.d.ts +399 -0
  39. data/.claude/hooks/node_modules/@types/node/index.d.ts +115 -0
  40. data/.claude/hooks/node_modules/@types/node/inspector/promises.d.ts +41 -0
  41. data/.claude/hooks/node_modules/@types/node/inspector.d.ts +224 -0
  42. data/.claude/hooks/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  43. data/.claude/hooks/node_modules/@types/node/module.d.ts +819 -0
  44. data/.claude/hooks/node_modules/@types/node/net.d.ts +933 -0
  45. data/.claude/hooks/node_modules/@types/node/os.d.ts +507 -0
  46. data/.claude/hooks/node_modules/@types/node/package.json +155 -0
  47. data/.claude/hooks/node_modules/@types/node/path/posix.d.ts +8 -0
  48. data/.claude/hooks/node_modules/@types/node/path/win32.d.ts +8 -0
  49. data/.claude/hooks/node_modules/@types/node/path.d.ts +187 -0
  50. data/.claude/hooks/node_modules/@types/node/perf_hooks.d.ts +621 -0
  51. data/.claude/hooks/node_modules/@types/node/process.d.ts +2097 -0
  52. data/.claude/hooks/node_modules/@types/node/punycode.d.ts +117 -0
  53. data/.claude/hooks/node_modules/@types/node/querystring.d.ts +152 -0
  54. data/.claude/hooks/node_modules/@types/node/quic.d.ts +910 -0
  55. data/.claude/hooks/node_modules/@types/node/readline/promises.d.ts +161 -0
  56. data/.claude/hooks/node_modules/@types/node/readline.d.ts +541 -0
  57. data/.claude/hooks/node_modules/@types/node/repl.d.ts +415 -0
  58. data/.claude/hooks/node_modules/@types/node/sea.d.ts +162 -0
  59. data/.claude/hooks/node_modules/@types/node/sqlite.d.ts +937 -0
  60. data/.claude/hooks/node_modules/@types/node/stream/consumers.d.ts +38 -0
  61. data/.claude/hooks/node_modules/@types/node/stream/promises.d.ts +211 -0
  62. data/.claude/hooks/node_modules/@types/node/stream/web.d.ts +296 -0
  63. data/.claude/hooks/node_modules/@types/node/stream.d.ts +1760 -0
  64. data/.claude/hooks/node_modules/@types/node/string_decoder.d.ts +67 -0
  65. data/.claude/hooks/node_modules/@types/node/test/reporters.d.ts +96 -0
  66. data/.claude/hooks/node_modules/@types/node/test.d.ts +2239 -0
  67. data/.claude/hooks/node_modules/@types/node/timers/promises.d.ts +108 -0
  68. data/.claude/hooks/node_modules/@types/node/timers.d.ts +159 -0
  69. data/.claude/hooks/node_modules/@types/node/tls.d.ts +1194 -0
  70. data/.claude/hooks/node_modules/@types/node/trace_events.d.ts +197 -0
  71. data/.claude/hooks/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  72. data/.claude/hooks/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  73. data/.claude/hooks/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  74. data/.claude/hooks/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  75. data/.claude/hooks/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  76. data/.claude/hooks/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  77. data/.claude/hooks/node_modules/@types/node/tty.d.ts +250 -0
  78. data/.claude/hooks/node_modules/@types/node/url.d.ts +519 -0
  79. data/.claude/hooks/node_modules/@types/node/util/types.d.ts +558 -0
  80. data/.claude/hooks/node_modules/@types/node/util.d.ts +1653 -0
  81. data/.claude/hooks/node_modules/@types/node/v8.d.ts +979 -0
  82. data/.claude/hooks/node_modules/@types/node/vm.d.ts +1180 -0
  83. data/.claude/hooks/node_modules/@types/node/wasi.d.ts +202 -0
  84. data/.claude/hooks/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  85. data/.claude/hooks/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  86. data/.claude/hooks/node_modules/@types/node/web-globals/console.d.ts +9 -0
  87. data/.claude/hooks/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  88. data/.claude/hooks/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  89. data/.claude/hooks/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  90. data/.claude/hooks/node_modules/@types/node/web-globals/events.d.ts +106 -0
  91. data/.claude/hooks/node_modules/@types/node/web-globals/fetch.d.ts +54 -0
  92. data/.claude/hooks/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  93. data/.claude/hooks/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  94. data/.claude/hooks/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  95. data/.claude/hooks/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  96. data/.claude/hooks/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  97. data/.claude/hooks/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  98. data/.claude/hooks/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  99. data/.claude/hooks/node_modules/@types/node/web-globals/url.d.ts +24 -0
  100. data/.claude/hooks/node_modules/@types/node/worker_threads.d.ts +714 -0
  101. data/.claude/hooks/node_modules/@types/node/zlib.d.ts +618 -0
  102. data/.claude/hooks/node_modules/esbuild/LICENSE.md +21 -0
  103. data/.claude/hooks/node_modules/esbuild/README.md +3 -0
  104. data/.claude/hooks/node_modules/esbuild/bin/esbuild +0 -0
  105. data/.claude/hooks/node_modules/esbuild/install.js +289 -0
  106. data/.claude/hooks/node_modules/esbuild/lib/main.d.ts +716 -0
  107. data/.claude/hooks/node_modules/esbuild/lib/main.js +2242 -0
  108. data/.claude/hooks/node_modules/esbuild/package.json +49 -0
  109. data/.claude/hooks/node_modules/get-tsconfig/LICENSE +21 -0
  110. data/.claude/hooks/node_modules/get-tsconfig/README.md +235 -0
  111. data/.claude/hooks/node_modules/get-tsconfig/dist/index.cjs +7 -0
  112. data/.claude/hooks/node_modules/get-tsconfig/dist/index.d.cts +2088 -0
  113. data/.claude/hooks/node_modules/get-tsconfig/dist/index.d.mts +2088 -0
  114. data/.claude/hooks/node_modules/get-tsconfig/dist/index.mjs +7 -0
  115. data/.claude/hooks/node_modules/get-tsconfig/package.json +46 -0
  116. data/.claude/hooks/node_modules/resolve-pkg-maps/LICENSE +21 -0
  117. data/.claude/hooks/node_modules/resolve-pkg-maps/README.md +216 -0
  118. data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.cjs +1 -0
  119. data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.d.cts +11 -0
  120. data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.d.mts +11 -0
  121. data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.mjs +1 -0
  122. data/.claude/hooks/node_modules/resolve-pkg-maps/package.json +42 -0
  123. data/.claude/hooks/node_modules/tsx/LICENSE +21 -0
  124. data/.claude/hooks/node_modules/tsx/README.md +32 -0
  125. data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.cjs +1 -0
  126. data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.d.cts +35 -0
  127. data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.d.mts +35 -0
  128. data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.mjs +1 -0
  129. data/.claude/hooks/node_modules/tsx/dist/cjs/index.cjs +1 -0
  130. data/.claude/hooks/node_modules/tsx/dist/cjs/index.mjs +1 -0
  131. data/.claude/hooks/node_modules/tsx/dist/cli.cjs +54 -0
  132. data/.claude/hooks/node_modules/tsx/dist/cli.mjs +55 -0
  133. data/.claude/hooks/node_modules/tsx/dist/client-BQVF1NaW.mjs +1 -0
  134. data/.claude/hooks/node_modules/tsx/dist/client-D6NvIMSC.cjs +1 -0
  135. data/.claude/hooks/node_modules/tsx/dist/esm/api/index.cjs +1 -0
  136. data/.claude/hooks/node_modules/tsx/dist/esm/api/index.d.cts +35 -0
  137. data/.claude/hooks/node_modules/tsx/dist/esm/api/index.d.mts +35 -0
  138. data/.claude/hooks/node_modules/tsx/dist/esm/api/index.mjs +1 -0
  139. data/.claude/hooks/node_modules/tsx/dist/esm/index.cjs +2 -0
  140. data/.claude/hooks/node_modules/tsx/dist/esm/index.mjs +2 -0
  141. data/.claude/hooks/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +1 -0
  142. data/.claude/hooks/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +1 -0
  143. data/.claude/hooks/node_modules/tsx/dist/index-7AaEi15b.mjs +14 -0
  144. data/.claude/hooks/node_modules/tsx/dist/index-BWFBUo6r.cjs +1 -0
  145. data/.claude/hooks/node_modules/tsx/dist/index-gbaejti9.mjs +1 -0
  146. data/.claude/hooks/node_modules/tsx/dist/index-gckBtVBf.cjs +14 -0
  147. data/.claude/hooks/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +3 -0
  148. data/.claude/hooks/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +3 -0
  149. data/.claude/hooks/node_modules/tsx/dist/loader.cjs +1 -0
  150. data/.claude/hooks/node_modules/tsx/dist/loader.mjs +1 -0
  151. data/.claude/hooks/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +1 -0
  152. data/.claude/hooks/node_modules/tsx/dist/node-features-roYmp9jK.cjs +1 -0
  153. data/.claude/hooks/node_modules/tsx/dist/package-CeBgXWuR.mjs +1 -0
  154. data/.claude/hooks/node_modules/tsx/dist/package-Dxt5kIHw.cjs +1 -0
  155. data/.claude/hooks/node_modules/tsx/dist/patch-repl.cjs +1 -0
  156. data/.claude/hooks/node_modules/tsx/dist/patch-repl.mjs +1 -0
  157. data/.claude/hooks/node_modules/tsx/dist/preflight.cjs +1 -0
  158. data/.claude/hooks/node_modules/tsx/dist/preflight.mjs +1 -0
  159. data/.claude/hooks/node_modules/tsx/dist/register-2sWVXuRQ.cjs +1 -0
  160. data/.claude/hooks/node_modules/tsx/dist/register-B7jrtLTO.mjs +1 -0
  161. data/.claude/hooks/node_modules/tsx/dist/register-CFH5oNdT.mjs +4 -0
  162. data/.claude/hooks/node_modules/tsx/dist/register-D46fvsV_.cjs +4 -0
  163. data/.claude/hooks/node_modules/tsx/dist/repl.cjs +3 -0
  164. data/.claude/hooks/node_modules/tsx/dist/repl.mjs +3 -0
  165. data/.claude/hooks/node_modules/tsx/dist/require-D4F1Lv60.cjs +1 -0
  166. data/.claude/hooks/node_modules/tsx/dist/require-DQxpCAr4.mjs +1 -0
  167. data/.claude/hooks/node_modules/tsx/dist/suppress-warnings.cjs +1 -0
  168. data/.claude/hooks/node_modules/tsx/dist/suppress-warnings.mjs +1 -0
  169. data/.claude/hooks/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +1 -0
  170. data/.claude/hooks/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +1 -0
  171. data/.claude/hooks/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +5 -0
  172. data/.claude/hooks/node_modules/tsx/package.json +68 -0
  173. data/.claude/hooks/node_modules/typescript/LICENSE.txt +55 -0
  174. data/.claude/hooks/node_modules/typescript/README.md +50 -0
  175. data/.claude/hooks/node_modules/typescript/SECURITY.md +41 -0
  176. data/.claude/hooks/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  177. data/.claude/hooks/node_modules/typescript/bin/tsc +2 -0
  178. data/.claude/hooks/node_modules/typescript/bin/tsserver +2 -0
  179. data/.claude/hooks/node_modules/typescript/lib/_tsc.js +133818 -0
  180. data/.claude/hooks/node_modules/typescript/lib/_tsserver.js +659 -0
  181. data/.claude/hooks/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  182. data/.claude/hooks/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  183. data/.claude/hooks/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  184. data/.claude/hooks/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  185. data/.claude/hooks/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  186. data/.claude/hooks/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  187. data/.claude/hooks/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  188. data/.claude/hooks/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  189. data/.claude/hooks/node_modules/typescript/lib/lib.d.ts +22 -0
  190. data/.claude/hooks/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  191. data/.claude/hooks/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  192. data/.claude/hooks/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  193. data/.claude/hooks/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  194. data/.claude/hooks/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  195. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  196. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  197. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  198. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  199. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  200. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  201. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  202. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  203. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  204. data/.claude/hooks/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  205. data/.claude/hooks/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  206. data/.claude/hooks/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  207. data/.claude/hooks/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  208. data/.claude/hooks/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  209. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  210. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  211. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  212. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  213. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  214. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  215. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  216. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  217. data/.claude/hooks/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  218. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  219. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  220. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  221. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  222. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  223. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  224. data/.claude/hooks/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  225. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  226. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  227. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  228. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  229. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  230. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  231. data/.claude/hooks/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  232. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  233. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  234. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  235. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  236. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  237. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  238. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  239. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  240. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  241. data/.claude/hooks/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  242. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  243. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  244. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  245. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  246. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  247. data/.claude/hooks/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  248. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  249. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  250. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  251. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  252. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  253. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  254. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  255. data/.claude/hooks/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  256. data/.claude/hooks/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  257. data/.claude/hooks/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  258. data/.claude/hooks/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  259. data/.claude/hooks/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  260. data/.claude/hooks/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  261. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  262. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  263. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  264. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  265. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  266. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  267. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  268. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  269. data/.claude/hooks/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  270. data/.claude/hooks/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  271. data/.claude/hooks/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  272. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  273. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  274. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  275. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  276. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  277. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  278. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  279. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  280. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  281. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  282. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  283. data/.claude/hooks/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  284. data/.claude/hooks/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  285. data/.claude/hooks/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  286. data/.claude/hooks/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  287. data/.claude/hooks/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  288. data/.claude/hooks/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  289. data/.claude/hooks/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  290. data/.claude/hooks/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  291. data/.claude/hooks/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  292. data/.claude/hooks/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  293. data/.claude/hooks/node_modules/typescript/lib/tsc.js +8 -0
  294. data/.claude/hooks/node_modules/typescript/lib/tsserver.js +8 -0
  295. data/.claude/hooks/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  296. data/.claude/hooks/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  297. data/.claude/hooks/node_modules/typescript/lib/typesMap.json +497 -0
  298. data/.claude/hooks/node_modules/typescript/lib/typescript.d.ts +11437 -0
  299. data/.claude/hooks/node_modules/typescript/lib/typescript.js +200276 -0
  300. data/.claude/hooks/node_modules/typescript/lib/typingsInstaller.js +8 -0
  301. data/.claude/hooks/node_modules/typescript/lib/watchGuard.js +53 -0
  302. data/.claude/hooks/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  303. data/.claude/hooks/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  304. data/.claude/hooks/node_modules/typescript/package.json +120 -0
  305. data/.claude/hooks/node_modules/undici-types/LICENSE +21 -0
  306. data/.claude/hooks/node_modules/undici-types/README.md +6 -0
  307. data/.claude/hooks/node_modules/undici-types/agent.d.ts +32 -0
  308. data/.claude/hooks/node_modules/undici-types/api.d.ts +43 -0
  309. data/.claude/hooks/node_modules/undici-types/balanced-pool.d.ts +29 -0
  310. data/.claude/hooks/node_modules/undici-types/cache-interceptor.d.ts +172 -0
  311. data/.claude/hooks/node_modules/undici-types/cache.d.ts +36 -0
  312. data/.claude/hooks/node_modules/undici-types/client-stats.d.ts +15 -0
  313. data/.claude/hooks/node_modules/undici-types/client.d.ts +108 -0
  314. data/.claude/hooks/node_modules/undici-types/connector.d.ts +34 -0
  315. data/.claude/hooks/node_modules/undici-types/content-type.d.ts +21 -0
  316. data/.claude/hooks/node_modules/undici-types/cookies.d.ts +30 -0
  317. data/.claude/hooks/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  318. data/.claude/hooks/node_modules/undici-types/dispatcher.d.ts +276 -0
  319. data/.claude/hooks/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  320. data/.claude/hooks/node_modules/undici-types/errors.d.ts +161 -0
  321. data/.claude/hooks/node_modules/undici-types/eventsource.d.ts +66 -0
  322. data/.claude/hooks/node_modules/undici-types/fetch.d.ts +211 -0
  323. data/.claude/hooks/node_modules/undici-types/formdata.d.ts +108 -0
  324. data/.claude/hooks/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  325. data/.claude/hooks/node_modules/undici-types/global-origin.d.ts +7 -0
  326. data/.claude/hooks/node_modules/undici-types/h2c-client.d.ts +73 -0
  327. data/.claude/hooks/node_modules/undici-types/handlers.d.ts +15 -0
  328. data/.claude/hooks/node_modules/undici-types/header.d.ts +160 -0
  329. data/.claude/hooks/node_modules/undici-types/index.d.ts +80 -0
  330. data/.claude/hooks/node_modules/undici-types/interceptors.d.ts +39 -0
  331. data/.claude/hooks/node_modules/undici-types/mock-agent.d.ts +68 -0
  332. data/.claude/hooks/node_modules/undici-types/mock-call-history.d.ts +111 -0
  333. data/.claude/hooks/node_modules/undici-types/mock-client.d.ts +27 -0
  334. data/.claude/hooks/node_modules/undici-types/mock-errors.d.ts +12 -0
  335. data/.claude/hooks/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  336. data/.claude/hooks/node_modules/undici-types/mock-pool.d.ts +27 -0
  337. data/.claude/hooks/node_modules/undici-types/package.json +55 -0
  338. data/.claude/hooks/node_modules/undici-types/patch.d.ts +29 -0
  339. data/.claude/hooks/node_modules/undici-types/pool-stats.d.ts +19 -0
  340. data/.claude/hooks/node_modules/undici-types/pool.d.ts +41 -0
  341. data/.claude/hooks/node_modules/undici-types/proxy-agent.d.ts +29 -0
  342. data/.claude/hooks/node_modules/undici-types/readable.d.ts +68 -0
  343. data/.claude/hooks/node_modules/undici-types/retry-agent.d.ts +8 -0
  344. data/.claude/hooks/node_modules/undici-types/retry-handler.d.ts +125 -0
  345. data/.claude/hooks/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  346. data/.claude/hooks/node_modules/undici-types/util.d.ts +18 -0
  347. data/.claude/hooks/node_modules/undici-types/utility.d.ts +7 -0
  348. data/.claude/hooks/node_modules/undici-types/webidl.d.ts +341 -0
  349. data/.claude/hooks/node_modules/undici-types/websocket.d.ts +186 -0
  350. data/.claude/hooks/package-lock.json +562 -0
  351. data/.claude/hooks/package.json +19 -0
  352. data/.claude/hooks/skill-activation-prompt.sh +11 -0
  353. data/.claude/hooks/skill-activation-prompt.ts +185 -0
  354. data/.claude/hooks/tsconfig.json +12 -0
  355. data/.claude/settings.json +33 -0
  356. data/.claude/skills/README.md +29 -0
  357. data/.claude/skills/ruby-gem-development/SKILL.md +293 -0
  358. data/.claude/skills/skill-rules.json +117 -0
  359. data/.claude/skills/thor-cli-development/SKILL.md +431 -0
  360. data/CHANGELOG.md +7 -0
  361. data/Gemfile.lock +3 -1
  362. data/completions/{_aictl → _langop} +37 -37
  363. data/completions/{aictl.bash → langop.bash} +16 -16
  364. data/completions/langop.fish +114 -0
  365. data/components/agent/Gemfile +1 -1
  366. data/components/tool/Gemfile +1 -1
  367. data/docs/README.md +10 -10
  368. data/docs/agent-internals.md +1 -1
  369. data/docs/cheat-sheet.md +76 -76
  370. data/docs/cli-reference.md +71 -71
  371. data/docs/how-agents-work.md +1 -1
  372. data/docs/installation.md +30 -30
  373. data/docs/quickstart.md +30 -30
  374. data/docs/using-tools.md +11 -11
  375. data/docs/webhooks.md +6 -6
  376. data/examples/ux_helpers_demo.rb +4 -4
  377. data/lib/language_operator/agent/task_executor.rb +0 -37
  378. data/lib/language_operator/agent/web_server.rb +311 -323
  379. data/lib/language_operator/cli/commands/agent/base.rb +16 -15
  380. data/lib/language_operator/cli/commands/agent/code_operations.rb +6 -6
  381. data/lib/language_operator/cli/commands/agent/helpers/synthesis_watcher.rb +1 -1
  382. data/lib/language_operator/cli/commands/agent/lifecycle.rb +2 -2
  383. data/lib/language_operator/cli/commands/agent/logs.rb +2 -2
  384. data/lib/language_operator/cli/commands/agent/workspace.rb +8 -8
  385. data/lib/language_operator/cli/commands/cluster.rb +172 -158
  386. data/lib/language_operator/cli/commands/install.rb +878 -81
  387. data/lib/language_operator/cli/commands/model/base.rb +7 -6
  388. data/lib/language_operator/cli/commands/organization.rb +61 -0
  389. data/lib/language_operator/cli/commands/persona.rb +10 -8
  390. data/lib/language_operator/cli/commands/status.rb +83 -13
  391. data/lib/language_operator/cli/commands/system/exec.rb +10 -10
  392. data/lib/language_operator/cli/commands/system/schema.rb +6 -6
  393. data/lib/language_operator/cli/commands/system/synthesis_template.rb +6 -6
  394. data/lib/language_operator/cli/commands/system/synthesize.rb +14 -14
  395. data/lib/language_operator/cli/commands/system/validate_template.rb +4 -4
  396. data/lib/language_operator/cli/commands/tool/base.rb +1 -1
  397. data/lib/language_operator/cli/commands/tool/install.rb +2 -2
  398. data/lib/language_operator/cli/commands/tool/search.rb +3 -3
  399. data/lib/language_operator/cli/commands/ui.rb +173 -0
  400. data/lib/language_operator/cli/commands/use.rb +80 -9
  401. data/lib/language_operator/cli/errors/suggestions.rb +21 -21
  402. data/lib/language_operator/cli/formatters/progress_formatter.rb +2 -1
  403. data/lib/language_operator/cli/formatters/table_formatter.rb +21 -1
  404. data/lib/language_operator/cli/helpers/cluster_validator.rb +2 -2
  405. data/lib/language_operator/cli/helpers/health_checker.rb +263 -0
  406. data/lib/language_operator/cli/helpers/kubeconfig_validator.rb +3 -3
  407. data/lib/language_operator/cli/helpers/ux_helper.rb +4 -3
  408. data/lib/language_operator/cli/main.rb +30 -21
  409. data/lib/language_operator/cli/wizards/model_wizard.rb +7 -5
  410. data/lib/language_operator/config/cluster_config.rb +3 -3
  411. data/lib/language_operator/constants/kubernetes_labels.rb +1 -1
  412. data/lib/language_operator/kubernetes/client.rb +53 -109
  413. data/lib/language_operator/kubernetes/resource_builder.rb +46 -14
  414. data/lib/language_operator/templates/schema/agent_dsl_openapi.yaml +1 -1
  415. data/lib/language_operator/templates/schema/agent_dsl_schema.json +1 -1
  416. data/lib/language_operator/utils/org_context.rb +100 -0
  417. data/lib/language_operator/version.rb +1 -1
  418. data/synth/001/Makefile +1 -1
  419. data/synth/002/Makefile +1 -1
  420. data/synth/003/Makefile +1 -1
  421. data/synth/004/Makefile +1 -1
  422. metadata +384 -11
  423. data/completions/aictl.fish +0 -114
  424. data/lib/language_operator/agent/event_config.rb +0 -172
  425. data/lib/language_operator/cli/commands/quickstart.rb +0 -22
  426. data/lib/language_operator/cli/wizards/quickstart_wizard.rb +0 -561
  427. /data/bin/{aictl → langop} +0 -0
@@ -0,0 +1,263 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../formatters/progress_formatter'
4
+
5
+ module LanguageOperator
6
+ module CLI
7
+ module Helpers
8
+ # Health checker for Language Operator components
9
+ class HealthChecker
10
+ attr_reader :k8s, :namespace, :cluster_name, :cluster_namespace
11
+
12
+ def initialize(k8s_client, namespace, cluster_name = nil, cluster_namespace = nil)
13
+ @k8s = k8s_client
14
+ @namespace = namespace
15
+ @cluster_name = cluster_name
16
+ @cluster_namespace = cluster_namespace
17
+ end
18
+
19
+ # Check dashboard deployment health
20
+ def check_dashboard_health
21
+ deployment = @k8s.client.api('apps/v1')
22
+ .resource('deployments', namespace: @namespace)
23
+ .get('language-operator-dashboard')
24
+
25
+ ready_replicas = deployment.dig('status', 'readyReplicas') || 0
26
+ desired_replicas = deployment.dig('spec', 'replicas') || 0
27
+
28
+ {
29
+ healthy: ready_replicas == desired_replicas && desired_replicas > 0,
30
+ ready_replicas: ready_replicas,
31
+ desired_replicas: desired_replicas
32
+ }
33
+ rescue K8s::Error::NotFound
34
+ { healthy: false, error: 'Dashboard deployment not found' }
35
+ rescue StandardError => e
36
+ { healthy: false, error: e.message }
37
+ end
38
+
39
+ # Check operator deployment health
40
+ def check_operator_health
41
+ deployment = @k8s.client.api('apps/v1')
42
+ .resource('deployments', namespace: @namespace)
43
+ .get('language-operator')
44
+
45
+ ready_replicas = deployment.dig('status', 'readyReplicas') || 0
46
+ desired_replicas = deployment.dig('spec', 'replicas') || 0
47
+
48
+ {
49
+ healthy: ready_replicas == desired_replicas && desired_replicas > 0,
50
+ ready_replicas: ready_replicas,
51
+ desired_replicas: desired_replicas
52
+ }
53
+ rescue K8s::Error::NotFound
54
+ { healthy: false, error: 'Operator deployment not found' }
55
+ rescue StandardError => e
56
+ { healthy: false, error: e.message }
57
+ end
58
+
59
+ # Check ClickHouse health and authentication
60
+ def check_clickhouse_health
61
+ # First check if service exists
62
+ begin
63
+ @k8s.client.api('v1')
64
+ .resource('services', namespace: @namespace)
65
+ .get('language-operator-clickhouse')
66
+ rescue K8s::Error::NotFound
67
+ return { healthy: false, error: 'ClickHouse service not found' }
68
+ end
69
+
70
+ # Try to connect and authenticate using port-forward
71
+ require 'net/http'
72
+ require 'uri'
73
+ require 'open3'
74
+
75
+ port = find_available_port
76
+ pf_pid = nil
77
+
78
+ begin
79
+ # Start port-forward in background
80
+ pf_command = "kubectl port-forward -n #{@namespace} service/language-operator-clickhouse #{port}:8123"
81
+ pf_stdin, pf_stdout, pf_stderr, pf_thread = Open3.popen3(pf_command)
82
+
83
+ # Give port-forward time to establish
84
+ sleep(2)
85
+
86
+ # Test connection with credentials
87
+ uri = URI("http://localhost:#{port}/ping")
88
+
89
+ http = Net::HTTP.new(uri.host, uri.port)
90
+ http.read_timeout = 5
91
+ http.open_timeout = 5
92
+
93
+ # Try with auth (default ClickHouse credentials for Language Operator)
94
+ request = Net::HTTP::Get.new(uri)
95
+ request.basic_auth('langop', 'langop')
96
+
97
+ response = http.request(request)
98
+
99
+ {
100
+ healthy: response.code == '200',
101
+ auth_works: response.code == '200',
102
+ response_code: response.code
103
+ }
104
+ rescue StandardError => e
105
+ { healthy: false, error: e.message }
106
+ ensure
107
+ # Clean up port-forward
108
+ if pf_thread&.alive?
109
+ Process.kill('TERM', pf_thread.pid) rescue nil
110
+ pf_thread.join(1)
111
+ end
112
+ end
113
+ end
114
+
115
+ # Check PostgreSQL health and authentication
116
+ def check_postgres_health
117
+ # First check if service exists
118
+ begin
119
+ @k8s.client.api('v1')
120
+ .resource('services', namespace: @namespace)
121
+ .get('language-operator-dashboard-postgresql')
122
+ rescue K8s::Error::NotFound
123
+ return { healthy: false, error: 'PostgreSQL service not found' }
124
+ end
125
+
126
+ # Try to connect and authenticate using port-forward and pg_isready
127
+ require 'open3'
128
+
129
+ port = find_available_port
130
+ pf_pid = nil
131
+
132
+ begin
133
+ # Start port-forward in background
134
+ pf_command = "kubectl port-forward -n #{@namespace} service/language-operator-dashboard-postgresql #{port}:5432"
135
+ pf_stdin, pf_stdout, pf_stderr, pf_thread = Open3.popen3(pf_command)
136
+
137
+ # Give port-forward time to establish
138
+ sleep(2)
139
+
140
+ # Test connection with pg_isready (if available) or simple TCP connection
141
+ if system('which pg_isready > /dev/null 2>&1')
142
+ # Use pg_isready for proper PostgreSQL health check
143
+ test_output, test_status = Open3.capture2e("pg_isready -h localhost -p #{port} -U postgres -d langop_dashboard")
144
+ {
145
+ healthy: test_status.success?,
146
+ auth_works: test_status.success?,
147
+ output: test_output.strip
148
+ }
149
+ else
150
+ # Fallback to basic TCP connection test
151
+ require 'socket'
152
+ begin
153
+ socket = TCPSocket.new('localhost', port)
154
+ socket.close
155
+ { healthy: true, auth_works: false, note: 'pg_isready not available - basic TCP test only' }
156
+ rescue StandardError => e
157
+ { healthy: false, error: e.message }
158
+ end
159
+ end
160
+ rescue StandardError => e
161
+ { healthy: false, error: e.message }
162
+ ensure
163
+ # Clean up port-forward
164
+ if pf_thread&.alive?
165
+ Process.kill('TERM', pf_thread.pid) rescue nil
166
+ pf_thread.join(1)
167
+ end
168
+ end
169
+ end
170
+
171
+ # Check if the selected cluster exists in Kubernetes
172
+ def check_cluster_exists
173
+ return { healthy: true, note: 'No cluster specified' } unless @cluster_name && @cluster_namespace
174
+
175
+ cluster_resource = @k8s.get_resource('LanguageCluster', @cluster_name, @cluster_namespace)
176
+
177
+ status = cluster_resource.dig('status', 'phase') || 'Unknown'
178
+ {
179
+ healthy: true,
180
+ status: status,
181
+ exists: true
182
+ }
183
+ rescue K8s::Error::NotFound
184
+ { healthy: false, error: "Cluster '#{@cluster_name}' not found in namespace '#{@cluster_namespace}'" }
185
+ rescue StandardError => e
186
+ { healthy: false, error: e.message }
187
+ end
188
+
189
+ # Run all health checks with progress indicators
190
+ def run_all_checks
191
+ results = {}
192
+
193
+ # Cluster existence check (first)
194
+ if @cluster_name && @cluster_namespace
195
+ begin
196
+ results[:cluster] = Formatters::ProgressFormatter.with_spinner(
197
+ "Verifying cluster '#{@cluster_name}' exists"
198
+ ) { check_cluster_exists }
199
+ rescue StandardError => e
200
+ results[:cluster] = { healthy: false, error: e.message }
201
+ end
202
+ end
203
+
204
+ # Dashboard health check
205
+ begin
206
+ results[:dashboard] = Formatters::ProgressFormatter.with_spinner(
207
+ 'Verifying language-operator-dashboard deployment'
208
+ ) { check_dashboard_health }
209
+ rescue StandardError => e
210
+ results[:dashboard] = { healthy: false, error: e.message }
211
+ end
212
+
213
+ # Operator health check
214
+ begin
215
+ results[:operator] = Formatters::ProgressFormatter.with_spinner(
216
+ 'Verifying language-operator deployment'
217
+ ) { check_operator_health }
218
+ rescue StandardError => e
219
+ results[:operator] = { healthy: false, error: e.message }
220
+ end
221
+
222
+ # ClickHouse health check
223
+ begin
224
+ results[:clickhouse] = Formatters::ProgressFormatter.with_spinner(
225
+ 'Verifying ClickHouse health and authentication'
226
+ ) { check_clickhouse_health }
227
+ rescue StandardError => e
228
+ results[:clickhouse] = { healthy: false, error: e.message }
229
+ end
230
+
231
+ # PostgreSQL health check
232
+ begin
233
+ results[:postgres] = Formatters::ProgressFormatter.with_spinner(
234
+ 'Verifying PostgreSQL health and authentication'
235
+ ) { check_postgres_health }
236
+ rescue StandardError => e
237
+ results[:postgres] = { healthy: false, error: e.message }
238
+ end
239
+
240
+ results
241
+ end
242
+
243
+ private
244
+
245
+ # Find an available port for port-forwarding
246
+ def find_available_port
247
+ require 'socket'
248
+ port = 8080
249
+ begin
250
+ server = TCPServer.new('localhost', port)
251
+ port = server.addr[1]
252
+ server.close
253
+ port
254
+ rescue Errno::EADDRINUSE
255
+ port += 1
256
+ retry if port < 9000
257
+ raise 'No available ports found'
258
+ end
259
+ end
260
+ end
261
+ end
262
+ end
263
+ end
@@ -131,8 +131,8 @@ module LanguageOperator
131
131
 
132
132
  To install the operator:
133
133
 
134
- 1. Using aictl (recommended):
135
- aictl install
134
+ 1. Using langop (recommended):
135
+ langop install
136
136
 
137
137
  2. Or manually with Helm:
138
138
  helm repo add language-operator https://language-operator.github.io/charts
@@ -158,7 +158,7 @@ module LanguageOperator
158
158
  3. You have appropriate permissions
159
159
 
160
160
  For debugging, run with DEBUG=1:
161
- DEBUG=1 aictl <command>
161
+ DEBUG=1 langop <command>
162
162
  MSG
163
163
  end
164
164
  end
@@ -433,15 +433,16 @@ module LanguageOperator
433
433
  # @param created [String, nil] Creation timestamp (optional)
434
434
  # @param domain [String, nil] Cluster domain (optional)
435
435
  # @return [void] Displays formatted cluster information
436
- def format_cluster_details(name:, namespace:, context:, status: nil, created: nil, domain: nil)
436
+ def format_cluster_details(name:, namespace:, context:, status: nil, created: nil, domain: nil, org_id: nil)
437
437
  format_resource_details(
438
438
  type: 'Cluster',
439
439
  name: name,
440
440
  common_fields: {
441
- 'Namespace' => namespace,
442
- 'Context' => context
441
+ 'Namespace' => namespace
443
442
  },
444
443
  optional_fields: {
444
+ 'Org ID' => org_id,
445
+ 'Context' => context,
445
446
  'Domain' => domain,
446
447
  'Status' => status,
447
448
  'Created' => created
@@ -10,9 +10,10 @@ require_relative 'commands/status'
10
10
  require_relative 'commands/persona'
11
11
  require_relative 'commands/tool/base'
12
12
  require_relative 'commands/model/base'
13
- require_relative 'commands/quickstart'
14
13
  require_relative 'commands/install'
15
14
  require_relative 'commands/system/base'
15
+ require_relative 'commands/ui'
16
+ require_relative 'commands/organization'
16
17
  require_relative 'formatters/progress_formatter'
17
18
  require_relative 'helpers/ux_helper'
18
19
  require_relative '../config/cluster_config'
@@ -21,7 +22,7 @@ require_relative 'errors/thor_errors'
21
22
 
22
23
  module LanguageOperator
23
24
  module CLI
24
- # Main CLI class for aictl command
25
+ # Main CLI class for langop command
25
26
  #
26
27
  # Provides commands for creating, running, and managing language-operator resources.
27
28
  class Main < Thor
@@ -36,7 +37,7 @@ module LanguageOperator
36
37
  Commands::Status.new.invoke(:overview)
37
38
  end
38
39
 
39
- desc 'version', 'Show aictl and operator version'
40
+ desc 'version', 'Show langop and operator version'
40
41
  def version
41
42
  # Check operator installation status first
42
43
  current_cluster = Config::ClusterConfig.current_cluster
@@ -71,6 +72,9 @@ module LanguageOperator
71
72
  desc 'cluster SUBCOMMAND ...ARGS', 'Manage clusters'
72
73
  subcommand 'cluster', Commands::Cluster
73
74
 
75
+ desc 'organization SUBCOMMAND ...ARGS', 'Manage organizations'
76
+ subcommand 'organization', Commands::Organization
77
+
74
78
  desc 'use CLUSTER', 'Switch to a different cluster'
75
79
  def use(cluster_name)
76
80
  Commands::Use.new.switch(cluster_name)
@@ -91,9 +95,14 @@ module LanguageOperator
91
95
  desc 'system SUBCOMMAND ...ARGS', 'System utilities'
92
96
  subcommand 'system', Commands::System::Base
93
97
 
94
- desc 'quickstart', 'Wizard for first-time users'
95
- def quickstart
96
- Commands::Quickstart.new.invoke(:start)
98
+ desc 'ui', 'Open the Language Operator dashboard in your browser'
99
+ option :port, type: :numeric, default: Commands::Ui::DEFAULT_PORT, desc: "Local port to forward to (default: #{Commands::Ui::DEFAULT_PORT})"
100
+ option :service, type: :string, default: Commands::Ui::DEFAULT_SERVICE_NAME, desc: "Service name to connect to (default: #{Commands::Ui::DEFAULT_SERVICE_NAME})"
101
+ option :service_port, type: :numeric, default: Commands::Ui::DEFAULT_SERVICE_PORT, desc: "Service port to forward from (default: #{Commands::Ui::DEFAULT_SERVICE_PORT})"
102
+ option :namespace, type: :string, default: 'language-operator', desc: 'Namespace to connect to (default: language-operator)'
103
+ option :no_open, type: :boolean, default: false, desc: 'Do not automatically open browser'
104
+ def ui
105
+ Commands::Ui.new([], options).ui
97
106
  end
98
107
 
99
108
  desc 'install', 'Install the language-operator using Helm'
@@ -127,24 +136,24 @@ module LanguageOperator
127
136
  Commands::Install.new([], options).uninstall
128
137
  end
129
138
 
130
- desc 'completion SHELL', 'Install shell completion for aictl (bash, zsh, fish)'
139
+ desc 'completion SHELL', 'Install shell completion for langop (bash, zsh, fish)'
131
140
  long_desc <<-DESC
132
- Install shell completion for aictl. Supports bash, zsh, and fish.
141
+ Install shell completion for langop. Supports bash, zsh, and fish.
133
142
 
134
143
  Examples:
135
- aictl completion bash
136
- aictl completion zsh
137
- aictl completion fish
144
+ langop completion bash
145
+ langop completion zsh
146
+ langop completion fish
138
147
 
139
148
  Manual installation:
140
149
  bash: Add to ~/.bashrc:
141
- source <(aictl completion bash --stdout)
150
+ source <(langop completion bash --stdout)
142
151
 
143
152
  zsh: Add to ~/.zshrc:
144
- source <(aictl completion zsh --stdout)
153
+ source <(langop completion zsh --stdout)
145
154
 
146
155
  fish: Run once:
147
- aictl completion fish | source
156
+ langop completion fish | source
148
157
  DESC
149
158
  option :stdout, type: :boolean, desc: 'Print completion script to stdout instead of installing'
150
159
  def completion(shell)
@@ -177,28 +186,28 @@ module LanguageOperator
177
186
  private
178
187
 
179
188
  def install_bash_completion
180
- completion_file = File.expand_path('../../completions/aictl.bash', __dir__)
189
+ completion_file = File.expand_path('../../completions/langop.bash', __dir__)
181
190
 
182
191
  if options[:stdout]
183
192
  puts File.read(completion_file)
184
193
  return
185
194
  end
186
195
 
187
- target = LanguageOperator::Utils::SecurePath.expand_home_path('.bash_completion.d/aictl')
196
+ target = LanguageOperator::Utils::SecurePath.expand_home_path('.bash_completion.d/langop')
188
197
  FileUtils.mkdir_p(File.dirname(target))
189
198
  FileUtils.cp(completion_file, target)
190
199
 
191
200
  Formatters::ProgressFormatter.success('Bash completion installed')
192
201
  puts
193
202
  puts 'Add to your ~/.bashrc:'
194
- puts ' [ -f ~/.bash_completion.d/aictl ] && source ~/.bash_completion.d/aictl'
203
+ puts ' [ -f ~/.bash_completion.d/langop ] && source ~/.bash_completion.d/langop'
195
204
  puts
196
205
  puts 'Then reload your shell:'
197
206
  puts ' source ~/.bashrc'
198
207
  end
199
208
 
200
209
  def install_zsh_completion
201
- completion_file = File.expand_path('../../completions/_aictl', __dir__)
210
+ completion_file = File.expand_path('../../completions/_langop', __dir__)
202
211
 
203
212
  if options[:stdout]
204
213
  puts File.read(completion_file)
@@ -209,7 +218,7 @@ module LanguageOperator
209
218
  fpath_dir = LanguageOperator::Utils::SecurePath.expand_home_path('.zsh/completions')
210
219
  FileUtils.mkdir_p(fpath_dir)
211
220
 
212
- target = File.join(fpath_dir, '_aictl')
221
+ target = File.join(fpath_dir, '_langop')
213
222
  FileUtils.cp(completion_file, target)
214
223
 
215
224
  Formatters::ProgressFormatter.success('Zsh completion installed')
@@ -223,14 +232,14 @@ module LanguageOperator
223
232
  end
224
233
 
225
234
  def install_fish_completion
226
- completion_file = File.expand_path('../../completions/aictl.fish', __dir__)
235
+ completion_file = File.expand_path('../../completions/langop.fish', __dir__)
227
236
 
228
237
  if options[:stdout]
229
238
  puts File.read(completion_file)
230
239
  return
231
240
  end
232
241
 
233
- target = LanguageOperator::Utils::SecurePath.expand_home_path('.config/fish/completions/aictl.fish')
242
+ target = LanguageOperator::Utils::SecurePath.expand_home_path('.config/fish/completions/langop.fish')
234
243
  FileUtils.mkdir_p(File.dirname(target))
235
244
  FileUtils.cp(completion_file, target)
236
245
 
@@ -191,8 +191,8 @@ module LanguageOperator
191
191
  ctx.client.get_resource('LanguageModel', model_name, ctx.namespace)
192
192
  Formatters::ProgressFormatter.error("Model '#{model_name}' already exists in cluster '#{ctx.name}'")
193
193
  puts
194
- puts "Use 'aictl model inspect #{model_name}' to view details"
195
- puts "Use 'aictl model edit #{model_name}' to modify it"
194
+ puts "Use 'langop model inspect #{model_name}' to view details"
195
+ puts "Use 'langop model edit #{model_name}' to modify it"
196
196
  return false
197
197
  rescue K8s::Error::NotFound
198
198
  # Expected - model doesn't exist yet
@@ -224,7 +224,9 @@ module LanguageOperator
224
224
  provider: provider_info[:provider_key],
225
225
  model: model_id,
226
226
  endpoint: provider_info[:endpoint],
227
- cluster: ctx.namespace
227
+ cluster: ctx.namespace,
228
+ cluster_ref: ctx.name,
229
+ k8s_client: ctx.client
228
230
  )
229
231
 
230
232
  # Add API key reference if secret was created
@@ -260,9 +262,9 @@ module LanguageOperator
260
262
  puts 'Next steps:'
261
263
  puts
262
264
  puts '1. Use this model in an agent:'
263
- puts " #{pastel.dim("aictl agent create --model #{model_name}")}"
265
+ puts " #{pastel.dim("langop agent create --model #{model_name}")}"
264
266
  puts '2. View model details:'
265
- puts " #{pastel.dim("aictl model inspect #{model_name}")}"
267
+ puts " #{pastel.dim("langop model inspect #{model_name}")}"
266
268
  puts
267
269
  end
268
270
  end
@@ -6,9 +6,9 @@ require_relative '../utils/secure_path'
6
6
 
7
7
  module LanguageOperator
8
8
  module Config
9
- # Manages cluster configuration in ~/.aictl/config.yaml
9
+ # Manages cluster configuration in ~/.langop/config.yaml
10
10
  class ClusterConfig
11
- CONFIG_DIR = LanguageOperator::Utils::SecurePath.expand_home_path('.aictl')
11
+ CONFIG_DIR = LanguageOperator::Utils::SecurePath.expand_home_path('.langop')
12
12
  CONFIG_PATH = File.join(CONFIG_DIR, 'config.yaml')
13
13
 
14
14
  class << self
@@ -90,7 +90,7 @@ module LanguageOperator
90
90
 
91
91
  def default_config
92
92
  {
93
- 'apiVersion' => 'aictl.langop.io/v1',
93
+ 'apiVersion' => 'langop.langop.io/v1',
94
94
  'kind' => 'Config',
95
95
  'current-cluster' => nil,
96
96
  'clusters' => []
@@ -13,7 +13,7 @@ module LanguageOperator
13
13
 
14
14
  # Language Operator specific values
15
15
  PROJECT_NAME = 'language-operator'
16
- MANAGED_BY_AICTL = 'aictl'
16
+ MANAGED_BY_AICTL = 'langop'
17
17
  COMPONENT_AGENT = 'agent'
18
18
  COMPONENT_TEST_AGENT = 'test-agent'
19
19