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.
- checksums.yaml +4 -4
- data/.claude/agents/README.md +16 -0
- data/.claude/agents/changelog-writer.md +181 -0
- data/.claude/hooks/README.md +43 -0
- data/.claude/hooks/node_modules/.bin/esbuild +1 -0
- data/.claude/hooks/node_modules/.bin/tsc +1 -0
- data/.claude/hooks/node_modules/.bin/tsserver +1 -0
- data/.claude/hooks/node_modules/.bin/tsx +1 -0
- data/.claude/hooks/node_modules/.package-lock.json +136 -0
- data/.claude/hooks/node_modules/@esbuild/linux-x64/README.md +3 -0
- data/.claude/hooks/node_modules/@esbuild/linux-x64/bin/esbuild +0 -0
- data/.claude/hooks/node_modules/@esbuild/linux-x64/package.json +20 -0
- data/.claude/hooks/node_modules/@types/node/LICENSE +21 -0
- data/.claude/hooks/node_modules/@types/node/README.md +15 -0
- data/.claude/hooks/node_modules/@types/node/assert/strict.d.ts +105 -0
- data/.claude/hooks/node_modules/@types/node/assert.d.ts +955 -0
- data/.claude/hooks/node_modules/@types/node/async_hooks.d.ts +623 -0
- data/.claude/hooks/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- data/.claude/hooks/node_modules/@types/node/buffer.d.ts +1810 -0
- data/.claude/hooks/node_modules/@types/node/child_process.d.ts +1428 -0
- data/.claude/hooks/node_modules/@types/node/cluster.d.ts +486 -0
- data/.claude/hooks/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- data/.claude/hooks/node_modules/@types/node/console.d.ts +151 -0
- data/.claude/hooks/node_modules/@types/node/constants.d.ts +20 -0
- data/.claude/hooks/node_modules/@types/node/crypto.d.ts +4065 -0
- data/.claude/hooks/node_modules/@types/node/dgram.d.ts +564 -0
- data/.claude/hooks/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- data/.claude/hooks/node_modules/@types/node/dns/promises.d.ts +503 -0
- data/.claude/hooks/node_modules/@types/node/dns.d.ts +922 -0
- data/.claude/hooks/node_modules/@types/node/domain.d.ts +166 -0
- data/.claude/hooks/node_modules/@types/node/events.d.ts +1054 -0
- data/.claude/hooks/node_modules/@types/node/fs/promises.d.ts +1316 -0
- data/.claude/hooks/node_modules/@types/node/fs.d.ts +4676 -0
- data/.claude/hooks/node_modules/@types/node/globals.d.ts +150 -0
- data/.claude/hooks/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- data/.claude/hooks/node_modules/@types/node/http.d.ts +2143 -0
- data/.claude/hooks/node_modules/@types/node/http2.d.ts +2480 -0
- data/.claude/hooks/node_modules/@types/node/https.d.ts +399 -0
- data/.claude/hooks/node_modules/@types/node/index.d.ts +115 -0
- data/.claude/hooks/node_modules/@types/node/inspector/promises.d.ts +41 -0
- data/.claude/hooks/node_modules/@types/node/inspector.d.ts +224 -0
- data/.claude/hooks/node_modules/@types/node/inspector.generated.d.ts +4226 -0
- data/.claude/hooks/node_modules/@types/node/module.d.ts +819 -0
- data/.claude/hooks/node_modules/@types/node/net.d.ts +933 -0
- data/.claude/hooks/node_modules/@types/node/os.d.ts +507 -0
- data/.claude/hooks/node_modules/@types/node/package.json +155 -0
- data/.claude/hooks/node_modules/@types/node/path/posix.d.ts +8 -0
- data/.claude/hooks/node_modules/@types/node/path/win32.d.ts +8 -0
- data/.claude/hooks/node_modules/@types/node/path.d.ts +187 -0
- data/.claude/hooks/node_modules/@types/node/perf_hooks.d.ts +621 -0
- data/.claude/hooks/node_modules/@types/node/process.d.ts +2097 -0
- data/.claude/hooks/node_modules/@types/node/punycode.d.ts +117 -0
- data/.claude/hooks/node_modules/@types/node/querystring.d.ts +152 -0
- data/.claude/hooks/node_modules/@types/node/quic.d.ts +910 -0
- data/.claude/hooks/node_modules/@types/node/readline/promises.d.ts +161 -0
- data/.claude/hooks/node_modules/@types/node/readline.d.ts +541 -0
- data/.claude/hooks/node_modules/@types/node/repl.d.ts +415 -0
- data/.claude/hooks/node_modules/@types/node/sea.d.ts +162 -0
- data/.claude/hooks/node_modules/@types/node/sqlite.d.ts +937 -0
- data/.claude/hooks/node_modules/@types/node/stream/consumers.d.ts +38 -0
- data/.claude/hooks/node_modules/@types/node/stream/promises.d.ts +211 -0
- data/.claude/hooks/node_modules/@types/node/stream/web.d.ts +296 -0
- data/.claude/hooks/node_modules/@types/node/stream.d.ts +1760 -0
- data/.claude/hooks/node_modules/@types/node/string_decoder.d.ts +67 -0
- data/.claude/hooks/node_modules/@types/node/test/reporters.d.ts +96 -0
- data/.claude/hooks/node_modules/@types/node/test.d.ts +2239 -0
- data/.claude/hooks/node_modules/@types/node/timers/promises.d.ts +108 -0
- data/.claude/hooks/node_modules/@types/node/timers.d.ts +159 -0
- data/.claude/hooks/node_modules/@types/node/tls.d.ts +1194 -0
- data/.claude/hooks/node_modules/@types/node/trace_events.d.ts +197 -0
- data/.claude/hooks/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- data/.claude/hooks/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- data/.claude/hooks/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- data/.claude/hooks/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- data/.claude/hooks/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- data/.claude/hooks/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- data/.claude/hooks/node_modules/@types/node/tty.d.ts +250 -0
- data/.claude/hooks/node_modules/@types/node/url.d.ts +519 -0
- data/.claude/hooks/node_modules/@types/node/util/types.d.ts +558 -0
- data/.claude/hooks/node_modules/@types/node/util.d.ts +1653 -0
- data/.claude/hooks/node_modules/@types/node/v8.d.ts +979 -0
- data/.claude/hooks/node_modules/@types/node/vm.d.ts +1180 -0
- data/.claude/hooks/node_modules/@types/node/wasi.d.ts +202 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/console.d.ts +9 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/events.d.ts +106 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/fetch.d.ts +54 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- data/.claude/hooks/node_modules/@types/node/web-globals/url.d.ts +24 -0
- data/.claude/hooks/node_modules/@types/node/worker_threads.d.ts +714 -0
- data/.claude/hooks/node_modules/@types/node/zlib.d.ts +618 -0
- data/.claude/hooks/node_modules/esbuild/LICENSE.md +21 -0
- data/.claude/hooks/node_modules/esbuild/README.md +3 -0
- data/.claude/hooks/node_modules/esbuild/bin/esbuild +0 -0
- data/.claude/hooks/node_modules/esbuild/install.js +289 -0
- data/.claude/hooks/node_modules/esbuild/lib/main.d.ts +716 -0
- data/.claude/hooks/node_modules/esbuild/lib/main.js +2242 -0
- data/.claude/hooks/node_modules/esbuild/package.json +49 -0
- data/.claude/hooks/node_modules/get-tsconfig/LICENSE +21 -0
- data/.claude/hooks/node_modules/get-tsconfig/README.md +235 -0
- data/.claude/hooks/node_modules/get-tsconfig/dist/index.cjs +7 -0
- data/.claude/hooks/node_modules/get-tsconfig/dist/index.d.cts +2088 -0
- data/.claude/hooks/node_modules/get-tsconfig/dist/index.d.mts +2088 -0
- data/.claude/hooks/node_modules/get-tsconfig/dist/index.mjs +7 -0
- data/.claude/hooks/node_modules/get-tsconfig/package.json +46 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/LICENSE +21 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/README.md +216 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.cjs +1 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.d.cts +11 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.d.mts +11 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/dist/index.mjs +1 -0
- data/.claude/hooks/node_modules/resolve-pkg-maps/package.json +42 -0
- data/.claude/hooks/node_modules/tsx/LICENSE +21 -0
- data/.claude/hooks/node_modules/tsx/README.md +32 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.d.cts +35 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.d.mts +35 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/api/index.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/index.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/cjs/index.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/cli.cjs +54 -0
- data/.claude/hooks/node_modules/tsx/dist/cli.mjs +55 -0
- data/.claude/hooks/node_modules/tsx/dist/client-BQVF1NaW.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/client-D6NvIMSC.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/api/index.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/api/index.d.cts +35 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/api/index.d.mts +35 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/api/index.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/index.cjs +2 -0
- data/.claude/hooks/node_modules/tsx/dist/esm/index.mjs +2 -0
- data/.claude/hooks/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/index-7AaEi15b.mjs +14 -0
- data/.claude/hooks/node_modules/tsx/dist/index-BWFBUo6r.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/index-gbaejti9.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/index-gckBtVBf.cjs +14 -0
- data/.claude/hooks/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +3 -0
- data/.claude/hooks/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +3 -0
- data/.claude/hooks/node_modules/tsx/dist/loader.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/loader.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/node-features-roYmp9jK.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/package-CeBgXWuR.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/package-Dxt5kIHw.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/patch-repl.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/patch-repl.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/preflight.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/preflight.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/register-2sWVXuRQ.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/register-B7jrtLTO.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/register-CFH5oNdT.mjs +4 -0
- data/.claude/hooks/node_modules/tsx/dist/register-D46fvsV_.cjs +4 -0
- data/.claude/hooks/node_modules/tsx/dist/repl.cjs +3 -0
- data/.claude/hooks/node_modules/tsx/dist/repl.mjs +3 -0
- data/.claude/hooks/node_modules/tsx/dist/require-D4F1Lv60.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/require-DQxpCAr4.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/suppress-warnings.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/suppress-warnings.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +1 -0
- data/.claude/hooks/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +5 -0
- data/.claude/hooks/node_modules/tsx/package.json +68 -0
- data/.claude/hooks/node_modules/typescript/LICENSE.txt +55 -0
- data/.claude/hooks/node_modules/typescript/README.md +50 -0
- data/.claude/hooks/node_modules/typescript/SECURITY.md +41 -0
- data/.claude/hooks/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
- data/.claude/hooks/node_modules/typescript/bin/tsc +2 -0
- data/.claude/hooks/node_modules/typescript/bin/tsserver +2 -0
- data/.claude/hooks/node_modules/typescript/lib/_tsc.js +133818 -0
- data/.claude/hooks/node_modules/typescript/lib/_tsserver.js +659 -0
- data/.claude/hooks/node_modules/typescript/lib/_typingsInstaller.js +222 -0
- data/.claude/hooks/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.d.ts +22 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.es6.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
- data/.claude/hooks/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
- data/.claude/hooks/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/tsc.js +8 -0
- data/.claude/hooks/node_modules/typescript/lib/tsserver.js +8 -0
- data/.claude/hooks/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
- data/.claude/hooks/node_modules/typescript/lib/tsserverlibrary.js +21 -0
- data/.claude/hooks/node_modules/typescript/lib/typesMap.json +497 -0
- data/.claude/hooks/node_modules/typescript/lib/typescript.d.ts +11437 -0
- data/.claude/hooks/node_modules/typescript/lib/typescript.js +200276 -0
- data/.claude/hooks/node_modules/typescript/lib/typingsInstaller.js +8 -0
- data/.claude/hooks/node_modules/typescript/lib/watchGuard.js +53 -0
- data/.claude/hooks/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
- data/.claude/hooks/node_modules/typescript/package.json +120 -0
- data/.claude/hooks/node_modules/undici-types/LICENSE +21 -0
- data/.claude/hooks/node_modules/undici-types/README.md +6 -0
- data/.claude/hooks/node_modules/undici-types/agent.d.ts +32 -0
- data/.claude/hooks/node_modules/undici-types/api.d.ts +43 -0
- data/.claude/hooks/node_modules/undici-types/balanced-pool.d.ts +29 -0
- data/.claude/hooks/node_modules/undici-types/cache-interceptor.d.ts +172 -0
- data/.claude/hooks/node_modules/undici-types/cache.d.ts +36 -0
- data/.claude/hooks/node_modules/undici-types/client-stats.d.ts +15 -0
- data/.claude/hooks/node_modules/undici-types/client.d.ts +108 -0
- data/.claude/hooks/node_modules/undici-types/connector.d.ts +34 -0
- data/.claude/hooks/node_modules/undici-types/content-type.d.ts +21 -0
- data/.claude/hooks/node_modules/undici-types/cookies.d.ts +30 -0
- data/.claude/hooks/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- data/.claude/hooks/node_modules/undici-types/dispatcher.d.ts +276 -0
- data/.claude/hooks/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- data/.claude/hooks/node_modules/undici-types/errors.d.ts +161 -0
- data/.claude/hooks/node_modules/undici-types/eventsource.d.ts +66 -0
- data/.claude/hooks/node_modules/undici-types/fetch.d.ts +211 -0
- data/.claude/hooks/node_modules/undici-types/formdata.d.ts +108 -0
- data/.claude/hooks/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- data/.claude/hooks/node_modules/undici-types/global-origin.d.ts +7 -0
- data/.claude/hooks/node_modules/undici-types/h2c-client.d.ts +73 -0
- data/.claude/hooks/node_modules/undici-types/handlers.d.ts +15 -0
- data/.claude/hooks/node_modules/undici-types/header.d.ts +160 -0
- data/.claude/hooks/node_modules/undici-types/index.d.ts +80 -0
- data/.claude/hooks/node_modules/undici-types/interceptors.d.ts +39 -0
- data/.claude/hooks/node_modules/undici-types/mock-agent.d.ts +68 -0
- data/.claude/hooks/node_modules/undici-types/mock-call-history.d.ts +111 -0
- data/.claude/hooks/node_modules/undici-types/mock-client.d.ts +27 -0
- data/.claude/hooks/node_modules/undici-types/mock-errors.d.ts +12 -0
- data/.claude/hooks/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- data/.claude/hooks/node_modules/undici-types/mock-pool.d.ts +27 -0
- data/.claude/hooks/node_modules/undici-types/package.json +55 -0
- data/.claude/hooks/node_modules/undici-types/patch.d.ts +29 -0
- data/.claude/hooks/node_modules/undici-types/pool-stats.d.ts +19 -0
- data/.claude/hooks/node_modules/undici-types/pool.d.ts +41 -0
- data/.claude/hooks/node_modules/undici-types/proxy-agent.d.ts +29 -0
- data/.claude/hooks/node_modules/undici-types/readable.d.ts +68 -0
- data/.claude/hooks/node_modules/undici-types/retry-agent.d.ts +8 -0
- data/.claude/hooks/node_modules/undici-types/retry-handler.d.ts +125 -0
- data/.claude/hooks/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- data/.claude/hooks/node_modules/undici-types/util.d.ts +18 -0
- data/.claude/hooks/node_modules/undici-types/utility.d.ts +7 -0
- data/.claude/hooks/node_modules/undici-types/webidl.d.ts +341 -0
- data/.claude/hooks/node_modules/undici-types/websocket.d.ts +186 -0
- data/.claude/hooks/package-lock.json +562 -0
- data/.claude/hooks/package.json +19 -0
- data/.claude/hooks/skill-activation-prompt.sh +11 -0
- data/.claude/hooks/skill-activation-prompt.ts +185 -0
- data/.claude/hooks/tsconfig.json +12 -0
- data/.claude/settings.json +33 -0
- data/.claude/skills/README.md +29 -0
- data/.claude/skills/ruby-gem-development/SKILL.md +293 -0
- data/.claude/skills/skill-rules.json +117 -0
- data/.claude/skills/thor-cli-development/SKILL.md +431 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +3 -1
- data/completions/{_aictl → _langop} +37 -37
- data/completions/{aictl.bash → langop.bash} +16 -16
- data/completions/langop.fish +114 -0
- data/components/agent/Gemfile +1 -1
- data/components/tool/Gemfile +1 -1
- data/docs/README.md +10 -10
- data/docs/agent-internals.md +1 -1
- data/docs/cheat-sheet.md +76 -76
- data/docs/cli-reference.md +71 -71
- data/docs/how-agents-work.md +1 -1
- data/docs/installation.md +30 -30
- data/docs/quickstart.md +30 -30
- data/docs/using-tools.md +11 -11
- data/docs/webhooks.md +6 -6
- data/examples/ux_helpers_demo.rb +4 -4
- data/lib/language_operator/agent/task_executor.rb +0 -37
- data/lib/language_operator/agent/web_server.rb +311 -323
- data/lib/language_operator/cli/commands/agent/base.rb +16 -15
- data/lib/language_operator/cli/commands/agent/code_operations.rb +6 -6
- data/lib/language_operator/cli/commands/agent/helpers/synthesis_watcher.rb +1 -1
- data/lib/language_operator/cli/commands/agent/lifecycle.rb +2 -2
- data/lib/language_operator/cli/commands/agent/logs.rb +2 -2
- data/lib/language_operator/cli/commands/agent/workspace.rb +8 -8
- data/lib/language_operator/cli/commands/cluster.rb +172 -158
- data/lib/language_operator/cli/commands/install.rb +878 -81
- data/lib/language_operator/cli/commands/model/base.rb +7 -6
- data/lib/language_operator/cli/commands/organization.rb +61 -0
- data/lib/language_operator/cli/commands/persona.rb +10 -8
- data/lib/language_operator/cli/commands/status.rb +83 -13
- data/lib/language_operator/cli/commands/system/exec.rb +10 -10
- data/lib/language_operator/cli/commands/system/schema.rb +6 -6
- data/lib/language_operator/cli/commands/system/synthesis_template.rb +6 -6
- data/lib/language_operator/cli/commands/system/synthesize.rb +14 -14
- data/lib/language_operator/cli/commands/system/validate_template.rb +4 -4
- data/lib/language_operator/cli/commands/tool/base.rb +1 -1
- data/lib/language_operator/cli/commands/tool/install.rb +2 -2
- data/lib/language_operator/cli/commands/tool/search.rb +3 -3
- data/lib/language_operator/cli/commands/ui.rb +173 -0
- data/lib/language_operator/cli/commands/use.rb +80 -9
- data/lib/language_operator/cli/errors/suggestions.rb +21 -21
- data/lib/language_operator/cli/formatters/progress_formatter.rb +2 -1
- data/lib/language_operator/cli/formatters/table_formatter.rb +21 -1
- data/lib/language_operator/cli/helpers/cluster_validator.rb +2 -2
- data/lib/language_operator/cli/helpers/health_checker.rb +263 -0
- data/lib/language_operator/cli/helpers/kubeconfig_validator.rb +3 -3
- data/lib/language_operator/cli/helpers/ux_helper.rb +4 -3
- data/lib/language_operator/cli/main.rb +30 -21
- data/lib/language_operator/cli/wizards/model_wizard.rb +7 -5
- data/lib/language_operator/config/cluster_config.rb +3 -3
- data/lib/language_operator/constants/kubernetes_labels.rb +1 -1
- data/lib/language_operator/kubernetes/client.rb +53 -109
- data/lib/language_operator/kubernetes/resource_builder.rb +46 -14
- data/lib/language_operator/templates/schema/agent_dsl_openapi.yaml +1 -1
- data/lib/language_operator/templates/schema/agent_dsl_schema.json +1 -1
- data/lib/language_operator/utils/org_context.rb +100 -0
- data/lib/language_operator/version.rb +1 -1
- data/synth/001/Makefile +1 -1
- data/synth/002/Makefile +1 -1
- data/synth/003/Makefile +1 -1
- data/synth/004/Makefile +1 -1
- metadata +384 -11
- data/completions/aictl.fish +0 -114
- data/lib/language_operator/agent/event_config.rb +0 -172
- data/lib/language_operator/cli/commands/quickstart.rb +0 -22
- data/lib/language_operator/cli/wizards/quickstart_wizard.rb +0 -561
- /data/bin/{aictl → langop} +0 -0
|
@@ -22,7 +22,7 @@ module LanguageOperator
|
|
|
22
22
|
models = list_resources_or_empty(RESOURCE_MODEL, resource_name: 'models') do
|
|
23
23
|
puts
|
|
24
24
|
puts 'Create a model with:'
|
|
25
|
-
puts '
|
|
25
|
+
puts ' langop model create <name> --provider <provider> --model <model>'
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
return if models.empty?
|
|
@@ -53,10 +53,10 @@ module LanguageOperator
|
|
|
53
53
|
If NAME is omitted and no options are provided, an interactive wizard will guide you.
|
|
54
54
|
|
|
55
55
|
Examples:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
langop model create # Launch interactive wizard
|
|
57
|
+
langop model create gpt4 --provider openai --model gpt-4-turbo
|
|
58
|
+
langop model create claude --provider anthropic --model claude-3-opus-20240229
|
|
59
|
+
langop model create local --provider openai_compatible --model llama-3 --endpoint http://localhost:8080
|
|
60
60
|
DESC
|
|
61
61
|
option :provider, type: :string, required: false, desc: 'LLM provider (e.g., openai, anthropic, openai_compatible)'
|
|
62
62
|
option :model, type: :string, required: false, desc: 'Model identifier (e.g., gpt-4, claude-3-opus)'
|
|
@@ -87,7 +87,8 @@ module LanguageOperator
|
|
|
87
87
|
model: options[:model],
|
|
88
88
|
endpoint: options[:endpoint],
|
|
89
89
|
cluster: ctx.namespace,
|
|
90
|
-
cluster_ref: ctx.name
|
|
90
|
+
cluster_ref: ctx.name,
|
|
91
|
+
k8s_client: ctx.client
|
|
91
92
|
)
|
|
92
93
|
|
|
93
94
|
# Handle dry-run: output manifest and exit
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../base_command'
|
|
4
|
+
require_relative '../formatters/table_formatter'
|
|
5
|
+
require_relative '../formatters/progress_formatter'
|
|
6
|
+
require_relative '../../kubernetes/client'
|
|
7
|
+
|
|
8
|
+
module LanguageOperator
|
|
9
|
+
module CLI
|
|
10
|
+
module Commands
|
|
11
|
+
# Organization management commands
|
|
12
|
+
class Organization < BaseCommand
|
|
13
|
+
desc 'list', 'List all organizations in the cluster'
|
|
14
|
+
long_desc <<-DESC
|
|
15
|
+
Lists all organizations present in the Kubernetes cluster.
|
|
16
|
+
|
|
17
|
+
Organizations are identified by namespaces with the label:
|
|
18
|
+
langop.io/type=organization
|
|
19
|
+
|
|
20
|
+
Examples:
|
|
21
|
+
# List all organizations
|
|
22
|
+
langop organization list
|
|
23
|
+
DESC
|
|
24
|
+
def list
|
|
25
|
+
handle_command_error('list organizations') do
|
|
26
|
+
organizations_data = get_organizations_data
|
|
27
|
+
Formatters::TableFormatter.organizations(organizations_data)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def get_organizations_data
|
|
34
|
+
k8s = Kubernetes::Client.new
|
|
35
|
+
|
|
36
|
+
# Find all namespaces with organization label
|
|
37
|
+
namespaces = k8s.list_namespaces(
|
|
38
|
+
label_selector: 'langop.io/type=organization'
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
namespaces.map do |namespace|
|
|
42
|
+
{
|
|
43
|
+
namespace: namespace.dig('metadata', 'name'),
|
|
44
|
+
organization_id: namespace.dig('metadata', 'labels', 'langop.io/organization-id') || 'N/A',
|
|
45
|
+
plan: namespace.dig('metadata', 'labels', 'langop.io/plan') || 'N/A',
|
|
46
|
+
created: format_creation_date(namespace.dig('metadata', 'creationTimestamp'))
|
|
47
|
+
}
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def format_creation_date(timestamp)
|
|
52
|
+
return 'N/A' unless timestamp
|
|
53
|
+
|
|
54
|
+
Time.parse(timestamp).strftime('%Y-%m-%d %H:%M')
|
|
55
|
+
rescue StandardError
|
|
56
|
+
'N/A'
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -21,7 +21,7 @@ module LanguageOperator
|
|
|
21
21
|
puts 'Personas define the personality and capabilities of agents.'
|
|
22
22
|
puts
|
|
23
23
|
puts 'Create a persona with:'
|
|
24
|
-
puts '
|
|
24
|
+
puts ' langop persona create <name>'
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
return if personas.empty?
|
|
@@ -95,7 +95,7 @@ module LanguageOperator
|
|
|
95
95
|
puts '═' * 80
|
|
96
96
|
puts
|
|
97
97
|
Formatters::ProgressFormatter.info('Use this persona when creating agents:')
|
|
98
|
-
puts "
|
|
98
|
+
puts " langop agent create \"description\" --persona #{name}"
|
|
99
99
|
puts
|
|
100
100
|
end
|
|
101
101
|
end
|
|
@@ -105,8 +105,8 @@ module LanguageOperator
|
|
|
105
105
|
Create a new persona with the specified name using an interactive wizard.
|
|
106
106
|
|
|
107
107
|
Examples:
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
langop persona create helpful-assistant
|
|
109
|
+
langop persona create code-reviewer --from helpful-assistant
|
|
110
110
|
DESC
|
|
111
111
|
option :cluster, type: :string, desc: 'Override current cluster context'
|
|
112
112
|
option :from, type: :string, desc: 'Copy from existing persona as starting point'
|
|
@@ -118,7 +118,7 @@ module LanguageOperator
|
|
|
118
118
|
Formatters::ProgressFormatter.error("Persona '#{name}' already exists in cluster '#{ctx.name}'")
|
|
119
119
|
puts
|
|
120
120
|
puts 'Use a different name or delete the existing persona first:'
|
|
121
|
-
puts "
|
|
121
|
+
puts " langop persona delete #{name}"
|
|
122
122
|
exit 1
|
|
123
123
|
rescue K8s::Error::NotFound
|
|
124
124
|
# Good - persona doesn't exist yet
|
|
@@ -192,7 +192,9 @@ module LanguageOperator
|
|
|
192
192
|
persona_resource = Kubernetes::ResourceBuilder.build_persona(
|
|
193
193
|
name: name,
|
|
194
194
|
spec: persona_spec,
|
|
195
|
-
namespace: ctx.namespace
|
|
195
|
+
namespace: ctx.namespace,
|
|
196
|
+
cluster_ref: ctx.name,
|
|
197
|
+
k8s_client: ctx.client
|
|
196
198
|
)
|
|
197
199
|
|
|
198
200
|
# Show preview
|
|
@@ -218,7 +220,7 @@ module LanguageOperator
|
|
|
218
220
|
Formatters::ProgressFormatter.success("Persona '#{name}' created successfully")
|
|
219
221
|
puts
|
|
220
222
|
puts 'Use this persona when creating agents:'
|
|
221
|
-
puts "
|
|
223
|
+
puts " langop agent create \"description\" --persona #{name}"
|
|
222
224
|
end
|
|
223
225
|
end
|
|
224
226
|
|
|
@@ -230,7 +232,7 @@ module LanguageOperator
|
|
|
230
232
|
Any agents using this persona will be automatically re-synthesized.
|
|
231
233
|
|
|
232
234
|
Example:
|
|
233
|
-
|
|
235
|
+
langop persona edit helpful-assistant
|
|
234
236
|
DESC
|
|
235
237
|
option :cluster, type: :string, desc: 'Override current cluster context'
|
|
236
238
|
def edit(name)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative '../command_loader'
|
|
4
|
+
require_relative '../helpers/health_checker'
|
|
4
5
|
|
|
5
6
|
module LanguageOperator
|
|
6
7
|
module CLI
|
|
@@ -33,14 +34,39 @@ module LanguageOperator
|
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
|
|
36
|
-
#
|
|
37
|
+
# Early exit if operator not installed
|
|
38
|
+
unless k8s.operator_installed?
|
|
39
|
+
logo(title: 'cluster status')
|
|
40
|
+
puts
|
|
41
|
+
puts 'Install the operator with:'
|
|
42
|
+
puts ' langop install'
|
|
43
|
+
puts
|
|
44
|
+
return
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Run health checks first
|
|
37
48
|
logo(title: 'cluster status')
|
|
49
|
+
begin
|
|
50
|
+
# Use 'language-operator' namespace for system components, not the cluster namespace
|
|
51
|
+
health_checker = Helpers::HealthChecker.new(k8s, 'language-operator', current_cluster, cluster_config[:namespace])
|
|
52
|
+
health_results = health_checker.run_all_checks
|
|
53
|
+
|
|
54
|
+
# Display any health check failures
|
|
55
|
+
display_health_summary(health_results)
|
|
56
|
+
rescue StandardError => e
|
|
57
|
+
Formatters::ProgressFormatter.error("Health check failed: #{e.message}")
|
|
58
|
+
puts e.backtrace.first(3).join("\n") if ENV['DEBUG']
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Then show cluster details
|
|
62
|
+
puts
|
|
38
63
|
|
|
39
64
|
if cluster_resource
|
|
40
65
|
# Use actual cluster resource data
|
|
41
66
|
status = cluster_resource.dig('status', 'phase') || 'Unknown'
|
|
42
67
|
domain = cluster_resource.dig('spec', 'domain')
|
|
43
68
|
created = cluster_resource.dig('metadata', 'creationTimestamp')
|
|
69
|
+
org_id = cluster_resource.dig('metadata', 'labels', 'langop.io/organization-id')
|
|
44
70
|
|
|
45
71
|
format_cluster_details(
|
|
46
72
|
name: current_cluster,
|
|
@@ -48,7 +74,8 @@ module LanguageOperator
|
|
|
48
74
|
context: cluster_config[:context],
|
|
49
75
|
status: status,
|
|
50
76
|
domain: domain,
|
|
51
|
-
created: created
|
|
77
|
+
created: created,
|
|
78
|
+
org_id: org_id
|
|
52
79
|
)
|
|
53
80
|
else
|
|
54
81
|
# Fallback to local config and operator status
|
|
@@ -60,15 +87,6 @@ module LanguageOperator
|
|
|
60
87
|
)
|
|
61
88
|
end
|
|
62
89
|
|
|
63
|
-
# Early exit if operator not installed
|
|
64
|
-
unless k8s.operator_installed?
|
|
65
|
-
puts
|
|
66
|
-
puts 'Install the operator with:'
|
|
67
|
-
puts ' aictl install'
|
|
68
|
-
puts
|
|
69
|
-
return
|
|
70
|
-
end
|
|
71
|
-
|
|
72
90
|
else
|
|
73
91
|
Formatters::ProgressFormatter.warn('No cluster selected')
|
|
74
92
|
puts
|
|
@@ -79,10 +97,10 @@ module LanguageOperator
|
|
|
79
97
|
end
|
|
80
98
|
puts
|
|
81
99
|
puts 'Select a cluster with:'
|
|
82
|
-
puts '
|
|
100
|
+
puts ' langop use <cluster>'
|
|
83
101
|
else
|
|
84
102
|
puts 'No clusters found. Create one with:'
|
|
85
|
-
puts '
|
|
103
|
+
puts ' langop cluster create <name>'
|
|
86
104
|
end
|
|
87
105
|
end
|
|
88
106
|
|
|
@@ -106,6 +124,58 @@ module LanguageOperator
|
|
|
106
124
|
end
|
|
107
125
|
stats
|
|
108
126
|
end
|
|
127
|
+
|
|
128
|
+
def display_health_summary(results)
|
|
129
|
+
# Show any health issues
|
|
130
|
+
issues = []
|
|
131
|
+
|
|
132
|
+
results.each do |component, result|
|
|
133
|
+
next if result[:healthy]
|
|
134
|
+
|
|
135
|
+
case component
|
|
136
|
+
when :cluster
|
|
137
|
+
if result[:error]
|
|
138
|
+
issues << "Cluster: #{result[:error]}"
|
|
139
|
+
else
|
|
140
|
+
issues << "Cluster: unexpected issue"
|
|
141
|
+
end
|
|
142
|
+
when :dashboard
|
|
143
|
+
if result[:error]
|
|
144
|
+
issues << "Dashboard: #{result[:error]}"
|
|
145
|
+
else
|
|
146
|
+
issues << "Dashboard: #{result[:ready_replicas]}/#{result[:desired_replicas]} pods ready"
|
|
147
|
+
end
|
|
148
|
+
when :operator
|
|
149
|
+
if result[:error]
|
|
150
|
+
issues << "Operator: #{result[:error]}"
|
|
151
|
+
else
|
|
152
|
+
issues << "Operator: #{result[:ready_replicas]}/#{result[:desired_replicas]} pods ready"
|
|
153
|
+
end
|
|
154
|
+
when :clickhouse
|
|
155
|
+
if result[:error]
|
|
156
|
+
issues << "ClickHouse: #{result[:error]}"
|
|
157
|
+
else
|
|
158
|
+
auth_status = result[:auth_works] ? 'auth OK' : 'auth failed'
|
|
159
|
+
issues << "ClickHouse: connection failed (#{auth_status})"
|
|
160
|
+
end
|
|
161
|
+
when :postgres
|
|
162
|
+
if result[:error]
|
|
163
|
+
issues << "PostgreSQL: #{result[:error]}"
|
|
164
|
+
else
|
|
165
|
+
auth_status = result[:auth_works] ? 'auth OK' : 'auth failed'
|
|
166
|
+
issues << "PostgreSQL: connection failed (#{auth_status})"
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
if issues.any?
|
|
172
|
+
puts
|
|
173
|
+
Formatters::ProgressFormatter.warn('Health check issues detected:')
|
|
174
|
+
issues.each do |issue|
|
|
175
|
+
puts " • #{issue}"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
109
179
|
end
|
|
110
180
|
end
|
|
111
181
|
end
|
|
@@ -22,22 +22,22 @@ module LanguageOperator
|
|
|
22
22
|
|
|
23
23
|
Examples:
|
|
24
24
|
# Execute a synthesized agent file
|
|
25
|
-
|
|
25
|
+
langop system exec agent.rb
|
|
26
26
|
|
|
27
27
|
# Execute with a custom agent name
|
|
28
|
-
|
|
28
|
+
langop system exec agent.rb --agent-name my-test
|
|
29
29
|
|
|
30
30
|
# Keep the pod after execution for debugging
|
|
31
|
-
|
|
31
|
+
langop system exec agent.rb --keep-pod
|
|
32
32
|
|
|
33
33
|
# Use a different agent image
|
|
34
|
-
|
|
34
|
+
langop system exec agent.rb --image ghcr.io/language-operator/agent:v0.1.0
|
|
35
35
|
|
|
36
36
|
# Read agent code from STDIN
|
|
37
|
-
cat agent.rb |
|
|
37
|
+
cat agent.rb | langop system exec
|
|
38
38
|
|
|
39
39
|
# Pipe synthesized code directly to execution
|
|
40
|
-
cat agent.txt |
|
|
40
|
+
cat agent.txt | langop system synthesize | langop system exec
|
|
41
41
|
DESC
|
|
42
42
|
option :agent_name, type: :string, default: 'test-agent', desc: 'Name for the test agent pod'
|
|
43
43
|
option :keep_pod, type: :boolean, default: false, desc: 'Keep the pod after execution (for debugging)'
|
|
@@ -68,8 +68,8 @@ module LanguageOperator
|
|
|
68
68
|
Formatters::ProgressFormatter.error('No agent code provided')
|
|
69
69
|
puts
|
|
70
70
|
puts 'Provide agent code either as a file or via STDIN:'
|
|
71
|
-
puts '
|
|
72
|
-
puts ' cat agent.rb |
|
|
71
|
+
puts ' langop system exec agent.rb'
|
|
72
|
+
puts ' cat agent.rb | langop system exec'
|
|
73
73
|
exit 1
|
|
74
74
|
else
|
|
75
75
|
code = $stdin.read.strip
|
|
@@ -77,8 +77,8 @@ module LanguageOperator
|
|
|
77
77
|
Formatters::ProgressFormatter.error('No agent code provided')
|
|
78
78
|
puts
|
|
79
79
|
puts 'Provide agent code either as a file or via STDIN:'
|
|
80
|
-
puts '
|
|
81
|
-
puts ' cat agent.rb |
|
|
80
|
+
puts ' langop system exec agent.rb'
|
|
81
|
+
puts ' cat agent.rb | langop system exec'
|
|
82
82
|
exit 1
|
|
83
83
|
end
|
|
84
84
|
code
|
|
@@ -21,20 +21,20 @@ module LanguageOperator
|
|
|
21
21
|
|
|
22
22
|
Examples:
|
|
23
23
|
# Export JSON schema (default)
|
|
24
|
-
|
|
24
|
+
langop system schema
|
|
25
25
|
|
|
26
26
|
# Export as YAML
|
|
27
|
-
|
|
27
|
+
langop system schema --format yaml
|
|
28
28
|
|
|
29
29
|
# Export OpenAPI 3.0 specification
|
|
30
|
-
|
|
30
|
+
langop system schema --format openapi
|
|
31
31
|
|
|
32
32
|
# Show schema version only
|
|
33
|
-
|
|
33
|
+
langop system schema --version
|
|
34
34
|
|
|
35
35
|
# Save to file
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
langop system schema > schema.json
|
|
37
|
+
langop system schema --format openapi > openapi.json
|
|
38
38
|
DESC
|
|
39
39
|
option :format, type: :string, default: 'json', desc: 'Output format (json, yaml, openapi)'
|
|
40
40
|
option :version, type: :boolean, default: false, desc: 'Show schema version only'
|
|
@@ -21,22 +21,22 @@ module LanguageOperator
|
|
|
21
21
|
|
|
22
22
|
Examples:
|
|
23
23
|
# Export agent synthesis template (default)
|
|
24
|
-
|
|
24
|
+
langop system synthesis-template
|
|
25
25
|
|
|
26
26
|
# Export persona distillation template
|
|
27
|
-
|
|
27
|
+
langop system synthesis-template --type persona
|
|
28
28
|
|
|
29
29
|
# Export as JSON with schema included
|
|
30
|
-
|
|
30
|
+
langop system synthesis-template --format json --with-schema
|
|
31
31
|
|
|
32
32
|
# Export as YAML
|
|
33
|
-
|
|
33
|
+
langop system synthesis-template --format yaml
|
|
34
34
|
|
|
35
35
|
# Validate template syntax
|
|
36
|
-
|
|
36
|
+
langop system synthesis-template --validate
|
|
37
37
|
|
|
38
38
|
# Save to file
|
|
39
|
-
|
|
39
|
+
langop system synthesis-template > agent_synthesis.tmpl
|
|
40
40
|
DESC
|
|
41
41
|
option :format, type: :string, default: 'template', desc: 'Output format (template, json, yaml)'
|
|
42
42
|
option :type, type: :string, default: 'agent', desc: 'Template type (agent, persona)'
|
|
@@ -26,25 +26,25 @@ module LanguageOperator
|
|
|
26
26
|
|
|
27
27
|
Examples:
|
|
28
28
|
# Test with dry-run (show prompt only)
|
|
29
|
-
|
|
29
|
+
langop system synthesize "Monitor GitHub issues daily" --dry-run
|
|
30
30
|
|
|
31
31
|
# Generate code from instructions (auto-selects first available model)
|
|
32
|
-
|
|
32
|
+
langop system synthesize "Send daily reports to Slack"
|
|
33
33
|
|
|
34
34
|
# Use a specific cluster model
|
|
35
|
-
|
|
35
|
+
langop system synthesize "Process webhooks from GitHub" --model my-claude
|
|
36
36
|
|
|
37
37
|
# Output raw code without formatting (useful for piping to files)
|
|
38
|
-
|
|
38
|
+
langop system synthesize "Monitor logs" --raw > agent.rb
|
|
39
39
|
|
|
40
40
|
# Read instructions from STDIN
|
|
41
|
-
cat instructions.txt |
|
|
41
|
+
cat instructions.txt | langop system synthesize > agent.rb
|
|
42
42
|
|
|
43
43
|
# Read from STDIN with pipe
|
|
44
|
-
echo "Monitor GitHub issues" |
|
|
44
|
+
echo "Monitor GitHub issues" | langop system synthesize --raw
|
|
45
45
|
|
|
46
46
|
# Specify custom agent name and tools
|
|
47
|
-
|
|
47
|
+
langop system synthesize "Process webhooks from GitHub" \\
|
|
48
48
|
--agent-name github-processor \\
|
|
49
49
|
--tools github,slack \\
|
|
50
50
|
--model my-gpt4
|
|
@@ -64,8 +64,8 @@ module LanguageOperator
|
|
|
64
64
|
Formatters::ProgressFormatter.error('No instructions provided')
|
|
65
65
|
puts
|
|
66
66
|
puts 'Provide instructions either as an argument or via STDIN:'
|
|
67
|
-
puts '
|
|
68
|
-
puts ' cat instructions.txt |
|
|
67
|
+
puts ' langop system synthesize "Your instructions here"'
|
|
68
|
+
puts ' cat instructions.txt | langop system synthesize'
|
|
69
69
|
exit 1
|
|
70
70
|
else
|
|
71
71
|
instructions = $stdin.read.strip
|
|
@@ -73,8 +73,8 @@ module LanguageOperator
|
|
|
73
73
|
Formatters::ProgressFormatter.error('No instructions provided')
|
|
74
74
|
puts
|
|
75
75
|
puts 'Provide instructions either as an argument or via STDIN:'
|
|
76
|
-
puts '
|
|
77
|
-
puts ' cat instructions.txt |
|
|
76
|
+
puts ' langop system synthesize "Your instructions here"'
|
|
77
|
+
puts ' cat instructions.txt | langop system synthesize'
|
|
78
78
|
exit 1
|
|
79
79
|
end
|
|
80
80
|
end
|
|
@@ -177,7 +177,7 @@ module LanguageOperator
|
|
|
177
177
|
models = detect_available_models
|
|
178
178
|
return models.map { |model| "- #{model}" }.join("\n") unless models.empty?
|
|
179
179
|
|
|
180
|
-
return 'No models available (run:
|
|
180
|
+
return 'No models available (run: langop model list)'
|
|
181
181
|
end
|
|
182
182
|
|
|
183
183
|
models = models_str.split(',').map(&:strip)
|
|
@@ -205,10 +205,10 @@ module LanguageOperator
|
|
|
205
205
|
Formatters::ProgressFormatter.error('No models available in cluster')
|
|
206
206
|
puts
|
|
207
207
|
puts 'Please create a model first:'
|
|
208
|
-
puts '
|
|
208
|
+
puts ' langop model create'
|
|
209
209
|
puts
|
|
210
210
|
puts 'Or list existing models:'
|
|
211
|
-
puts '
|
|
211
|
+
puts ' langop model list'
|
|
212
212
|
exit 1
|
|
213
213
|
end
|
|
214
214
|
|
|
@@ -18,16 +18,16 @@ module LanguageOperator
|
|
|
18
18
|
|
|
19
19
|
Examples:
|
|
20
20
|
# Validate a custom template file
|
|
21
|
-
|
|
21
|
+
langop system validate_template --template /path/to/template.tmpl
|
|
22
22
|
|
|
23
23
|
# Validate the bundled agent template (default)
|
|
24
|
-
|
|
24
|
+
langop system validate_template
|
|
25
25
|
|
|
26
26
|
# Validate the bundled persona template
|
|
27
|
-
|
|
27
|
+
langop system validate_template --type persona
|
|
28
28
|
|
|
29
29
|
# Verbose output with all violations
|
|
30
|
-
|
|
30
|
+
langop system validate_template --template mytemplate.tmpl --verbose
|
|
31
31
|
DESC
|
|
32
32
|
option :template, type: :string, desc: 'Path to template file (defaults to bundled template)'
|
|
33
33
|
option :type, type: :string, default: 'agent', desc: 'Template type if using bundled template (agent, persona)'
|
|
@@ -127,7 +127,7 @@ module LanguageOperator
|
|
|
127
127
|
puts
|
|
128
128
|
if tool_config['authRequired']
|
|
129
129
|
puts 'This tool requires authentication. Configure it with:'
|
|
130
|
-
puts pastel.dim("
|
|
130
|
+
puts pastel.dim(" langop tool auth #{tool_name}")
|
|
131
131
|
else
|
|
132
132
|
puts "Tool '#{tool_name}' is now available for agents to use"
|
|
133
133
|
end
|
|
@@ -139,7 +139,7 @@ module LanguageOperator
|
|
|
139
139
|
def auth(tool_name)
|
|
140
140
|
handle_command_error('configure auth') do
|
|
141
141
|
tool = get_resource_or_exit(LanguageOperator::Constants::RESOURCE_TOOL, tool_name,
|
|
142
|
-
error_message: "Tool '#{tool_name}' not found. Install it first with:
|
|
142
|
+
error_message: "Tool '#{tool_name}' not found. Install it first with: langop tool install #{tool_name}")
|
|
143
143
|
|
|
144
144
|
puts "Configure authentication for tool '#{tool_name}'"
|
|
145
145
|
puts
|
|
@@ -18,9 +18,9 @@ module LanguageOperator
|
|
|
18
18
|
With a pattern, filters tools by name or description (case-insensitive).
|
|
19
19
|
|
|
20
20
|
Examples:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
langop tool search # List all tools
|
|
22
|
+
langop tool search web # Find tools matching "web"
|
|
23
|
+
langop tool search email # Find tools matching "email"
|
|
24
24
|
DESC
|
|
25
25
|
def search(pattern = nil)
|
|
26
26
|
handle_command_error('search tools') do
|