@uzysjung/agent-harness 26.158.0 → 26.159.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/dist/index.js CHANGED
@@ -67,7 +67,7 @@ import {
67
67
  upsertHarnessImport,
68
68
  withContinuousSkillsNote,
69
69
  writeInstallLog
70
- } from "./chunk-HHCNPPGS.js";
70
+ } from "./chunk-FTL34NT4.js";
71
71
 
72
72
  // node_modules/sisteransi/src/index.js
73
73
  var require_src = __commonJS({
@@ -752,7 +752,7 @@ var cac = (name = "") => new CAC(name);
752
752
  // package.json
753
753
  var package_default = {
754
754
  name: "@uzysjung/agent-harness",
755
- version: "26.158.0",
755
+ version: "26.159.0",
756
756
  description: "Curate vetted AI-coding skills & plugins by your tech stack \u2014 install only what you need, across Claude Code, Codex, OpenCode & Antigravity",
757
757
  type: "module",
758
758
  publishConfig: {
@@ -767,7 +767,6 @@ var package_default = {
767
767
  files: [
768
768
  "dist",
769
769
  "templates",
770
- "scripts/prune-ecc.sh",
771
770
  "README.md",
772
771
  "LICENSE"
773
772
  ],
@@ -1834,7 +1833,6 @@ function runExternalInstall(ctx, deps = {}) {
1834
1833
  const warn = deps.warn ?? console.error;
1835
1834
  const spawn = deps.spawn ?? defaultSpawn;
1836
1835
  const assets = deps.assets ?? EXTERNAL_ASSETS;
1837
- const harnessRoot = deps.harnessRoot ?? process.cwd();
1838
1836
  const projectDir = ctx.projectDir ?? process.cwd();
1839
1837
  const { targets: applicable, excludedByCli } = selectExternalTargets(assets, ctx);
1840
1838
  const sorted = [...applicable].sort((a, b2) => {
@@ -1848,7 +1846,7 @@ function runExternalInstall(ctx, deps = {}) {
1848
1846
  for (const asset of sorted) {
1849
1847
  deps.onAssetStart?.(asset);
1850
1848
  log(` \u2192 ${asset.description}`);
1851
- const baseResult = installOne(asset, { spawn, harnessRoot, cli: cli2, scope, projectDir });
1849
+ const baseResult = installOne(asset, { spawn, cli: cli2, scope, projectDir });
1852
1850
  let result = baseResult;
1853
1851
  if (baseResult.ok) {
1854
1852
  const v2 = detectVersion(asset.method, spawn);
@@ -1893,17 +1891,6 @@ function installOne(asset, ctx) {
1893
1891
  [`${method.cmd}@${method.version}`, ...method.args ?? []],
1894
1892
  cwd
1895
1893
  );
1896
- case "shell-script": {
1897
- const scriptPath = join11(ctx.harnessRoot, method.script);
1898
- if (!existsSync11(scriptPath)) {
1899
- return {
1900
- asset,
1901
- ok: false,
1902
- message: `script not found: ${scriptPath}`
1903
- };
1904
- }
1905
- return runSpawn(asset, ctx.spawn, "bash", [scriptPath, ...method.args], cwd);
1906
- }
1907
1894
  case "internal":
1908
1895
  return { asset, ok: true, message: "internal template (installed by Phase 1 manifest)" };
1909
1896
  }
@@ -2413,8 +2400,8 @@ function recordNewSkillBaseline(projectDir, templatesDir, targets) {
2413
2400
  }
2414
2401
  function trackOnlyFileAssets(tracks) {
2415
2402
  const base = { tracks, selectedInternalSkills: [] };
2416
- const optedOut = { ...base, withEcc: false, withTauri: false };
2417
- const optedIn = { ...base, withEcc: true, withTauri: true };
2403
+ const optedOut = { ...base, withTauri: false };
2404
+ const optedIn = { ...base, withTauri: true };
2418
2405
  return buildManifest(optedOut).filter(
2419
2406
  (e2) => e2.type === "file" && e2.applies(optedOut) && e2.applies(optedIn)
2420
2407
  );
@@ -2993,10 +2980,9 @@ function runExternalPhase(ctx) {
2993
2980
  if (ctx.runExternal === null) {
2994
2981
  return null;
2995
2982
  }
2996
- const { harnessRoot, projectDir, spec } = ctx;
2983
+ const { projectDir, spec } = ctx;
2997
2984
  const runExt = ctx.runExternal ?? runExternalInstall;
2998
2985
  const externalDeps = {
2999
- harnessRoot,
3000
2986
  log: () => {
3001
2987
  },
3002
2988
  warn: () => {
@@ -3231,9 +3217,7 @@ function createInstallRenderer(log, spec, verbose) {
3231
3217
  const callbacks = {
3232
3218
  onProgress: (event) => {
3233
3219
  if (event.type === "baseline-complete") {
3234
- const claudeSelected = targetsInclude(spec.cli, "claude");
3235
- const eccWillInstall = claudeSelected && (isAssetSelected("ecc-plugin", spec) || spec.options.withPrune === true);
3236
- renderPhase1Rows(log, event.baseline, verbose, eccWillInstall, claudeSelected);
3220
+ renderPhase1Rows(log, event.baseline, verbose);
3237
3221
  } else if (event.type === "external-start" && event.assetCount > 0) {
3238
3222
  log(unifiedSection(`External assets (${event.assetCount})`));
3239
3223
  log("");
@@ -3494,13 +3478,11 @@ function formatAssetMeta(asset, version) {
3494
3478
  return `npm \xB7 ${m.pkg}@${m.version}`;
3495
3479
  case "npx-run":
3496
3480
  return `npx \xB7 ${m.cmd}@${m.version}`;
3497
- case "shell-script":
3498
- return `bash \xB7 ${m.script}`;
3499
3481
  case "internal":
3500
3482
  return `internal \xB7 templates (${m.key})`;
3501
3483
  }
3502
3484
  }
3503
- function renderPhase1Rows(log, baseline, verbose = false, withEcc = false, claudeSelected = true) {
3485
+ function renderPhase1Rows(log, baseline, verbose = false) {
3504
3486
  if (baseline.updateMode) {
3505
3487
  if (baseline.backup) {
3506
3488
  log(assetRow("success", "backup", shortenPath(baseline.backup)));
@@ -3841,13 +3823,6 @@ function renderPhase1Rows(log, baseline, verbose = false, withEcc = false, claud
3841
3823
  }
3842
3824
  const mcpList = baseline.mcpServers.join(", ") || "(none)";
3843
3825
  log(assetRow("success", ".mcp.json", mcpList, TEMPLATES_COL));
3844
- if (!withEcc && baseline.categories) {
3845
- log("");
3846
- log(` ${c.dim("\xB7")} ${c.dim("ECC plugin not selected \u2014 cherry-pick fallback active")}`);
3847
- if (claudeSelected) {
3848
- log(` ${c.dim("\xB7")} ${c.dim("Use --with ecc-plugin to install ECC plugin instead")}`);
3849
- }
3850
- }
3851
3826
  if (baseline.envFiles.envExampleCreated) {
3852
3827
  log(assetRow("success", ".env.example", "Supabase token guide"));
3853
3828
  }
@@ -3981,7 +3956,6 @@ function installAction(options, deps = {}) {
3981
3956
  // v26.81.0 (ADR-022, BREAKING) — 자산 1:1 boolean 13종 삭제. 자산 선택은 위
3982
3957
  // userOverride(--with <id>)로 일원화. 잔존 = 설치 동작 옵션만.
3983
3958
  options: {
3984
- withPrune: options.withPrune === true,
3985
3959
  withCodexTrust: options.withCodexTrust === true
3986
3960
  },
3987
3961
  cli: validated.cli,
@@ -4077,9 +4051,6 @@ function registerInstallCommand(cli2) {
4077
4051
  ).option(
4078
4052
  "--with-codex-trust",
4079
4053
  "[Codex] Codex global opt-in: register trust entry in ~/.codex/config.toml"
4080
- ).option(
4081
- "--with-prune",
4082
- "[Behavior] Prune ECC items beyond curated 89 (use with --with ecc-plugin)"
4083
4054
  ).option("--verbose", "[Misc] Show installed file lists per category (default: counts only)").example("install --track tooling --with marketingskills").example("install --track csr-supabase --cli claude --cli codex").example("install --track csr-supabase --without netlify-cli --with railway-skills").action((options) => installAction(options));
4084
4055
  }
4085
4056
 
@@ -5177,6 +5148,7 @@ function hintFor(asset) {
5177
5148
  case "npm":
5178
5149
  return "npm uninstall --save-dev";
5179
5150
  case "npx-run":
5151
+ // shell-script = #492 에서 은퇴한 legacy kind. 옛 로그가 그대로 들어온다.
5180
5152
  case "shell-script":
5181
5153
  case "internal":
5182
5154
  return "\uC790\uB3D9 \uB418\uB3CC\uB9AC\uAE30 \uACBD\uB85C \uC5C6\uC74C \u2014 \uC804\uB7C9 \uC81C\uAC70(`.claude/` \uC0AD\uC81C)\uB85C\uB9CC \uC0AC\uB77C\uC9C4\uB2E4";
@@ -5294,7 +5266,7 @@ function uninstallAction(options, deps = {}) {
5294
5266
  const selectedIds = parseOnly(options.only);
5295
5267
  if (options.only !== void 0 && selectedIds === null) {
5296
5268
  err(status.failure(c.red("ERROR: --only \uC5D0 \uC790\uC0B0 id \uAC00 \uC5C6\uB2E4")));
5297
- err(c.dim(" \uC608: --only code-review (id \uB294 `agent-harness list` \uC5D0\uC11C \uD655\uC778)"));
5269
+ err(c.dim(" \uC608: --only openspec (id \uB294 `agent-harness list` \uC5D0\uC11C \uD655\uC778)"));
5298
5270
  exit(1);
5299
5271
  return;
5300
5272
  }
@@ -5950,7 +5922,7 @@ var INSTALL_TARGET_PAGES = [
5950
5922
  { label: "Business (PM \xB7 Executive \xB7 Documents)", cats: ["business"] },
5951
5923
  // v26.85.0 — 코드-퍼스트 비주얼/미디어 제작 (용도별 섹션, 전부 opt-in).
5952
5924
  { label: "Visual & Media (Slides \xB7 Diagrams \xB7 Motion \xB7 Video)", cats: ["visual-media"] },
5953
- { label: "Workflow & ECC Suite", cats: ["workflow", "ecc-suite"] }
5925
+ { label: "Workflow", cats: ["workflow"] }
5954
5926
  ];
5955
5927
  var BASELINE_TITLES = {
5956
5928
  rules: "Rules \u2014 \uC0C1\uC2DC \uC0C1\uC8FC\uD558\uB294 \uB300\uC6D0\uCE59 (4 CLI \uC804\uBD80\uC5D0 \uC124\uCE58)",
@@ -6241,7 +6213,6 @@ function baselineExcludeFrom(offered, checked) {
6241
6213
  function toOptionFlags(keys) {
6242
6214
  const picked = new Set(keys);
6243
6215
  return {
6244
- withPrune: picked.has("withPrune"),
6245
6216
  withCodexTrust: picked.has("withCodexTrust")
6246
6217
  };
6247
6218
  }