harness-bujang 0.4.0 → 0.4.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.
Files changed (3) hide show
  1. package/README.md +4 -4
  2. package/dist/index.js +12 -48
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -10,11 +10,11 @@ Install the [Harness-Bujang](https://github.com/bjcho4141/harness-bujang) multi-
10
10
  # Interactive setup — prompts for language, backend, etc.
11
11
  npx harness-bujang init
12
12
 
13
- # Non-interactive (CI / scripts) — accept all defaults
13
+ # Non-interactive (CI / scripts) — accept all defaults (Korean agents)
14
14
  npx harness-bujang init --yes
15
15
 
16
- # Korean agents (full 부장 persona)
17
- npx harness-bujang init --lang=ko
16
+ # English agents (default is Korean from 0.4.2+)
17
+ npx harness-bujang init --lang=en
18
18
 
19
19
  # Different folder, skip the chat-room UI
20
20
  npx harness-bujang init --target=./my-app --no-template
@@ -52,7 +52,7 @@ npx harness-bujang chat --create
52
52
  npx harness-bujang init [options]
53
53
 
54
54
  Options:
55
- --lang=<ko|en> Agent language (default: en)
55
+ --lang=<ko|en> Agent language (default: ko — full 부장 persona)
56
56
  --target=<path> Project root (default: .)
57
57
  --framework=<name> Override detected framework
58
58
  --db=<name> Override detected DB
package/dist/index.js CHANGED
@@ -406,10 +406,10 @@ async function runInit(args) {
406
406
  }
407
407
  async function promptInteractive(opts, scan) {
408
408
  const lang = await select({
409
- message: "Agent language",
409
+ message: "Agent language / \uC5D0\uC774\uC804\uD2B8 \uC5B8\uC5B4",
410
410
  choices: [
411
- { name: "English", value: "en" },
412
- { name: "Korean \u2014 full \uBD80\uC7A5 persona (\uD55C\uAD6D\uC5B4)", value: "ko" }
411
+ { name: "\uD55C\uAD6D\uC5B4 \u2014 full \uBD80\uC7A5 persona (Korean)", value: "ko" },
412
+ { name: "English", value: "en" }
413
413
  ],
414
414
  default: opts.lang
415
415
  });
@@ -431,7 +431,7 @@ async function promptInteractive(opts, scan) {
431
431
  return { ...opts, lang, chatBackend, installTemplate };
432
432
  }
433
433
  function parseArgs(args) {
434
- const lang = getFlag(args, "--lang") ?? "en";
434
+ const lang = getFlag(args, "--lang") ?? "ko";
435
435
  if (!["ko", "en"].includes(lang)) {
436
436
  throw new Error(`--lang must be "ko" or "en", got "${lang}"`);
437
437
  }
@@ -1354,17 +1354,18 @@ function render() {
1354
1354
  }
1355
1355
  html += '</div>';
1356
1356
 
1357
- // Input bar \u2014 for sending principal messages.
1358
- html += '<div class="px-4 py-3 bg-white border-t border-gray-200 flex gap-2">';
1359
- html += '<input id="msg-input" type="text" placeholder="\uBA54\uC2DC\uC9C0 \uC785\uB825 (Enter \uC804\uC1A1)" class="flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:border-indigo-500" />';
1360
- html += '<button id="send-btn" class="px-4 py-2 text-sm font-semibold bg-indigo-500 text-white rounded-lg hover:bg-indigo-600">\uC804\uC1A1</button>';
1357
+ // Footer \u2014 read-only viewer reminder. The viewer is a monitor for agent
1358
+ // activity; real commands go to Claude Code itself. (Auto-pickup of
1359
+ // principal messages from this viewer is on the roadmap.)
1360
+ html += '<div class="px-4 py-2 bg-white border-t border-gray-200 text-center">';
1361
+ html += '<p class="text-xs text-gray-400">\uC77D\uAE30 \uC804\uC6A9 \uBDF0\uC5B4 \u2014 \uBA85\uB839\uC740 Claude Code \uD130\uBBF8\uB110\uC5D0\uC11C \uBD80\uC7A5\uB2D8\uAED8 \uC9C1\uC811 \uB9D0\uC500\uD558\uC138\uC694</p>';
1361
1362
  html += '</div>';
1362
1363
  }
1363
1364
  html += '</div>';
1364
1365
 
1365
1366
  root.innerHTML = html;
1366
1367
 
1367
- // Re-bind handlers
1368
+ // Re-bind room-click handlers (room list).
1368
1369
  document.querySelectorAll('[data-room-id]').forEach((el) => {
1369
1370
  el.addEventListener('click', () => {
1370
1371
  state.selectedRoom = el.getAttribute('data-room-id');
@@ -1377,43 +1378,6 @@ function render() {
1377
1378
  });
1378
1379
  });
1379
1380
 
1380
- const input = document.getElementById('msg-input');
1381
- const sendBtn = document.getElementById('send-btn');
1382
- if (input && sendBtn) {
1383
- const send = async () => {
1384
- const text = input.value.trim();
1385
- if (!text) return;
1386
- input.disabled = true;
1387
- sendBtn.disabled = true;
1388
- try {
1389
- const target = state.selectedRoom === '\uB300\uD45C\uB2D8' ? '\uBD80\uC7A5' : (state.selectedRoom || '\uBD80\uC7A5');
1390
- await fetch('/api/messages', {
1391
- method: 'POST',
1392
- headers: { 'content-type': 'application/json' },
1393
- body: JSON.stringify({
1394
- from: '\uB300\uD45C\uB2D8',
1395
- to: target,
1396
- type: 'command',
1397
- message: text,
1398
- severity: 'info',
1399
- }),
1400
- });
1401
- input.value = '';
1402
- await refresh();
1403
- const conv = document.getElementById('conversation');
1404
- if (conv) conv.scrollTop = conv.scrollHeight;
1405
- } catch (e) {
1406
- alert('\uC804\uC1A1 \uC2E4\uD328: ' + e.message);
1407
- }
1408
- input.disabled = false;
1409
- sendBtn.disabled = false;
1410
- input.focus();
1411
- };
1412
- sendBtn.addEventListener('click', send);
1413
- input.addEventListener('keydown', (e) => { if (e.key === 'Enter') send(); });
1414
- input.focus();
1415
- }
1416
-
1417
1381
  // Auto-scroll the selected room to the bottom on first render of that room.
1418
1382
  const conv = document.getElementById('conversation');
1419
1383
  if (conv && conv.dataset.scrolled !== state.selectedRoom) {
@@ -1871,7 +1835,7 @@ ${c6.bold("Usage:")}
1871
1835
  npx harness-bujang ${c6.cyan("migrate")} --to=<sqlite|supabase> Move chat data between backends
1872
1836
 
1873
1837
  ${c6.bold("Options for init:")}
1874
- --lang=<ko|en> Agent language (default: en)
1838
+ --lang=<ko|en> Agent language (default: ko \u2014 full \uBD80\uC7A5 persona)
1875
1839
  --chat=<sqlite|supabase> Chat-room backend (default: sqlite \u2014 local file, no setup)
1876
1840
  --commit-chat Don't gitignore .harness/ (for solo cross-machine sync via git)
1877
1841
  --target=<path> Project root (default: cwd)
@@ -1948,7 +1912,7 @@ async function main() {
1948
1912
  break;
1949
1913
  case "--version":
1950
1914
  case "-v":
1951
- console.log("0.4.0");
1915
+ console.log("0.4.2");
1952
1916
  break;
1953
1917
  case "--help":
1954
1918
  case "-h":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-bujang",
3
- "version": "0.4.0",
3
+ "version": "0.4.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",