cli-jaw 1.7.20 → 1.7.21
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 +5 -2
- package/dist/bin/commands/dispatch.js +1 -1
- package/dist/bin/commands/dispatch.js.map +1 -1
- package/dist/bin/commands/doctor.js +47 -11
- package/dist/bin/commands/doctor.js.map +1 -1
- package/dist/bin/commands/serve.js +4 -3
- package/dist/bin/commands/serve.js.map +1 -1
- package/dist/server.js +14 -6
- package/dist/server.js.map +1 -1
- package/dist/src/agent/events.js +1 -0
- package/dist/src/agent/events.js.map +1 -1
- package/dist/src/agent/spawn.js +16 -0
- package/dist/src/agent/spawn.js.map +1 -1
- package/dist/src/cli/registry.js +1 -0
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/core/claude-install.js +33 -0
- package/dist/src/core/claude-install.js.map +1 -0
- package/dist/src/core/db.js +1 -0
- package/dist/src/core/db.js.map +1 -1
- package/dist/src/core/employees.js +0 -1
- package/dist/src/core/employees.js.map +1 -1
- package/dist/src/core/runtime-path.js +3 -0
- package/dist/src/core/runtime-path.js.map +1 -1
- package/dist/src/discord/bot.js +123 -107
- package/dist/src/discord/bot.js.map +1 -1
- package/dist/src/orchestrator/distribute.js +1 -2
- package/dist/src/orchestrator/distribute.js.map +1 -1
- package/dist/src/orchestrator/pipeline.js +3 -15
- package/dist/src/orchestrator/pipeline.js.map +1 -1
- package/dist/src/orchestrator/scope.js +9 -3
- package/dist/src/orchestrator/scope.js.map +1 -1
- package/dist/src/orchestrator/state-machine.js +12 -3
- package/dist/src/orchestrator/state-machine.js.map +1 -1
- package/dist/src/prompt/builder.js +0 -4
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +2 -2
- package/dist/src/prompt/templates/worker-context.md +2 -2
- package/dist/src/routes/orchestrate.js +6 -1
- package/dist/src/routes/orchestrate.js.map +1 -1
- package/dist/src/telegram/bot.js +37 -3
- package/dist/src/telegram/bot.js.map +1 -1
- package/package.json +1 -1
- package/public/dist/assets/{constants-Bzu8ZQYX.js → constants-DGOVap6o.js} +1 -1
- package/public/dist/assets/{employees-BbOvchcS.js → employees-C0yujZsW.js} +1 -1
- package/public/dist/assets/{index-BG6dRmXR.js → index-BWcXMhOZ.js} +4 -4
- package/public/dist/assets/{memory-ZuWr4pMd.js → memory-FFmqjyCC.js} +1 -1
- package/public/dist/assets/memory-irEuKgdV.js +1 -0
- package/public/dist/assets/{render-DJB99y40.js → render-D1FcBRwU.js} +1 -1
- package/public/dist/assets/{settings-D1g7w3t4.js → settings-MICU1hXS.js} +1 -1
- package/public/dist/assets/settings-my0MZC-q.js +1 -0
- package/public/dist/assets/skills--Z8gqYp5.js +1 -0
- package/public/dist/assets/{skills-C5kJQVkS.js → skills-BzRE-_tP.js} +1 -1
- package/public/dist/assets/{slash-commands-ByfeM4Ot.js → slash-commands-DH53hTco.js} +1 -1
- package/public/dist/assets/slash-commands-u5fbLK7K.js +1 -0
- package/public/dist/assets/ui-CfUxt-FY.js +1 -0
- package/public/dist/assets/{ui-BR_M9U08.js → ui-DZb07Luj.js} +2 -2
- package/public/dist/assets/{ws-BgwVESAY.js → ws-PsjiwLxs.js} +2 -2
- package/public/dist/index.html +1 -1
- package/public/js/constants.ts +0 -1
- package/public/js/features/employees.ts +0 -2
- package/public/locales/en.json +1 -2
- package/public/locales/ko.json +1 -2
- package/scripts/install.sh +175 -3
- package/dist/src/prompt/templates/research-worker.md +0 -37
- package/public/dist/assets/memory-BLIJdS7I.js +0 -1
- package/public/dist/assets/settings-DRL_RTEF.js +0 -1
- package/public/dist/assets/skills-DDi6QuNI.js +0 -1
- package/public/dist/assets/slash-commands-Ds50o_kN.js +0 -1
- package/public/dist/assets/ui-hKRh1sfy.js +0 -1
|
@@ -35,8 +35,6 @@ const LEGACY_MAP: Record<string, string> = {
|
|
|
35
35
|
'문서화, README, API docs': 'docs',
|
|
36
36
|
'UI/UX, CSS, components': 'frontend',
|
|
37
37
|
'API, DB, server logic': 'backend',
|
|
38
|
-
'Search, codebase exploration, uncertainty reduction, read-only reports': 'research',
|
|
39
|
-
'Search, codebase exploration, uncertainty reduction, read-only': 'research',
|
|
40
38
|
'Data pipeline, analysis, ML': 'data',
|
|
41
39
|
'Documentation, README, API docs': 'docs',
|
|
42
40
|
};
|
package/public/locales/en.json
CHANGED
|
@@ -159,7 +159,6 @@
|
|
|
159
159
|
"emp.customModel": "Enter manually...",
|
|
160
160
|
"role.label.frontend": "Frontend",
|
|
161
161
|
"role.label.backend": "Backend",
|
|
162
|
-
"role.label.research": "Research",
|
|
163
162
|
"role.label.data": "Data",
|
|
164
163
|
"role.label.docs": "Docs",
|
|
165
164
|
"role.label.custom": "Custom...",
|
|
@@ -259,4 +258,4 @@
|
|
|
259
258
|
"cmd.ide.popToggled": "IDE popup toggled",
|
|
260
259
|
"cmd.ide.usage": "Usage: /ide [pop|on|off]",
|
|
261
260
|
"label.mentionOnly": "Mention Only"
|
|
262
|
-
}
|
|
261
|
+
}
|
package/public/locales/ko.json
CHANGED
|
@@ -159,7 +159,6 @@
|
|
|
159
159
|
"emp.customModel": "직접 입력...",
|
|
160
160
|
"role.label.frontend": "프런트엔드",
|
|
161
161
|
"role.label.backend": "백엔드",
|
|
162
|
-
"role.label.research": "리서치",
|
|
163
162
|
"role.label.data": "데이터",
|
|
164
163
|
"role.label.docs": "문서작성",
|
|
165
164
|
"role.label.custom": "커스텀...",
|
|
@@ -259,4 +258,4 @@
|
|
|
259
258
|
"cmd.ide.popToggled": "IDE 팝업을 전환했습니다",
|
|
260
259
|
"cmd.ide.usage": "/ide [pop|on|off]",
|
|
261
260
|
"label.mentionOnly": "@멘션 시에만 응답"
|
|
262
|
-
}
|
|
261
|
+
}
|
package/scripts/install.sh
CHANGED
|
@@ -33,6 +33,133 @@ echo ""
|
|
|
33
33
|
|
|
34
34
|
NODE_MAJOR=22
|
|
35
35
|
|
|
36
|
+
extract_semver() {
|
|
37
|
+
printf '%s' "${1:-}" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 || true
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
resolve_cmd() {
|
|
41
|
+
command -v "$1" 2>/dev/null || true
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get_installed_jaw_binary() {
|
|
45
|
+
local jaw_bin
|
|
46
|
+
jaw_bin="$(resolve_cmd jaw)"
|
|
47
|
+
if [ -n "$jaw_bin" ]; then
|
|
48
|
+
printf '%s\n' "$jaw_bin"
|
|
49
|
+
return 0
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
local cli_jaw_bin
|
|
53
|
+
cli_jaw_bin="$(resolve_cmd cli-jaw)"
|
|
54
|
+
if [ -n "$cli_jaw_bin" ]; then
|
|
55
|
+
printf '%s\n' "$cli_jaw_bin"
|
|
56
|
+
return 0
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
return 1
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get_binary_version() {
|
|
63
|
+
local bin_path="${1:-}"
|
|
64
|
+
if [ -z "$bin_path" ]; then
|
|
65
|
+
return 0
|
|
66
|
+
fi
|
|
67
|
+
extract_semver "$("$bin_path" --version 2>/dev/null | head -n1)"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
get_latest_cli_jaw_version() {
|
|
71
|
+
extract_semver "$(npm view cli-jaw version 2>/dev/null || true)"
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
realpath_fallback() {
|
|
75
|
+
local target="${1:-}"
|
|
76
|
+
if [ -z "$target" ]; then
|
|
77
|
+
return 0
|
|
78
|
+
fi
|
|
79
|
+
node -e "const fs=require('fs');const p=process.argv[1];try{console.log(fs.realpathSync(p));}catch{console.log(p)}" "$target" 2>/dev/null || printf '%s\n' "$target"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
# Shell-level Claude install classifier — mirrors src/core/claude-install.ts
|
|
83
|
+
# Returns: native | node-managed | unknown
|
|
84
|
+
classify_claude_install_sh() {
|
|
85
|
+
local bin_path="${1:-}"
|
|
86
|
+
local real_path="${2:-}"
|
|
87
|
+
if [ -z "$bin_path" ]; then
|
|
88
|
+
echo "unknown"
|
|
89
|
+
return 0
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
# Check native paths
|
|
93
|
+
case "$bin_path" in
|
|
94
|
+
"$HOME/.local/bin/claude"|"$HOME/.claude/local/bin/claude")
|
|
95
|
+
echo "native"
|
|
96
|
+
return 0
|
|
97
|
+
;;
|
|
98
|
+
esac
|
|
99
|
+
|
|
100
|
+
# Check realpath for node_modules or native
|
|
101
|
+
if [ -n "$real_path" ]; then
|
|
102
|
+
case "$real_path" in
|
|
103
|
+
*/node_modules/@anthropic-ai/claude-code/*)
|
|
104
|
+
echo "node-managed"
|
|
105
|
+
return 0
|
|
106
|
+
;;
|
|
107
|
+
*/.claude/local/*)
|
|
108
|
+
echo "native"
|
|
109
|
+
return 0
|
|
110
|
+
;;
|
|
111
|
+
esac
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
# Check bun bin
|
|
115
|
+
case "$bin_path" in
|
|
116
|
+
*/.bun/bin/claude)
|
|
117
|
+
echo "node-managed"
|
|
118
|
+
return 0
|
|
119
|
+
;;
|
|
120
|
+
esac
|
|
121
|
+
|
|
122
|
+
echo "unknown"
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
print_cli_dependency_guidance() {
|
|
126
|
+
echo ""
|
|
127
|
+
info "CLI dependency guidance"
|
|
128
|
+
|
|
129
|
+
warn "Claude Code users who need computer-use MCP should prefer Anthropic's native installer:"
|
|
130
|
+
echo -e "${DIM} curl -fsSL https://claude.ai/install.sh | bash${NC}"
|
|
131
|
+
echo -e "${DIM} or run: claude install${NC}"
|
|
132
|
+
|
|
133
|
+
local claude_bin claude_real claude_kind
|
|
134
|
+
claude_bin="$(resolve_cmd claude)"
|
|
135
|
+
if [ -n "$claude_bin" ]; then
|
|
136
|
+
claude_real="$(realpath_fallback "$claude_bin")"
|
|
137
|
+
claude_kind="$(classify_claude_install_sh "$claude_bin" "$claude_real")"
|
|
138
|
+
case "$claude_kind" in
|
|
139
|
+
native)
|
|
140
|
+
ok "Claude CLI looks native (${claude_bin})"
|
|
141
|
+
;;
|
|
142
|
+
node-managed)
|
|
143
|
+
warn "Claude CLI appears npm/bun-managed (${claude_bin})"
|
|
144
|
+
warn "For computer-use MCP, reinstall Claude natively or run: claude install"
|
|
145
|
+
;;
|
|
146
|
+
*)
|
|
147
|
+
warn "Claude CLI detected at ${claude_bin} — verify it is native if you need computer-use MCP"
|
|
148
|
+
;;
|
|
149
|
+
esac
|
|
150
|
+
else
|
|
151
|
+
warn "Claude CLI not detected — install only if you plan to use Claude"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
local codex_bin
|
|
155
|
+
codex_bin="$(resolve_cmd codex)"
|
|
156
|
+
if [ -n "$codex_bin" ]; then
|
|
157
|
+
ok "Codex CLI detected (${codex_bin}) — npm/bun/global installs are fine"
|
|
158
|
+
else
|
|
159
|
+
info "Optional: install Codex with npm or bun if you want OpenAI as a backend"
|
|
160
|
+
fi
|
|
161
|
+
}
|
|
162
|
+
|
|
36
163
|
# ═══════════════════════════════════════
|
|
37
164
|
# Step 1: Ensure Node.js ≥ 22
|
|
38
165
|
# ═══════════════════════════════════════
|
|
@@ -97,9 +224,53 @@ ensure_node() {
|
|
|
97
224
|
# Step 2: Install CLI-JAW
|
|
98
225
|
# ═══════════════════════════════════════
|
|
99
226
|
install_cli_jaw() {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
227
|
+
local installed_bin installed_version latest_version
|
|
228
|
+
installed_bin="$(get_installed_jaw_binary || true)"
|
|
229
|
+
installed_version="$(get_binary_version "$installed_bin")"
|
|
230
|
+
latest_version="$(get_latest_cli_jaw_version)"
|
|
231
|
+
|
|
232
|
+
# If npm view failed (network issue) and we already have a working install, skip
|
|
233
|
+
if [ -z "$latest_version" ] && [ -n "$installed_bin" ] && [ -n "$installed_version" ]; then
|
|
234
|
+
warn "Could not fetch latest version (network issue?) — keeping existing ${installed_version}"
|
|
235
|
+
ok "CLI-JAW ${installed_version} at ${installed_bin} — skipping update"
|
|
236
|
+
return 0
|
|
237
|
+
fi
|
|
238
|
+
|
|
239
|
+
if [ -n "$installed_bin" ] && [ -n "$installed_version" ] && [ -n "$latest_version" ] && [ "$installed_version" = "$latest_version" ]; then
|
|
240
|
+
ok "CLI-JAW ${installed_version} already installed at ${installed_bin} — skipping npm install"
|
|
241
|
+
return 0
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
# Detect package manager from existing install path to avoid shared-path contamination
|
|
245
|
+
local pkg_cmd="npm install -g cli-jaw"
|
|
246
|
+
if [ -n "$installed_bin" ]; then
|
|
247
|
+
case "$installed_bin" in
|
|
248
|
+
*"/.bun/bin/"*)
|
|
249
|
+
pkg_cmd="bun add -g cli-jaw"
|
|
250
|
+
info "Detected bun-managed install — using bun"
|
|
251
|
+
;;
|
|
252
|
+
*)
|
|
253
|
+
info "Using npm for global install"
|
|
254
|
+
;;
|
|
255
|
+
esac
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
if [ -n "$installed_bin" ] && [ -n "$installed_version" ]; then
|
|
259
|
+
info "Updating CLI-JAW ${installed_version} → ${latest_version:-latest}"
|
|
260
|
+
else
|
|
261
|
+
info "Installing CLI-JAW..."
|
|
262
|
+
fi
|
|
263
|
+
eval "$pkg_cmd"
|
|
264
|
+
|
|
265
|
+
# Post-install verification: re-resolve and check version
|
|
266
|
+
local new_bin new_ver
|
|
267
|
+
new_bin="$(get_installed_jaw_binary || true)"
|
|
268
|
+
new_ver="$(get_binary_version "$new_bin")"
|
|
269
|
+
if [ -n "$new_bin" ] && [ -n "$new_ver" ]; then
|
|
270
|
+
ok "CLI-JAW ${new_ver} installed at ${new_bin}"
|
|
271
|
+
else
|
|
272
|
+
warn "CLI-JAW install completed but binary not responding — check your PATH"
|
|
273
|
+
fi
|
|
103
274
|
}
|
|
104
275
|
|
|
105
276
|
# ═══════════════════════════════════════
|
|
@@ -190,6 +361,7 @@ install_browser_deps() {
|
|
|
190
361
|
ensure_node
|
|
191
362
|
install_cli_jaw
|
|
192
363
|
install_browser_deps
|
|
364
|
+
print_cli_dependency_guidance
|
|
193
365
|
|
|
194
366
|
echo ""
|
|
195
367
|
echo -e "${GREEN}${BOLD} 🎉 All done!${NC}"
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
## Phase 1 — Research
|
|
2
|
-
You are a RESEARCH employee. Your sole job is to investigate, explore, and report.
|
|
3
|
-
|
|
4
|
-
### What You Do
|
|
5
|
-
- Search the codebase (files, imports, exports, function signatures)
|
|
6
|
-
- Read worklog, memory, and devlog for historical context
|
|
7
|
-
- Use web search or documentation lookup when needed
|
|
8
|
-
- Produce a structured Research Report
|
|
9
|
-
|
|
10
|
-
### Output Format (REQUIRED)
|
|
11
|
-
```markdown
|
|
12
|
-
## Research Report
|
|
13
|
-
### Context
|
|
14
|
-
(Background information gathered)
|
|
15
|
-
|
|
16
|
-
### Options
|
|
17
|
-
(Numbered list of approaches or answers)
|
|
18
|
-
|
|
19
|
-
### Recommendation
|
|
20
|
-
(Your recommended approach with reasoning)
|
|
21
|
-
|
|
22
|
-
### Unknowns
|
|
23
|
-
(Things you could not determine)
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### ⛔ Rules (MANDATORY)
|
|
27
|
-
- Do NOT create, modify, or delete ANY files
|
|
28
|
-
- Do NOT write implementation code or diffs
|
|
29
|
-
- Do NOT suggest specific code changes (describe approaches instead)
|
|
30
|
-
- Do NOT execute destructive commands (rm, git reset, etc.)
|
|
31
|
-
- You are READ-ONLY. Observe and report only.
|
|
32
|
-
|
|
33
|
-
### Search Priority Order
|
|
34
|
-
1. Local codebase (grep, glob, file reads)
|
|
35
|
-
2. Memory / worklog / devlog
|
|
36
|
-
3. External documentation (Context7, web search)
|
|
37
|
-
4. Package registries (version checks)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./memory-ZuWr4pMd.js";export{e as refreshMemorySidebar};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e,m as t,v as n}from"./settings-D1g7w3t4.js";export{t as loadSettings,n as savePerCli,e as updateSettings};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./skills-C5kJQVkS.js";export{e as loadSkills};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./slash-commands-ByfeM4Ot.js";export{e as loadCommands};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,g as t,u as n}from"./ui-BR_M9U08.js";export{e as cleanupToolActivity,n as loadMessages,t as updateQueueBadge};
|