karajan-code 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/node_modules/@karajan/core/README.md +42 -0
- package/node_modules/@karajan/core/package.json +38 -0
- package/node_modules/@karajan/core/src/atomic-write.js +43 -0
- package/node_modules/@karajan/core/src/cost/index.js +102 -0
- package/node_modules/@karajan/core/src/hu-snapshot.js +105 -0
- package/node_modules/@karajan/core/src/index.js +18 -0
- package/node_modules/@karajan/core/src/paths.js +123 -0
- package/node_modules/@karajan/core/src/plan-hu-ops.js +338 -0
- package/node_modules/@karajan/core/src/plan-id.js +45 -0
- package/node_modules/@karajan/core/src/plan-validation.js +82 -0
- package/node_modules/@karajan/core/src/port-check.js +45 -0
- package/node_modules/@karajan/core/src/pricing/index.js +64 -0
- package/node_modules/@karajan/core/src/pricing/model-pricing.json +28 -0
- package/node_modules/@karajan/core/src/process.js +188 -0
- package/node_modules/@karajan/core/src/run-registry.js +115 -0
- package/node_modules/@karajan/core/src/shared-paths.js +41 -0
- package/node_modules/@karajan/core/src/standby-scheduler.js +92 -0
- package/node_modules/@karajan/core/src/standby-store.js +168 -0
- package/node_modules/@karajan/core/src/vec-store.js +253 -0
- package/node_modules/@karajan/core/tests/atomic-write.test.js +30 -0
- package/node_modules/@karajan/core/tests/cost/index.test.js +89 -0
- package/node_modules/@karajan/core/tests/hu-snapshot.test.js +39 -0
- package/node_modules/@karajan/core/tests/paths.test.js +51 -0
- package/node_modules/@karajan/core/tests/plan-hu-ops.test.js +68 -0
- package/node_modules/@karajan/core/tests/plan-id.test.js +21 -0
- package/node_modules/@karajan/core/tests/plan-validation.test.js +39 -0
- package/node_modules/@karajan/core/tests/port-check.test.js +47 -0
- package/node_modules/@karajan/core/tests/pricing/index.test.js +95 -0
- package/node_modules/@karajan/core/tests/process.test.js +22 -0
- package/node_modules/@karajan/core/tests/run-registry.test.js +71 -0
- package/node_modules/@karajan/core/tests/shared-paths.test.js +30 -0
- package/node_modules/@karajan/core/tests/standby.test.js +66 -0
- package/node_modules/@karajan/core/tests/vec-store.test.js +98 -0
- package/node_modules/@karajan/core/vitest.config.js +12 -0
- package/node_modules/@sec-ant/readable-stream/LICENSE +21 -0
- package/node_modules/@sec-ant/readable-stream/README.md +230 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterablePrototype.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/asyncIterator.d.ts +27 -0
- package/node_modules/@sec-ant/readable-stream/dist/core/fromAnyIterable.d.ts +6 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/asyncIterator.js +5 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/fromAnyIterable.js +5 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/index/index.js +8 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/asyncIterator.js +3 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/fromAnyIterable.js +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/polyfill/index.js +4 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/asyncIterator.js +89 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.d.ts +1 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/fromAnyIterable.js +34 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.d.ts +2 -0
- package/node_modules/@sec-ant/readable-stream/dist/ponyfill/index.js +6 -0
- package/node_modules/@sec-ant/readable-stream/dist/types/async-iterator.d.ts +11 -0
- package/node_modules/@sec-ant/readable-stream/package.json +96 -0
- package/node_modules/@sindresorhus/merge-streams/index.d.ts +44 -0
- package/node_modules/@sindresorhus/merge-streams/index.js +265 -0
- package/node_modules/@sindresorhus/merge-streams/license +9 -0
- package/node_modules/@sindresorhus/merge-streams/package.json +49 -0
- package/node_modules/@sindresorhus/merge-streams/readme.md +53 -0
- package/node_modules/base64-js/LICENSE +21 -0
- package/node_modules/base64-js/README.md +34 -0
- package/node_modules/base64-js/base64js.min.js +1 -0
- package/node_modules/base64-js/index.d.ts +3 -0
- package/node_modules/base64-js/index.js +150 -0
- package/node_modules/base64-js/package.json +47 -0
- package/node_modules/better-sqlite3/LICENSE +21 -0
- package/node_modules/better-sqlite3/README.md +99 -0
- package/node_modules/better-sqlite3/binding.gyp +38 -0
- package/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/node_modules/better-sqlite3/deps/common.gypi +68 -0
- package/node_modules/better-sqlite3/deps/copy.js +31 -0
- package/node_modules/better-sqlite3/deps/defines.gypi +42 -0
- package/node_modules/better-sqlite3/deps/download.sh +123 -0
- package/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +268879 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +14335 -0
- package/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +739 -0
- package/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
- package/node_modules/better-sqlite3/deps/test_extension.c +21 -0
- package/node_modules/better-sqlite3/lib/database.js +90 -0
- package/node_modules/better-sqlite3/lib/index.js +3 -0
- package/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
- package/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
- package/node_modules/better-sqlite3/lib/methods/function.js +31 -0
- package/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
- package/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
- package/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
- package/node_modules/better-sqlite3/lib/methods/table.js +189 -0
- package/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
- package/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
- package/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
- package/node_modules/better-sqlite3/lib/util.js +12 -0
- package/node_modules/better-sqlite3/package.json +59 -0
- package/node_modules/better-sqlite3/src/addon.cpp +47 -0
- package/node_modules/better-sqlite3/src/better_sqlite3.cpp +74 -0
- package/node_modules/better-sqlite3/src/objects/backup.cpp +120 -0
- package/node_modules/better-sqlite3/src/objects/backup.hpp +36 -0
- package/node_modules/better-sqlite3/src/objects/database.cpp +417 -0
- package/node_modules/better-sqlite3/src/objects/database.hpp +103 -0
- package/node_modules/better-sqlite3/src/objects/statement-iterator.cpp +113 -0
- package/node_modules/better-sqlite3/src/objects/statement-iterator.hpp +50 -0
- package/node_modules/better-sqlite3/src/objects/statement.cpp +383 -0
- package/node_modules/better-sqlite3/src/objects/statement.hpp +58 -0
- package/node_modules/better-sqlite3/src/util/bind-map.cpp +73 -0
- package/node_modules/better-sqlite3/src/util/binder.cpp +193 -0
- package/node_modules/better-sqlite3/src/util/constants.cpp +172 -0
- package/node_modules/better-sqlite3/src/util/custom-aggregate.cpp +121 -0
- package/node_modules/better-sqlite3/src/util/custom-function.cpp +59 -0
- package/node_modules/better-sqlite3/src/util/custom-table.cpp +409 -0
- package/node_modules/better-sqlite3/src/util/data-converter.cpp +17 -0
- package/node_modules/better-sqlite3/src/util/data.cpp +194 -0
- package/node_modules/better-sqlite3/src/util/helpers.cpp +109 -0
- package/node_modules/better-sqlite3/src/util/macros.cpp +83 -0
- package/node_modules/better-sqlite3/src/util/query-macros.cpp +71 -0
- package/node_modules/better-sqlite3/src/util/row-builder.cpp +49 -0
- package/node_modules/bindings/LICENSE.md +22 -0
- package/node_modules/bindings/README.md +98 -0
- package/node_modules/bindings/bindings.js +221 -0
- package/node_modules/bindings/package.json +28 -0
- package/node_modules/bl/.travis.yml +17 -0
- package/node_modules/bl/BufferList.js +396 -0
- package/node_modules/bl/LICENSE.md +13 -0
- package/node_modules/bl/README.md +247 -0
- package/node_modules/bl/bl.js +84 -0
- package/node_modules/bl/package.json +37 -0
- package/node_modules/bl/test/convert.js +21 -0
- package/node_modules/bl/test/indexOf.js +492 -0
- package/node_modules/bl/test/isBufferList.js +32 -0
- package/node_modules/bl/test/test.js +869 -0
- package/node_modules/buffer/AUTHORS.md +70 -0
- package/node_modules/buffer/LICENSE +21 -0
- package/node_modules/buffer/README.md +410 -0
- package/node_modules/buffer/index.d.ts +186 -0
- package/node_modules/buffer/index.js +1817 -0
- package/node_modules/buffer/package.json +96 -0
- package/node_modules/chownr/LICENSE +15 -0
- package/node_modules/chownr/README.md +3 -0
- package/node_modules/chownr/chownr.js +167 -0
- package/node_modules/chownr/package.json +29 -0
- package/node_modules/cross-spawn/LICENSE +21 -0
- package/node_modules/cross-spawn/README.md +89 -0
- package/node_modules/cross-spawn/index.js +39 -0
- package/node_modules/cross-spawn/lib/enoent.js +59 -0
- package/node_modules/cross-spawn/lib/parse.js +91 -0
- package/node_modules/cross-spawn/lib/util/escape.js +47 -0
- package/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
- package/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
- package/node_modules/cross-spawn/package.json +73 -0
- package/node_modules/decompress-response/index.d.ts +22 -0
- package/node_modules/decompress-response/index.js +58 -0
- package/node_modules/decompress-response/license +9 -0
- package/node_modules/decompress-response/package.json +56 -0
- package/node_modules/decompress-response/readme.md +48 -0
- package/node_modules/deep-extend/CHANGELOG.md +46 -0
- package/node_modules/deep-extend/LICENSE +20 -0
- package/node_modules/deep-extend/README.md +91 -0
- package/node_modules/deep-extend/index.js +1 -0
- package/node_modules/deep-extend/lib/deep-extend.js +150 -0
- package/node_modules/deep-extend/package.json +62 -0
- package/node_modules/detect-libc/LICENSE +201 -0
- package/node_modules/detect-libc/README.md +163 -0
- package/node_modules/detect-libc/index.d.ts +14 -0
- package/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/node_modules/detect-libc/lib/elf.js +39 -0
- package/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/node_modules/detect-libc/lib/process.js +24 -0
- package/node_modules/detect-libc/package.json +44 -0
- package/node_modules/end-of-stream/LICENSE +21 -0
- package/node_modules/end-of-stream/README.md +54 -0
- package/node_modules/end-of-stream/index.js +96 -0
- package/node_modules/end-of-stream/package.json +37 -0
- package/node_modules/execa/index.d.ts +27 -0
- package/node_modules/execa/index.js +28 -0
- package/node_modules/execa/lib/arguments/command.js +20 -0
- package/node_modules/execa/lib/arguments/cwd.js +39 -0
- package/node_modules/execa/lib/arguments/encoding-option.js +50 -0
- package/node_modules/execa/lib/arguments/escape.js +88 -0
- package/node_modules/execa/lib/arguments/fd-options.js +108 -0
- package/node_modules/execa/lib/arguments/file-url.js +25 -0
- package/node_modules/execa/lib/arguments/options.js +96 -0
- package/node_modules/execa/lib/arguments/shell.js +11 -0
- package/node_modules/execa/lib/arguments/specific.js +111 -0
- package/node_modules/execa/lib/convert/add.js +15 -0
- package/node_modules/execa/lib/convert/concurrent.js +33 -0
- package/node_modules/execa/lib/convert/duplex.js +69 -0
- package/node_modules/execa/lib/convert/iterable.js +34 -0
- package/node_modules/execa/lib/convert/readable.js +113 -0
- package/node_modules/execa/lib/convert/shared.js +46 -0
- package/node_modules/execa/lib/convert/writable.js +90 -0
- package/node_modules/execa/lib/io/contents.js +116 -0
- package/node_modules/execa/lib/io/input-sync.js +44 -0
- package/node_modules/execa/lib/io/iterate.js +110 -0
- package/node_modules/execa/lib/io/max-buffer.js +89 -0
- package/node_modules/execa/lib/io/output-async.js +80 -0
- package/node_modules/execa/lib/io/output-sync.js +135 -0
- package/node_modules/execa/lib/io/pipeline.js +48 -0
- package/node_modules/execa/lib/io/strip-newline.js +12 -0
- package/node_modules/execa/lib/ipc/array.js +4 -0
- package/node_modules/execa/lib/ipc/buffer-messages.js +47 -0
- package/node_modules/execa/lib/ipc/forward.js +56 -0
- package/node_modules/execa/lib/ipc/get-each.js +89 -0
- package/node_modules/execa/lib/ipc/get-one.js +69 -0
- package/node_modules/execa/lib/ipc/graceful.js +72 -0
- package/node_modules/execa/lib/ipc/incoming.js +79 -0
- package/node_modules/execa/lib/ipc/ipc-input.js +44 -0
- package/node_modules/execa/lib/ipc/methods.js +49 -0
- package/node_modules/execa/lib/ipc/outgoing.js +47 -0
- package/node_modules/execa/lib/ipc/reference.js +44 -0
- package/node_modules/execa/lib/ipc/send.js +91 -0
- package/node_modules/execa/lib/ipc/strict.js +113 -0
- package/node_modules/execa/lib/ipc/validation.js +111 -0
- package/node_modules/execa/lib/methods/bind.js +23 -0
- package/node_modules/execa/lib/methods/command.js +43 -0
- package/node_modules/execa/lib/methods/create.js +65 -0
- package/node_modules/execa/lib/methods/main-async.js +194 -0
- package/node_modules/execa/lib/methods/main-sync.js +163 -0
- package/node_modules/execa/lib/methods/node.js +51 -0
- package/node_modules/execa/lib/methods/parameters.js +31 -0
- package/node_modules/execa/lib/methods/promise.js +15 -0
- package/node_modules/execa/lib/methods/script.js +22 -0
- package/node_modules/execa/lib/methods/template.js +153 -0
- package/node_modules/execa/lib/pipe/abort.js +20 -0
- package/node_modules/execa/lib/pipe/pipe-arguments.js +91 -0
- package/node_modules/execa/lib/pipe/sequence.js +24 -0
- package/node_modules/execa/lib/pipe/setup.js +72 -0
- package/node_modules/execa/lib/pipe/streaming.js +51 -0
- package/node_modules/execa/lib/pipe/throw.js +58 -0
- package/node_modules/execa/lib/resolve/all-async.js +46 -0
- package/node_modules/execa/lib/resolve/all-sync.js +33 -0
- package/node_modules/execa/lib/resolve/exit-async.js +54 -0
- package/node_modules/execa/lib/resolve/exit-sync.js +25 -0
- package/node_modules/execa/lib/resolve/stdio.js +47 -0
- package/node_modules/execa/lib/resolve/wait-stream.js +96 -0
- package/node_modules/execa/lib/resolve/wait-subprocess.js +146 -0
- package/node_modules/execa/lib/return/duration.js +8 -0
- package/node_modules/execa/lib/return/early-error.js +60 -0
- package/node_modules/execa/lib/return/final-error.js +40 -0
- package/node_modules/execa/lib/return/message.js +157 -0
- package/node_modules/execa/lib/return/reject.js +13 -0
- package/node_modules/execa/lib/return/result.js +186 -0
- package/node_modules/execa/lib/stdio/direction.js +76 -0
- package/node_modules/execa/lib/stdio/duplicate.js +116 -0
- package/node_modules/execa/lib/stdio/handle-async.js +52 -0
- package/node_modules/execa/lib/stdio/handle-sync.js +57 -0
- package/node_modules/execa/lib/stdio/handle.js +214 -0
- package/node_modules/execa/lib/stdio/input-option.js +50 -0
- package/node_modules/execa/lib/stdio/native.js +106 -0
- package/node_modules/execa/lib/stdio/stdio-option.js +60 -0
- package/node_modules/execa/lib/stdio/type.js +173 -0
- package/node_modules/execa/lib/terminate/cancel.js +20 -0
- package/node_modules/execa/lib/terminate/cleanup.js +16 -0
- package/node_modules/execa/lib/terminate/graceful.js +71 -0
- package/node_modules/execa/lib/terminate/kill.js +93 -0
- package/node_modules/execa/lib/terminate/signal.js +70 -0
- package/node_modules/execa/lib/terminate/timeout.js +21 -0
- package/node_modules/execa/lib/transform/encoding-transform.js +51 -0
- package/node_modules/execa/lib/transform/generator.js +107 -0
- package/node_modules/execa/lib/transform/normalize.js +111 -0
- package/node_modules/execa/lib/transform/object-mode.js +41 -0
- package/node_modules/execa/lib/transform/run-async.js +60 -0
- package/node_modules/execa/lib/transform/run-sync.js +50 -0
- package/node_modules/execa/lib/transform/split.js +110 -0
- package/node_modules/execa/lib/transform/validate.js +43 -0
- package/node_modules/execa/lib/utils/abort-signal.js +8 -0
- package/node_modules/execa/lib/utils/deferred.js +7 -0
- package/node_modules/execa/lib/utils/max-listeners.js +14 -0
- package/node_modules/execa/lib/utils/standard-stream.js +6 -0
- package/node_modules/execa/lib/utils/uint-array.js +69 -0
- package/node_modules/execa/lib/verbose/complete.js +24 -0
- package/node_modules/execa/lib/verbose/custom.js +26 -0
- package/node_modules/execa/lib/verbose/default.js +54 -0
- package/node_modules/execa/lib/verbose/error.js +13 -0
- package/node_modules/execa/lib/verbose/info.js +39 -0
- package/node_modules/execa/lib/verbose/ipc.js +15 -0
- package/node_modules/execa/lib/verbose/log.js +54 -0
- package/node_modules/execa/lib/verbose/output.js +60 -0
- package/node_modules/execa/lib/verbose/start.js +15 -0
- package/node_modules/execa/lib/verbose/values.js +33 -0
- package/node_modules/execa/license +9 -0
- package/node_modules/execa/package.json +105 -0
- package/node_modules/execa/readme.md +461 -0
- package/node_modules/execa/types/arguments/encoding-option.d.ts +19 -0
- package/node_modules/execa/types/arguments/fd-options.d.ts +8 -0
- package/node_modules/execa/types/arguments/options.d.ts +400 -0
- package/node_modules/execa/types/arguments/specific.d.ts +52 -0
- package/node_modules/execa/types/convert.d.ts +58 -0
- package/node_modules/execa/types/ipc.d.ts +156 -0
- package/node_modules/execa/types/methods/command.d.ts +114 -0
- package/node_modules/execa/types/methods/main-async.d.ts +379 -0
- package/node_modules/execa/types/methods/main-sync.d.ts +59 -0
- package/node_modules/execa/types/methods/node.d.ts +62 -0
- package/node_modules/execa/types/methods/script.d.ts +115 -0
- package/node_modules/execa/types/methods/template.d.ts +18 -0
- package/node_modules/execa/types/pipe.d.ts +58 -0
- package/node_modules/execa/types/return/final-error.d.ts +51 -0
- package/node_modules/execa/types/return/ignore.d.ts +26 -0
- package/node_modules/execa/types/return/result-all.d.ts +30 -0
- package/node_modules/execa/types/return/result-ipc.d.ts +27 -0
- package/node_modules/execa/types/return/result-stdio.d.ts +17 -0
- package/node_modules/execa/types/return/result-stdout.d.ts +50 -0
- package/node_modules/execa/types/return/result.d.ts +203 -0
- package/node_modules/execa/types/stdio/array.d.ts +16 -0
- package/node_modules/execa/types/stdio/direction.d.ts +12 -0
- package/node_modules/execa/types/stdio/option.d.ts +40 -0
- package/node_modules/execa/types/stdio/type.d.ts +170 -0
- package/node_modules/execa/types/subprocess/all.d.ts +17 -0
- package/node_modules/execa/types/subprocess/stdio.d.ts +18 -0
- package/node_modules/execa/types/subprocess/stdout.d.ts +22 -0
- package/node_modules/execa/types/subprocess/subprocess.d.ts +117 -0
- package/node_modules/execa/types/transform/normalize.d.ts +57 -0
- package/node_modules/execa/types/transform/object-mode.d.ts +21 -0
- package/node_modules/execa/types/utils.d.ts +13 -0
- package/node_modules/execa/types/verbose.d.ts +98 -0
- package/node_modules/expand-template/.travis.yml +6 -0
- package/node_modules/expand-template/LICENSE +21 -0
- package/node_modules/expand-template/README.md +43 -0
- package/node_modules/expand-template/index.js +26 -0
- package/node_modules/expand-template/package.json +29 -0
- package/node_modules/expand-template/test.js +67 -0
- package/node_modules/figures/index.d.ts +279 -0
- package/node_modules/figures/index.js +292 -0
- package/node_modules/figures/license +9 -0
- package/node_modules/figures/package.json +49 -0
- package/node_modules/figures/readme.md +337 -0
- package/node_modules/file-uri-to-path/.npmignore +1 -0
- package/node_modules/file-uri-to-path/.travis.yml +30 -0
- package/node_modules/file-uri-to-path/History.md +21 -0
- package/node_modules/file-uri-to-path/LICENSE +20 -0
- package/node_modules/file-uri-to-path/README.md +74 -0
- package/node_modules/file-uri-to-path/index.d.ts +2 -0
- package/node_modules/file-uri-to-path/index.js +66 -0
- package/node_modules/file-uri-to-path/package.json +32 -0
- package/node_modules/file-uri-to-path/test/test.js +24 -0
- package/node_modules/file-uri-to-path/test/tests.json +13 -0
- package/node_modules/fs-constants/LICENSE +21 -0
- package/node_modules/fs-constants/README.md +26 -0
- package/node_modules/fs-constants/browser.js +1 -0
- package/node_modules/fs-constants/index.js +1 -0
- package/node_modules/fs-constants/package.json +19 -0
- package/node_modules/get-stream/license +9 -0
- package/node_modules/get-stream/package.json +60 -0
- package/node_modules/get-stream/readme.md +303 -0
- package/node_modules/get-stream/source/array-buffer.js +84 -0
- package/node_modules/get-stream/source/array.js +32 -0
- package/node_modules/get-stream/source/buffer.js +19 -0
- package/node_modules/get-stream/source/contents.js +121 -0
- package/node_modules/get-stream/source/exports.js +5 -0
- package/node_modules/get-stream/source/index.d.ts +121 -0
- package/node_modules/get-stream/source/index.js +13 -0
- package/node_modules/get-stream/source/stream.js +65 -0
- package/node_modules/get-stream/source/string.js +41 -0
- package/node_modules/get-stream/source/utils.js +11 -0
- package/node_modules/github-from-package/.travis.yml +4 -0
- package/node_modules/github-from-package/LICENSE +18 -0
- package/node_modules/github-from-package/example/package.json +8 -0
- package/node_modules/github-from-package/example/url.js +3 -0
- package/node_modules/github-from-package/index.js +17 -0
- package/node_modules/github-from-package/package.json +30 -0
- package/node_modules/github-from-package/readme.markdown +53 -0
- package/node_modules/github-from-package/test/a.json +8 -0
- package/node_modules/github-from-package/test/b.json +5 -0
- package/node_modules/github-from-package/test/c.json +5 -0
- package/node_modules/github-from-package/test/d.json +7 -0
- package/node_modules/github-from-package/test/e.json +5 -0
- package/node_modules/github-from-package/test/url.js +19 -0
- package/node_modules/human-signals/LICENSE +201 -0
- package/node_modules/human-signals/README.md +171 -0
- package/node_modules/human-signals/build/src/core.js +273 -0
- package/node_modules/human-signals/build/src/main.d.ts +206 -0
- package/node_modules/human-signals/build/src/main.js +70 -0
- package/node_modules/human-signals/build/src/realtime.js +16 -0
- package/node_modules/human-signals/build/src/signals.js +34 -0
- package/node_modules/human-signals/package.json +66 -0
- package/node_modules/ieee754/LICENSE +11 -0
- package/node_modules/ieee754/README.md +51 -0
- package/node_modules/ieee754/index.d.ts +10 -0
- package/node_modules/ieee754/index.js +85 -0
- package/node_modules/ieee754/package.json +52 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/ini/LICENSE +15 -0
- package/node_modules/ini/README.md +102 -0
- package/node_modules/ini/ini.js +206 -0
- package/node_modules/ini/package.json +33 -0
- package/node_modules/is-plain-obj/index.d.ts +35 -0
- package/node_modules/is-plain-obj/index.js +8 -0
- package/node_modules/is-plain-obj/license +9 -0
- package/node_modules/is-plain-obj/package.json +41 -0
- package/node_modules/is-plain-obj/readme.md +58 -0
- package/node_modules/is-stream/index.d.ts +90 -0
- package/node_modules/is-stream/index.js +37 -0
- package/node_modules/is-stream/license +9 -0
- package/node_modules/is-stream/package.json +48 -0
- package/node_modules/is-stream/readme.md +57 -0
- package/node_modules/is-unicode-supported/index.d.ts +12 -0
- package/node_modules/is-unicode-supported/index.js +21 -0
- package/node_modules/is-unicode-supported/license +9 -0
- package/node_modules/is-unicode-supported/package.json +47 -0
- package/node_modules/is-unicode-supported/readme.md +35 -0
- package/node_modules/isexe/.npmignore +2 -0
- package/node_modules/isexe/LICENSE +15 -0
- package/node_modules/isexe/README.md +51 -0
- package/node_modules/isexe/index.js +57 -0
- package/node_modules/isexe/mode.js +41 -0
- package/node_modules/isexe/package.json +31 -0
- package/node_modules/isexe/test/basic.js +221 -0
- package/node_modules/isexe/windows.js +42 -0
- package/node_modules/mimic-response/index.d.ts +17 -0
- package/node_modules/mimic-response/index.js +77 -0
- package/node_modules/mimic-response/license +9 -0
- package/node_modules/mimic-response/package.json +42 -0
- package/node_modules/mimic-response/readme.md +78 -0
- package/node_modules/minimist/.eslintrc +29 -0
- package/node_modules/minimist/.github/FUNDING.yml +12 -0
- package/node_modules/minimist/.nycrc +14 -0
- package/node_modules/minimist/CHANGELOG.md +298 -0
- package/node_modules/minimist/LICENSE +18 -0
- package/node_modules/minimist/README.md +121 -0
- package/node_modules/minimist/example/parse.js +4 -0
- package/node_modules/minimist/index.js +263 -0
- package/node_modules/minimist/package.json +75 -0
- package/node_modules/minimist/test/all_bool.js +34 -0
- package/node_modules/minimist/test/bool.js +177 -0
- package/node_modules/minimist/test/dash.js +43 -0
- package/node_modules/minimist/test/default_bool.js +37 -0
- package/node_modules/minimist/test/dotted.js +24 -0
- package/node_modules/minimist/test/kv_short.js +32 -0
- package/node_modules/minimist/test/long.js +33 -0
- package/node_modules/minimist/test/num.js +38 -0
- package/node_modules/minimist/test/parse.js +209 -0
- package/node_modules/minimist/test/parse_modified.js +11 -0
- package/node_modules/minimist/test/proto.js +64 -0
- package/node_modules/minimist/test/short.js +69 -0
- package/node_modules/minimist/test/stop_early.js +17 -0
- package/node_modules/minimist/test/unknown.js +104 -0
- package/node_modules/minimist/test/whitespace.js +10 -0
- package/node_modules/mkdirp-classic/LICENSE +21 -0
- package/node_modules/mkdirp-classic/README.md +18 -0
- package/node_modules/mkdirp-classic/index.js +98 -0
- package/node_modules/mkdirp-classic/package.json +18 -0
- package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
- package/node_modules/napi-build-utils/LICENSE +21 -0
- package/node_modules/napi-build-utils/README.md +52 -0
- package/node_modules/napi-build-utils/index.js +214 -0
- package/node_modules/napi-build-utils/index.md +0 -0
- package/node_modules/napi-build-utils/package.json +42 -0
- package/node_modules/node-abi/LICENSE +21 -0
- package/node_modules/node-abi/README.md +54 -0
- package/node_modules/node-abi/abi_registry.json +446 -0
- package/node_modules/node-abi/index.js +179 -0
- package/node_modules/node-abi/package.json +45 -0
- package/node_modules/npm-run-path/index.d.ts +90 -0
- package/node_modules/npm-run-path/index.js +55 -0
- package/node_modules/npm-run-path/license +9 -0
- package/node_modules/npm-run-path/node_modules/path-key/index.d.ts +31 -0
- package/node_modules/npm-run-path/node_modules/path-key/index.js +12 -0
- package/node_modules/npm-run-path/node_modules/path-key/license +9 -0
- package/node_modules/npm-run-path/node_modules/path-key/package.json +41 -0
- package/node_modules/npm-run-path/node_modules/path-key/readme.md +57 -0
- package/node_modules/npm-run-path/package.json +52 -0
- package/node_modules/npm-run-path/readme.md +104 -0
- package/node_modules/once/LICENSE +15 -0
- package/node_modules/once/README.md +79 -0
- package/node_modules/once/once.js +42 -0
- package/node_modules/once/package.json +33 -0
- package/node_modules/parse-ms/index.d.ts +30 -0
- package/node_modules/parse-ms/index.js +45 -0
- package/node_modules/parse-ms/license +9 -0
- package/node_modules/parse-ms/package.json +47 -0
- package/node_modules/parse-ms/readme.md +46 -0
- package/node_modules/path-key/index.d.ts +40 -0
- package/node_modules/path-key/index.js +16 -0
- package/node_modules/path-key/license +9 -0
- package/node_modules/path-key/package.json +39 -0
- package/node_modules/path-key/readme.md +61 -0
- package/node_modules/prebuild-install/CHANGELOG.md +131 -0
- package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
- package/node_modules/prebuild-install/LICENSE +21 -0
- package/node_modules/prebuild-install/README.md +163 -0
- package/node_modules/prebuild-install/asset.js +44 -0
- package/node_modules/prebuild-install/bin.js +78 -0
- package/node_modules/prebuild-install/download.js +142 -0
- package/node_modules/prebuild-install/error.js +14 -0
- package/node_modules/prebuild-install/help.txt +16 -0
- package/node_modules/prebuild-install/index.js +1 -0
- package/node_modules/prebuild-install/log.js +33 -0
- package/node_modules/prebuild-install/package.json +67 -0
- package/node_modules/prebuild-install/proxy.js +35 -0
- package/node_modules/prebuild-install/rc.js +64 -0
- package/node_modules/prebuild-install/util.js +143 -0
- package/node_modules/pretty-ms/index.d.ts +157 -0
- package/node_modules/pretty-ms/index.js +149 -0
- package/node_modules/pretty-ms/license +9 -0
- package/node_modules/pretty-ms/package.json +55 -0
- package/node_modules/pretty-ms/readme.md +179 -0
- package/node_modules/pump/.github/FUNDING.yml +2 -0
- package/node_modules/pump/.travis.yml +5 -0
- package/node_modules/pump/LICENSE +21 -0
- package/node_modules/pump/README.md +74 -0
- package/node_modules/pump/SECURITY.md +5 -0
- package/node_modules/pump/empty.js +1 -0
- package/node_modules/pump/index.js +86 -0
- package/node_modules/pump/package.json +30 -0
- package/node_modules/pump/test-browser.js +66 -0
- package/node_modules/pump/test-node.js +53 -0
- package/node_modules/rc/LICENSE.APACHE2 +15 -0
- package/node_modules/rc/LICENSE.BSD +26 -0
- package/node_modules/rc/LICENSE.MIT +24 -0
- package/node_modules/rc/README.md +227 -0
- package/node_modules/rc/browser.js +7 -0
- package/node_modules/rc/cli.js +4 -0
- package/node_modules/rc/index.js +53 -0
- package/node_modules/rc/lib/utils.js +104 -0
- package/node_modules/rc/package.json +29 -0
- package/node_modules/rc/test/ini.js +16 -0
- package/node_modules/rc/test/nested-env-vars.js +50 -0
- package/node_modules/rc/test/test.js +59 -0
- package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- package/node_modules/readable-stream/GOVERNANCE.md +136 -0
- package/node_modules/readable-stream/LICENSE +47 -0
- package/node_modules/readable-stream/README.md +106 -0
- package/node_modules/readable-stream/errors-browser.js +127 -0
- package/node_modules/readable-stream/errors.js +116 -0
- package/node_modules/readable-stream/experimentalWarning.js +17 -0
- package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
- package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
- package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
- package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
- package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
- package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
- package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
- package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- package/node_modules/readable-stream/package.json +68 -0
- package/node_modules/readable-stream/readable-browser.js +9 -0
- package/node_modules/readable-stream/readable.js +16 -0
- package/node_modules/safe-buffer/LICENSE +21 -0
- package/node_modules/safe-buffer/README.md +584 -0
- package/node_modules/safe-buffer/index.d.ts +187 -0
- package/node_modules/safe-buffer/index.js +65 -0
- package/node_modules/safe-buffer/package.json +51 -0
- package/node_modules/semver/LICENSE +15 -0
- package/node_modules/semver/README.md +665 -0
- package/node_modules/semver/bin/semver.js +191 -0
- package/node_modules/semver/classes/comparator.js +143 -0
- package/node_modules/semver/classes/index.js +7 -0
- package/node_modules/semver/classes/range.js +557 -0
- package/node_modules/semver/classes/semver.js +333 -0
- package/node_modules/semver/functions/clean.js +8 -0
- package/node_modules/semver/functions/cmp.js +54 -0
- package/node_modules/semver/functions/coerce.js +62 -0
- package/node_modules/semver/functions/compare-build.js +9 -0
- package/node_modules/semver/functions/compare-loose.js +5 -0
- package/node_modules/semver/functions/compare.js +7 -0
- package/node_modules/semver/functions/diff.js +60 -0
- package/node_modules/semver/functions/eq.js +5 -0
- package/node_modules/semver/functions/gt.js +5 -0
- package/node_modules/semver/functions/gte.js +5 -0
- package/node_modules/semver/functions/inc.js +21 -0
- package/node_modules/semver/functions/lt.js +5 -0
- package/node_modules/semver/functions/lte.js +5 -0
- package/node_modules/semver/functions/major.js +5 -0
- package/node_modules/semver/functions/minor.js +5 -0
- package/node_modules/semver/functions/neq.js +5 -0
- package/node_modules/semver/functions/parse.js +18 -0
- package/node_modules/semver/functions/patch.js +5 -0
- package/node_modules/semver/functions/prerelease.js +8 -0
- package/node_modules/semver/functions/rcompare.js +5 -0
- package/node_modules/semver/functions/rsort.js +5 -0
- package/node_modules/semver/functions/satisfies.js +12 -0
- package/node_modules/semver/functions/sort.js +5 -0
- package/node_modules/semver/functions/valid.js +8 -0
- package/node_modules/semver/index.js +91 -0
- package/node_modules/semver/internal/constants.js +37 -0
- package/node_modules/semver/internal/debug.js +11 -0
- package/node_modules/semver/internal/identifiers.js +29 -0
- package/node_modules/semver/internal/lrucache.js +42 -0
- package/node_modules/semver/internal/parse-options.js +17 -0
- package/node_modules/semver/internal/re.js +223 -0
- package/node_modules/semver/package.json +78 -0
- package/node_modules/semver/preload.js +4 -0
- package/node_modules/semver/range.bnf +16 -0
- package/node_modules/semver/ranges/gtr.js +6 -0
- package/node_modules/semver/ranges/intersects.js +9 -0
- package/node_modules/semver/ranges/ltr.js +6 -0
- package/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/node_modules/semver/ranges/min-version.js +63 -0
- package/node_modules/semver/ranges/outside.js +82 -0
- package/node_modules/semver/ranges/simplify.js +49 -0
- package/node_modules/semver/ranges/subset.js +249 -0
- package/node_modules/semver/ranges/to-comparators.js +10 -0
- package/node_modules/semver/ranges/valid.js +13 -0
- package/node_modules/shebang-command/index.js +19 -0
- package/node_modules/shebang-command/license +9 -0
- package/node_modules/shebang-command/package.json +34 -0
- package/node_modules/shebang-command/readme.md +34 -0
- package/node_modules/shebang-regex/index.d.ts +22 -0
- package/node_modules/shebang-regex/index.js +2 -0
- package/node_modules/shebang-regex/license +9 -0
- package/node_modules/shebang-regex/package.json +35 -0
- package/node_modules/shebang-regex/readme.md +33 -0
- package/node_modules/signal-exit/LICENSE.txt +16 -0
- package/node_modules/signal-exit/README.md +74 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
- package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.js +279 -0
- package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/package.json +3 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
- package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
- package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
- package/node_modules/signal-exit/package.json +106 -0
- package/node_modules/simple-concat/.travis.yml +3 -0
- package/node_modules/simple-concat/LICENSE +20 -0
- package/node_modules/simple-concat/README.md +44 -0
- package/node_modules/simple-concat/index.js +15 -0
- package/node_modules/simple-concat/package.json +47 -0
- package/node_modules/simple-concat/test/basic.js +41 -0
- package/node_modules/simple-get/.github/dependabot.yml +15 -0
- package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
- package/node_modules/simple-get/LICENSE +20 -0
- package/node_modules/simple-get/README.md +333 -0
- package/node_modules/simple-get/index.js +108 -0
- package/node_modules/simple-get/package.json +67 -0
- package/node_modules/sqlite-vec/README.md +1 -0
- package/node_modules/sqlite-vec/index.cjs +46 -0
- package/node_modules/sqlite-vec/index.d.ts +17 -0
- package/node_modules/sqlite-vec/index.mjs +47 -0
- package/node_modules/sqlite-vec/package.json +1 -0
- package/node_modules/sqlite-vec-linux-x64/README.md +1 -0
- package/node_modules/sqlite-vec-linux-x64/package.json +1 -0
- package/node_modules/sqlite-vec-linux-x64/vec0.so +0 -0
- package/node_modules/string_decoder/LICENSE +48 -0
- package/node_modules/string_decoder/README.md +47 -0
- package/node_modules/string_decoder/lib/string_decoder.js +296 -0
- package/node_modules/string_decoder/package.json +34 -0
- package/node_modules/strip-final-newline/index.d.ts +18 -0
- package/node_modules/strip-final-newline/index.js +26 -0
- package/node_modules/strip-final-newline/license +9 -0
- package/node_modules/strip-final-newline/package.json +49 -0
- package/node_modules/strip-final-newline/readme.md +34 -0
- package/node_modules/strip-json-comments/index.js +70 -0
- package/node_modules/strip-json-comments/license +21 -0
- package/node_modules/strip-json-comments/package.json +42 -0
- package/node_modules/strip-json-comments/readme.md +64 -0
- package/node_modules/tar-fs/.travis.yml +6 -0
- package/node_modules/tar-fs/LICENSE +21 -0
- package/node_modules/tar-fs/README.md +165 -0
- package/node_modules/tar-fs/index.js +363 -0
- package/node_modules/tar-fs/package.json +41 -0
- package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/node_modules/tar-fs/test/index.js +346 -0
- package/node_modules/tar-stream/LICENSE +21 -0
- package/node_modules/tar-stream/README.md +168 -0
- package/node_modules/tar-stream/extract.js +257 -0
- package/node_modules/tar-stream/headers.js +295 -0
- package/node_modules/tar-stream/index.js +2 -0
- package/node_modules/tar-stream/pack.js +255 -0
- package/node_modules/tar-stream/package.json +58 -0
- package/node_modules/tar-stream/sandbox.js +11 -0
- package/node_modules/tunnel-agent/LICENSE +55 -0
- package/node_modules/tunnel-agent/README.md +4 -0
- package/node_modules/tunnel-agent/index.js +244 -0
- package/node_modules/tunnel-agent/package.json +22 -0
- package/node_modules/unicorn-magic/default.d.ts +13 -0
- package/node_modules/unicorn-magic/default.js +14 -0
- package/node_modules/unicorn-magic/license +9 -0
- package/node_modules/unicorn-magic/node.d.ts +125 -0
- package/node_modules/unicorn-magic/node.js +49 -0
- package/node_modules/unicorn-magic/package.json +62 -0
- package/node_modules/unicorn-magic/readme.md +25 -0
- package/node_modules/util-deprecate/History.md +16 -0
- package/node_modules/util-deprecate/LICENSE +24 -0
- package/node_modules/util-deprecate/README.md +53 -0
- package/node_modules/util-deprecate/browser.js +67 -0
- package/node_modules/util-deprecate/node.js +6 -0
- package/node_modules/util-deprecate/package.json +27 -0
- package/node_modules/which/CHANGELOG.md +166 -0
- package/node_modules/which/LICENSE +15 -0
- package/node_modules/which/README.md +54 -0
- package/node_modules/which/bin/node-which +52 -0
- package/node_modules/which/package.json +43 -0
- package/node_modules/which/which.js +125 -0
- package/node_modules/wrappy/LICENSE +15 -0
- package/node_modules/wrappy/README.md +36 -0
- package/node_modules/wrappy/package.json +29 -0
- package/node_modules/wrappy/wrappy.js +33 -0
- package/node_modules/yoctocolors/base.d.ts +47 -0
- package/node_modules/yoctocolors/base.js +94 -0
- package/node_modules/yoctocolors/index.d.ts +2 -0
- package/node_modules/yoctocolors/index.js +2 -0
- package/node_modules/yoctocolors/license +9 -0
- package/node_modules/yoctocolors/package.json +69 -0
- package/node_modules/yoctocolors/readme.md +138 -0
- package/package.json +5 -1
- package/src/agents/claude-agent.js +17 -2
- package/src/prompts/architect.js +32 -37
- package/src/prompts/coder.js +71 -96
- package/src/prompts/hu-reviewer.js +23 -29
- package/src/prompts/prompt-layout.js +80 -0
- package/src/prompts/reviewer.js +34 -39
- package/src/roles/agent-role.js +9 -1
- package/src/roles/coder-role.js +6 -3
- package/src/roles/reviewer-role.js +20 -23
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
<sup>yoctocolors 🌈</sup>
|
|
2
|
+
|
|
3
|
+
> The smallest and fastest command-line coloring package on the internet
|
|
4
|
+
|
|
5
|
+
*Check out [Chalk](https://github.com/chalk/chalk) if you want something more mature and comprehensive.*
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Tiny
|
|
10
|
+
- Fast
|
|
11
|
+
- Handles nested colors
|
|
12
|
+
- Tree-shakeable
|
|
13
|
+
- No dependencies
|
|
14
|
+
- Actively maintained
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
ESM:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
npm install yoctocolors
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Or CommonJS:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
npm install yoctocolors-cjs
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
import colors from 'yoctocolors';
|
|
34
|
+
|
|
35
|
+
console.log(colors.red('Yo!'));
|
|
36
|
+
|
|
37
|
+
console.log(colors.blue(`Welcome to the ${colors.green('yoctocolors')} package!`));
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
You can also import colors as named imports:
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
import {red, blue, green} from 'yoctocolors';
|
|
44
|
+
|
|
45
|
+
console.log(red('Yo!'));
|
|
46
|
+
|
|
47
|
+
console.log(blue(`Welcome to the ${green('yoctocolors')} package!`));
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
*This package supports [basic color detection](https://nodejs.org/api/tty.html#writestreamhascolorscount-env). Colors can be forcefully enabled by setting the `FORCE_COLOR` environment variable to `1` and can be forcefully disabled by setting `NO_COLOR` or `NODE_DISABLE_COLORS` to any value. [More info.](https://nodejs.org/api/tty.html#writestreamgetcolordepthenv)*
|
|
51
|
+
|
|
52
|
+
## Styles
|
|
53
|
+
|
|
54
|
+
### Modifiers
|
|
55
|
+
|
|
56
|
+
- `reset` - Reset the current style.
|
|
57
|
+
- `bold` - Make the text bold.
|
|
58
|
+
- `dim` - Make the text have lower opacity.
|
|
59
|
+
- `italic` - Make the text italic. *(Not widely supported)*
|
|
60
|
+
- `underline` - Put a horizontal line above the text. *(Not widely supported)*
|
|
61
|
+
- `overline` - Put a horizontal line below the text. *(Not widely supported)*
|
|
62
|
+
- `inverse`- Invert background and foreground colors.
|
|
63
|
+
- `hidden` - Print the text but make it invisible.
|
|
64
|
+
- `strikethrough` - Put a horizontal line through the center of the text. *(Not widely supported)*
|
|
65
|
+
|
|
66
|
+
### Colors
|
|
67
|
+
|
|
68
|
+
- `black`
|
|
69
|
+
- `red`
|
|
70
|
+
- `green`
|
|
71
|
+
- `yellow`
|
|
72
|
+
- `blue`
|
|
73
|
+
- `magenta`
|
|
74
|
+
- `cyan`
|
|
75
|
+
- `white`
|
|
76
|
+
- `gray`
|
|
77
|
+
- `redBright`
|
|
78
|
+
- `greenBright`
|
|
79
|
+
- `yellowBright`
|
|
80
|
+
- `blueBright`
|
|
81
|
+
- `magentaBright`
|
|
82
|
+
- `cyanBright`
|
|
83
|
+
- `whiteBright`
|
|
84
|
+
|
|
85
|
+
### Background colors
|
|
86
|
+
|
|
87
|
+
- `bgBlack`
|
|
88
|
+
- `bgRed`
|
|
89
|
+
- `bgGreen`
|
|
90
|
+
- `bgYellow`
|
|
91
|
+
- `bgBlue`
|
|
92
|
+
- `bgMagenta`
|
|
93
|
+
- `bgCyan`
|
|
94
|
+
- `bgWhite`
|
|
95
|
+
- `bgGray`
|
|
96
|
+
- `bgRedBright`
|
|
97
|
+
- `bgGreenBright`
|
|
98
|
+
- `bgYellowBright`
|
|
99
|
+
- `bgBlueBright`
|
|
100
|
+
- `bgMagentaBright`
|
|
101
|
+
- `bgCyanBright`
|
|
102
|
+
- `bgWhiteBright`
|
|
103
|
+
|
|
104
|
+
## Prior art
|
|
105
|
+
|
|
106
|
+
Yes
|
|
107
|
+
|
|
108
|
+
## Benchmark
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
$ ./benchmark.js
|
|
112
|
+
┌─────────┬────────────────┬─────────────┐
|
|
113
|
+
│ (index) │ library │ ops/sec │
|
|
114
|
+
├─────────┼────────────────┼─────────────┤
|
|
115
|
+
│ 0 │ 'yoctocolors' │ '8,000,000' │
|
|
116
|
+
│ 1 │ 'colorette' │ '8,000,000' │
|
|
117
|
+
│ 2 │ 'picocolors' │ '8,000,000' │
|
|
118
|
+
│ 3 │ 'nanocolors' │ '5,988,024' │
|
|
119
|
+
│ 4 │ 'chalk' │ '4,807,692' │
|
|
120
|
+
│ 5 │ 'kleur/colors' │ '4,807,692' │
|
|
121
|
+
│ 6 │ 'kleur' │ '4,784,689' │
|
|
122
|
+
│ 7 │ 'ansi-colors' │ '2,178,649' │
|
|
123
|
+
│ 8 │ 'cli-color' │ '585,138' │
|
|
124
|
+
└─────────┴────────────────┴─────────────┘
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
*See [benchmark.js](benchmark.js).*
|
|
128
|
+
|
|
129
|
+
## FAQ
|
|
130
|
+
|
|
131
|
+
### What is yocto?
|
|
132
|
+
|
|
133
|
+
[It was the smallest official unit prefix in the metric system until 2022.](https://en.wikipedia.org/wiki/Yocto-) Much smaller than nano.
|
|
134
|
+
|
|
135
|
+
## Related
|
|
136
|
+
|
|
137
|
+
- [yoctodelay](https://github.com/sindresorhus/yoctodelay) - Delay a promise a given amount of time
|
|
138
|
+
- [chalk](https://github.com/chalk/chalk) - Terminal string styling
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "karajan-code",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "Local multi-agent coding orchestrator with TDD, SonarQube, and code review pipeline",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
86
|
"@babel/parser": "^7.29.7",
|
|
87
|
+
"@karajan/core": "*",
|
|
87
88
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
88
89
|
"better-sqlite3": "^12.10.0",
|
|
89
90
|
"chokidar": "^5.0.0",
|
|
@@ -99,6 +100,9 @@
|
|
|
99
100
|
"valibot": "^1.4.1",
|
|
100
101
|
"web-tree-sitter": "^0.26.9"
|
|
101
102
|
},
|
|
103
|
+
"bundleDependencies": [
|
|
104
|
+
"@karajan/core"
|
|
105
|
+
],
|
|
102
106
|
"devDependencies": {
|
|
103
107
|
"@eslint/js": "^10.0.1",
|
|
104
108
|
"@vitest/coverage-v8": "^4.1.8",
|
|
@@ -321,6 +321,21 @@ const ALLOWED_TOOLS = [
|
|
|
321
321
|
"Read", "Write", "Edit", "Bash", "Glob", "Grep"
|
|
322
322
|
];
|
|
323
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Base CLI args for a task (Φ1-D, KJC-PCS-0057). When the role provides the
|
|
326
|
+
* prompt split in stable/volatile buckets, the stable block travels via
|
|
327
|
+
* --append-system-prompt — the CLI places cache breakpoints on the system
|
|
328
|
+
* block, so Anthropic's prompt cache hits on it across iterations — and only
|
|
329
|
+
* the volatile block goes in the -p message. Without the split, legacy
|
|
330
|
+
* single-prompt behavior is unchanged.
|
|
331
|
+
*/
|
|
332
|
+
function buildPromptArgs(task) {
|
|
333
|
+
if (task.stablePrompt && task.volatilePrompt) {
|
|
334
|
+
return ["-p", task.volatilePrompt, "--append-system-prompt", task.stablePrompt, "--allowedTools", ...ALLOWED_TOOLS];
|
|
335
|
+
}
|
|
336
|
+
return ["-p", task.prompt, "--allowedTools", ...ALLOWED_TOOLS];
|
|
337
|
+
}
|
|
338
|
+
|
|
324
339
|
export class ClaudeAgent extends BaseAgent {
|
|
325
340
|
async runTask(task) {
|
|
326
341
|
const role = task.role || "coder";
|
|
@@ -345,7 +360,7 @@ export class ClaudeAgent extends BaseAgent {
|
|
|
345
360
|
}
|
|
346
361
|
|
|
347
362
|
async _runTaskExec(task, model, _role) {
|
|
348
|
-
const args =
|
|
363
|
+
const args = buildPromptArgs(task);
|
|
349
364
|
if (model) args.push("--model", model);
|
|
350
365
|
|
|
351
366
|
// Use stream-json when onOutput is provided to get real-time feedback
|
|
@@ -373,7 +388,7 @@ export class ClaudeAgent extends BaseAgent {
|
|
|
373
388
|
}
|
|
374
389
|
|
|
375
390
|
async _reviewTaskExec(task, model) {
|
|
376
|
-
const args = [
|
|
391
|
+
const args = [...buildPromptArgs(task), "--output-format", "stream-json", "--verbose"];
|
|
377
392
|
if (model) args.push("--model", model);
|
|
378
393
|
const res = await this.runCommand(resolveBin("claude"), args, cleanExecaOpts({
|
|
379
394
|
onOutput: task.onOutput,
|
package/src/prompts/architect.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadAvailableSkills, buildSkillSection } from "../skills/skill-loader.js";
|
|
2
2
|
import { getLanguageInstruction } from "../utils/locale.js";
|
|
3
|
+
import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
|
|
3
4
|
|
|
4
5
|
const SUBAGENT_PREAMBLE = [
|
|
5
6
|
"IMPORTANT: You are running as a Karajan sub-agent.",
|
|
@@ -9,19 +10,28 @@ const SUBAGENT_PREAMBLE = [
|
|
|
9
10
|
|
|
10
11
|
export const VALID_VERDICTS = new Set(["ready", "needs_clarification"]);
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Build the architect prompt as a { stable, volatile } layout (Φ1,
|
|
15
|
+
* KJC-PCS-0057): instructions, guidelines, schema, contexts and skills
|
|
16
|
+
* are identical across invocations on the same project; research
|
|
17
|
+
* context and the task itself go last.
|
|
18
|
+
*/
|
|
19
|
+
export async function buildArchitectPromptLayout({ task, instructions, researchContext = null, productContext = null, domainContext = null, projectDir = null, language = "en", provider = null }) {
|
|
13
20
|
const langInstruction = getLanguageInstruction(language);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
let skillSection = null;
|
|
22
|
+
if (projectDir) {
|
|
23
|
+
const skills = await loadAvailableSkills(projectDir);
|
|
24
|
+
skillSection = buildSkillSection(skills, { provider, role: "architect" });
|
|
18
25
|
}
|
|
19
26
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
return buildPromptLayout([
|
|
28
|
+
section(SUBAGENT_PREAMBLE, STABLE),
|
|
29
|
+
section(langInstruction, STABLE),
|
|
30
|
+
section(instructions, STABLE),
|
|
31
|
+
section("You are the architect in a multi-role AI pipeline.", STABLE),
|
|
32
|
+
section("Analyze the task and produce a concrete architecture design including layers, patterns, data model, API contracts, dependencies, and tradeoffs.", STABLE),
|
|
33
|
+
section("## Architecture Guidelines", STABLE),
|
|
34
|
+
section([
|
|
25
35
|
"- Identify the architecture type (layered, microservices, event-driven, etc.)",
|
|
26
36
|
"- Define the layers and their responsibilities",
|
|
27
37
|
"- Identify design patterns to apply",
|
|
@@ -30,34 +40,19 @@ export async function buildArchitectPrompt({ task, instructions, researchContext
|
|
|
30
40
|
"- List external and internal dependencies",
|
|
31
41
|
"- Document tradeoffs and their rationale",
|
|
32
42
|
"- If critical decisions cannot be made without more information, list clarifying questions"
|
|
33
|
-
].join("\n"),
|
|
34
|
-
"Return a single valid JSON object and nothing else.",
|
|
35
|
-
'JSON schema: {"verdict":"ready|needs_clarification","architecture":{"type":string,"layers":[string],"patterns":[string],"dataModel":{"entities":[string]},"apiContracts":[string],"dependencies":[string],"tradeoffs":[string]},"questions":[string],"summary":string}'
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
sections.push(`## Domain Context\n${domainContext}`);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (researchContext) {
|
|
47
|
-
sections.push(`## Research Context\n${researchContext}`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
sections.push(`## Task\n${task}`);
|
|
51
|
-
|
|
52
|
-
if (projectDir) {
|
|
53
|
-
const skills = await loadAvailableSkills(projectDir);
|
|
54
|
-
const skillSection = buildSkillSection(skills, { provider, role: "architect" });
|
|
55
|
-
if (skillSection) {
|
|
56
|
-
sections.push(skillSection);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
43
|
+
].join("\n"), STABLE),
|
|
44
|
+
section("Return a single valid JSON object and nothing else.", STABLE),
|
|
45
|
+
section('JSON schema: {"verdict":"ready|needs_clarification","architecture":{"type":string,"layers":[string],"patterns":[string],"dataModel":{"entities":[string]},"apiContracts":[string],"dependencies":[string],"tradeoffs":[string]},"questions":[string],"summary":string}', STABLE),
|
|
46
|
+
section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
|
|
47
|
+
section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
|
|
48
|
+
section(skillSection, STABLE),
|
|
49
|
+
section(researchContext ? `## Research Context\n${researchContext}` : null, VOLATILE),
|
|
50
|
+
section(`## Task\n${task}`, VOLATILE),
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
59
53
|
|
|
60
|
-
|
|
54
|
+
export async function buildArchitectPrompt(options) {
|
|
55
|
+
return joinLayout(await buildArchitectPromptLayout(options));
|
|
61
56
|
}
|
|
62
57
|
|
|
63
58
|
function filterStrings(arr) {
|
package/src/prompts/coder.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { buildRtkInstructions } from "./rtk-snippet.js";
|
|
2
2
|
import { loadAvailableSkills, buildSkillSection } from "../skills/skill-loader.js";
|
|
3
3
|
import { getLanguageInstruction } from "../utils/locale.js";
|
|
4
|
+
import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
|
|
4
5
|
|
|
5
6
|
const SUBAGENT_PREAMBLE = [
|
|
6
7
|
"IMPORTANT: You are running as a Karajan sub-agent.",
|
|
@@ -179,7 +180,16 @@ function buildStackSection({ stack, testFramework }) {
|
|
|
179
180
|
return lines.join("\n");
|
|
180
181
|
}
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Build the coder prompt as a { stable, volatile } layout (Φ1, KJC-PCS-0057).
|
|
185
|
+
*
|
|
186
|
+
* stable: identical across iterations of the same HU and across HUs of the
|
|
187
|
+
* same plan — rendered FIRST so prefix-caching providers hit on it, and
|
|
188
|
+
* available separately so ClaudeAgent can ship it via --append-system-prompt.
|
|
189
|
+
* volatile: per-HU/iteration content, rendered LAST preserving the relative
|
|
190
|
+
* order the legacy prompt used (ADRs → SPEC → findings → tests → … → feedback).
|
|
191
|
+
*/
|
|
192
|
+
export async function buildCoderPromptLayout({ task, reviewerFeedback = null, sonarSummary = null, coderRules = null, methodology = "tdd", serenaEnabled = false, rtkAvailable = false, deferredContext = null, productContext = null, domainContext = null, plan = null, projectDir = null, language = "en", provider = null, acceptanceTests = null, adrs = null, specSection = null, reviewerFindings = null, huId = null, stack = null, testFramework = null }) {
|
|
183
193
|
const langInstruction = getLanguageInstruction(language);
|
|
184
194
|
// KJC-BUG-0032 (PR-I): hard rule about file paths. Real bug: a HU
|
|
185
195
|
// titled "Initialize project skeleton: create assistant/ directory…"
|
|
@@ -203,110 +213,75 @@ export async function buildCoderPrompt({ task, reviewerFeedback = null, sonarSum
|
|
|
203
213
|
].join("\n")
|
|
204
214
|
: null;
|
|
205
215
|
|
|
206
|
-
const sections = [
|
|
207
|
-
serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE,
|
|
208
|
-
...(langInstruction ? [langInstruction] : []),
|
|
209
|
-
`Task:\n${task}`,
|
|
210
|
-
"Implement directly in the repository.",
|
|
211
|
-
"Keep changes minimal and production-ready.",
|
|
212
|
-
"Follow SOLID principles. Write small, focused functions (< 30 lines).",
|
|
213
|
-
"Make atomic commits: 1 logical change = 1 commit. Keep PRs small and reviewable.",
|
|
214
|
-
"Security: validate all input, parameterize queries, never expose secrets. Use the auth pattern that matches the stack (e.g. httpOnly cookies for web sessions).",
|
|
215
|
-
"Use the project's standard logger and type system (no console.log when a structured logger exists; use the project's type idiom — TS types, JSDoc, Python type hints, Go interfaces…).",
|
|
216
|
-
SUBPROCESS_CONSTRAINTS
|
|
217
|
-
];
|
|
218
216
|
const stackRule = buildStackSection({ stack, testFramework });
|
|
219
|
-
if (stackRule) sections.push(stackRule);
|
|
220
|
-
if (projectDirRule) sections.push(projectDirRule);
|
|
221
|
-
|
|
222
|
-
if (serenaEnabled) {
|
|
223
|
-
sections.push(SERENA_INSTRUCTIONS);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
217
|
const rtkSnippet = buildRtkInstructions({ rtkAvailable });
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
if (productContext) {
|
|
232
|
-
sections.push(`## Product Context\n${productContext}`);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
if (domainContext) {
|
|
236
|
-
sections.push(`## Domain Context\n${domainContext}`);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if (plan) {
|
|
240
|
-
sections.push(`## Implementation Plan (from planner)\nFollow these steps:\n${plan}`);
|
|
218
|
+
let skillSection = null;
|
|
219
|
+
if (projectDir) {
|
|
220
|
+
const skills = await loadAvailableSkills(projectDir);
|
|
221
|
+
skillSection = buildSkillSection(skills, { provider });
|
|
241
222
|
}
|
|
242
223
|
|
|
243
|
-
//
|
|
224
|
+
// Volatile sections keep the legacy relative order — order matters:
|
|
244
225
|
// 1. ADRs first (they constrain HOW you implement),
|
|
245
226
|
// 2. SPEC reference (what section we're satisfying),
|
|
246
227
|
// 3. Reviewer findings about THIS HU (warnings the coder needs
|
|
247
228
|
// to consider while writing code),
|
|
248
229
|
// 4. Acceptance tests (the gate the implementation must pass).
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
if (testsSection) {
|
|
263
|
-
sections.push(testsSection);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
if (coderRules) {
|
|
267
|
-
sections.push(`Coder rules (MUST follow):\n${coderRules}`);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
if (methodology === "tdd") {
|
|
271
|
-
sections.push(
|
|
272
|
-
[
|
|
273
|
-
"Default development policy: TDD.",
|
|
274
|
-
"1) Add or update failing tests first.",
|
|
275
|
-
"2) Implement minimal code to make tests pass.",
|
|
276
|
-
"3) Refactor safely while keeping tests green."
|
|
277
|
-
].join("\n")
|
|
278
|
-
);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
if (sonarSummary) {
|
|
282
|
-
sections.push(`Sonar summary:\n${sonarSummary}`);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
if (reviewerFeedback) {
|
|
286
|
-
sections.push(
|
|
287
|
-
`## Reviewer blocking feedback — YOU MUST FIX THESE BEFORE PROCEEDING`,
|
|
288
|
-
reviewerFeedback,
|
|
289
|
-
"",
|
|
290
|
-
"For each issue above:",
|
|
291
|
-
"1. Find the relevant file(s) in the project",
|
|
292
|
-
"2. Make the specific code change needed to resolve the issue",
|
|
293
|
-
"3. If tests are missing, write them",
|
|
294
|
-
"4. If dependencies are needed, install them with the project's package manager (npm install / pip install / go get / cargo add — pick the one that matches the stack above)",
|
|
295
|
-
"5. Do NOT skip any issue — all must be resolved"
|
|
296
|
-
);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
if (deferredContext) {
|
|
300
|
-
sections.push(deferredContext);
|
|
301
|
-
}
|
|
230
|
+
const reviewerFeedbackSection = reviewerFeedback
|
|
231
|
+
? [
|
|
232
|
+
`## Reviewer blocking feedback — YOU MUST FIX THESE BEFORE PROCEEDING`,
|
|
233
|
+
reviewerFeedback,
|
|
234
|
+
"",
|
|
235
|
+
"For each issue above:",
|
|
236
|
+
"1. Find the relevant file(s) in the project",
|
|
237
|
+
"2. Make the specific code change needed to resolve the issue",
|
|
238
|
+
"3. If tests are missing, write them",
|
|
239
|
+
"4. If dependencies are needed, install them with the project's package manager (npm install / pip install / go get / cargo add — pick the one that matches the stack above)",
|
|
240
|
+
"5. Do NOT skip any issue — all must be resolved"
|
|
241
|
+
].join("\n\n")
|
|
242
|
+
: null;
|
|
302
243
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
244
|
+
return buildPromptLayout([
|
|
245
|
+
section(serenaEnabled ? SUBAGENT_PREAMBLE_SERENA : SUBAGENT_PREAMBLE, STABLE),
|
|
246
|
+
section(langInstruction, STABLE),
|
|
247
|
+
section("Implement directly in the repository.", STABLE),
|
|
248
|
+
section("Keep changes minimal and production-ready.", STABLE),
|
|
249
|
+
section("Follow SOLID principles. Write small, focused functions (< 30 lines).", STABLE),
|
|
250
|
+
section("Make atomic commits: 1 logical change = 1 commit. Keep PRs small and reviewable.", STABLE),
|
|
251
|
+
section("Security: validate all input, parameterize queries, never expose secrets. Use the auth pattern that matches the stack (e.g. httpOnly cookies for web sessions).", STABLE),
|
|
252
|
+
section("Use the project's standard logger and type system (no console.log when a structured logger exists; use the project's type idiom — TS types, JSDoc, Python type hints, Go interfaces…).", STABLE),
|
|
253
|
+
section(SUBPROCESS_CONSTRAINTS, STABLE),
|
|
254
|
+
section(stackRule, STABLE),
|
|
255
|
+
section(projectDirRule, STABLE),
|
|
256
|
+
section(serenaEnabled ? SERENA_INSTRUCTIONS : null, STABLE),
|
|
257
|
+
section(rtkSnippet, STABLE),
|
|
258
|
+
section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
|
|
259
|
+
section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
|
|
260
|
+
section(coderRules ? `Coder rules (MUST follow):\n${coderRules}` : null, STABLE),
|
|
261
|
+
section(
|
|
262
|
+
methodology === "tdd"
|
|
263
|
+
? [
|
|
264
|
+
"Default development policy: TDD.",
|
|
265
|
+
"1) Add or update failing tests first.",
|
|
266
|
+
"2) Implement minimal code to make tests pass.",
|
|
267
|
+
"3) Refactor safely while keeping tests green."
|
|
268
|
+
].join("\n")
|
|
269
|
+
: null,
|
|
270
|
+
STABLE
|
|
271
|
+
),
|
|
272
|
+
section(skillSection, STABLE),
|
|
273
|
+
section(`Task:\n${task}`, VOLATILE),
|
|
274
|
+
section(plan ? `## Implementation Plan (from planner)\nFollow these steps:\n${plan}` : null, VOLATILE),
|
|
275
|
+
section(renderAdrSection(adrs) || null, VOLATILE),
|
|
276
|
+
section(renderSpecSectionLine(specSection) || null, VOLATILE),
|
|
277
|
+
section(renderReviewerFindingsSection(reviewerFindings, huId) || null, VOLATILE),
|
|
278
|
+
section(renderAcceptanceTestsSection(acceptanceTests) || null, VOLATILE),
|
|
279
|
+
section(sonarSummary ? `Sonar summary:\n${sonarSummary}` : null, VOLATILE),
|
|
280
|
+
section(reviewerFeedbackSection, VOLATILE),
|
|
281
|
+
section(deferredContext, VOLATILE),
|
|
282
|
+
]);
|
|
283
|
+
}
|
|
310
284
|
|
|
311
|
-
|
|
285
|
+
export async function buildCoderPrompt(options) {
|
|
286
|
+
return joinLayout(await buildCoderPromptLayout(options));
|
|
312
287
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { extractFirstJson } from "../utils/json-extract.js";
|
|
2
2
|
import { getLanguageInstruction } from "../utils/locale.js";
|
|
3
|
+
import { section, buildPromptLayout, joinLayout, STABLE, VOLATILE } from "./prompt-layout.js";
|
|
3
4
|
|
|
4
5
|
const SUBAGENT_PREAMBLE = [
|
|
5
6
|
"IMPORTANT: You are running as a Karajan sub-agent.",
|
|
@@ -22,38 +23,31 @@ const DIMENSION_KEYS = [
|
|
|
22
23
|
* @param {{stories: Array<{id: string, text: string}>, instructions: string|null, context?: string|null}} params
|
|
23
24
|
* @returns {string} The assembled prompt.
|
|
24
25
|
*/
|
|
25
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Build the HU-reviewer prompt as a { stable, volatile } layout (Φ1,
|
|
28
|
+
* KJC-PCS-0057): preamble, instructions, JSON schema and contexts are
|
|
29
|
+
* identical across batches on the same project; the stories under
|
|
30
|
+
* evaluation and the per-batch additional context go last.
|
|
31
|
+
*/
|
|
32
|
+
export function buildHuReviewerPromptLayout({ stories, instructions, context = null, productContext = null, domainContext = null, hu_language = "en" }) {
|
|
26
33
|
const langInstruction = getLanguageInstruction(hu_language);
|
|
27
|
-
const sections = [SUBAGENT_PREAMBLE, ...(langInstruction ? [langInstruction] : [])];
|
|
28
|
-
|
|
29
|
-
if (instructions) {
|
|
30
|
-
sections.push(instructions);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
sections.push("## Stories to Evaluate");
|
|
34
|
-
|
|
35
|
-
for (const story of stories) {
|
|
36
|
-
sections.push(`### ${story.id}\n${story.text}`);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
sections.push(
|
|
40
|
-
"Return a single valid JSON object and nothing else.",
|
|
41
|
-
`JSON schema: {"evaluations":[{"story_id":string,"scores":{"D1_jtbd_context":number,"D2_user_specificity":number,"D3_behavior_change":number,"D4_control_zone":number,"D5_time_constraints":number,"D6_survivable_experiment":number},"total":number,"antipatterns_detected":[string],"verdict":"certified|needs_rewrite|needs_context","evaluation_notes":string,"rewritten":object|null,"certified_hu":object|null,"context_needed":object|null}],"batch_summary":{"total":number,"certified":number,"needs_rewrite":number,"needs_context":number,"consolidated_questions":string}}`
|
|
42
|
-
);
|
|
43
34
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
35
|
+
return buildPromptLayout([
|
|
36
|
+
section(SUBAGENT_PREAMBLE, STABLE),
|
|
37
|
+
section(langInstruction, STABLE),
|
|
38
|
+
section(instructions, STABLE),
|
|
39
|
+
section("Return a single valid JSON object and nothing else.", STABLE),
|
|
40
|
+
section(`JSON schema: {"evaluations":[{"story_id":string,"scores":{"D1_jtbd_context":number,"D2_user_specificity":number,"D3_behavior_change":number,"D4_control_zone":number,"D5_time_constraints":number,"D6_survivable_experiment":number},"total":number,"antipatterns_detected":[string],"verdict":"certified|needs_rewrite|needs_context","evaluation_notes":string,"rewritten":object|null,"certified_hu":object|null,"context_needed":object|null}],"batch_summary":{"total":number,"certified":number,"needs_rewrite":number,"needs_context":number,"consolidated_questions":string}}`, STABLE),
|
|
41
|
+
section(productContext ? `## Product Context\n${productContext}` : null, STABLE),
|
|
42
|
+
section(domainContext ? `## Domain Context\n${domainContext}` : null, STABLE),
|
|
43
|
+
section("## Stories to Evaluate", VOLATILE),
|
|
44
|
+
...stories.map((story) => section(`### ${story.id}\n${story.text}`, VOLATILE)),
|
|
45
|
+
section(context ? `## Additional Context\n${context}` : null, VOLATILE),
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
55
48
|
|
|
56
|
-
|
|
49
|
+
export function buildHuReviewerPrompt(options) {
|
|
50
|
+
return joinLayout(buildHuReviewerPromptLayout(options));
|
|
57
51
|
}
|
|
58
52
|
|
|
59
53
|
/**
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt layout helper — Phase 1 (KJC-PCS-0057, cache propio).
|
|
3
|
+
*
|
|
4
|
+
* Separates prompt sections into two buckets so every prompt builder can
|
|
5
|
+
* emit a cache-friendly shape:
|
|
6
|
+
*
|
|
7
|
+
* - stable: identical across iterations of the same HU and across HUs
|
|
8
|
+
* of the same plan (preamble, rules, constraints, skills,
|
|
9
|
+
* product/domain context). Goes FIRST in the rendered prompt
|
|
10
|
+
* so providers with automatic prefix caching (OpenAI, Gemini,
|
|
11
|
+
* LiteLLM-routed) hit on the literal prefix. For Anthropic,
|
|
12
|
+
* agents can send this bucket via --append-system-prompt
|
|
13
|
+
* where the CLI already places cache breakpoints.
|
|
14
|
+
* - volatile: changes per HU/iteration (task, plan, acceptance tests,
|
|
15
|
+
* reviewer feedback, diff). Goes LAST, preserving the
|
|
16
|
+
* relative order the builder pushed it in — the semantic
|
|
17
|
+
* ordering inside the bucket ("order matters" in coder.js)
|
|
18
|
+
* is untouched.
|
|
19
|
+
*
|
|
20
|
+
* Tagging is explicit on purpose: an untagged section throws instead of
|
|
21
|
+
* silently landing in one bucket (a misclassified volatile section would
|
|
22
|
+
* silently break the byte-identical invariant the prefix cache relies on).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
export const STABLE = "stable";
|
|
26
|
+
export const VOLATILE = "volatile";
|
|
27
|
+
|
|
28
|
+
const SEPARATOR = "\n\n";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Tag a section for buildPromptLayout. Returns null for empty/non-string
|
|
32
|
+
* content so builders can push conditional sections without guards.
|
|
33
|
+
*
|
|
34
|
+
* @param {string|null|undefined} content
|
|
35
|
+
* @param {"stable"|"volatile"} [stability]
|
|
36
|
+
* @returns {{content: string, stability: string}|null}
|
|
37
|
+
*/
|
|
38
|
+
export function section(content, stability = VOLATILE) {
|
|
39
|
+
if (typeof content !== "string" || content.length === 0) return null;
|
|
40
|
+
return { content, stability };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Split tagged sections into { stable, volatile } blocks. Insertion order
|
|
45
|
+
* is preserved within each bucket. Null/undefined entries are skipped.
|
|
46
|
+
*
|
|
47
|
+
* @param {Array<{content: string, stability: string}|null|undefined>} sections
|
|
48
|
+
* @returns {{stable: string, volatile: string}}
|
|
49
|
+
*/
|
|
50
|
+
export function buildPromptLayout(sections) {
|
|
51
|
+
const stable = [];
|
|
52
|
+
const volatile = [];
|
|
53
|
+
for (const entry of sections) {
|
|
54
|
+
if (entry == null) continue;
|
|
55
|
+
if (entry.stability === STABLE) {
|
|
56
|
+
stable.push(entry.content);
|
|
57
|
+
} else if (entry.stability === VOLATILE) {
|
|
58
|
+
volatile.push(entry.content);
|
|
59
|
+
} else {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`prompt-layout: section has invalid stability tag "${entry?.stability}" — use section(content, STABLE|VOLATILE)`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { stable: stable.join(SEPARATOR), volatile: volatile.join(SEPARATOR) };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Render a layout as a single prompt string: stable prefix first, volatile
|
|
70
|
+
* tail last. Used by agents whose provider caches on the literal token
|
|
71
|
+
* prefix (codex, gemini, aider, opencode).
|
|
72
|
+
*
|
|
73
|
+
* @param {{stable: string, volatile: string}} layout
|
|
74
|
+
* @returns {string}
|
|
75
|
+
*/
|
|
76
|
+
export function joinLayout({ stable, volatile }) {
|
|
77
|
+
if (!stable) return volatile;
|
|
78
|
+
if (!volatile) return stable;
|
|
79
|
+
return `${stable}${SEPARATOR}${volatile}`;
|
|
80
|
+
}
|