openwolf-enhanced 1.19.0 → 1.19.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 (49) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/dashboard/assets/{AISuggestions-Bz6uifBL.js → AISuggestions-ByJakEO6.js} +1 -1
  3. package/dist/dashboard/assets/{ActivityLog-Dp9Vy_yw.js → ActivityLog-DSfbf3Y7.js} +1 -1
  4. package/dist/dashboard/assets/{ActivityTimeline-qx-FXGlN.js → ActivityTimeline-COKzabf_.js} +1 -1
  5. package/dist/dashboard/assets/{AnatomyBrowser-CBgnZuaN.js → AnatomyBrowser-CtwvWQhy.js} +1 -1
  6. package/dist/dashboard/assets/{BugLog-Bqvi_hcM.js → BugLog-B9Vd6-tR.js} +1 -1
  7. package/dist/dashboard/assets/{CerebrumViewer-BZ3eMxEG.js → CerebrumViewer-6PqRD6jt.js} +1 -1
  8. package/dist/dashboard/assets/{CronStatus-C-db0M9L.js → CronStatus-wbhU9J3E.js} +1 -1
  9. package/dist/dashboard/assets/{DesignQC-BOFkKCKs.js → DesignQC-CJ2hTDch.js} +1 -1
  10. package/dist/dashboard/assets/{MemoryViewer-rrSZ9ku9.js → MemoryViewer-DH9JAKAk.js} +1 -1
  11. package/dist/dashboard/assets/{NativeMemory-DtYZHH8H.js → NativeMemory-BaxOcLxh.js} +1 -1
  12. package/dist/dashboard/assets/{ProjectOverview-CC3WZKB4.js → ProjectOverview-BaagZDLq.js} +1 -1
  13. package/dist/dashboard/assets/{ProjectsAggregate-DMn9kYcp.js → ProjectsAggregate-CycQ5unj.js} +1 -1
  14. package/dist/dashboard/assets/{StatusBadge-DasxdCsy.js → StatusBadge-BcyhaVbu.js} +1 -1
  15. package/dist/dashboard/assets/{TokenUsage-C6mixj0Y.js → TokenUsage-BrtsR1aL.js} +1 -1
  16. package/dist/dashboard/assets/{index-BAnY3Rh3.js → index-DmU31a-B.js} +3 -3
  17. package/dist/dashboard/index.html +1 -1
  18. package/dist/hooks/post-read.js +9 -7
  19. package/dist/hooks/post-write.js +17 -14
  20. package/dist/hooks/pre-read.js +3 -0
  21. package/dist/hooks/shared.js +5 -4
  22. package/dist/hooks/stop.js +4 -1
  23. package/dist/hooks/token-estimator.js +58 -0
  24. package/dist/src/buglog/bug-tracker.js +8 -1
  25. package/dist/src/buglog/bug-tracker.js.map +1 -1
  26. package/dist/src/hooks/post-read.js +9 -7
  27. package/dist/src/hooks/post-read.js.map +1 -1
  28. package/dist/src/hooks/post-write.js +17 -14
  29. package/dist/src/hooks/post-write.js.map +1 -1
  30. package/dist/src/hooks/pre-read.js +3 -0
  31. package/dist/src/hooks/pre-read.js.map +1 -1
  32. package/dist/src/hooks/shared.js +5 -4
  33. package/dist/src/hooks/shared.js.map +1 -1
  34. package/dist/src/hooks/stop.js +4 -1
  35. package/dist/src/hooks/stop.js.map +1 -1
  36. package/dist/src/hooks/token-estimator.js +59 -0
  37. package/dist/src/hooks/token-estimator.js.map +1 -0
  38. package/dist/src/scanner/anatomy-scanner.js +8 -19
  39. package/dist/src/scanner/anatomy-scanner.js.map +1 -1
  40. package/dist/src/tracker/token-estimator.js +4 -19
  41. package/dist/src/tracker/token-estimator.js.map +1 -1
  42. package/dist/src/tracker/token-ledger.js.map +1 -1
  43. package/dist/src/tracker/waste-detector.js +9 -9
  44. package/dist/src/tracker/waste-detector.js.map +1 -1
  45. package/dist/src/utils/embeddings.js +58 -0
  46. package/dist/src/utils/embeddings.js.map +1 -0
  47. package/dist/src/utils/hooks-deploy.js +23 -4
  48. package/dist/src/utils/hooks-deploy.js.map +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"waste-detector.js","sourceRoot":"","sources":["../../../src/tracker/waste-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"waste-detector.js","sourceRoot":"","sources":["../../../src/tracker/waste-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import * as path from "node:path";
2
+ import { readJSON } from "./fs-safe.js";
3
+ import { isLocalEndpoint } from "../daemon/llm-provider.js";
4
+ const DEFAULTS = {
5
+ baseUrl: "http://localhost:1234/v1",
6
+ model: "text-embedding-nomic-embed-text-v1.5",
7
+ apiKeyEnv: "OPENWOLF_EMBED_API_KEY",
8
+ };
9
+ export function resolveEmbedConfig(wolfDir) {
10
+ const cfg = readJSON(path.join(wolfDir, "config.json"), {});
11
+ const e = cfg.openwolf?.recall?.embeddings ?? {};
12
+ return {
13
+ enabled: e.enabled ?? false,
14
+ baseUrl: (e.baseUrl || DEFAULTS.baseUrl).replace(/\/+$/, ""),
15
+ model: e.model || DEFAULTS.model,
16
+ apiKeyEnv: e.apiKeyEnv || DEFAULTS.apiKeyEnv,
17
+ };
18
+ }
19
+ /** Embed a batch of texts. Loopback endpoints run keyless; remote ones require the configured key. */
20
+ export async function embedTexts(cfg, texts) {
21
+ if (texts.length === 0)
22
+ return [];
23
+ const key = process.env[cfg.apiKeyEnv] ?? "";
24
+ if (!key && !isLocalEndpoint(cfg.baseUrl)) {
25
+ throw new Error(`${cfg.apiKeyEnv} is not set — a remote embeddings endpoint needs a key. Point openwolf.recall.embeddings.base_url at a local server (LM Studio http://localhost:1234/v1) to run keyless.`);
26
+ }
27
+ const res = await fetch(`${cfg.baseUrl}/embeddings`, {
28
+ method: "POST",
29
+ headers: { "content-type": "application/json", ...(key ? { authorization: `Bearer ${key}` } : {}) },
30
+ body: JSON.stringify({ model: cfg.model, input: texts }),
31
+ signal: AbortSignal.timeout(120_000),
32
+ });
33
+ if (!res.ok) {
34
+ const t = await res.text().catch(() => "");
35
+ throw new Error(`embeddings HTTP ${res.status} ${t.slice(0, 120)}`);
36
+ }
37
+ const data = (await res.json());
38
+ if (!data.data || data.data.length !== texts.length) {
39
+ throw new Error(`embeddings response returned ${data.data?.length ?? 0} vectors for ${texts.length} inputs`);
40
+ }
41
+ // Preserve input order (OpenAI returns an `index` field).
42
+ return [...data.data].sort((a, b) => a.index - b.index).map((d) => d.embedding);
43
+ }
44
+ /** Cosine similarity of two equal-length vectors. Returns 0 for a zero vector or a length mismatch. */
45
+ export function cosine(a, b) {
46
+ if (a.length !== b.length)
47
+ return 0;
48
+ let dot = 0, na = 0, nb = 0;
49
+ for (let i = 0; i < a.length; i++) {
50
+ dot += a[i] * b[i];
51
+ na += a[i] * a[i];
52
+ nb += b[i] * b[i];
53
+ }
54
+ if (na === 0 || nb === 0)
55
+ return 0;
56
+ return dot / (Math.sqrt(na) * Math.sqrt(nb));
57
+ }
58
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../../src/utils/embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAa5D,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,sCAAsC;IAC7C,SAAS,EAAE,wBAAwB;CACpC,CAAC;AAMF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC;IACjD,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK;QAC3B,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5D,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;KAC7C,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAgB,EAAE,KAAe;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,SAAS,0KAA0K,CAAC,CAAC;IAC9M,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,aAAa,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACnG,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA6D,CAAC;IAC5F,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;IAC/G,CAAC;IACD,0DAA0D;IAC1D,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,MAAM,CAAC,CAAW,EAAE,CAAW;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -17,6 +17,13 @@ import { fileURLToPath } from "node:url";
17
17
  import { safeCopyFile } from "./fs-safe.js";
18
18
  import { ensureDir } from "./paths.js";
19
19
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
20
+ /**
21
+ * The hook entry points — the scripts `.claude/settings.json` invokes directly. This list is what
22
+ * `openwolf status` verifies; it is NOT the copy list. Everything in the compiled hooks directory is
23
+ * deployed (see copyHookScripts), because these entry points import shared modules and a hardcoded
24
+ * copy list silently omits any new one — which broke every hook in every project in 1.19.1 when
25
+ * shared.js gained a `token-estimator.js` import that was never copied.
26
+ */
20
27
  export const HOOK_FILES = [
21
28
  "session-start.js",
22
29
  "pre-read.js",
@@ -53,12 +60,24 @@ export function copyHookScripts(wolfDir) {
53
60
  const sourceDir = findHooksSourceDir();
54
61
  let copiedAny = false;
55
62
  if (sourceDir) {
56
- for (const file of HOOK_FILES) {
63
+ // Copy every compiled module, not just the entry points — a hook that imports a helper needs
64
+ // that helper on disk too, and enumerating them by hand is how they go missing.
65
+ let files = [];
66
+ try {
67
+ files = fs.readdirSync(sourceDir).filter((f) => f.endsWith(".js"));
68
+ }
69
+ catch { /* unreadable source dir — handled by the !copiedAny warning below */ }
70
+ for (const file of files) {
57
71
  const src = path.join(sourceDir, file);
58
- if (fs.existsSync(src)) {
59
- safeCopyFile(src, path.join(hooksDir, file));
60
- copiedAny = true;
72
+ try {
73
+ if (!fs.statSync(src).isFile())
74
+ continue;
75
+ }
76
+ catch {
77
+ continue;
61
78
  }
79
+ safeCopyFile(src, path.join(hooksDir, file));
80
+ copiedAny = true;
62
81
  }
63
82
  }
64
83
  if (!copiedAny) {
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-deploy.js","sourceRoot":"","sources":["../../../src/utils/hooks-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,cAAc;IACd,SAAS;IACT,eAAe;IACf,WAAW;CACZ,CAAC;AAEF,iGAAiG;AACjG,SAAS,kBAAkB;IACzB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,kDAAkD;QAChG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,EAAQ,4CAA4C;KAC3F,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC7C,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACzF,CAAC;IAED,8DAA8D;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5F,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"hooks-deploy.js","sourceRoot":"","sources":["../../../src/utils/hooks-deploy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openwolf-enhanced",
3
- "version": "1.19.0",
3
+ "version": "1.19.2",
4
4
  "description": "A second brain for Claude Code, Codex & Gemini — persistent git-native project memory with searchable citations, an MCP server for Claude Desktop, and invisible hook-based context. No database.",
5
5
  "type": "module",
6
6
  "bin": {