@kyo-so/cli 0.16.1 → 0.16.2

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/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.16.2] - 2026-08-01
11
+
12
+ ### Changed
13
+
14
+ - Promote the Marketplace Plugin to `0.7.9` and pin its Codex and Claude Code
15
+ MCP definitions and Skill fallbacks to `@kyo-so/cli@0.16.1`.
16
+ - Update the default Claude ACP adapter to
17
+ `@agentclientprotocol/claude-agent-acp@0.63.0`.
18
+ - Update `smol-toml` to `1.7.1` and `@modelcontextprotocol/server` to the
19
+ stable `2.0.0` release.
20
+
10
21
  ## [0.16.1] - 2026-07-28
11
22
 
12
23
  ### Changed
package/README.ja.md CHANGED
@@ -154,7 +154,7 @@ Use Kyoso diff_review on the current diff. I need a second opinion before mergin
154
154
 
155
155
  ## CLI
156
156
 
157
- package-runner の実行経路では、package と executable を必ず別指定します: `npx -y --package=@kyo-so/cli kyoso` と `bunx --package @kyo-so/cli kyoso` です。workflowで固定する場合は、`@kyo-so/cli@0.16.0` のようにpackage名へcomplete SemVer pinを付けます。以下の例の `kyoso` は、すでにインストールされた executable の省略形です。Naming note: npm パッケージは `@kyo-so/cli` (製品名 Kyo-so に対応) で、インストールされる CLI コマンドは短い `kyoso` です。
157
+ package-runner の実行経路では、package と executable を必ず別指定します: `npx -y --package=@kyo-so/cli kyoso` と `bunx --package @kyo-so/cli kyoso` です。workflowで固定する場合は、`@kyo-so/cli@0.16.1` のようにpackage名へcomplete SemVer pinを付けます。以下の例の `kyoso` は、すでにインストールされた executable の省略形です。Naming note: npm パッケージは `@kyo-so/cli` (製品名 Kyo-so に対応) で、インストールされる CLI コマンドは短い `kyoso` です。
158
158
 
159
159
  Bun fallback は Bun `1.3.14` で検証済みです。古い Bun では npx 形式またはインストール済みの `kyoso` を使い、複数bin packageからの Bun のbinary推論に依存しないでください。
160
160
 
package/README.md CHANGED
@@ -152,7 +152,7 @@ Manual setup examples are kept in `examples/codex-config.toml` and `examples/cla
152
152
 
153
153
  ## CLI
154
154
 
155
- The package-runner execution paths always select the package and executable separately: `npx -y --package=@kyo-so/cli kyoso` and `bunx --package @kyo-so/cli kyoso`. Add a complete SemVer pin after the package name when a workflow needs one, for example `@kyo-so/cli@0.16.0`. The examples below abbreviate an already installed executable as `kyoso`. Naming note: the npm package is `@kyo-so/cli` (matching the product name Kyo-so), while the installed CLI command is the shorter `kyoso`.
155
+ The package-runner execution paths always select the package and executable separately: `npx -y --package=@kyo-so/cli kyoso` and `bunx --package @kyo-so/cli kyoso`. Add a complete SemVer pin after the package name when a workflow needs one, for example `@kyo-so/cli@0.16.1`. The examples below abbreviate an already installed executable as `kyoso`. Naming note: the npm package is `@kyo-so/cli` (matching the product name Kyo-so), while the installed CLI command is the shorter `kyoso`.
156
156
 
157
157
  The Bun fallback is verified on Bun `1.3.14`. On an older Bun, use the npx form or an installed `kyoso`; do not rely on Bun inferring a binary from a multi-bin package.
158
158
 
package/README.zh-CN.md CHANGED
@@ -154,7 +154,7 @@ Use Kyoso diff_review on the current diff. I need a second opinion before mergin
154
154
 
155
155
  ## CLI
156
156
 
157
- package-runner 执行路径始终分别指定 package 和 executable:`npx -y --package=@kyo-so/cli kyoso` 与 `bunx --package @kyo-so/cli kyoso`。需要固定 workflow 时,在 package 名后加 complete SemVer pin,例如 `@kyo-so/cli@0.16.0`。下面的示例把已安装 executable 简写为 `kyoso`。Naming note: npm package 是 `@kyo-so/cli` (对应产品名 Kyo-so),安装后的 CLI command 是更短的 `kyoso`。
157
+ package-runner 执行路径始终分别指定 package 和 executable:`npx -y --package=@kyo-so/cli kyoso` 与 `bunx --package @kyo-so/cli kyoso`。需要固定 workflow 时,在 package 名后加 complete SemVer pin,例如 `@kyo-so/cli@0.16.1`。下面的示例把已安装 executable 简写为 `kyoso`。Naming note: npm package 是 `@kyo-so/cli` (对应产品名 Kyo-so),安装后的 CLI command 是更短的 `kyoso`。
158
158
 
159
159
  Bun fallback 已在 Bun `1.3.14` 上验证。旧版 Bun 请使用 npx 形式或已安装的 `kyoso`,不要依赖 Bun 从多 bin package 推断 binary。
160
160
 
package/dist/bin/kyoso.js CHANGED
@@ -183964,7 +183964,7 @@ var JUDGE_MAX_OUTPUT_TOKENS = 4096;
183964
183964
  var RAW_OUTPUT_MAX_CHARS = 16384;
183965
183965
  var TRACE_DIR = ".kyoso/traces";
183966
183966
  var KYOSO_CHILD_AGENT = "KYOSO_CHILD_AGENT";
183967
- var KYOSO_VERSION = "0.16.1";
183967
+ var KYOSO_VERSION = "0.16.2";
183968
183968
 
183969
183969
  // src/utils/pathContainment.ts
183970
183970
  import { resolve, sep as sep2 } from "node:path";
@@ -184294,7 +184294,7 @@ var defaultConfig = {
184294
184294
  enabled: true,
184295
184295
  type: "acp",
184296
184296
  command: "npx",
184297
- args: ["-y", "@agentclientprotocol/claude-agent-acp@0.62.0"],
184297
+ args: ["-y", "@agentclientprotocol/claude-agent-acp@0.63.0"],
184298
184298
  role: "architecture_security_reviewer",
184299
184299
  timeoutMs: DEFAULT_AGENT_TIMEOUT_MS,
184300
184300
  env: {
@@ -185460,6 +185460,8 @@ function skipUntil(str, ptr, sep3, end, banNewLines = false) {
185460
185460
  let c = str[i];
185461
185461
  if (c === "#") {
185462
185462
  i = indexOfNewline(str, i);
185463
+ if (i < 0)
185464
+ break;
185463
185465
  } else if (c === sep3) {
185464
185466
  return i + 1;
185465
185467
  } else if (c === end || banNewLines && (c === `
@@ -187305,9 +187307,9 @@ var PLUGIN_RUNTIME_COMPATIBILITY_SCHEMA_VERSION = 2;
187305
187307
  var MINIMUM_SUPPORTED_CODEX_VERSION = "0.144.0-alpha.4";
187306
187308
  var PLUGIN_RUNTIME_EXPECTED_CONTRACT = {
187307
187309
  distribution: {
187308
- pluginVersion: "0.7.8",
187310
+ pluginVersion: "0.7.9",
187309
187311
  mcpCommand: "npx",
187310
- mcpPackagePin: "@kyo-so/cli@0.16.0",
187312
+ mcpPackagePin: "@kyo-so/cli@0.16.1",
187311
187313
  mcpExecutable: "kyoso"
187312
187314
  },
187313
187315
  marketplace: {
@@ -197148,6 +197150,27 @@ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__
197148
197150
  enumerable: true
197149
197151
  }) : target, mod));
197150
197152
 
197153
+ // node_modules/@modelcontextprotocol/server/dist/dialects-DoSzNhcb.mjs
197154
+ var DRAFT_2020_12_URIS = new Set(["https://json-schema.org/draft/2020-12/schema", "http://json-schema.org/draft/2020-12/schema"]);
197155
+ var DRAFT_2019_09_URIS = new Set(["https://json-schema.org/draft/2019-09/schema", "http://json-schema.org/draft/2019-09/schema"]);
197156
+ var DRAFT_07_URIS = new Set(["https://json-schema.org/draft-07/schema", "http://json-schema.org/draft-07/schema"]);
197157
+ var DRAFT_06_URIS = new Set(["https://json-schema.org/draft-06/schema", "http://json-schema.org/draft-06/schema"]);
197158
+ function declares2019Dialect($schema) {
197159
+ return typeof $schema === "string" && DRAFT_2019_09_URIS.has($schema.replace(/#$/, ""));
197160
+ }
197161
+ function declaredDialect(schema, remedy) {
197162
+ if (!("$schema" in schema) || typeof schema.$schema !== "string")
197163
+ return "2020-12";
197164
+ const declared = schema.$schema.replace(/#$/, "");
197165
+ if (DRAFT_2020_12_URIS.has(declared))
197166
+ return "2020-12";
197167
+ if (DRAFT_2019_09_URIS.has(declared))
197168
+ return "2019-09";
197169
+ if (DRAFT_07_URIS.has(declared) || DRAFT_06_URIS.has(declared))
197170
+ return "draft-7";
197171
+ throw new Error(`JSON Schema declares an unsupported dialect ("$schema": "${schema.$schema.slice(0, 200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${remedy}`);
197172
+ }
197173
+
197151
197174
  // node_modules/@modelcontextprotocol/core/dist/auth-CUe6YdwF.mjs
197152
197175
  var LATEST_PROTOCOL_VERSION = "2025-11-25";
197153
197176
  var SUPPORTED_PROTOCOL_VERSIONS = [
@@ -198089,7 +198112,7 @@ var OAuthTokenRevocationRequestSchema = object({
198089
198112
  token_type_hint: string2().optional()
198090
198113
  }).strip();
198091
198114
 
198092
- // node_modules/@modelcontextprotocol/server/dist/src-D86MbS1I.mjs
198115
+ // node_modules/@modelcontextprotocol/server/dist/src-CX2iR2pK.mjs
198093
198116
  var BRANDS = Symbol.for("mcp.sdk.errorBrands");
198094
198117
  function stampErrorBrands(instance, ctor) {
198095
198118
  const brands = /* @__PURE__ */ new Set;
@@ -199186,36 +199209,49 @@ var REF_REWRITE_NAME_MAP_KEYS = new Set([
199186
199209
  "patternProperties",
199187
199210
  "$defs",
199188
199211
  "definitions",
199189
- "dependentSchemas"
199212
+ "dependentSchemas",
199213
+ "dependencies"
199190
199214
  ]);
199215
+ function establishesNewBase(id) {
199216
+ return id !== undefined && !(typeof id === "string" && id.startsWith("#"));
199217
+ }
199191
199218
  function wrapOutputSchemaForLegacy(natural) {
199192
199219
  const $schema = typeof natural["$schema"] === "string" ? natural["$schema"] : undefined;
199193
- if (natural["$id"] !== undefined)
199220
+ if (establishesNewBase(natural["$id"]))
199194
199221
  return {
199195
199222
  ...$schema !== undefined && { $schema },
199196
199223
  type: "object",
199197
199224
  properties: { result: natural },
199198
199225
  required: ["result"]
199199
199226
  };
199227
+ const convertRecursiveRefs = declares2019Dialect(natural["$schema"]) && natural["$recursiveAnchor"] !== true;
199200
199228
  const rewriteRefs = (node, parentIsNameMap) => {
199201
199229
  if (Array.isArray(node))
199202
199230
  return node.map((item) => rewriteRefs(item, false));
199203
199231
  if (node === null || typeof node !== "object")
199204
199232
  return node;
199205
- if (!parentIsNameMap && node["$id"] !== undefined)
199233
+ if (!parentIsNameMap && establishesNewBase(node["$id"]))
199206
199234
  return node;
199207
199235
  const out = {};
199236
+ let convertedRecursion = false;
199208
199237
  for (const [k, v] of Object.entries(node))
199209
199238
  if (parentIsNameMap)
199210
199239
  out[k] = rewriteRefs(v, false);
199211
199240
  else if ((k === "$ref" || k === "$dynamicRef") && typeof v === "string")
199212
199241
  out[k] = v === "#" ? "#/properties/result" : v.startsWith("#/") ? `#/properties/result${v.slice(1)}` : v;
199242
+ else if (k === "$recursiveRef" && v === "#" && convertRecursiveRefs)
199243
+ convertedRecursion = true;
199213
199244
  else if (REF_REWRITE_DATA_POSITION_KEYS.has(k))
199214
199245
  out[k] = v;
199215
199246
  else if (REF_REWRITE_NAME_MAP_KEYS.has(k))
199216
199247
  out[k] = rewriteRefs(v, true);
199217
199248
  else
199218
199249
  out[k] = rewriteRefs(v, false);
199250
+ if (convertedRecursion)
199251
+ if ("$ref" in out)
199252
+ out["allOf"] = [...Array.isArray(out["allOf"]) ? out["allOf"] : [], { $ref: "#/properties/result" }];
199253
+ else
199254
+ out["$ref"] = "#/properties/result";
199219
199255
  return out;
199220
199256
  };
199221
199257
  return {
@@ -202635,7 +202671,7 @@ function normalizeRawShapeSchema(schema) {
202635
202671
  return schema;
202636
202672
  }
202637
202673
 
202638
- // node_modules/@modelcontextprotocol/server/dist/ajvProvider-CplOkyLC.mjs
202674
+ // node_modules/@modelcontextprotocol/server/dist/ajvProvider-CEoC__sr.mjs
202639
202675
  var require_code$1 = /* @__PURE__ */ __commonJSMin((exports) => {
202640
202676
  Object.defineProperty(exports, "__esModule", { value: true });
202641
202677
  exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = undefined;
@@ -206233,7 +206269,7 @@ var require_uri = /* @__PURE__ */ __commonJSMin((exports) => {
206233
206269
  uri.code = 'require("ajv/dist/runtime/uri").default';
206234
206270
  exports.default = uri;
206235
206271
  });
206236
- var require_core$2 = /* @__PURE__ */ __commonJSMin((exports) => {
206272
+ var require_core$3 = /* @__PURE__ */ __commonJSMin((exports) => {
206237
206273
  Object.defineProperty(exports, "__esModule", { value: true });
206238
206274
  exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = undefined;
206239
206275
  var validate_1 = require_validate();
@@ -206990,7 +207026,7 @@ var require_ref = /* @__PURE__ */ __commonJSMin((exports) => {
206990
207026
  exports.callRef = callRef;
206991
207027
  exports.default = def;
206992
207028
  });
206993
- var require_core$1 = /* @__PURE__ */ __commonJSMin((exports) => {
207029
+ var require_core$2 = /* @__PURE__ */ __commonJSMin((exports) => {
206994
207030
  Object.defineProperty(exports, "__esModule", { value: true });
206995
207031
  const id_1 = require_id();
206996
207032
  const ref_1 = require_ref();
@@ -207401,7 +207437,7 @@ var require_enum = /* @__PURE__ */ __commonJSMin((exports) => {
207401
207437
  };
207402
207438
  exports.default = def;
207403
207439
  });
207404
- var require_validation$1 = /* @__PURE__ */ __commonJSMin((exports) => {
207440
+ var require_validation$2 = /* @__PURE__ */ __commonJSMin((exports) => {
207405
207441
  Object.defineProperty(exports, "__esModule", { value: true });
207406
207442
  const limitNumber_1 = require_limitNumber();
207407
207443
  const multipleOf_1 = require_multipleOf();
@@ -208190,7 +208226,7 @@ var require_thenElse = /* @__PURE__ */ __commonJSMin((exports) => {
208190
208226
  };
208191
208227
  exports.default = def;
208192
208228
  });
208193
- var require_applicator$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208229
+ var require_applicator$2 = /* @__PURE__ */ __commonJSMin((exports) => {
208194
208230
  Object.defineProperty(exports, "__esModule", { value: true });
208195
208231
  const additionalItems_1 = require_additionalItems();
208196
208232
  const prefixItems_1 = require_prefixItems();
@@ -208231,7 +208267,7 @@ var require_applicator$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208231
208267
  }
208232
208268
  exports.default = getApplicator;
208233
208269
  });
208234
- var require_format$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208270
+ var require_format$2 = /* @__PURE__ */ __commonJSMin((exports) => {
208235
208271
  Object.defineProperty(exports, "__esModule", { value: true });
208236
208272
  const codegen_1 = require_codegen();
208237
208273
  const def = {
@@ -208326,9 +208362,9 @@ var require_format$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208326
208362
  };
208327
208363
  exports.default = def;
208328
208364
  });
208329
- var require_format = /* @__PURE__ */ __commonJSMin((exports) => {
208365
+ var require_format$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208330
208366
  Object.defineProperty(exports, "__esModule", { value: true });
208331
- const format = [require_format$1().default];
208367
+ const format = [require_format$2().default];
208332
208368
  exports.default = format;
208333
208369
  });
208334
208370
  var require_metadata = /* @__PURE__ */ __commonJSMin((exports) => {
@@ -208351,10 +208387,10 @@ var require_metadata = /* @__PURE__ */ __commonJSMin((exports) => {
208351
208387
  });
208352
208388
  var require_draft7 = /* @__PURE__ */ __commonJSMin((exports) => {
208353
208389
  Object.defineProperty(exports, "__esModule", { value: true });
208354
- const core_1 = require_core$1();
208355
- const validation_1 = require_validation$1();
208356
- const applicator_1 = require_applicator$1();
208357
- const format_1 = require_format();
208390
+ const core_1 = require_core$2();
208391
+ const validation_1 = require_validation$2();
208392
+ const applicator_1 = require_applicator$2();
208393
+ const format_1 = require_format$1();
208358
208394
  const metadata_1 = require_metadata();
208359
208395
  const draft7Vocabularies = [
208360
208396
  core_1.default,
@@ -208619,7 +208655,7 @@ var require_json_schema_draft_07 = /* @__PURE__ */ __commonJSMin((exports, modul
208619
208655
  var require_ajv = /* @__PURE__ */ __commonJSMin((exports, module) => {
208620
208656
  Object.defineProperty(exports, "__esModule", { value: true });
208621
208657
  exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = undefined;
208622
- const core_1 = require_core$2();
208658
+ const core_1 = require_core$3();
208623
208659
  const draft7_1 = require_draft7();
208624
208660
  const discriminator_1 = require_discriminator();
208625
208661
  const draft7MetaSchema = require_json_schema_draft_07();
@@ -208981,15 +209017,420 @@ var require_unevaluated$1 = /* @__PURE__ */ __commonJSMin((exports) => {
208981
209017
  const unevaluated = [unevaluatedProperties_1.default, unevaluatedItems_1.default];
208982
209018
  exports.default = unevaluated;
208983
209019
  });
209020
+ var require_schema$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209021
+ module.exports = {
209022
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209023
+ $id: "https://json-schema.org/draft/2019-09/schema",
209024
+ $vocabulary: {
209025
+ "https://json-schema.org/draft/2019-09/vocab/core": true,
209026
+ "https://json-schema.org/draft/2019-09/vocab/applicator": true,
209027
+ "https://json-schema.org/draft/2019-09/vocab/validation": true,
209028
+ "https://json-schema.org/draft/2019-09/vocab/meta-data": true,
209029
+ "https://json-schema.org/draft/2019-09/vocab/format": false,
209030
+ "https://json-schema.org/draft/2019-09/vocab/content": true
209031
+ },
209032
+ $recursiveAnchor: true,
209033
+ title: "Core and Validation specifications meta-schema",
209034
+ allOf: [
209035
+ { $ref: "meta/core" },
209036
+ { $ref: "meta/applicator" },
209037
+ { $ref: "meta/validation" },
209038
+ { $ref: "meta/meta-data" },
209039
+ { $ref: "meta/format" },
209040
+ { $ref: "meta/content" }
209041
+ ],
209042
+ type: ["object", "boolean"],
209043
+ properties: {
209044
+ definitions: {
209045
+ $comment: "While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.",
209046
+ type: "object",
209047
+ additionalProperties: { $recursiveRef: "#" },
209048
+ default: {}
209049
+ },
209050
+ dependencies: {
209051
+ $comment: '"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"',
209052
+ type: "object",
209053
+ additionalProperties: { anyOf: [{ $recursiveRef: "#" }, { $ref: "meta/validation#/$defs/stringArray" }] }
209054
+ }
209055
+ }
209056
+ };
209057
+ });
209058
+ var require_applicator$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209059
+ module.exports = {
209060
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209061
+ $id: "https://json-schema.org/draft/2019-09/meta/applicator",
209062
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/applicator": true },
209063
+ $recursiveAnchor: true,
209064
+ title: "Applicator vocabulary meta-schema",
209065
+ type: ["object", "boolean"],
209066
+ properties: {
209067
+ additionalItems: { $recursiveRef: "#" },
209068
+ unevaluatedItems: { $recursiveRef: "#" },
209069
+ items: { anyOf: [{ $recursiveRef: "#" }, { $ref: "#/$defs/schemaArray" }] },
209070
+ contains: { $recursiveRef: "#" },
209071
+ additionalProperties: { $recursiveRef: "#" },
209072
+ unevaluatedProperties: { $recursiveRef: "#" },
209073
+ properties: {
209074
+ type: "object",
209075
+ additionalProperties: { $recursiveRef: "#" },
209076
+ default: {}
209077
+ },
209078
+ patternProperties: {
209079
+ type: "object",
209080
+ additionalProperties: { $recursiveRef: "#" },
209081
+ propertyNames: { format: "regex" },
209082
+ default: {}
209083
+ },
209084
+ dependentSchemas: {
209085
+ type: "object",
209086
+ additionalProperties: { $recursiveRef: "#" }
209087
+ },
209088
+ propertyNames: { $recursiveRef: "#" },
209089
+ if: { $recursiveRef: "#" },
209090
+ then: { $recursiveRef: "#" },
209091
+ else: { $recursiveRef: "#" },
209092
+ allOf: { $ref: "#/$defs/schemaArray" },
209093
+ anyOf: { $ref: "#/$defs/schemaArray" },
209094
+ oneOf: { $ref: "#/$defs/schemaArray" },
209095
+ not: { $recursiveRef: "#" }
209096
+ },
209097
+ $defs: { schemaArray: {
209098
+ type: "array",
209099
+ minItems: 1,
209100
+ items: { $recursiveRef: "#" }
209101
+ } }
209102
+ };
209103
+ });
209104
+ var require_content$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209105
+ module.exports = {
209106
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209107
+ $id: "https://json-schema.org/draft/2019-09/meta/content",
209108
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/content": true },
209109
+ $recursiveAnchor: true,
209110
+ title: "Content vocabulary meta-schema",
209111
+ type: ["object", "boolean"],
209112
+ properties: {
209113
+ contentMediaType: { type: "string" },
209114
+ contentEncoding: { type: "string" },
209115
+ contentSchema: { $recursiveRef: "#" }
209116
+ }
209117
+ };
209118
+ });
209119
+ var require_core$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209120
+ module.exports = {
209121
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209122
+ $id: "https://json-schema.org/draft/2019-09/meta/core",
209123
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/core": true },
209124
+ $recursiveAnchor: true,
209125
+ title: "Core vocabulary meta-schema",
209126
+ type: ["object", "boolean"],
209127
+ properties: {
209128
+ $id: {
209129
+ type: "string",
209130
+ format: "uri-reference",
209131
+ $comment: "Non-empty fragments not allowed.",
209132
+ pattern: "^[^#]*#?$"
209133
+ },
209134
+ $schema: {
209135
+ type: "string",
209136
+ format: "uri"
209137
+ },
209138
+ $anchor: {
209139
+ type: "string",
209140
+ pattern: "^[A-Za-z][-A-Za-z0-9.:_]*$"
209141
+ },
209142
+ $ref: {
209143
+ type: "string",
209144
+ format: "uri-reference"
209145
+ },
209146
+ $recursiveRef: {
209147
+ type: "string",
209148
+ format: "uri-reference"
209149
+ },
209150
+ $recursiveAnchor: {
209151
+ type: "boolean",
209152
+ default: false
209153
+ },
209154
+ $vocabulary: {
209155
+ type: "object",
209156
+ propertyNames: {
209157
+ type: "string",
209158
+ format: "uri"
209159
+ },
209160
+ additionalProperties: { type: "boolean" }
209161
+ },
209162
+ $comment: { type: "string" },
209163
+ $defs: {
209164
+ type: "object",
209165
+ additionalProperties: { $recursiveRef: "#" },
209166
+ default: {}
209167
+ }
209168
+ }
209169
+ };
209170
+ });
209171
+ var require_format = /* @__PURE__ */ __commonJSMin((exports, module) => {
209172
+ module.exports = {
209173
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209174
+ $id: "https://json-schema.org/draft/2019-09/meta/format",
209175
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/format": true },
209176
+ $recursiveAnchor: true,
209177
+ title: "Format vocabulary meta-schema",
209178
+ type: ["object", "boolean"],
209179
+ properties: { format: { type: "string" } }
209180
+ };
209181
+ });
209182
+ var require_meta_data$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209183
+ module.exports = {
209184
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209185
+ $id: "https://json-schema.org/draft/2019-09/meta/meta-data",
209186
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/meta-data": true },
209187
+ $recursiveAnchor: true,
209188
+ title: "Meta-data vocabulary meta-schema",
209189
+ type: ["object", "boolean"],
209190
+ properties: {
209191
+ title: { type: "string" },
209192
+ description: { type: "string" },
209193
+ default: true,
209194
+ deprecated: {
209195
+ type: "boolean",
209196
+ default: false
209197
+ },
209198
+ readOnly: {
209199
+ type: "boolean",
209200
+ default: false
209201
+ },
209202
+ writeOnly: {
209203
+ type: "boolean",
209204
+ default: false
209205
+ },
209206
+ examples: {
209207
+ type: "array",
209208
+ items: true
209209
+ }
209210
+ }
209211
+ };
209212
+ });
209213
+ var require_validation$1 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209214
+ module.exports = {
209215
+ $schema: "https://json-schema.org/draft/2019-09/schema",
209216
+ $id: "https://json-schema.org/draft/2019-09/meta/validation",
209217
+ $vocabulary: { "https://json-schema.org/draft/2019-09/vocab/validation": true },
209218
+ $recursiveAnchor: true,
209219
+ title: "Validation vocabulary meta-schema",
209220
+ type: ["object", "boolean"],
209221
+ properties: {
209222
+ multipleOf: {
209223
+ type: "number",
209224
+ exclusiveMinimum: 0
209225
+ },
209226
+ maximum: { type: "number" },
209227
+ exclusiveMaximum: { type: "number" },
209228
+ minimum: { type: "number" },
209229
+ exclusiveMinimum: { type: "number" },
209230
+ maxLength: { $ref: "#/$defs/nonNegativeInteger" },
209231
+ minLength: { $ref: "#/$defs/nonNegativeIntegerDefault0" },
209232
+ pattern: {
209233
+ type: "string",
209234
+ format: "regex"
209235
+ },
209236
+ maxItems: { $ref: "#/$defs/nonNegativeInteger" },
209237
+ minItems: { $ref: "#/$defs/nonNegativeIntegerDefault0" },
209238
+ uniqueItems: {
209239
+ type: "boolean",
209240
+ default: false
209241
+ },
209242
+ maxContains: { $ref: "#/$defs/nonNegativeInteger" },
209243
+ minContains: {
209244
+ $ref: "#/$defs/nonNegativeInteger",
209245
+ default: 1
209246
+ },
209247
+ maxProperties: { $ref: "#/$defs/nonNegativeInteger" },
209248
+ minProperties: { $ref: "#/$defs/nonNegativeIntegerDefault0" },
209249
+ required: { $ref: "#/$defs/stringArray" },
209250
+ dependentRequired: {
209251
+ type: "object",
209252
+ additionalProperties: { $ref: "#/$defs/stringArray" }
209253
+ },
209254
+ const: true,
209255
+ enum: {
209256
+ type: "array",
209257
+ items: true
209258
+ },
209259
+ type: { anyOf: [{ $ref: "#/$defs/simpleTypes" }, {
209260
+ type: "array",
209261
+ items: { $ref: "#/$defs/simpleTypes" },
209262
+ minItems: 1,
209263
+ uniqueItems: true
209264
+ }] }
209265
+ },
209266
+ $defs: {
209267
+ nonNegativeInteger: {
209268
+ type: "integer",
209269
+ minimum: 0
209270
+ },
209271
+ nonNegativeIntegerDefault0: {
209272
+ $ref: "#/$defs/nonNegativeInteger",
209273
+ default: 0
209274
+ },
209275
+ simpleTypes: { enum: [
209276
+ "array",
209277
+ "boolean",
209278
+ "integer",
209279
+ "null",
209280
+ "number",
209281
+ "object",
209282
+ "string"
209283
+ ] },
209284
+ stringArray: {
209285
+ type: "array",
209286
+ items: { type: "string" },
209287
+ uniqueItems: true,
209288
+ default: []
209289
+ }
209290
+ }
209291
+ };
209292
+ });
209293
+ var require_json_schema_2019_09 = /* @__PURE__ */ __commonJSMin((exports) => {
209294
+ Object.defineProperty(exports, "__esModule", { value: true });
209295
+ const metaSchema = require_schema$1();
209296
+ const applicator = require_applicator$1();
209297
+ const content = require_content$1();
209298
+ const core2 = require_core$1();
209299
+ const format = require_format();
209300
+ const metadata = require_meta_data$1();
209301
+ const validation = require_validation$1();
209302
+ const META_SUPPORT_DATA = ["/properties"];
209303
+ function addMetaSchema2019($data) {
209304
+ [
209305
+ metaSchema,
209306
+ applicator,
209307
+ content,
209308
+ core2,
209309
+ with$data(this, format),
209310
+ metadata,
209311
+ with$data(this, validation)
209312
+ ].forEach((sch) => this.addMetaSchema(sch, undefined, false));
209313
+ return this;
209314
+ function with$data(ajv, sch) {
209315
+ return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch;
209316
+ }
209317
+ }
209318
+ exports.default = addMetaSchema2019;
209319
+ });
209320
+ var require__2019 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209321
+ Object.defineProperty(exports, "__esModule", { value: true });
209322
+ exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv2019 = undefined;
209323
+ const core_1 = require_core$3();
209324
+ const draft7_1 = require_draft7();
209325
+ const dynamic_1 = require_dynamic();
209326
+ const next_1 = require_next();
209327
+ const unevaluated_1 = require_unevaluated$1();
209328
+ const discriminator_1 = require_discriminator();
209329
+ const json_schema_2019_09_1 = require_json_schema_2019_09();
209330
+ const META_SCHEMA_ID = "https://json-schema.org/draft/2019-09/schema";
209331
+ var Ajv2019 = class extends core_1.default {
209332
+ constructor(opts = {}) {
209333
+ super({
209334
+ ...opts,
209335
+ dynamicRef: true,
209336
+ next: true,
209337
+ unevaluated: true
209338
+ });
209339
+ }
209340
+ _addVocabularies() {
209341
+ super._addVocabularies();
209342
+ this.addVocabulary(dynamic_1.default);
209343
+ draft7_1.default.forEach((v) => this.addVocabulary(v));
209344
+ this.addVocabulary(next_1.default);
209345
+ this.addVocabulary(unevaluated_1.default);
209346
+ if (this.opts.discriminator)
209347
+ this.addKeyword(discriminator_1.default);
209348
+ }
209349
+ _addDefaultMetaSchema() {
209350
+ super._addDefaultMetaSchema();
209351
+ const { $data, meta: meta3 } = this.opts;
209352
+ if (!meta3)
209353
+ return;
209354
+ json_schema_2019_09_1.default.call(this, $data);
209355
+ this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID;
209356
+ }
209357
+ defaultMeta() {
209358
+ return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined);
209359
+ }
209360
+ };
209361
+ exports.Ajv2019 = Ajv2019;
209362
+ module.exports = exports = Ajv2019;
209363
+ module.exports.Ajv2019 = Ajv2019;
209364
+ Object.defineProperty(exports, "__esModule", { value: true });
209365
+ exports.default = Ajv2019;
209366
+ var validate_1 = require_validate();
209367
+ Object.defineProperty(exports, "KeywordCxt", {
209368
+ enumerable: true,
209369
+ get: function() {
209370
+ return validate_1.KeywordCxt;
209371
+ }
209372
+ });
209373
+ var codegen_1 = require_codegen();
209374
+ Object.defineProperty(exports, "_", {
209375
+ enumerable: true,
209376
+ get: function() {
209377
+ return codegen_1._;
209378
+ }
209379
+ });
209380
+ Object.defineProperty(exports, "str", {
209381
+ enumerable: true,
209382
+ get: function() {
209383
+ return codegen_1.str;
209384
+ }
209385
+ });
209386
+ Object.defineProperty(exports, "stringify", {
209387
+ enumerable: true,
209388
+ get: function() {
209389
+ return codegen_1.stringify;
209390
+ }
209391
+ });
209392
+ Object.defineProperty(exports, "nil", {
209393
+ enumerable: true,
209394
+ get: function() {
209395
+ return codegen_1.nil;
209396
+ }
209397
+ });
209398
+ Object.defineProperty(exports, "Name", {
209399
+ enumerable: true,
209400
+ get: function() {
209401
+ return codegen_1.Name;
209402
+ }
209403
+ });
209404
+ Object.defineProperty(exports, "CodeGen", {
209405
+ enumerable: true,
209406
+ get: function() {
209407
+ return codegen_1.CodeGen;
209408
+ }
209409
+ });
209410
+ var validation_error_1 = require_validation_error();
209411
+ Object.defineProperty(exports, "ValidationError", {
209412
+ enumerable: true,
209413
+ get: function() {
209414
+ return validation_error_1.default;
209415
+ }
209416
+ });
209417
+ var ref_error_1 = require_ref_error();
209418
+ Object.defineProperty(exports, "MissingRefError", {
209419
+ enumerable: true,
209420
+ get: function() {
209421
+ return ref_error_1.default;
209422
+ }
209423
+ });
209424
+ });
208984
209425
  var require_draft2020 = /* @__PURE__ */ __commonJSMin((exports) => {
208985
209426
  Object.defineProperty(exports, "__esModule", { value: true });
208986
- const core_1 = require_core$1();
208987
- const validation_1 = require_validation$1();
208988
- const applicator_1 = require_applicator$1();
209427
+ const core_1 = require_core$2();
209428
+ const validation_1 = require_validation$2();
209429
+ const applicator_1 = require_applicator$2();
208989
209430
  const dynamic_1 = require_dynamic();
208990
209431
  const next_1 = require_next();
208991
209432
  const unevaluated_1 = require_unevaluated$1();
208992
- const format_1 = require_format();
209433
+ const format_1 = require_format$1();
208993
209434
  const metadata_1 = require_metadata();
208994
209435
  const draft2020Vocabularies = [
208995
209436
  dynamic_1.default,
@@ -209332,7 +209773,7 @@ var require_json_schema_2020_12 = /* @__PURE__ */ __commonJSMin((exports) => {
209332
209773
  var require__2020 = /* @__PURE__ */ __commonJSMin((exports, module) => {
209333
209774
  Object.defineProperty(exports, "__esModule", { value: true });
209334
209775
  exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv2020 = undefined;
209335
- const core_1 = require_core$2();
209776
+ const core_1 = require_core$3();
209336
209777
  const draft2020_1 = require_draft2020();
209337
209778
  const discriminator_1 = require_discriminator();
209338
209779
  const json_schema_2020_12_1 = require_json_schema_2020_12();
@@ -209750,12 +210191,12 @@ var require_dist = /* @__PURE__ */ __commonJSMin((exports, module) => {
209750
210191
  exports.default = formatsPlugin;
209751
210192
  });
209752
210193
  var import_ajv = require_ajv();
210194
+ var import__2019 = require__2019();
209753
210195
  var import__2020 = require__2020();
209754
210196
  var import_dist = /* @__PURE__ */ __toESM2(require_dist(), 1);
209755
- var DRAFT_2020_12_URIS = new Set(["https://json-schema.org/draft/2020-12/schema", "http://json-schema.org/draft/2020-12/schema"]);
209756
210197
  var addFormats = import_dist.default;
209757
- function createDefaultAjvInstance() {
209758
- const ajv = new import__2020.Ajv2020({
210198
+ function createDefaultAjvInstance(engineClass) {
210199
+ const ajv = new engineClass({
209759
210200
  strict: false,
209760
210201
  validateFormats: true,
209761
210202
  validateSchema: false,
@@ -209766,20 +210207,28 @@ function createDefaultAjvInstance() {
209766
210207
  }
209767
210208
  var AjvJsonSchemaValidator = class {
209768
210209
  _ajv;
210210
+ _ajvDraft7;
210211
+ _ajv2019;
209769
210212
  _userAjv;
209770
210213
  constructor(ajv) {
209771
210214
  this._userAjv = ajv !== undefined;
209772
210215
  this._ajv = ajv;
209773
210216
  }
209774
210217
  get ajv() {
209775
- return this._ajv ??= createDefaultAjvInstance();
210218
+ return this._ajv ??= createDefaultAjvInstance(import__2020.Ajv2020);
210219
+ }
210220
+ _engineFor(schema) {
210221
+ if (this._userAjv)
210222
+ return this.ajv;
210223
+ const dialect = declaredDialect(schema, "pass a pre-configured Ajv instance to AjvJsonSchemaValidator(ajv) to validate other dialects.");
210224
+ if (dialect === "2020-12")
210225
+ return this.ajv;
210226
+ if (dialect === "2019-09")
210227
+ return this._ajv2019 ??= createDefaultAjvInstance(import__2019.Ajv2019);
210228
+ return this._ajvDraft7 ??= createDefaultAjvInstance(import_ajv.Ajv);
209776
210229
  }
209777
210230
  getValidator(schema) {
209778
- if (!this._userAjv && "$schema" in schema && typeof schema.$schema === "string" && !DRAFT_2020_12_URIS.has(schema.$schema.replace(/#$/, ""))) {
209779
- const declared = schema.$schema.slice(0, 200);
209780
- throw new Error(`JSON Schema declares an unsupported dialect ("$schema": "${declared}"). The default validator supports JSON Schema 2020-12 only; pass a pre-configured Ajv instance to AjvJsonSchemaValidator(ajv) to validate other dialects.`);
209781
- }
209782
- const engine = this.ajv;
210231
+ const engine = this._engineFor(schema);
209783
210232
  const ajvValidator = "$id" in schema && typeof schema.$id === "string" ? engine.getSchema(schema.$id) ?? engine.compile(schema) : engine.compile(schema);
209784
210233
  return (input2) => {
209785
210234
  return ajvValidator(input2) ? {
@@ -209799,7 +210248,7 @@ var Ajv = import_ajv.Ajv;
209799
210248
  // node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs
209800
210249
  import process3 from "node:process";
209801
210250
 
209802
- // node_modules/@modelcontextprotocol/server/dist/mcp-IJurDZVN.mjs
210251
+ // node_modules/@modelcontextprotocol/server/dist/mcp-DXXb3Vv3.mjs
209803
210252
  var COMPLETABLE_SYMBOL = Symbol.for("mcp.completable");
209804
210253
  function isCompletable(schema) {
209805
210254
  return !!schema && typeof schema === "object" && COMPLETABLE_SYMBOL in schema;
@@ -209807,6 +210256,7 @@ function isCompletable(schema) {
209807
210256
  function getCompleter(schema) {
209808
210257
  return schema[COMPLETABLE_SYMBOL]?.complete;
209809
210258
  }
210259
+ var MAX_TIMER_DELAY_MS = 2 ** 31 - 1;
209810
210260
  var CHANGE_NOTIFICATION_METHODS = new Set([
209811
210261
  "notifications/tools/list_changed",
209812
210262
  "notifications/prompts/list_changed",
@@ -10,9 +10,9 @@ export declare const PLUGIN_RUNTIME_COMPATIBILITY_SCHEMA_VERSION = 2;
10
10
  export declare const MINIMUM_SUPPORTED_CODEX_VERSION = "0.144.0-alpha.4";
11
11
  export declare const PLUGIN_RUNTIME_EXPECTED_CONTRACT: {
12
12
  readonly distribution: {
13
- readonly pluginVersion: "0.7.8";
13
+ readonly pluginVersion: "0.7.9";
14
14
  readonly mcpCommand: "npx";
15
- readonly mcpPackagePin: "@kyo-so/cli@0.16.0";
15
+ readonly mcpPackagePin: "@kyo-so/cli@0.16.1";
16
16
  readonly mcpExecutable: "kyoso";
17
17
  };
18
18
  readonly marketplace: {
@@ -131,9 +131,9 @@ export declare const pluginRuntimeContract: {
131
131
  readonly pluginListTopLevelKeys: readonly ["installed", "available"];
132
132
  readonly expectedContract: {
133
133
  readonly distribution: {
134
- readonly pluginVersion: "0.7.8";
134
+ readonly pluginVersion: "0.7.9";
135
135
  readonly mcpCommand: "npx";
136
- readonly mcpPackagePin: "@kyo-so/cli@0.16.0";
136
+ readonly mcpPackagePin: "@kyo-so/cli@0.16.1";
137
137
  readonly mcpExecutable: "kyoso";
138
138
  };
139
139
  readonly marketplace: {
@@ -7,4 +7,4 @@ export declare const JUDGE_MAX_OUTPUT_TOKENS = 4096;
7
7
  export declare const RAW_OUTPUT_MAX_CHARS = 16384;
8
8
  export declare const TRACE_DIR = ".kyoso/traces";
9
9
  export declare const KYOSO_CHILD_AGENT = "KYOSO_CHILD_AGENT";
10
- export declare const KYOSO_VERSION = "0.16.1";
10
+ export declare const KYOSO_VERSION = "0.16.2";
package/dist/index.js CHANGED
@@ -184207,7 +184207,7 @@ var defaultConfig = {
184207
184207
  enabled: true,
184208
184208
  type: "acp",
184209
184209
  command: "npx",
184210
- args: ["-y", "@agentclientprotocol/claude-agent-acp@0.62.0"],
184210
+ args: ["-y", "@agentclientprotocol/claude-agent-acp@0.63.0"],
184211
184211
  role: "architecture_security_reviewer",
184212
184212
  timeoutMs: DEFAULT_AGENT_TIMEOUT_MS,
184213
184213
  env: {
@@ -185001,6 +185001,8 @@ function skipUntil(str, ptr, sep, end, banNewLines = false) {
185001
185001
  let c = str[i];
185002
185002
  if (c === "#") {
185003
185003
  i = indexOfNewline(str, i);
185004
+ if (i < 0)
185005
+ break;
185004
185006
  } else if (c === sep) {
185005
185007
  return i + 1;
185006
185008
  } else if (c === end || banNewLines && (c === `
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyo-so/cli",
3
- "version": "0.16.1",
3
+ "version": "0.16.2",
4
4
  "description": "Kyo-so: MCP-native, ACP-powered multi-agent review gates for AI coding workflows.",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "repository": {
@@ -62,8 +62,8 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@agentclientprotocol/sdk": "1.3.0",
65
- "@modelcontextprotocol/server": "2.0.0-beta.5",
66
- "smol-toml": "1.7.0",
65
+ "@modelcontextprotocol/server": "2.0.0",
66
+ "smol-toml": "1.7.1",
67
67
  "typescript": "6.0.3",
68
68
  "zod": "4.4.3"
69
69
  },