@dmsdc-ai/aigentry-devkit 0.1.1 → 0.1.3
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
CHANGED
|
@@ -56,7 +56,7 @@ Pre-configured settings with template substitution:
|
|
|
56
56
|
All OS (recommended):
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
npx
|
|
59
|
+
npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
`git clone` is not required for this path. The npm package contains the full installer + runtime files.
|
|
@@ -64,7 +64,7 @@ npx -y @dmsdc-ai/aigentry-devkit install
|
|
|
64
64
|
Force reinstall:
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
npx
|
|
67
|
+
npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install --force
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
Manual install (local clone) is still available:
|
|
@@ -324,7 +324,7 @@ direnv allow
|
|
|
324
324
|
|
|
325
325
|
1. Verify MCP registration: `cat ~/.claude/.mcp.json`
|
|
326
326
|
2. Check installation: `ls ~/.local/lib/mcp-deliberation/`
|
|
327
|
-
3. Reinstall runtime files: `npx
|
|
327
|
+
3. Reinstall runtime files: `npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install --force`
|
|
328
328
|
4. Restart your MCP client process (Claude/Codex/etc.)
|
|
329
329
|
5. Review runtime log: `tail -n 120 ~/.local/lib/mcp-deliberation/runtime.log`
|
|
330
330
|
|
|
@@ -419,7 +419,7 @@ Language-specific requirements for skills:
|
|
|
419
419
|
### Installation Flow
|
|
420
420
|
|
|
421
421
|
```
|
|
422
|
-
npx @dmsdc-ai/aigentry-devkit install
|
|
422
|
+
npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install
|
|
423
423
|
├─ dispatches to install.sh (macOS/Linux) or install.ps1 (Windows)
|
|
424
424
|
├─ Check prerequisites (Node.js, npm, optional tools)
|
|
425
425
|
├─ Install skills to ~/.claude/skills/
|
package/bin/aigentry-devkit.js
CHANGED
|
@@ -15,8 +15,8 @@ function printHelp() {
|
|
|
15
15
|
" aigentry-devkit --help",
|
|
16
16
|
"",
|
|
17
17
|
"Examples:",
|
|
18
|
-
" npx
|
|
19
|
-
" npx
|
|
18
|
+
" npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install",
|
|
19
|
+
" npx --yes --package @dmsdc-ai/aigentry-devkit aigentry-devkit install --force",
|
|
20
20
|
].join("\n");
|
|
21
21
|
process.stdout.write(`${text}\n`);
|
|
22
22
|
}
|
package/install.ps1
CHANGED
|
@@ -138,6 +138,48 @@ $cfg.mcpServers | Add-Member -MemberType NoteProperty -Name deliberation -Value
|
|
|
138
138
|
$cfg | ConvertTo-Json -Depth 8 | Set-Content -Path $mcpConfig -Encoding utf8
|
|
139
139
|
Write-Info "Registered deliberation MCP in $mcpConfig"
|
|
140
140
|
|
|
141
|
+
if (Get-Command claude -ErrorAction SilentlyContinue) {
|
|
142
|
+
$claudeScopeSupported = $false
|
|
143
|
+
try {
|
|
144
|
+
$claudeAddHelp = claude mcp add --help 2>$null | Out-String
|
|
145
|
+
if ($claudeAddHelp -match "--scope") {
|
|
146
|
+
$claudeScopeSupported = $true
|
|
147
|
+
}
|
|
148
|
+
} catch {}
|
|
149
|
+
|
|
150
|
+
if ($claudeScopeSupported) {
|
|
151
|
+
try { claude mcp remove --scope local deliberation 2>$null | Out-Null } catch {}
|
|
152
|
+
try { claude mcp remove --scope user deliberation 2>$null | Out-Null } catch {}
|
|
153
|
+
|
|
154
|
+
try {
|
|
155
|
+
claude mcp add --scope user deliberation -- node (Join-Path $McpDest "index.js") | Out-Null
|
|
156
|
+
Write-Info "Registered deliberation MCP in Claude Code user scope (~/.claude.json)"
|
|
157
|
+
} catch {
|
|
158
|
+
Write-Warn "Claude Code MCP registration failed. Run manually: claude mcp add --scope user deliberation -- node $McpDest\\index.js"
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
try {
|
|
162
|
+
claude mcp add deliberation -- node (Join-Path $McpDest "index.js") | Out-Null
|
|
163
|
+
Write-Info "Registered deliberation MCP in Claude Code"
|
|
164
|
+
} catch {
|
|
165
|
+
Write-Warn "Claude Code MCP registration failed (legacy CLI)."
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
try {
|
|
170
|
+
$claudeMcpList = claude mcp list 2>$null | Out-String
|
|
171
|
+
if ($claudeMcpList -match "(?m)^deliberation:") {
|
|
172
|
+
Write-Info "Claude Code MCP verification passed (deliberation found)"
|
|
173
|
+
} else {
|
|
174
|
+
Write-Warn "Claude Code MCP verification failed. Restart Claude and run: claude mcp list"
|
|
175
|
+
}
|
|
176
|
+
} catch {
|
|
177
|
+
Write-Warn "Claude Code MCP verification failed (claude mcp list unavailable)"
|
|
178
|
+
}
|
|
179
|
+
} else {
|
|
180
|
+
Write-Warn "Claude CLI not found. Skipping Claude MCP registration."
|
|
181
|
+
}
|
|
182
|
+
|
|
141
183
|
Write-Header "6. Config Templates"
|
|
142
184
|
|
|
143
185
|
$settingsDest = Join-Path $ClaudeDir "settings.json"
|
package/install.sh
CHANGED
|
@@ -166,6 +166,33 @@ MCPEOF
|
|
|
166
166
|
info "Created $MCP_CONFIG with deliberation MCP"
|
|
167
167
|
fi
|
|
168
168
|
|
|
169
|
+
# Claude Code CLI 등록 (최신 런타임 경로)
|
|
170
|
+
if command -v claude >/dev/null 2>&1; then
|
|
171
|
+
if claude mcp add --help 2>/dev/null | grep -q -- '--scope'; then
|
|
172
|
+
claude mcp remove --scope local deliberation >/dev/null 2>&1 || true
|
|
173
|
+
claude mcp remove --scope user deliberation >/dev/null 2>&1 || true
|
|
174
|
+
if claude mcp add --scope user deliberation -- node "$MCP_DEST/index.js" >/dev/null 2>&1; then
|
|
175
|
+
info "Registered deliberation MCP in Claude Code user scope (~/.claude.json)"
|
|
176
|
+
else
|
|
177
|
+
warn "Claude Code MCP registration failed. Run manually: claude mcp add --scope user deliberation -- node $MCP_DEST/index.js"
|
|
178
|
+
fi
|
|
179
|
+
else
|
|
180
|
+
if claude mcp add deliberation -- node "$MCP_DEST/index.js" >/dev/null 2>&1; then
|
|
181
|
+
info "Registered deliberation MCP in Claude Code"
|
|
182
|
+
else
|
|
183
|
+
warn "Claude Code MCP registration failed (legacy CLI)."
|
|
184
|
+
fi
|
|
185
|
+
fi
|
|
186
|
+
|
|
187
|
+
if claude mcp list 2>/dev/null | grep -q '^deliberation:'; then
|
|
188
|
+
info "Claude Code MCP verification passed (deliberation found)"
|
|
189
|
+
else
|
|
190
|
+
warn "Claude Code MCP verification failed. Restart Claude and run: claude mcp list"
|
|
191
|
+
fi
|
|
192
|
+
else
|
|
193
|
+
warn "Claude CLI not found. Skipping Claude MCP registration."
|
|
194
|
+
fi
|
|
195
|
+
|
|
169
196
|
# ── Config 템플릿 ──
|
|
170
197
|
header "6. Config Templates"
|
|
171
198
|
|
|
@@ -1115,13 +1115,21 @@ function resolveSessionId(sessionId) {
|
|
|
1115
1115
|
|
|
1116
1116
|
function syncMarkdown(state) {
|
|
1117
1117
|
const filename = `deliberation-${state.id}.md`;
|
|
1118
|
-
|
|
1118
|
+
// Write to state dir instead of CWD to avoid polluting project root
|
|
1119
|
+
const mdPath = path.join(getProjectStateDir(), filename);
|
|
1119
1120
|
try {
|
|
1120
1121
|
writeTextAtomic(mdPath, stateToMarkdown(state));
|
|
1121
|
-
} catch {
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1122
|
+
} catch { /* ignore sync failures */ }
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
function cleanupSyncMarkdown(state) {
|
|
1126
|
+
const filename = `deliberation-${state.id}.md`;
|
|
1127
|
+
// Remove from state dir
|
|
1128
|
+
const statePath = path.join(getProjectStateDir(), filename);
|
|
1129
|
+
try { fs.unlinkSync(statePath); } catch { /* ignore */ }
|
|
1130
|
+
// Also clean up legacy files in CWD (from older versions)
|
|
1131
|
+
const cwdPath = path.join(process.cwd(), filename);
|
|
1132
|
+
try { fs.unlinkSync(cwdPath); } catch { /* ignore */ }
|
|
1125
1133
|
}
|
|
1126
1134
|
|
|
1127
1135
|
function stateToMarkdown(s) {
|
|
@@ -1295,6 +1303,8 @@ function openPhysicalTerminal(sessionId) {
|
|
|
1295
1303
|
"-e",
|
|
1296
1304
|
'tell application "Terminal"',
|
|
1297
1305
|
"-e",
|
|
1306
|
+
"activate",
|
|
1307
|
+
"-e",
|
|
1298
1308
|
`do script ${appleScriptQuote(attachCmd)}`,
|
|
1299
1309
|
"-e",
|
|
1300
1310
|
"delay 0.15",
|
|
@@ -2296,6 +2306,7 @@ server.tool(
|
|
|
2296
2306
|
loaded.current_speaker = "none";
|
|
2297
2307
|
saveSession(loaded);
|
|
2298
2308
|
archivePath = archiveState(loaded);
|
|
2309
|
+
cleanupSyncMarkdown(loaded);
|
|
2299
2310
|
state = loaded;
|
|
2300
2311
|
return null;
|
|
2301
2312
|
});
|
|
@@ -2361,6 +2372,7 @@ server.tool(
|
|
|
2361
2372
|
if (state && state.log.length > 0) {
|
|
2362
2373
|
archiveState(state);
|
|
2363
2374
|
}
|
|
2375
|
+
if (state) cleanupSyncMarkdown(state);
|
|
2364
2376
|
toCloseIds = getSessionWindowIds(state);
|
|
2365
2377
|
fs.unlinkSync(file);
|
|
2366
2378
|
return { content: [{ type: "text", text: `✅ 세션 "${session_id}" 초기화 완료. 🖥️ 모니터 터미널 닫힘.` }] };
|
|
@@ -2392,6 +2404,7 @@ server.tool(
|
|
|
2392
2404
|
archiveState(state);
|
|
2393
2405
|
archived++;
|
|
2394
2406
|
}
|
|
2407
|
+
cleanupSyncMarkdown(state);
|
|
2395
2408
|
fs.unlinkSync(filePath);
|
|
2396
2409
|
} catch {
|
|
2397
2410
|
try {
|