harness-bujang 0.7.0 → 0.7.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.
@@ -216,7 +216,7 @@ async function runInit(args) {
216
216
  opts = await promptInteractive(opts, scan);
217
217
  if (await isExistingInstall(opts.target)) {
218
218
  const overwrite = await confirm({
219
- message: "Existing harness install detected. Overwrite all files to apply your selections?",
219
+ message: "\uAE30\uC874 \uD558\uB124\uC2A4 \uC124\uCE58\uAC00 \uAC10\uC9C0\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC120\uD0DD\uD55C \uC124\uC815\uC744 \uC801\uC6A9\uD558\uAE30 \uC704\uD574 \uBAA8\uB4E0 \uD30C\uC77C\uC744 \uB36E\uC5B4\uC4F8\uAE4C\uC694?",
220
220
  default: false
221
221
  });
222
222
  if (overwrite) opts.yes = true;
@@ -241,7 +241,7 @@ async function runInit(args) {
241
241
  console.log();
242
242
  if (interactive) {
243
243
  try {
244
- const proceed = await confirm({ message: "Proceed with these settings?", default: true });
244
+ const proceed = await confirm({ message: "\uC774 \uC124\uC815\uC73C\uB85C \uC9C4\uD589\uD560\uAE4C\uC694?", default: true });
245
245
  if (!proceed) {
246
246
  console.log(c.dim(" (aborted)"));
247
247
  return;
@@ -453,25 +453,26 @@ function printRestartReminder(lang) {
453
453
  }
454
454
  async function promptInteractive(opts, scan) {
455
455
  const lang = await select({
456
- message: "Agent language / \uC5D0\uC774\uC804\uD2B8 \uC5B8\uC5B4",
456
+ message: "\uC5D0\uC774\uC804\uD2B8 \uC5B8\uC5B4 / Agent language",
457
457
  choices: [
458
- { name: "\uD55C\uAD6D\uC5B4 \u2014 full \uBD80\uC7A5 persona (Korean)", value: "ko" },
459
- { name: "English", value: "en" }
458
+ { name: "\uD55C\uAD6D\uC5B4 \u2014 \uBD80\uC7A5 \uD398\uB974\uC18C\uB098 \uD480 (Korean)", value: "ko" },
459
+ { name: "English \u2014 Director persona", value: "en" }
460
460
  ],
461
461
  default: opts.lang
462
462
  });
463
463
  const chatBackend = await select({
464
- message: "Chat backend",
464
+ message: "\uD1A1\uBC29 \uBC31\uC5D4\uB4DC",
465
465
  choices: [
466
- { name: "SQLite \u2014 local file, zero setup (recommended)", value: "sqlite" },
467
- { name: "Supabase \u2014 cloud Postgres for team sharing", value: "supabase" }
466
+ { name: "SQLite \u2014 \uB85C\uCEEC \uD30C\uC77C, \uC14B\uC5C5 \uBD88\uD544\uC694 (\uCD94\uCC9C)", value: "sqlite" },
467
+ { name: "Supabase \u2014 \uD074\uB77C\uC6B0\uB4DC Postgres (\uD300 \uACF5\uC720\uC6A9)", value: "supabase" }
468
468
  ],
469
469
  default: opts.chatBackend
470
470
  });
471
471
  const isPreset = (t) => opts.adapters.includes(t);
472
- const adapters = await checkbox({
473
- message: "Extra tool adapters? (Claude Code is always installed at .claude/agents/ \u2014 these add files for OTHER tools)",
472
+ const adaptersRaw = await checkbox({
473
+ message: "\uB3C4\uAD6C \uC120\uD0DD \u2014 Claude Code \uB294 \uC790\uB3D9 \uC124\uCE58 (\uD544\uC218). \uCD94\uAC00 \uB3C4\uAD6C \uC5C6\uC73C\uBA74 \uADF8\uB0E5 Enter.",
474
474
  choices: [
475
+ { name: "Claude Code (.claude/agents/) \u2014 \uC790\uB3D9 \uC124\uCE58 (\uD544\uC218)", value: "claude", checked: true, disabled: "(\uC790\uB3D9)" },
475
476
  { name: "Cursor (.cursor/rules/bujang-*.mdc)", value: "cursor", checked: isPreset("cursor") },
476
477
  { name: "Codex / Copilot (AGENTS.md)", value: "codex", checked: isPreset("codex") },
477
478
  { name: "Cline (.clinerules/bujang-*.md)", value: "cline", checked: isPreset("cline") },
@@ -480,14 +481,15 @@ async function promptInteractive(opts, scan) {
480
481
  ],
481
482
  required: false
482
483
  });
484
+ const adapters = adaptersRaw.filter((t) => t !== "claude");
483
485
  const preset = await select({
484
- message: "Per-agent Claude model? (only affects .claude/agents/ \u2014 other tools manage models themselves)",
486
+ message: "\uC5D0\uC774\uC804\uD2B8\uBCC4 Claude \uBAA8\uB378? (.claude/agents/ \uC5D0\uB9CC \uC801\uC6A9 \u2014 \uB2E4\uB978 \uB3C4\uAD6C\uB294 \uC790\uCCB4 \uBAA8\uB378 \uAD00\uB9AC)",
485
487
  choices: [
486
- { name: "balanced \u2014 opus / sonnet / haiku mix (recommended, ~60% cost cut)", value: "balanced" },
487
- { name: "keep \u2014 leave each agent's default model untouched", value: "keep" },
488
- { name: "cost \u2014 all haiku (cheapest, fastest)", value: "cost" },
489
- { name: "quality \u2014 all opus (most expensive, highest quality)", value: "quality" },
490
- { name: "custom \u2014 pick model per agent (18 prompts)", value: "custom" }
488
+ { name: "balanced \u2014 opus / sonnet / haiku \uADE0\uD615 \uB9E4\uD551 (\uCD94\uCC9C, \uBE44\uC6A9 ~60% \uC808\uAC10)", value: "balanced" },
489
+ { name: "keep \u2014 \uAC01 \uC5D0\uC774\uC804\uD2B8 \uAE30\uBCF8 \uBAA8\uB378 \uADF8\uB300\uB85C", value: "keep" },
490
+ { name: "cost \u2014 \uC804\uBD80 haiku (\uAC00\uC7A5 \uC800\uB834, \uBE60\uB984)", value: "cost" },
491
+ { name: "quality \u2014 \uC804\uBD80 opus (\uAC00\uC7A5 \uBE44\uC2F8\uACE0, \uD488\uC9C8 \uCD5C\uC0C1)", value: "quality" },
492
+ { name: "custom \u2014 \uC5D0\uC774\uC804\uD2B8\uBCC4 \uC9C1\uC811 \uC120\uD0DD (18\uAC1C prompt)", value: "custom" }
491
493
  ],
492
494
  default: "balanced"
493
495
  });
@@ -500,7 +502,7 @@ async function promptInteractive(opts, scan) {
500
502
  let installTemplate = opts.installTemplate;
501
503
  if (scan.framework.startsWith("Next.js") && opts.installTemplate) {
502
504
  installTemplate = await confirm({
503
- message: "Install chat-room UI (Next.js admin route at /admin/harness)?",
505
+ message: "\uD1A1\uBC29 UI \uC124\uCE58? (Next.js admin \uB77C\uC6B0\uD2B8 /admin/harness)",
504
506
  default: true
505
507
  });
506
508
  }
@@ -510,14 +512,14 @@ async function promptCustomModelMap() {
510
512
  const out = {};
511
513
  const slugs = Object.keys(BALANCED_MAPPING);
512
514
  console.log();
513
- console.log(c.dim(` Custom mapping \u2014 pick a model for each of ${slugs.length} agents.`));
515
+ console.log(c.dim(` Custom \uB9E4\uD551 \u2014 ${slugs.length}\uAC1C \uC5D0\uC774\uC804\uD2B8\uB9C8\uB2E4 \uBAA8\uB378\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694.`));
514
516
  for (const slug of slugs) {
515
517
  const tier = await select({
516
518
  message: `${slug.padEnd(20)}`,
517
519
  choices: [
518
- { name: "opus (heaviest, smartest)", value: "opus" },
519
- { name: "sonnet (balanced)", value: "sonnet" },
520
- { name: "haiku (lightest, fastest, cheap)", value: "haiku" }
520
+ { name: "opus (\uAC00\uC7A5 \uB611\uB611, \uBE44\uC2FC)", value: "opus" },
521
+ { name: "sonnet (\uADE0\uD615)", value: "sonnet" },
522
+ { name: "haiku (\uAC00\uC7A5 \uBE60\uB974\uACE0 \uC800\uB834)", value: "haiku" }
521
523
  ],
522
524
  default: BALANCED_MAPPING[slug] ?? "sonnet"
523
525
  });
package/dist/index.js CHANGED
@@ -189,7 +189,7 @@ async function main() {
189
189
  const command = args[0];
190
190
  switch (command) {
191
191
  case "init":
192
- await (await import("./init-4G7R63DX.js")).runInit(args.slice(1));
192
+ await (await import("./init-3SFH5G3M.js")).runInit(args.slice(1));
193
193
  break;
194
194
  case "status":
195
195
  await (await import("./status-UE2TQQPU.js")).runStatus(args.slice(1));
@@ -201,7 +201,7 @@ async function main() {
201
201
  await (await import("./adapt-VPWOYF6W.js")).runAdapt(args.slice(1));
202
202
  break;
203
203
  case "update":
204
- await (await import("./update-KHDRQZQE.js")).runUpdate(args.slice(1));
204
+ await (await import("./update-JX4Z2MJG.js")).runUpdate(args.slice(1));
205
205
  break;
206
206
  case "migrate":
207
207
  await (await import("./migrate-PISZFX6C.js")).runMigrate(args.slice(1));
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  printRestartReminder,
3
3
  runInit
4
- } from "./chunk-6LROBVZM.js";
4
+ } from "./chunk-OFYRMVMC.js";
5
5
  import "./chunk-7DAHO2GN.js";
6
6
  export {
7
7
  printRestartReminder,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  printRestartReminder,
3
3
  scanProject
4
- } from "./chunk-6LROBVZM.js";
4
+ } from "./chunk-OFYRMVMC.js";
5
5
  import {
6
6
  renderTemplate
7
7
  } from "./chunk-7DAHO2GN.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-bujang",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Install the Harness-Bujang multi-agent harness into any project — Director, 7 specialist teams, real-time chat-room UI. Korean and English personas. Works with Claude Code, Cursor, Cline, Aider, or any tool that reads .claude/agents/.",
5
5
  "keywords": [
6
6
  "claude-code",