openwolf-enhanced 1.23.2 → 1.25.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/CHANGELOG.md +108 -0
- package/dist/dashboard/assets/{AISuggestions-B0U4AdqZ.js → AISuggestions-DdjW_nSR.js} +1 -1
- package/dist/dashboard/assets/{ActivityLog-EswdqY6f.js → ActivityLog-DLoK8Rqs.js} +1 -1
- package/dist/dashboard/assets/{ActivityTimeline-CDVR-vwd.js → ActivityTimeline-CQS0wI9X.js} +1 -1
- package/dist/dashboard/assets/{AnatomyBrowser-JA47pShG.js → AnatomyBrowser-CiMVoAi9.js} +1 -1
- package/dist/dashboard/assets/{BugLog-CJwDGKyU.js → BugLog-2p9jvXNf.js} +1 -1
- package/dist/dashboard/assets/{CerebrumViewer-Hkep8yiH.js → CerebrumViewer-DzvLAum6.js} +1 -1
- package/dist/dashboard/assets/{CronStatus-BPxVXCN8.js → CronStatus-Dsd4ULs-.js} +1 -1
- package/dist/dashboard/assets/{DesignQC-Z9s_eFYa.js → DesignQC-DJ07SJhI.js} +1 -1
- package/dist/dashboard/assets/{LinkGraph-Do60JQGn.js → LinkGraph-DMf4r8F_.js} +1 -1
- package/dist/dashboard/assets/{MemoryViewer-DRjqTOMR.js → MemoryViewer-C3lCRO7j.js} +1 -1
- package/dist/dashboard/assets/{NativeMemory-CxSsv1I-.js → NativeMemory-CK38LlH_.js} +1 -1
- package/dist/dashboard/assets/{ProjectOverview-C2rhuA94.js → ProjectOverview-B48DxqWF.js} +1 -1
- package/dist/dashboard/assets/{ProjectsAggregate-CT-OIGWf.js → ProjectsAggregate-B3lshx07.js} +1 -1
- package/dist/dashboard/assets/{StatusBadge-DSdILAtA.js → StatusBadge-DYwwvAS-.js} +1 -1
- package/dist/dashboard/assets/{TokenUsage-B97RvWBY.js → TokenUsage-DlKnX43b.js} +1 -1
- package/dist/dashboard/assets/{index-BDFWJwQY.js → index-C3-u8WTm.js} +3 -3
- package/dist/dashboard/index.html +1 -1
- package/dist/hooks/shared.js +38 -4
- package/dist/src/cli/daemon-cmd.js +111 -18
- package/dist/src/cli/daemon-cmd.js.map +1 -1
- package/dist/src/cli/doctor-cmd.js +83 -0
- package/dist/src/cli/doctor-cmd.js.map +1 -1
- package/dist/src/cli/index.js +2 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/daemon/wolf-daemon.js +15 -0
- package/dist/src/daemon/wolf-daemon.js.map +1 -1
- package/dist/src/hooks/shared.js +38 -4
- package/dist/src/hooks/shared.js.map +1 -1
- package/dist/src/utils/agent-hooks.js +52 -22
- package/dist/src/utils/agent-hooks.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
|
|
10
|
-
<script type="module" crossorigin src="./assets/index-
|
|
10
|
+
<script type="module" crossorigin src="./assets/index-C3-u8WTm.js"></script>
|
|
11
11
|
<link rel="stylesheet" crossorigin href="./assets/index-CVfvTpSA.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
package/dist/hooks/shared.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import * as os from "node:os";
|
|
4
4
|
import * as crypto from "node:crypto";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
5
6
|
// Resolve Claude Code's native Auto Memory directory for a project, so OpenWolf can read/search
|
|
6
7
|
// it instead of maintaining a competing store. Claude stores it at
|
|
7
8
|
// ~/.claude/projects/<slug>/memory/ where the slug is the project path with "/" → "-"
|
|
@@ -37,10 +38,31 @@ export function nativeMemoryDir(projectRoot) {
|
|
|
37
38
|
}
|
|
38
39
|
export function getWolfDir() {
|
|
39
40
|
// Prefer an explicit project dir so hooks work even if CWD changes during a session.
|
|
40
|
-
// CLAUDE_PROJECT_DIR is set by Claude Code; OPENWOLF_PROJECT_DIR is
|
|
41
|
-
//
|
|
42
|
-
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.env.OPENWOLF_PROJECT_DIR
|
|
43
|
-
|
|
41
|
+
// CLAUDE_PROJECT_DIR is set by Claude Code; OPENWOLF_PROJECT_DIR is still honoured because the
|
|
42
|
+
// OpenCode plugin sets it in the child environment (it spawns us directly, no shell involved).
|
|
43
|
+
const projectDir = process.env.CLAUDE_PROJECT_DIR || process.env.OPENWOLF_PROJECT_DIR;
|
|
44
|
+
if (projectDir)
|
|
45
|
+
return path.join(projectDir, ".wolf");
|
|
46
|
+
// [2026-08-28] Fall back to THIS SCRIPT's own location before cwd. The deployed hooks are
|
|
47
|
+
// per-project copies living at <project>/.wolf/hooks/, so the directory two levels up is the
|
|
48
|
+
// .wolf/ we want — no environment variable and no shell cooperation needed.
|
|
49
|
+
//
|
|
50
|
+
// Why this exists: the Codex and Gemini hook commands used to carry a POSIX env prefix
|
|
51
|
+
// (`OPENWOLF_PROJECT_DIR='…' node '…'`) to pass the project root. cmd.exe would have tried to
|
|
52
|
+
// RUN that assignment as a program, so it had to go; this is what replaces it.
|
|
53
|
+
//
|
|
54
|
+
// Deliberately NOT used by nativeMemoryDir(): that one has to reproduce the slug Claude Code
|
|
55
|
+
// derives from ITS cwd, and a root resolved through a symlinked script path can differ from the
|
|
56
|
+
// cwd. A mismatch there loses the native memory silently, which is exactly the failure class we
|
|
57
|
+
// keep tripping over.
|
|
58
|
+
try {
|
|
59
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
60
|
+
if (path.basename(here) === "hooks" && path.basename(path.dirname(here)) === ".wolf") {
|
|
61
|
+
return path.dirname(here);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch { /* no import.meta (bundled/CJS) — fall through to cwd */ }
|
|
65
|
+
return path.join(process.cwd(), ".wolf");
|
|
44
66
|
}
|
|
45
67
|
/**
|
|
46
68
|
* Bail out silently if .wolf/ directory doesn't exist in the current project.
|
|
@@ -1269,6 +1291,10 @@ export function isNotableCommand(cmd) {
|
|
|
1269
1291
|
// counting it would make every `foo > /tmp/out` look like an authored change.
|
|
1270
1292
|
function isThrowawayTarget(target) {
|
|
1271
1293
|
const t = target.replace(/^['"]|['"]$/g, "");
|
|
1294
|
+
// `> $null` is PowerShell's /dev/null, and PowerShell commands reach this hook since the
|
|
1295
|
+
// PostToolUse matcher covers the PowerShell tool (see agent-hooks.ts).
|
|
1296
|
+
if (t === "$null" || t.toLowerCase() === "$env:temp")
|
|
1297
|
+
return true;
|
|
1272
1298
|
return t.startsWith("/dev/") || t.startsWith("/tmp/") || t.startsWith("/var/tmp/") || t === "/dev/null";
|
|
1273
1299
|
}
|
|
1274
1300
|
// Does this shell command modify a file?
|
|
@@ -1309,6 +1335,14 @@ export function isFileWritingCommand(cmd) {
|
|
|
1309
1335
|
return true;
|
|
1310
1336
|
if (/\bopen\s*\([^)]*,\s*['"][wax]/.test(c))
|
|
1311
1337
|
return true;
|
|
1338
|
+
// PowerShell writers. [2026-08-28] Reachable since the PostToolUse matcher was widened to
|
|
1339
|
+
// "Bash|PowerShell" — on Windows without Git for Windows that tool IS the shell, so without
|
|
1340
|
+
// these every shell-made edit there would go uncounted exactly as it did on Bash before
|
|
1341
|
+
// [bug-149]. Cmdlet names are case-insensitive in PowerShell, hence the /i.
|
|
1342
|
+
if (/(?:^|[\s;|(])(?:Set-Content|Add-Content|Out-File|Tee-Object|Copy-Item|Move-Item|Rename-Item|New-Item|Export-Csv|Export-Clixml|Set-ItemProperty)\b/i.test(c))
|
|
1343
|
+
return true;
|
|
1344
|
+
if (/\[(?:System\.)?IO\.File\]::(?:Write|Append|Copy|Move|Create)/i.test(c))
|
|
1345
|
+
return true;
|
|
1312
1346
|
return false;
|
|
1313
1347
|
}
|
|
1314
1348
|
// Trim log content to at most maxBytes by dropping whole leading lines (keeps the newest tail).
|
|
@@ -3,7 +3,9 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { findProjectRoot } from "../scanner/project-root.js";
|
|
6
|
-
import { readJSON } from "../utils/fs-safe.js";
|
|
6
|
+
import { readJSON, writeJSON, withLock } from "../utils/fs-safe.js";
|
|
7
|
+
import { readDashboardToken } from "../utils/dashboard-auth.js";
|
|
8
|
+
import { isPortFree } from "../utils/ports.js";
|
|
7
9
|
import { isWindows } from "../utils/platform.js";
|
|
8
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
11
|
const __dirname = path.dirname(__filename);
|
|
@@ -30,18 +32,43 @@ function hasPm2() {
|
|
|
30
32
|
return false;
|
|
31
33
|
}
|
|
32
34
|
}
|
|
35
|
+
// Pull the listening PID for `port` out of a `netstat -ano -p tcp` dump.
|
|
36
|
+
//
|
|
37
|
+
// Key off the SHAPE of the row, never off words in it. Two reasons, both of which made the
|
|
38
|
+
// old `includes("LISTENING")` test fail on this machine:
|
|
39
|
+
// 1. netstat localizes the state column — a German Windows prints ABHÖREN, a French one
|
|
40
|
+
// ÉCOUTE — so the daemon was never found and `daemon stop` reported "no daemon running"
|
|
41
|
+
// while one was plainly listening.
|
|
42
|
+
// 2. netstat writes the OEM codepage, not UTF-8, so that word arrives mojibake'd anyway.
|
|
43
|
+
// Row layout: TCP <local> <remote> <state> <pid>. A listener is the row whose REMOTE
|
|
44
|
+
// address is the wildcard (0.0.0.0:0 / [::]:0); matching the port anywhere in the line also
|
|
45
|
+
// hit TIME_WAIT rows, whose last column is a foreign PID — one taskkill away from killing
|
|
46
|
+
// somebody else's process.
|
|
47
|
+
//
|
|
48
|
+
// Exported for the test, and pure on purpose: the bug lived in the PARSE, and a parse that can
|
|
49
|
+
// only be exercised through a live socket on a localized Windows is a parse nobody tests.
|
|
50
|
+
// Everything platform-bound — spawning netstat — stays in findPidOnPort below.
|
|
51
|
+
export function parseNetstatListenerPid(output, port) {
|
|
52
|
+
for (const line of output.split("\n")) {
|
|
53
|
+
const parts = line.trim().split(/\s+/);
|
|
54
|
+
if (parts.length < 5 || parts[0] !== "TCP")
|
|
55
|
+
continue;
|
|
56
|
+
const [, local, remote] = parts;
|
|
57
|
+
if (!local.endsWith(`:${port}`) || !remote.endsWith(":0"))
|
|
58
|
+
continue;
|
|
59
|
+
const pid = parseInt(parts[parts.length - 1], 10);
|
|
60
|
+
if (pid > 0)
|
|
61
|
+
return pid;
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
33
65
|
function findPidOnPort(port) {
|
|
34
66
|
try {
|
|
35
67
|
if (isWindows()) {
|
|
36
68
|
const output = execFileSync("netstat", ["-ano", "-p", "tcp"], { encoding: "utf-8" });
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const pid = parseInt(parts[parts.length - 1], 10);
|
|
41
|
-
if (pid > 0)
|
|
42
|
-
return pid;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
69
|
+
const pid = parseNetstatListenerPid(output, port);
|
|
70
|
+
if (pid !== null)
|
|
71
|
+
return pid;
|
|
45
72
|
}
|
|
46
73
|
else {
|
|
47
74
|
const output = execFileSync("lsof", ["-ti", `:${port}`], { encoding: "utf-8" });
|
|
@@ -67,6 +94,54 @@ function killPid(pid) {
|
|
|
67
94
|
return false;
|
|
68
95
|
}
|
|
69
96
|
}
|
|
97
|
+
// A hard stop skips the daemon's own shutdown handler, which is what writes engine_status
|
|
98
|
+
// "stopped". On Windows that is EVERY hard stop — there is no signal delivery, so both taskkill
|
|
99
|
+
// and pm2 terminate the process outright. Without this, cron-state.json keeps saying "running"
|
|
100
|
+
// and `openwolf status` plus the dashboard both report a daemon that is gone. Whoever stopped it
|
|
101
|
+
// writes the truth. Idempotent, so it is safe to call when the handler DID run.
|
|
102
|
+
function markDaemonStopped(wolfDir) {
|
|
103
|
+
const statePath = path.join(wolfDir, "cron-state.json");
|
|
104
|
+
try {
|
|
105
|
+
withLock(statePath, () => {
|
|
106
|
+
const state = readJSON(statePath, {});
|
|
107
|
+
// No cron state at all means the daemon never wrote one — nothing to correct, and inventing
|
|
108
|
+
// a file here would only confuse the next start.
|
|
109
|
+
if (Object.keys(state).length === 0)
|
|
110
|
+
return;
|
|
111
|
+
writeJSON(statePath, { ...state, engine_status: "stopped" });
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch { /* best effort — the kill already happened */ }
|
|
115
|
+
}
|
|
116
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
117
|
+
// Ask the daemon to shut itself down, and wait until it really has. Returns false whenever that
|
|
118
|
+
// path is unavailable (nothing listening, no token, a daemon older than the /api/shutdown route,
|
|
119
|
+
// or a process too wedged to honour it) so the caller can fall back to killing it.
|
|
120
|
+
async function requestGracefulStop(wolfDir, port) {
|
|
121
|
+
const token = readDashboardToken(wolfDir);
|
|
122
|
+
if (!token)
|
|
123
|
+
return false;
|
|
124
|
+
try {
|
|
125
|
+
const res = await fetch(`http://127.0.0.1:${port}/api/shutdown`, {
|
|
126
|
+
method: "POST",
|
|
127
|
+
headers: { "x-openwolf-token": token },
|
|
128
|
+
signal: AbortSignal.timeout(3000),
|
|
129
|
+
});
|
|
130
|
+
if (!res.ok)
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
// The 202 arrives BEFORE the server closes. Poll the port instead of trusting the status code —
|
|
137
|
+
// shutdown() force-exits after 5s, so ~6s is the honest upper bound.
|
|
138
|
+
for (let i = 0; i < 60; i++) {
|
|
139
|
+
if (await isPortFree(port))
|
|
140
|
+
return true;
|
|
141
|
+
await sleep(100);
|
|
142
|
+
}
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
70
145
|
export function daemonStart() {
|
|
71
146
|
const projectRoot = findProjectRoot();
|
|
72
147
|
const wolfDir = path.join(projectRoot, ".wolf");
|
|
@@ -96,18 +171,22 @@ export function daemonStart() {
|
|
|
96
171
|
console.error("Failed to start daemon.");
|
|
97
172
|
}
|
|
98
173
|
}
|
|
99
|
-
export function daemonStop() {
|
|
174
|
+
export async function daemonStop() {
|
|
100
175
|
const projectRoot = findProjectRoot();
|
|
101
176
|
const wolfDir = path.join(projectRoot, ".wolf");
|
|
102
177
|
if (!fs.existsSync(wolfDir)) {
|
|
103
178
|
console.log("OpenWolf not initialized. Run: openwolf init");
|
|
104
179
|
return;
|
|
105
180
|
}
|
|
106
|
-
//
|
|
181
|
+
// PM2 first, and deliberately NOT the graceful endpoint here: pm2 owns the process, so a
|
|
182
|
+
// self-initiated exit reads as a crash and its autorestart brings the daemon straight back.
|
|
183
|
+
// `pm2 stop` is the only stop pm2 respects. It kills rather than signals on Windows, hence the
|
|
184
|
+
// state fix-up afterwards.
|
|
107
185
|
if (hasPm2()) {
|
|
108
186
|
const name = getPm2Name();
|
|
109
187
|
try {
|
|
110
188
|
execFileSync(PM2, ["stop", name], { stdio: "ignore" });
|
|
189
|
+
markDaemonStopped(wolfDir);
|
|
111
190
|
console.log(` ✓ Daemon stopped (PM2): ${name}`);
|
|
112
191
|
return;
|
|
113
192
|
}
|
|
@@ -115,11 +194,18 @@ export function daemonStop() {
|
|
|
115
194
|
// PM2 process not found — fall through to port-based stop
|
|
116
195
|
}
|
|
117
196
|
}
|
|
118
|
-
//
|
|
197
|
+
// Unsupervised daemon (the `openwolf dashboard` case): ask it to stop itself, so its own
|
|
198
|
+
// shutdown handler runs — on Windows too, where no signal could ever reach it.
|
|
119
199
|
const port = getDashboardPort();
|
|
200
|
+
if (await requestGracefulStop(wolfDir, port)) {
|
|
201
|
+
console.log(` ✓ Daemon stopped cleanly (port ${port})`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// Last resort: kill whatever is listening, then write the state the handler never got to write.
|
|
120
205
|
const pid = findPidOnPort(port);
|
|
121
206
|
if (pid) {
|
|
122
207
|
if (killPid(pid)) {
|
|
208
|
+
markDaemonStopped(wolfDir);
|
|
123
209
|
console.log(` ✓ Daemon stopped (PID ${pid} on port ${port})`);
|
|
124
210
|
}
|
|
125
211
|
else {
|
|
@@ -130,7 +216,7 @@ export function daemonStop() {
|
|
|
130
216
|
console.log(` No daemon running on port ${port}.`);
|
|
131
217
|
}
|
|
132
218
|
}
|
|
133
|
-
export function daemonRestart() {
|
|
219
|
+
export async function daemonRestart() {
|
|
134
220
|
const projectRoot = findProjectRoot();
|
|
135
221
|
const wolfDir = path.join(projectRoot, ".wolf");
|
|
136
222
|
if (!fs.existsSync(wolfDir)) {
|
|
@@ -149,12 +235,19 @@ export function daemonRestart() {
|
|
|
149
235
|
// PM2 process not found — fall through
|
|
150
236
|
}
|
|
151
237
|
}
|
|
152
|
-
// Fall back: stop then start via dashboard command flow
|
|
238
|
+
// Fall back: stop then start via dashboard command flow. Same order as daemonStop — ask
|
|
239
|
+
// first, kill only if asking failed, and never leave cron-state.json claiming "running".
|
|
153
240
|
const port = getDashboardPort();
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
241
|
+
if (await requestGracefulStop(wolfDir, port)) {
|
|
242
|
+
console.log(" Stopped old daemon cleanly.");
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
const pid = findPidOnPort(port);
|
|
246
|
+
if (pid) {
|
|
247
|
+
killPid(pid);
|
|
248
|
+
markDaemonStopped(wolfDir);
|
|
249
|
+
console.log(` Stopped old daemon (PID ${pid}).`);
|
|
250
|
+
}
|
|
158
251
|
}
|
|
159
252
|
console.log(" Use 'openwolf dashboard' to start a new daemon.");
|
|
160
253
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-cmd.js","sourceRoot":"","sources":["../../../src/cli/daemon-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,SAAS,gBAAgB;IACvB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,QAAQ,CACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7C,CAAC;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,oFAAoF;AACpF,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAE5C,SAAS,UAAU;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,6EAA6E;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACzE,OAAO,YAAY,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,MAAM;IACb,IAAI,CAAC;QACH,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"daemon-cmd.js","sourceRoot":"","sources":["../../../src/cli/daemon-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,74 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
+
import * as os from "node:os";
|
|
4
|
+
import { execFileSync } from "node:child_process";
|
|
3
5
|
import { findProjectRoot } from "../scanner/project-root.js";
|
|
6
|
+
import { isWindows } from "../utils/platform.js";
|
|
7
|
+
import { dashboardTokenPath } from "../utils/dashboard-auth.js";
|
|
8
|
+
import { remoteTokenPath } from "../utils/remote.js";
|
|
4
9
|
import { readRegistry, getRegistryPath } from "./registry.js";
|
|
5
10
|
import { getRetention, footprint, humanBytes, compactLedger, consolidateMemory, dedupeAndCapBuglog, pruneBackups, cleanTmp, rotateDaemonLog, dirSize, suggestIgnores, nativeMemoryHealth, findDuplicateEntries, repairNativeMemoryIndex, } from "../utils/maintenance.js";
|
|
6
11
|
import { nativeMemoryDir } from "../hooks/shared.js";
|
|
12
|
+
// Does this file carry permissions of its own, or does it just inherit the folder's?
|
|
13
|
+
//
|
|
14
|
+
// OpenWolf writes its tokens with mode 0600, which on NTFS is a no-op: Node has no ACL to map the
|
|
15
|
+
// POSIX bits onto, so the file ends up with whatever the containing directory hands down. The check
|
|
16
|
+
// has to be language-independent — icacls prints localized principal names (BUILTIN\Users,
|
|
17
|
+
// VORDEFINIERT\Benutzer, …) but marks inherited entries with a literal (I) flag in every locale.
|
|
18
|
+
// All-inherited means nothing file-specific was ever applied.
|
|
19
|
+
// Returns null when the question can't be answered (icacls missing, output unparsable).
|
|
20
|
+
function hasOnlyInheritedAcl(filePath) {
|
|
21
|
+
let out;
|
|
22
|
+
try {
|
|
23
|
+
out = execFileSync("icacls", [filePath], { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const aces = [];
|
|
29
|
+
for (const raw of out.split(/\r?\n/)) {
|
|
30
|
+
const line = raw.trim();
|
|
31
|
+
if (!line)
|
|
32
|
+
break; // the ACE block ends at the first blank line; a summary line follows it
|
|
33
|
+
// First line is "<path> PRINCIPAL:(flags)"; the rest are the bare ACE, indented.
|
|
34
|
+
const ace = line.startsWith(filePath) ? line.slice(filePath.length).trim() : line;
|
|
35
|
+
if (ace.includes(":("))
|
|
36
|
+
aces.push(ace);
|
|
37
|
+
}
|
|
38
|
+
if (!aces.length)
|
|
39
|
+
return null;
|
|
40
|
+
return aces.every((a) => a.includes("(I)"));
|
|
41
|
+
}
|
|
42
|
+
// Windows-only section: name the tokens whose 0600 did nothing, and hand over the command that
|
|
43
|
+
// actually restricts them. Silent on Linux/macOS, where the mode bits do what they say.
|
|
44
|
+
function reportWindowsTokenAcls(wolfDir) {
|
|
45
|
+
if (!isWindows())
|
|
46
|
+
return;
|
|
47
|
+
const tokens = [
|
|
48
|
+
{ label: "dashboard-token", file: dashboardTokenPath(wolfDir), what: "the daemon API and WebSocket" },
|
|
49
|
+
{ label: "remote-token", file: remoteTokenPath(wolfDir), what: "your linked remote workspace" },
|
|
50
|
+
].filter((t) => fs.existsSync(t.file));
|
|
51
|
+
if (!tokens.length)
|
|
52
|
+
return;
|
|
53
|
+
const lines = [];
|
|
54
|
+
for (const t of tokens) {
|
|
55
|
+
const inherited = hasOnlyInheritedAcl(t.file);
|
|
56
|
+
if (inherited === null) {
|
|
57
|
+
lines.push(` · ${t.label}: permissions not readable (icacls unavailable) — check it by hand`);
|
|
58
|
+
}
|
|
59
|
+
else if (inherited) {
|
|
60
|
+
lines.push(` ⚠ ${t.label} inherits the folder's ACL. The 0600 OpenWolf sets is a no-op on NTFS,`);
|
|
61
|
+
lines.push(` so every account that can read this project can read the key to ${t.what}.`);
|
|
62
|
+
lines.push(` Restrict it: icacls "${t.file}" /inheritance:r /grant:r "%USERNAME%":R`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lines.push(` ✓ ${t.label} has explicit (non-inherited) permissions`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
console.log("\nWindows file permissions:");
|
|
69
|
+
for (const l of lines)
|
|
70
|
+
console.log(l);
|
|
71
|
+
}
|
|
7
72
|
// `openwolf doctor` — daemon-independent .wolf/ health report + compaction.
|
|
8
73
|
export async function doctorCommand(opts) {
|
|
9
74
|
const projectRoot = findProjectRoot();
|
|
@@ -58,6 +123,7 @@ export async function doctorCommand(opts) {
|
|
|
58
123
|
}
|
|
59
124
|
}
|
|
60
125
|
catch { /* registry not readable — skip */ }
|
|
126
|
+
reportWindowsTokenAcls(wolfDir);
|
|
61
127
|
// --- Claude native Auto Memory health (read-only interop) ---
|
|
62
128
|
try {
|
|
63
129
|
const nd = nativeMemoryDir(projectRoot);
|
|
@@ -101,6 +167,23 @@ export async function doctorCommand(opts) {
|
|
|
101
167
|
console.log(` · run \`openwolf doctor --fix-index\` to append the recent ones to MEMORY.md`);
|
|
102
168
|
}
|
|
103
169
|
}
|
|
170
|
+
else {
|
|
171
|
+
// [2026-08-28] A miss used to print NOTHING, which is the worst of both worlds: recall keeps
|
|
172
|
+
// working (it just never sees the native store) and nobody learns that half the memory is
|
|
173
|
+
// missing. nativeMemoryDir() guesses Claude Code's project slug, and the guess has known
|
|
174
|
+
// blind spots: Claude sanitizes EVERY non-alphanumeric character to "-" (so the plain
|
|
175
|
+
// slash→dash guess is POSIX-only), truncates past 200 characters and appends a hash, and
|
|
176
|
+
// honours CLAUDE_CODE_PROJECT_DIR_NAME when CLAUDE_CONFIG_DIR is set. Say so, and name the
|
|
177
|
+
// override rather than leaving the user to guess.
|
|
178
|
+
const base = path.join(os.homedir(), ".claude", "projects");
|
|
179
|
+
const known = fs.existsSync(base);
|
|
180
|
+
console.log("\nClaude native memory (~/.claude/…/memory):");
|
|
181
|
+
console.log(known
|
|
182
|
+
? ` · not found for this project — Auto Memory may be off, or the project-slug guess missed`
|
|
183
|
+
: ` · ${base} does not exist — Claude Code Auto Memory has not run here`);
|
|
184
|
+
if (known)
|
|
185
|
+
console.log(` · if it exists under a different name, point at it: OPENWOLF_NATIVE_MEMORY_DIR=<path>`);
|
|
186
|
+
}
|
|
104
187
|
}
|
|
105
188
|
catch { /* native memory unreadable — skip */ }
|
|
106
189
|
// --- Near-duplicate cerebrum entries (read-only consolidation hint) ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-cmd.js","sourceRoot":"","sources":["../../../src/cli/doctor-cmd.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor-cmd.js","sourceRoot":"","sources":["../../../src/cli/doctor-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/index.js
CHANGED
|
@@ -56,14 +56,14 @@ export function createProgram() {
|
|
|
56
56
|
.description("Stop daemon")
|
|
57
57
|
.action(async () => {
|
|
58
58
|
const { daemonStop } = await import("./daemon-cmd.js");
|
|
59
|
-
daemonStop();
|
|
59
|
+
await daemonStop();
|
|
60
60
|
});
|
|
61
61
|
daemon
|
|
62
62
|
.command("restart")
|
|
63
63
|
.description("Restart daemon")
|
|
64
64
|
.action(async () => {
|
|
65
65
|
const { daemonRestart } = await import("./daemon-cmd.js");
|
|
66
|
-
daemonRestart();
|
|
66
|
+
await daemonRestart();
|
|
67
67
|
});
|
|
68
68
|
daemon
|
|
69
69
|
.command("logs")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,mDAAmD,CAAC;SAChE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,SAAS,EAAE,mDAAmD,CAAC;SACtE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEpC,MAAM;SACH,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACxD,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -382,6 +382,21 @@ app.post("/api/cron/run/:taskId", (req, res) => {
|
|
|
382
382
|
broadcast({ type: "task_error", task_id: taskId, error: String(err) });
|
|
383
383
|
});
|
|
384
384
|
});
|
|
385
|
+
// Graceful stop over the authenticated API — the only cross-platform way in.
|
|
386
|
+
//
|
|
387
|
+
// Windows has no signal delivery: `process.kill(pid, "SIGTERM")` and `taskkill /F` both terminate
|
|
388
|
+
// the process outright, so the SIGTERM/SIGINT handlers below never run there. Everything shutdown()
|
|
389
|
+
// does — marking cron-state "stopped", telling dashboard clients why they are about to lose the
|
|
390
|
+
// socket — was therefore Linux-only, and `openwolf daemon stop` left cron-state.json claiming
|
|
391
|
+
// "running". Asking the daemon to stop ITSELF works the same on every platform.
|
|
392
|
+
//
|
|
393
|
+
// 202 goes out before the shutdown starts so the caller gets an answer rather than a dropped
|
|
394
|
+
// connection; the CLI then waits for the port to actually free up.
|
|
395
|
+
app.post("/api/shutdown", (_req, res) => {
|
|
396
|
+
logger.info("Shutdown requested over the API");
|
|
397
|
+
res.status(202).json({ status: "stopping" });
|
|
398
|
+
setTimeout(shutdown, 50);
|
|
399
|
+
});
|
|
385
400
|
// SPA fallback
|
|
386
401
|
app.get("/{*path}", (_req, res) => {
|
|
387
402
|
const indexPath = path.join(dashboardDir, "index.html");
|