wyrm-mcp 7.2.3 → 7.3.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.
Files changed (84) hide show
  1. package/dist/autoconfig.d.ts.map +1 -1
  2. package/dist/autoconfig.js +17 -17
  3. package/dist/autoconfig.js.map +1 -1
  4. package/dist/causality.d.ts +21 -0
  5. package/dist/causality.d.ts.map +1 -1
  6. package/dist/causality.js +12 -6
  7. package/dist/causality.js.map +1 -1
  8. package/dist/cloud/client.js +1 -1
  9. package/dist/cloud/client.js.map +1 -1
  10. package/dist/cloud/sync-engine.d.ts.map +1 -1
  11. package/dist/cloud/sync-engine.js +6 -6
  12. package/dist/cloud/sync-engine.js.map +1 -1
  13. package/dist/content-signature.d.ts +33 -0
  14. package/dist/content-signature.d.ts.map +1 -0
  15. package/dist/content-signature.js +1 -0
  16. package/dist/content-signature.js.map +1 -0
  17. package/dist/database.d.ts +87 -0
  18. package/dist/database.d.ts.map +1 -1
  19. package/dist/database.js +61 -20
  20. package/dist/database.js.map +1 -1
  21. package/dist/failure-patterns.d.ts +15 -0
  22. package/dist/failure-patterns.d.ts.map +1 -1
  23. package/dist/failure-patterns.js +26 -20
  24. package/dist/failure-patterns.js.map +1 -1
  25. package/dist/handlers/causality.d.ts.map +1 -1
  26. package/dist/handlers/causality.js +7 -5
  27. package/dist/handlers/causality.js.map +1 -1
  28. package/dist/handlers/intelligence.d.ts.map +1 -1
  29. package/dist/handlers/intelligence.js +16 -16
  30. package/dist/handlers/intelligence.js.map +1 -1
  31. package/dist/handlers/recall.d.ts.map +1 -1
  32. package/dist/handlers/recall.js +11 -9
  33. package/dist/handlers/recall.js.map +1 -1
  34. package/dist/handlers/run.d.ts +44 -0
  35. package/dist/handlers/run.d.ts.map +1 -1
  36. package/dist/handlers/run.js +10 -12
  37. package/dist/handlers/run.js.map +1 -1
  38. package/dist/handlers/search.d.ts.map +1 -1
  39. package/dist/handlers/search.js +2 -2
  40. package/dist/handlers/search.js.map +1 -1
  41. package/dist/handlers/session.d.ts.map +1 -1
  42. package/dist/handlers/session.js +21 -18
  43. package/dist/handlers/session.js.map +1 -1
  44. package/dist/handlers/types.d.ts +1 -1
  45. package/dist/handlers/types.d.ts.map +1 -1
  46. package/dist/http-fast.d.ts.map +1 -1
  47. package/dist/http-fast.js +18 -17
  48. package/dist/http-fast.js.map +1 -1
  49. package/dist/importers.d.ts +77 -0
  50. package/dist/importers.d.ts.map +1 -0
  51. package/dist/importers.js +1 -0
  52. package/dist/importers.js.map +1 -0
  53. package/dist/index.js +2 -2
  54. package/dist/index.js.map +1 -1
  55. package/dist/memory-artifacts.d.ts +45 -1
  56. package/dist/memory-artifacts.d.ts.map +1 -1
  57. package/dist/memory-artifacts.js +34 -24
  58. package/dist/memory-artifacts.js.map +1 -1
  59. package/dist/migrations.d.ts.map +1 -1
  60. package/dist/migrations.js +25 -1
  61. package/dist/migrations.js.map +1 -1
  62. package/dist/receipt.d.ts +45 -0
  63. package/dist/receipt.d.ts.map +1 -0
  64. package/dist/receipt.js +1 -0
  65. package/dist/receipt.js.map +1 -0
  66. package/dist/render-target.d.ts +15 -1
  67. package/dist/render-target.d.ts.map +1 -1
  68. package/dist/render-target.js +11 -11
  69. package/dist/render-target.js.map +1 -1
  70. package/dist/rerank.d.ts +59 -0
  71. package/dist/rerank.d.ts.map +1 -0
  72. package/dist/rerank.js +1 -0
  73. package/dist/rerank.js.map +1 -0
  74. package/dist/statusline.js +10 -10
  75. package/dist/statusline.js.map +1 -1
  76. package/dist/tool-manifest-v2.json +1 -1
  77. package/dist/tool-manifest.json +1 -1
  78. package/dist/wyrm-cli.js +45 -42
  79. package/dist/wyrm-cli.js.map +1 -1
  80. package/dist/wyrm-guard.d.ts.map +1 -1
  81. package/dist/wyrm-guard.js +13 -13
  82. package/dist/wyrm-guard.js.map +1 -1
  83. package/dist/wyrm-manifest.json +1 -1
  84. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/cloud/sync-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/cloud/sync-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Content-signature — the matching foundation of the Failure Firewall content
3
+ * tier (Failure Firewall v2). When a failure records the code that broke, the
4
+ * guard can later recognize an Edit/Write that RE-INTRODUCES it — even after the
5
+ * model reformatted whitespace or re-commented it — and block the repeat.
6
+ *
7
+ * Two pure helpers:
8
+ * - normalizeContentSignature: a whitespace/comment-insensitive normal form.
9
+ * - containsFailedSignature: a conservative match WITH a precision gate — a
10
+ * signature shorter than `minChars` never matches, so the firewall can never
11
+ * false-positive on a trivial fragment (the recon's hard requirement: a
12
+ * content firewall that false-positives gets ripped out).
13
+ *
14
+ * Deterministic + pure + zero-dep. No AST parse (language-agnostic); a future
15
+ * tier can layer a per-language AST normalizer behind the same interface.
16
+ *
17
+ * @copyright 2026 Ghost Protocol (Pvt) Ltd.
18
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
19
+ */
20
+ /**
21
+ * Normalize a code edit to a comparable signature: strip comments, collapse all
22
+ * whitespace runs to a single space, trim. Trivial reformatting (indentation,
23
+ * line breaks, comments) no longer hides a re-introduced pattern.
24
+ */
25
+ export declare function normalizeContentSignature(code: string): string;
26
+ /**
27
+ * True iff `editContent` re-introduces `failedSignature` (after normalization),
28
+ * AND the normalized signature is at least `minChars` long. The length gate is
29
+ * the precision floor: a recorded failure whose code fingerprint is shorter than
30
+ * `minChars` is too generic to block on without risking false positives.
31
+ */
32
+ export declare function containsFailedSignature(editContent: string, failedSignature: string, minChars?: number): boolean;
33
+ //# sourceMappingURL=content-signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-signature.d.ts","sourceRoot":"","sources":["../src/content-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,OAAO,CAI5G"}
@@ -0,0 +1 @@
1
+ function r(e){return e.replace(/\/\*[\s\S]*?\*\//g," ").replace(/(^|[^:])\/\/[^\n]*/gm,"$1").replace(/#[^\n]*/g," ").replace(/\s+/g," ").trim()}function i(e,t,a=24){const n=r(t);return n.length<a?!1:r(e).includes(n)}export{i as containsFailedSignature,r as normalizeContentSignature};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-signature.js","sourceRoot":"","sources":["../src/content-signature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,IAAI;SACR,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAM,uBAAuB;SAC9D,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAE,8CAA8C;SACrF,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAe,iCAAiC;SACxE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB,EAAE,eAAuB,EAAE,QAAQ,GAAG,EAAE;IACjG,MAAM,MAAM,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,GAAG,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjE,CAAC"}
@@ -14,6 +14,16 @@
14
14
  */
15
15
  import Database from 'better-sqlite3';
16
16
  import type { EmitEventInput, WyrmEvent, RemoteEvent, IngestResult } from './events.js';
17
+ import type { MemoryArtifact } from './memory-artifacts.js';
18
+ /**
19
+ * Canonical DB-path resolution for every bare WyrmDB consumer (the stdio MCP
20
+ * server, statusline, cloud sync). Honors WYRM_DB_PATH (canonical — what the
21
+ * CLI, HTTP server and docs already use); accepts the legacy WYRM_DB that
22
+ * autoconfig historically wrote, for back-compat; otherwise the default store.
23
+ * The constructor itself stays env-free, so an explicit path (e.g. a test
24
+ * sandbox) always wins.
25
+ */
26
+ export declare function resolveDbPath(): string;
17
27
  export interface Project {
18
28
  id: number;
19
29
  name: string;
@@ -126,6 +136,38 @@ export interface SkillGraphNode {
126
136
  /** True when a governs/composes target name is not a registered skill. */
127
137
  missing?: string[];
128
138
  }
139
+ /** One recorded routing decision+outcome (migration 28, routing_memory). The
140
+ * dragon-cli multi-model router writes one per delegated run so future runs can
141
+ * learn which model/tool succeeded — or failed — for a given task_type. */
142
+ export interface RoutingRecord {
143
+ /** Project the task ran under; -1 = global/unscoped (NOT an FK — see migration 28). */
144
+ projectId?: number;
145
+ /** The router's task classification (e.g. 'reason', 'tools', 'code'). */
146
+ taskType: string;
147
+ /** The model that ran it (e.g. 'vibethinker', 'mistral-nemo', 'ember'). */
148
+ modelId: string;
149
+ /** Tools used on that run (comma-joined on write). */
150
+ toolNames?: string[] | string | null;
151
+ /** True = the routed run succeeded, false = it failed (negative learning). */
152
+ success: boolean;
153
+ /** Optional wall-clock of the run, for tie-breaking toward the faster winner. */
154
+ latencyMs?: number | null;
155
+ }
156
+ /** Aggregated routing stats for one (model, tool-set) candidate under a task_type. */
157
+ export interface RoutingCandidate {
158
+ model_id: string;
159
+ /** Comma-joined tool names for this candidate ('' when the runs used none). */
160
+ tool_names: string;
161
+ runs: number;
162
+ successes: number;
163
+ failures: number;
164
+ /** successes / runs, 0..1. */
165
+ success_rate: number;
166
+ /** Mean latency_ms over runs that recorded one (null when none did). */
167
+ avg_latency_ms: number | null;
168
+ /** ISO ts of the most recent run for this candidate. */
169
+ last_ts: string;
170
+ }
129
171
  export declare class WyrmDB {
130
172
  private db;
131
173
  private readonly BATCH_SIZE;
@@ -160,6 +202,41 @@ export declare class WyrmDB {
160
202
  createSession(projectId: number, data: Partial<Session>): Session;
161
203
  updateSession(id: number, data: Partial<Session>): Session;
162
204
  getSession(id: number): Session | undefined;
205
+ /**
206
+ * Append [note] to the project's continuity thread — the running narrative of what we're working
207
+ * on / talking / thinking about. Bounded (oldest trimmed with a marker) so it never grows
208
+ * unbounded yet never loses the gist. This is what lets a fresh chat — or a different surface
209
+ * (phone, Hermes, Ember, Gemini) — re-open already knowing where we left off.
210
+ */
211
+ updateContinuity(projectId: number, note: string, by?: string): void;
212
+ /** The project's current continuity thread (the living "where we left off"), or null if none yet. */
213
+ getContinuity(projectId: number): {
214
+ thread: string;
215
+ updated_at: string;
216
+ updated_by: string | null;
217
+ turn_count: number;
218
+ } | null;
219
+ /** Append one routing decision+outcome. Append-only (an event log); never
220
+ * updates a prior row. project_id defaults to -1 (global/unscoped). */
221
+ recordRouting(rec: RoutingRecord): number;
222
+ /**
223
+ * Recall the routing candidates for a task_type, aggregated per
224
+ * (model_id, tool-set) and ranked for negative learning: highest success
225
+ * rate first, then most runs (more evidence), then most recent. Scoped to
226
+ * `projectId` when given (and ALWAYS includes global/-1 rows so a router
227
+ * that never registered a project still benefits); global across all
228
+ * projects when omitted.
229
+ *
230
+ * @param taskType the router's task classification (the recall key)
231
+ * @param opts.projectId scope to this project (+ global -1 rows); omit for global
232
+ * @param opts.limit max candidates returned (default 10, cap 100)
233
+ * @param opts.sinceDays only consider runs within this recency window (optional)
234
+ */
235
+ recallRouting(taskType: string, opts?: {
236
+ projectId?: number | null;
237
+ limit?: number;
238
+ sinceDays?: number;
239
+ }): RoutingCandidate[];
163
240
  getRecentSessions(projectId: number, limit?: number): Session[];
164
241
  getTodaySession(projectId: number): Session | undefined;
165
242
  searchSessions(query: string, projectId?: number): Session[];
@@ -350,6 +427,15 @@ export declare class WyrmDB {
350
427
  }>): number;
351
428
  queryData(projectId: number, category?: string, limit?: number, offset?: number): DataPoint[];
352
429
  searchData(query: string, projectId?: number): DataPoint[];
430
+ /**
431
+ * Lexical (FTS5) search over ACTIVE memory artifacts — the keyword peer of
432
+ * the vector channel wyrm_search already fuses. Mirrors searchData (OR-
433
+ * semantics + porter stemming via buildFtsMatchQuery, bm25 ranking). Only
434
+ * surfaces live artifacts (needs_review = 0, not superseded), matching the
435
+ * recall contract. Fixes the gap where wyrm_search found artifacts
436
+ * semantically but never lexically.
437
+ */
438
+ searchArtifacts(query: string, projectId?: number): MemoryArtifact[];
353
439
  getDataCategories(projectId: number): {
354
440
  category: string;
355
441
  count: number;
@@ -361,6 +447,7 @@ export declare class WyrmDB {
361
447
  projects: number;
362
448
  sessions: number;
363
449
  quests: number;
450
+ artifacts: number;
364
451
  dataPoints: number;
365
452
  totalTokens: number;
366
453
  dbSize: string;
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/database.js CHANGED
@@ -1,11 +1,11 @@
1
- import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync as D,statSync as y,writeFileSync as L}from"fs";import{homedir as I}from"os";import{join as d,basename as A,resolve as M,normalize as v}from"path";import{spawnSync as f}from"child_process";import{getResilienceManager as H}from"./resilience.js";import{WyrmLogger as w}from"./logger.js";import{runMigrations as F,getSchemaVersion as j}from"./migrations.js";import{validateProjectPath as O,buildFtsMatchQuery as _}from"./security.js";import{emitEvent as h,eventsSince as W,subscribeEvents as U,isLiveMemoryEnabled as x,ingestRemoteEvent as P,eventsForPush as q,pruneEvents as B,getMeta as Y,setMeta as $}from"./events.js";import{getActor as N}from"./handlers/boundary.js";import{readSkillContent as C,slugify as G,skillContentSha as V}from"./skill-author.js";class ae{db;BATCH_SIZE=1e3;resilience;logger;dbPath;constructor(t){const e=d(I(),".wyrm");u(e)||b(e,{recursive:!0}),this.dbPath=t||d(e,"wyrm.db"),this.logger=new w,this.resilience=H(),this.db=this.initializeDatabase(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("cache_size = -64000"),this.db.pragma("temp_store = MEMORY"),this.db.pragma("busy_timeout = 5000"),this.db.pragma("mmap_size = 268435456"),this.db.pragma("page_size = 4096"),this.db.pragma("foreign_keys = ON");const s=F(this.db);s.length>0&&this.logger.info(`Applied ${s.length} migration(s), now at v${j(this.db)}`),this.recoverIncompleteOperations()}getDatabase(){return this.db}getDatabasePath(){return this.dbPath}initializeDatabase(t){const e=this.resilience.withRetrySync(()=>new k(t),"database_init",{maxAttempts:3,baseDelayMs:500});if(!e.success)throw this.logger.error("Failed to initialize database",{path:t,error:e.error?.message}),e.error||new Error("Database initialization failed");return e.data}recoverIncompleteOperations(){const t=this.resilience.getIncompleteOperations();for(const e of t)this.logger.warn("Found incomplete operation from previous session",{operation:e.operation,stage:e.stage,id:e.id}),e.operation==="batch_insert"&&this.logger.info("Batch insert was incomplete - data may need re-import"),this.resilience.completeCheckpoint(e.id)}addWatchDir(t,e=!0){return O(t),this.db.prepare(`
1
+ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync as D,statSync as L,writeFileSync as I}from"fs";import{homedir as O}from"os";import{join as d,basename as A,resolve as M,normalize as w}from"path";import{spawnSync as R}from"child_process";import{getResilienceManager as v}from"./resilience.js";import{WyrmLogger as j}from"./logger.js";import{runMigrations as H,getSchemaVersion as F}from"./migrations.js";import{validateProjectPath as N,buildFtsMatchQuery as h}from"./security.js";import{emitEvent as m,eventsSince as W,subscribeEvents as U,isLiveMemoryEnabled as x,ingestRemoteEvent as P,eventsForPush as B,pruneEvents as q,getMeta as Y,setMeta as $}from"./events.js";import{getActor as C}from"./handlers/boundary.js";import{readSkillContent as y,slugify as G,skillContentSha as V}from"./skill-author.js";function ae(){return process.env.WYRM_DB_PATH??process.env.WYRM_DB??d(O(),".wyrm","wyrm.db")}class ce{db;BATCH_SIZE=1e3;resilience;logger;dbPath;constructor(t){const e=d(O(),".wyrm");u(e)||b(e,{recursive:!0}),this.dbPath=t||d(e,"wyrm.db"),this.logger=new j,this.resilience=v(),this.db=this.initializeDatabase(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("synchronous = NORMAL"),this.db.pragma("cache_size = -64000"),this.db.pragma("temp_store = MEMORY"),this.db.pragma("busy_timeout = 5000"),this.db.pragma("mmap_size = 268435456"),this.db.pragma("page_size = 4096"),this.db.pragma("foreign_keys = ON");const s=H(this.db);s.length>0&&this.logger.info(`Applied ${s.length} migration(s), now at v${F(this.db)}`),this.recoverIncompleteOperations()}getDatabase(){return this.db}getDatabasePath(){return this.dbPath}initializeDatabase(t){const e=this.resilience.withRetrySync(()=>new k(t),"database_init",{maxAttempts:3,baseDelayMs:500});if(!e.success)throw this.logger.error("Failed to initialize database",{path:t,error:e.error?.message}),e.error||new Error("Database initialization failed");return e.data}recoverIncompleteOperations(){const t=this.resilience.getIncompleteOperations();for(const e of t)this.logger.warn("Found incomplete operation from previous session",{operation:e.operation,stage:e.stage,id:e.id}),e.operation==="batch_insert"&&this.logger.info("Batch insert was incomplete - data may need re-import"),this.resilience.completeCheckpoint(e.id)}addWatchDir(t,e=!0){return N(t),this.db.prepare(`
2
2
  INSERT INTO watch_dirs (path, recursive)
3
3
  VALUES (?, ?)
4
4
  ON CONFLICT(path) DO UPDATE SET recursive = excluded.recursive
5
5
  RETURNING *
6
- `).get(t,e?1:0)}getWatchDirs(){return this.db.prepare("SELECT * FROM watch_dirs").all()}removeWatchDir(t){this.db.prepare("DELETE FROM watch_dirs WHERE path = ?").run(t)}scanForProjects(t,e=!0){O(t);const s=[],r=(n,i=0)=>{if(!(i>3&&e))try{const a=D(n,{withFileTypes:!0});for(const o of a){if(!o.isDirectory()||o.name.startsWith(".")&&o.name!==".git")continue;const l=d(n,o.name),c=d(l,".git");if(u(c)){const p=this.registerProjectFromPath(l);p&&s.push(p)}else e&&i<3&&r(l,i+1)}}catch{}};return r(t),this.db.prepare(`
6
+ `).get(t,e?1:0)}getWatchDirs(){return this.db.prepare("SELECT * FROM watch_dirs").all()}removeWatchDir(t){this.db.prepare("DELETE FROM watch_dirs WHERE path = ?").run(t)}scanForProjects(t,e=!0){N(t);const s=[],r=(n,i=0)=>{if(!(i>3&&e))try{const a=D(n,{withFileTypes:!0});for(const o of a){if(!o.isDirectory()||o.name.startsWith(".")&&o.name!==".git")continue;const c=d(n,o.name),l=d(c,".git");if(u(l)){const p=this.registerProjectFromPath(c);p&&s.push(p)}else e&&i<3&&r(c,i+1)}}catch{}};return r(t),this.db.prepare(`
7
7
  UPDATE watch_dirs SET last_scan = datetime('now') WHERE path = ?
8
- `).run(t),s}scanAllWatchDirs(){const t=this.getWatchDirs(),e=[];for(const s of t){const r=this.scanForProjects(s.path,!!s.recursive);e.push(...r)}return e}registerProjectFromPath(t){try{const e=v(M(t));if(!u(e)||!y(e).isDirectory())return null;const s=A(e);let r,n,i,a;try{const o=f("git",["config","--get","remote.origin.url"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});o.status===0&&(r=o.stdout.trim());const l=f("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});l.status===0&&(n=l.stdout.trim());const c=f("git",["log","-1","--format=%h %s"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});c.status===0&&(i=c.stdout.trim())}catch{}return u(d(e,"package.json"))?(a="Node.js",u(d(e,"next.config.js"))||u(d(e,"next.config.ts"))||u(d(e,"next.config.mjs"))?a="Next.js":u(d(e,"vite.config.ts"))&&(a="Vite")):u(d(e,"requirements.txt"))||u(d(e,"pyproject.toml"))?a="Python":u(d(e,"composer.json"))?a="PHP":u(d(e,"Cargo.toml"))?a="Rust":u(d(e,"go.mod"))&&(a="Go"),this.registerProject(s,e,r,a,i,n)}catch{return null}}registerProject(t,e,s,r,n,i){return this.db.prepare(`
8
+ `).run(t),s}scanAllWatchDirs(){const t=this.getWatchDirs(),e=[];for(const s of t){const r=this.scanForProjects(s.path,!!s.recursive);e.push(...r)}return e}registerProjectFromPath(t){try{const e=w(M(t));if(!u(e)||!L(e).isDirectory())return null;const s=A(e);let r,n,i,a;try{const o=R("git",["config","--get","remote.origin.url"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});o.status===0&&(r=o.stdout.trim());const c=R("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});c.status===0&&(n=c.stdout.trim());const l=R("git",["log","-1","--format=%h %s"],{cwd:e,encoding:"utf-8",timeout:5e3,shell:!1});l.status===0&&(i=l.stdout.trim())}catch{}return u(d(e,"package.json"))?(a="Node.js",u(d(e,"next.config.js"))||u(d(e,"next.config.ts"))||u(d(e,"next.config.mjs"))?a="Next.js":u(d(e,"vite.config.ts"))&&(a="Vite")):u(d(e,"requirements.txt"))||u(d(e,"pyproject.toml"))?a="Python":u(d(e,"composer.json"))?a="PHP":u(d(e,"Cargo.toml"))?a="Rust":u(d(e,"go.mod"))&&(a="Go"),this.registerProject(s,e,r,a,i,n)}catch{return null}}registerProject(t,e,s,r,n,i){return this.db.prepare(`
9
9
  INSERT INTO projects (name, path, repo, stack, last_commit, branch)
10
10
  VALUES (?, ?, ?, ?, ?, ?)
11
11
  ON CONFLICT(path) DO UPDATE SET
@@ -23,20 +23,47 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
23
23
  WHERE name LIKE ? OR stack LIKE ? OR repo LIKE ?
24
24
  ORDER BY updated_at DESC
25
25
  LIMIT 50
26
- `).all(e,e,e)}createSession(t,e){const s=this.estimateTokens((e.objectives||"")+(e.completed||"")+(e.issues||"")+(e.notes||"")),r=N(),n=this.resilience.withRetrySync(()=>this.db.prepare(`
26
+ `).all(e,e,e)}createSession(t,e){const s=this.estimateTokens((e.objectives||"")+(e.completed||"")+(e.issues||"")+(e.notes||"")),r=C(),n=this.resilience.withRetrySync(()=>this.db.prepare(`
27
27
  INSERT INTO sessions (project_id, date, objectives, completed, issues, commits, files_changed, notes, tokens_estimate, agent_id, run_id)
28
28
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
29
29
  RETURNING *
30
- `).get(t,e.date||new Date().toISOString().split("T")[0],e.objectives||"",e.completed||"",e.issues||"",e.commits||"",e.files_changed||"",e.notes||"",s,r.agent_id,r.run_id),"createSession");if(!n.success)throw n.error||new Error("Failed to create session");return h(this.db,{projectId:t,kind:"session_update",refTable:"sessions",refId:n.data.id}),n.data}updateSession(t,e){const s=[],r=[],n=new Set(["objectives","completed","issues","commits","files_changed","notes","summary","is_archived"]);for(const[a,o]of Object.entries(e))n.has(a)&&(s.push(`${a} = ?`),r.push(o));if(s.length===0)return this.getSession(t);if(e.objectives||e.completed||e.issues||e.notes){const a=this.getSession(t);if(a){const o=this.estimateTokens((e.objectives||a.objectives)+(e.completed||a.completed)+(e.issues||a.issues)+(e.notes||a.notes));s.push("tokens_estimate = ?"),r.push(o)}}r.push(t);const i=this.resilience.withRetrySync(()=>this.db.prepare(`
30
+ `).get(t,e.date||new Date().toISOString().split("T")[0],e.objectives||"",e.completed||"",e.issues||"",e.commits||"",e.files_changed||"",e.notes||"",s,r.agent_id,r.run_id),"createSession");if(!n.success)throw n.error||new Error("Failed to create session");return m(this.db,{projectId:t,kind:"session_update",refTable:"sessions",refId:n.data.id}),n.data}updateSession(t,e){const s=[],r=[],n=new Set(["objectives","completed","issues","commits","files_changed","notes","summary","is_archived"]);for(const[a,o]of Object.entries(e))n.has(a)&&(s.push(`${a} = ?`),r.push(o));if(s.length===0)return this.getSession(t);if(e.objectives||e.completed||e.issues||e.notes){const a=this.getSession(t);if(a){const o=this.estimateTokens((e.objectives||a.objectives)+(e.completed||a.completed)+(e.issues||a.issues)+(e.notes||a.notes));s.push("tokens_estimate = ?"),r.push(o)}}r.push(t);const i=this.resilience.withRetrySync(()=>this.db.prepare(`
31
31
  UPDATE sessions SET ${s.join(", ")} WHERE id = ? RETURNING *
32
- `).get(...r),"updateSession");if(!i.success)throw i.error||new Error("Failed to update session");return h(this.db,{projectId:i.data.project_id,kind:"session_update",refTable:"sessions",refId:t}),i.data}getSession(t){return this.db.prepare("SELECT * FROM sessions WHERE id = ?").get(t)}getRecentSessions(t,e=5){return this.db.prepare(`
32
+ `).get(...r),"updateSession");if(!i.success)throw i.error||new Error("Failed to update session");return m(this.db,{projectId:i.data.project_id,kind:"session_update",refTable:"sessions",refId:t}),i.data}getSession(t){return this.db.prepare("SELECT * FROM sessions WHERE id = ?").get(t)}updateContinuity(t,e,s){const r=e.trim();if(!r)return;const n=12e3,i=this.db.prepare("SELECT thread, turn_count FROM project_continuity WHERE project_id = ?").get(t),a=new Date().toISOString(),o=`[${a}${s?" \xB7 "+s:""}] ${r}`;let c=i?.thread?i.thread+`
33
+
34
+ `+o:o;c.length>n&&(c=`[\u2026earlier continuity trimmed \u2014 gist retained below\u2026]
35
+
36
+ `+c.slice(c.length-n));const l=(i?.turn_count??0)+1;this.resilience.withRetrySync(()=>(this.db.prepare(`
37
+ INSERT INTO project_continuity (project_id, thread, updated_at, updated_by, turn_count)
38
+ VALUES (?, ?, ?, ?, ?)
39
+ ON CONFLICT(project_id) DO UPDATE SET
40
+ thread = excluded.thread, updated_at = excluded.updated_at,
41
+ updated_by = excluded.updated_by, turn_count = excluded.turn_count
42
+ `).run(t,c,a,s??null,l),!0),"updateContinuity")}getContinuity(t){return this.db.prepare("SELECT thread, updated_at, updated_by, turn_count FROM project_continuity WHERE project_id = ?").get(t)??null}recordRouting(t){const e=t.projectId==null?-1:t.projectId,s=(t.taskType??"").trim(),r=(t.modelId??"").trim();if(!s)throw new Error("recordRouting: taskType is required");if(!r)throw new Error("recordRouting: modelId is required");let n=null;if(Array.isArray(t.toolNames)){const o=[...new Set(t.toolNames.map(c=>String(c).trim()).filter(Boolean))];n=o.length?o.join(","):null}else if(typeof t.toolNames=="string"){const o=[...new Set(t.toolNames.split(",").map(c=>c.trim()).filter(Boolean))];n=o.length?o.join(","):null}const i=t.latencyMs==null||!Number.isFinite(t.latencyMs)?null:Math.max(0,Math.round(t.latencyMs));let a=-1;return this.resilience.withRetrySync(()=>{const o=this.db.prepare(`
43
+ INSERT INTO routing_memory (project_id, task_type, model_id, tool_names, success, latency_ms)
44
+ VALUES (?, ?, ?, ?, ?, ?)
45
+ `).run(e,s,r,n,t.success?1:0,i);return a=Number(o.lastInsertRowid),!0},"recordRouting"),a}recallRouting(t,e={}){const s=(t??"").trim();if(!s)return[];const r=Math.min(100,Math.max(1,e.limit??10)),n=["task_type = ?"],i=[s];e.projectId!=null&&(n.push("(project_id = ? OR project_id = -1)"),i.push(e.projectId)),e.sinceDays!=null&&Number.isFinite(e.sinceDays)&&e.sinceDays>0&&(n.push("ts >= datetime('now', ?)"),i.push(`-${Math.round(e.sinceDays)} days`)),i.push(r);try{return this.db.prepare(`
46
+ SELECT
47
+ model_id,
48
+ COALESCE(tool_names, '') AS tool_names,
49
+ COUNT(*) AS runs,
50
+ SUM(success) AS successes,
51
+ COUNT(*) - SUM(success) AS failures,
52
+ AVG(CASE WHEN latency_ms IS NOT NULL THEN latency_ms END) AS avg_latency_ms,
53
+ MAX(ts) AS last_ts
54
+ FROM routing_memory
55
+ WHERE ${n.join(" AND ")}
56
+ GROUP BY model_id, COALESCE(tool_names, '')
57
+ ORDER BY (CAST(SUM(success) AS REAL) / COUNT(*)) DESC, runs DESC, last_ts DESC
58
+ LIMIT ?
59
+ `).all(...i).map(o=>({model_id:o.model_id,tool_names:o.tool_names,runs:o.runs,successes:o.successes,failures:o.failures,success_rate:o.runs>0?o.successes/o.runs:0,avg_latency_ms:o.avg_latency_ms==null?null:Math.round(o.avg_latency_ms),last_ts:o.last_ts}))}catch{return[]}}getRecentSessions(t,e=5){return this.db.prepare(`
33
60
  SELECT * FROM sessions
34
61
  WHERE project_id = ? AND is_archived = 0
35
62
  ORDER BY date DESC, id DESC
36
63
  LIMIT ?
37
64
  `).all(t,e)}getTodaySession(t){const e=new Date().toISOString().split("T")[0];return this.db.prepare(`
38
65
  SELECT * FROM sessions WHERE project_id = ? AND date = ?
39
- `).get(t,e)}searchSessions(t,e){const s=_(t);if(!s)return[];try{return e?this.db.prepare(`
66
+ `).get(t,e)}searchSessions(t,e){const s=h(t);if(!s)return[];try{return e?this.db.prepare(`
40
67
  SELECT s.* FROM sessions s
41
68
  JOIN sessions_fts fts ON s.id = fts.rowid
42
69
  WHERE sessions_fts MATCH ? AND s.project_id = ?
@@ -62,13 +89,13 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
62
89
  `).run(t,t,e).changes}getSessionTokenUsage(t){return this.db.prepare(`
63
90
  SELECT COALESCE(SUM(tokens_estimate), 0) as total
64
91
  FROM sessions WHERE project_id = ? AND is_archived = 0
65
- `).get(t).total}addQuest(t,e,s,r="medium",n){const i=N(),a=this.db.prepare(`
92
+ `).get(t).total}addQuest(t,e,s,r="medium",n){const i=C(),a=this.db.prepare(`
66
93
  INSERT INTO quests (project_id, title, description, priority, tags, agent_id, run_id)
67
94
  VALUES (?, ?, ?, ?, ?, ?, ?)
68
95
  RETURNING *
69
- `).get(t,e,s||"",r,n||null,i.agent_id,i.run_id);return h(this.db,{projectId:t,kind:"quest",refTable:"quests",refId:a.id}),a}updateQuest(t,e){const s=e==="completed"?new Date().toISOString():null,r=this.db.prepare(`
96
+ `).get(t,e,s||"",r,n||null,i.agent_id,i.run_id);return m(this.db,{projectId:t,kind:"quest",refTable:"quests",refId:a.id}),a}updateQuest(t,e){const s=e==="completed"?new Date().toISOString():null,r=this.db.prepare(`
70
97
  UPDATE quests SET status = ?, completed_at = ? WHERE id = ? RETURNING *
71
- `).get(e,s,t);return r&&h(this.db,{projectId:r.project_id,kind:"quest",refTable:"quests",refId:t}),r}getPendingQuests(t){return this.db.prepare(`
98
+ `).get(e,s,t);return r&&m(this.db,{projectId:r.project_id,kind:"quest",refTable:"quests",refId:t}),r}getPendingQuests(t){return this.db.prepare(`
72
99
  SELECT * FROM quests
73
100
  WHERE project_id = ? AND status IN ('pending', 'in_progress')
74
101
  ORDER BY
@@ -91,7 +118,7 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
91
118
  WHEN 'low' THEN 4
92
119
  END,
93
120
  q.created_at ASC
94
- `).all()}searchQuests(t){const e=_(t);if(!e)return[];try{return this.db.prepare(`
121
+ `).all()}searchQuests(t){const e=h(t);if(!e)return[];try{return this.db.prepare(`
95
122
  SELECT q.* FROM quests q
96
123
  JOIN quests_fts fts ON q.id = fts.rowid
97
124
  WHERE quests_fts MATCH ?
@@ -112,7 +139,7 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
112
139
  SELECT value FROM context WHERE project_id = ? AND key = ?
113
140
  `).get(t,e)?.value}getAllContext(t){const e=this.db.prepare(`
114
141
  SELECT key, value FROM context WHERE project_id = ?
115
- `).all(t),s={};for(const r of e)s[r.key]=r.value;return s}liveMemoryEnabled(){return x()}eventsSince(t,e=0,s=100){return W(this.db,t,e,s)}subscribeEvents(t,e=20){return U(this.db,t,e)}publishEvent(t){h(this.db,t)}pruneEvents(t={}){return B(this.db,t)}ingestRemoteEvent(t,e){return P(this.db,t,e)}eventsForPush(t,e=0,s=200){return q(this.db,t,e,s)}getMeta(t){return Y(this.db,t)}setMeta(t,e){$(this.db,t,e)}setGlobalContext(t,e){this.db.prepare(`
142
+ `).all(t),s={};for(const r of e)s[r.key]=r.value;return s}liveMemoryEnabled(){return x()}eventsSince(t,e=0,s=100){return W(this.db,t,e,s)}subscribeEvents(t,e=20){return U(this.db,t,e)}publishEvent(t){m(this.db,t)}pruneEvents(t={}){return q(this.db,t)}ingestRemoteEvent(t,e){return P(this.db,t,e)}eventsForPush(t,e=0,s=200){return B(this.db,t,e,s)}getMeta(t){return Y(this.db,t)}setMeta(t,e){$(this.db,t,e)}setGlobalContext(t,e){this.db.prepare(`
116
143
  INSERT INTO global_context (key, value)
117
144
  VALUES (?, ?)
118
145
  ON CONFLICT(key) DO UPDATE SET
@@ -120,7 +147,7 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
120
147
  updated_at = datetime('now')
121
148
  `).run(t,e)}getGlobalContext(t){return this.db.prepare(`
122
149
  SELECT value FROM global_context WHERE key = ?
123
- `).get(t)?.value}getAllGlobalContext(){const t=this.db.prepare("SELECT key, value FROM global_context").all(),e={};for(const s of t)e[s.key]=s.value;return e}registerSkill(t,e,s,r,n,i,a,o){const l=o?.tier??"atomic",c=JSON.stringify(Array.isArray(o?.governs)?o.governs:[]),p=JSON.stringify(Array.isArray(o?.composes)?o.composes:[]),g=C({skillPath:s,name:t}),m=g?.content??null,S=g?.sha256??null,R=g?new Date().toISOString():null,E=this.resilience.withRetrySync(()=>this.db.prepare(`
150
+ `).get(t)?.value}getAllGlobalContext(){const t=this.db.prepare("SELECT key, value FROM global_context").all(),e={};for(const s of t)e[s.key]=s.value;return e}registerSkill(t,e,s,r,n,i,a,o){const c=o?.tier??"atomic",l=JSON.stringify(Array.isArray(o?.governs)?o.governs:[]),p=JSON.stringify(Array.isArray(o?.composes)?o.composes:[]),_=y({skillPath:s,name:t}),g=_?.content??null,S=_?.sha256??null,f=_?new Date().toISOString():null,E=this.resilience.withRetrySync(()=>this.db.prepare(`
124
151
  INSERT INTO skills (name, description, skill_path, category, author, version, tags, tier, governs, composes, content, content_sha256, content_updated_at, is_active, usage_count)
125
152
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, 0)
126
153
  ON CONFLICT(name) DO UPDATE SET
@@ -142,13 +169,13 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
142
169
  updated_at = datetime('now'),
143
170
  is_active = 1
144
171
  RETURNING *
145
- `).get(t,e,s,r||null,n||null,i||null,a||null,l,c,p,m,S,R),"registerSkill");if(!E.success)throw E.error||new Error("Failed to register skill");return E.data}getSkill(t){const e=this.db.prepare("SELECT * FROM skills WHERE name = ?").get(t);return e&&this.db.prepare("UPDATE skills SET last_used = datetime('now'), usage_count = usage_count + 1 WHERE id = ?").run(e.id),e}backfillSkillContent(t={}){const e=t.read??C,s=this.db.prepare("SELECT id, name, skill_path, content_sha256 FROM skills").all();let r=0,n=0,i=0;const a=this.db.prepare("UPDATE skills SET content = ?, content_sha256 = ?, content_updated_at = ?, updated_at = datetime('now') WHERE id = ?");return this.db.transaction(()=>{for(const l of s){const c=e({skillPath:l.skill_path,name:l.name,skillsDir:t.skillsDir});if(!c){i++;continue}if(l.content_sha256&&l.content_sha256===c.sha256){n++;continue}a.run(c.content,c.sha256,new Date().toISOString(),l.id),r++}})(),{total:s.length,filled:r,unchanged:n,missing:i}}exportSkillContent(t,e={}){const s=e.includeInactive?"":" WHERE is_active = 1",r=this.db.prepare(`SELECT name, content FROM skills${s} ORDER BY name`).all();let n=0,i=0,a=0;const o=new Set;for(const l of r){if(l.content==null){i++;continue}let c=G(l.name);if(!c){i++;continue}o.has(c)&&(c=`${c}-${V(l.name).slice(0,8)}`,a++),o.add(c);const p=d(t,c);b(p,{recursive:!0}),L(d(p,"SKILL.md"),l.content,"utf-8"),n++}return{total:r.length,written:n,skipped_no_content:i,collisions:a}}setSkillVisibility(t,e){return this.db.prepare("UPDATE skills SET cross_project_visibility = ?, updated_at = datetime('now') WHERE name = ? RETURNING *").get(e,t)}setAllSkillsVisibility(t,e={}){const s=[],r=[t];e.includeInactive||s.push("is_active = 1"),e.tier&&(s.push("tier = ?"),r.push(e.tier));const n=s.length?" WHERE "+s.join(" AND "):"";return this.db.prepare(`UPDATE skills SET cross_project_visibility = ?, updated_at = datetime('now')${n}`).run(...r).changes}listSkills(t,e,s,r){let n="SELECT * FROM skills WHERE 1=1";const i=[];if(t!==void 0&&(n+=" AND is_active = ?",i.push(t?1:0)),e&&(n+=" AND category = ?",i.push(e)),r&&(n+=" AND tier = ?",i.push(r)),s){const a=_(s);a&&(n+=" AND id IN (SELECT rowid FROM skills_fts WHERE skills_fts MATCH ?)",i.push(a))}return n+=" ORDER BY updated_at DESC",this.db.prepare(n).all(...i)}searchSkills(t,e=20,s){const r=_(t);if(!r)return[];const n=s?" AND s.tier = ?":"",i=this.db.prepare(`
172
+ `).get(t,e,s,r||null,n||null,i||null,a||null,c,l,p,g,S,f),"registerSkill");if(!E.success)throw E.error||new Error("Failed to register skill");return E.data}getSkill(t){const e=this.db.prepare("SELECT * FROM skills WHERE name = ?").get(t);return e&&this.db.prepare("UPDATE skills SET last_used = datetime('now'), usage_count = usage_count + 1 WHERE id = ?").run(e.id),e}backfillSkillContent(t={}){const e=t.read??y,s=this.db.prepare("SELECT id, name, skill_path, content_sha256 FROM skills").all();let r=0,n=0,i=0;const a=this.db.prepare("UPDATE skills SET content = ?, content_sha256 = ?, content_updated_at = ?, updated_at = datetime('now') WHERE id = ?");return this.db.transaction(()=>{for(const c of s){const l=e({skillPath:c.skill_path,name:c.name,skillsDir:t.skillsDir});if(!l){i++;continue}if(c.content_sha256&&c.content_sha256===l.sha256){n++;continue}a.run(l.content,l.sha256,new Date().toISOString(),c.id),r++}})(),{total:s.length,filled:r,unchanged:n,missing:i}}exportSkillContent(t,e={}){const s=e.includeInactive?"":" WHERE is_active = 1",r=this.db.prepare(`SELECT name, content FROM skills${s} ORDER BY name`).all();let n=0,i=0,a=0;const o=new Set;for(const c of r){if(c.content==null){i++;continue}let l=G(c.name);if(!l){i++;continue}o.has(l)&&(l=`${l}-${V(c.name).slice(0,8)}`,a++),o.add(l);const p=d(t,l);b(p,{recursive:!0}),I(d(p,"SKILL.md"),c.content,"utf-8"),n++}return{total:r.length,written:n,skipped_no_content:i,collisions:a}}setSkillVisibility(t,e){return this.db.prepare("UPDATE skills SET cross_project_visibility = ?, updated_at = datetime('now') WHERE name = ? RETURNING *").get(e,t)}setAllSkillsVisibility(t,e={}){const s=[],r=[t];e.includeInactive||s.push("is_active = 1"),e.tier&&(s.push("tier = ?"),r.push(e.tier));const n=s.length?" WHERE "+s.join(" AND "):"";return this.db.prepare(`UPDATE skills SET cross_project_visibility = ?, updated_at = datetime('now')${n}`).run(...r).changes}listSkills(t,e,s,r){let n="SELECT * FROM skills WHERE 1=1";const i=[];if(t!==void 0&&(n+=" AND is_active = ?",i.push(t?1:0)),e&&(n+=" AND category = ?",i.push(e)),r&&(n+=" AND tier = ?",i.push(r)),s){const a=h(s);a&&(n+=" AND id IN (SELECT rowid FROM skills_fts WHERE skills_fts MATCH ?)",i.push(a))}return n+=" ORDER BY updated_at DESC",this.db.prepare(n).all(...i)}searchSkills(t,e=20,s){const r=h(t);if(!r)return[];const n=s?" AND s.tier = ?":"",i=this.db.prepare(`
146
173
  SELECT s.* FROM skills s
147
174
  JOIN skills_fts ON s.id = skills_fts.rowid
148
175
  WHERE skills_fts MATCH ?${n}
149
176
  ORDER BY rank
150
177
  LIMIT ?
151
- `);return s?i.all(r,s,e):i.all(r,e)}getSkillGraph(t){const e=this.db.prepare("SELECT * FROM skills").all(),s=new Map;for(const o of e)s.set(o.name,o);const r=o=>{if(!o)return[];try{const l=JSON.parse(o);return Array.isArray(l)?l.filter(c=>typeof c=="string"):[]}catch{return[]}},n=(o,l)=>{const c=s.get(o);if(!c)return null;const p=r(c.governs),g=r(c.composes),m={name:c.name,tier:c.tier??"atomic",description:c.description,governs:p,composes:g,children:[]},S=[];if(!l.has(o)){const R=new Set(l).add(o);for(const E of p){const T=n(E,R);T?m.children.push(T):S.push(E)}}return S.length&&(m.missing=S),m};if(t){const o=n(t,new Set);return o?[o]:[]}const i=e.filter(o=>(o.tier??"atomic")==="god").map(o=>o.name).sort(),a=[];for(const o of i){const l=n(o,new Set);l&&a.push(l)}return a}updateSkill(t,e){const s=[],r=[];return e.description!==void 0&&(s.push("description = ?"),r.push(e.description)),e.skill_path!==void 0&&(s.push("skill_path = ?"),r.push(e.skill_path)),e.category!==void 0&&(s.push("category = ?"),r.push(e.category)),e.is_active!==void 0&&(s.push("is_active = ?"),r.push(e.is_active?1:0)),e.tags!==void 0&&(s.push("tags = ?"),r.push(e.tags)),e.version!==void 0&&(s.push("version = ?"),r.push(e.version)),s.length===0?this.getSkill(t):(s.push("updated_at = datetime('now')"),r.push(t),this.db.prepare(`
178
+ `);return s?i.all(r,s,e):i.all(r,e)}getSkillGraph(t){const e=this.db.prepare("SELECT * FROM skills").all(),s=new Map;for(const o of e)s.set(o.name,o);const r=o=>{if(!o)return[];try{const c=JSON.parse(o);return Array.isArray(c)?c.filter(l=>typeof l=="string"):[]}catch{return[]}},n=(o,c)=>{const l=s.get(o);if(!l)return null;const p=r(l.governs),_=r(l.composes),g={name:l.name,tier:l.tier??"atomic",description:l.description,governs:p,composes:_,children:[]},S=[];if(!c.has(o)){const f=new Set(c).add(o);for(const E of p){const T=n(E,f);T?g.children.push(T):S.push(E)}}return S.length&&(g.missing=S),g};if(t){const o=n(t,new Set);return o?[o]:[]}const i=e.filter(o=>(o.tier??"atomic")==="god").map(o=>o.name).sort(),a=[];for(const o of i){const c=n(o,new Set);c&&a.push(c)}return a}updateSkill(t,e){const s=[],r=[];return e.description!==void 0&&(s.push("description = ?"),r.push(e.description)),e.skill_path!==void 0&&(s.push("skill_path = ?"),r.push(e.skill_path)),e.category!==void 0&&(s.push("category = ?"),r.push(e.category)),e.is_active!==void 0&&(s.push("is_active = ?"),r.push(e.is_active?1:0)),e.tags!==void 0&&(s.push("tags = ?"),r.push(e.tags)),e.version!==void 0&&(s.push("version = ?"),r.push(e.version)),s.length===0?this.getSkill(t):(s.push("updated_at = datetime('now')"),r.push(t),this.db.prepare(`
152
179
  UPDATE skills SET ${s.join(", ")} WHERE name = ? RETURNING *
153
180
  `).get(...r))}deleteSkill(t){return this.db.prepare("DELETE FROM skills WHERE name = ?").run(t).changes>0}deactivateSkill(t){return this.updateSkill(t,{is_active:!1})}activateSkill(t){return this.updateSkill(t,{is_active:!0})}getSkillStats(){const t=this.db.prepare("SELECT COUNT(*) as count FROM skills").get().count,e=this.db.prepare("SELECT COUNT(*) as count FROM skills WHERE is_active = 1").get().count,s=this.db.prepare(`
154
181
  SELECT category, COUNT(*) as count FROM skills WHERE category IS NOT NULL GROUP BY category
@@ -166,14 +193,14 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
166
193
  WHERE project_id = ?
167
194
  AND (tags = ? OR tags LIKE ? OR tags LIKE ? OR tags LIKE ?)
168
195
  LIMIT 1
169
- `).get(t,e,`${e},%`,`%,${e}`,`%,${e},%`)}updateQuestFields(t,e){const s=[],r=[];if(e.title!==void 0&&(s.push("title = ?"),r.push(e.title)),e.description!==void 0&&(s.push("description = ?"),r.push(e.description)),e.tags!==void 0&&(s.push("tags = ?"),r.push(e.tags)),s.length===0)return this.db.prepare("SELECT * FROM quests WHERE id = ?").get(t);r.push(t);const n=this.db.prepare(`UPDATE quests SET ${s.join(", ")} WHERE id = ? RETURNING *`).get(...r);return n&&h(this.db,{projectId:n.project_id,kind:"quest",refTable:"quests",refId:t}),n}insertData(t,e,s,r,n){const i=this.resilience.withRetrySync(()=>this.db.prepare(`
196
+ `).get(t,e,`${e},%`,`%,${e}`,`%,${e},%`)}updateQuestFields(t,e){const s=[],r=[];if(e.title!==void 0&&(s.push("title = ?"),r.push(e.title)),e.description!==void 0&&(s.push("description = ?"),r.push(e.description)),e.tags!==void 0&&(s.push("tags = ?"),r.push(e.tags)),s.length===0)return this.db.prepare("SELECT * FROM quests WHERE id = ?").get(t);r.push(t);const n=this.db.prepare(`UPDATE quests SET ${s.join(", ")} WHERE id = ? RETURNING *`).get(...r);return n&&m(this.db,{projectId:n.project_id,kind:"quest",refTable:"quests",refId:t}),n}insertData(t,e,s,r,n){const i=this.resilience.withRetrySync(()=>this.db.prepare(`
170
197
  INSERT INTO data_lake (project_id, category, key, value, metadata)
171
198
  VALUES (?, ?, ?, ?, ?)
172
199
  RETURNING *
173
200
  `).get(t,e,s,r,n?JSON.stringify(n):null),"insertData");if(!i.success)throw i.error||new Error("Insert data failed");return i.data}batchWrites(t,e){return this.db.transaction(r=>r.map(n=>e(n)))(t)}insertDataBatch(t){const e=this.resilience.generateOperationId("batch_insert"),s=this.BATCH_SIZE;let r=0;this.resilience.createCheckpoint(e,"batch_insert","started",{totalItems:t.length,batchSize:s});const n=this.db.prepare(`
174
201
  INSERT INTO data_lake (project_id, category, key, value, metadata)
175
202
  VALUES (?, ?, ?, ?, ?)
176
- `);try{for(let i=0;i<t.length;i+=s){const a=t.slice(i,i+s),o=Math.floor(i/s)+1;this.resilience.updateCheckpoint(e,`batch_${o}`,{processed:i,currentBatch:o});const l=this.resilience.withRetrySync(()=>this.batchWrites(a,c=>(n.run(c.projectId,c.category,c.key,c.value,c.metadata?JSON.stringify(c.metadata):null),1)).length,`batch_insert_${o}`,{maxAttempts:3});if(!l.success){this.logger.error("Batch insert failed",{batch:o,processed:r,error:l.error?.message}),this.resilience.updateCheckpoint(e,"partial_failure",{inserted:r,failedAt:i});const c=l.error??new Error(`Batch insert failed at chunk ${o}`);throw c.inserted=r,c}r+=l.data}return this.resilience.completeCheckpoint(e),r}catch(i){throw i!==null&&typeof i=="object"&&"inserted"in i||(this.logger.error("Batch insert exception",{inserted:r,error:i.message}),this.resilience.updateCheckpoint(e,"exception",{inserted:r,error:i.message}),i!==null&&typeof i=="object"&&(i.inserted=r)),i}}queryData(t,e,s=100,r=0){return e?this.db.prepare(`
203
+ `);try{for(let i=0;i<t.length;i+=s){const a=t.slice(i,i+s),o=Math.floor(i/s)+1;this.resilience.updateCheckpoint(e,`batch_${o}`,{processed:i,currentBatch:o});const c=this.resilience.withRetrySync(()=>this.batchWrites(a,l=>(n.run(l.projectId,l.category,l.key,l.value,l.metadata?JSON.stringify(l.metadata):null),1)).length,`batch_insert_${o}`,{maxAttempts:3});if(!c.success){this.logger.error("Batch insert failed",{batch:o,processed:r,error:c.error?.message}),this.resilience.updateCheckpoint(e,"partial_failure",{inserted:r,failedAt:i});const l=c.error??new Error(`Batch insert failed at chunk ${o}`);throw l.inserted=r,l}r+=c.data}return this.resilience.completeCheckpoint(e),r}catch(i){throw i!==null&&typeof i=="object"&&"inserted"in i||(this.logger.error("Batch insert exception",{inserted:r,error:i.message}),this.resilience.updateCheckpoint(e,"exception",{inserted:r,error:i.message}),i!==null&&typeof i=="object"&&(i.inserted=r)),i}}queryData(t,e,s=100,r=0){return e?this.db.prepare(`
177
204
  SELECT * FROM data_lake
178
205
  WHERE project_id = ? AND category = ?
179
206
  ORDER BY created_at DESC
@@ -183,7 +210,7 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
183
210
  WHERE project_id = ?
184
211
  ORDER BY created_at DESC
185
212
  LIMIT ? OFFSET ?
186
- `).all(t,s,r)}searchData(t,e){const s=_(t);if(!s)return[];try{return e?this.db.prepare(`
213
+ `).all(t,s,r)}searchData(t,e){const s=h(t);if(!s)return[];try{return e?this.db.prepare(`
187
214
  SELECT d.* FROM data_lake d
188
215
  JOIN data_lake_fts fts ON d.id = fts.rowid
189
216
  WHERE data_lake_fts MATCH ? AND d.project_id = ?
@@ -195,7 +222,21 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
195
222
  WHERE data_lake_fts MATCH ?
196
223
  ORDER BY bm25(data_lake_fts), d.created_at DESC
197
224
  LIMIT 100
198
- `).all(s)}catch{return[]}}getDataCategories(t){return this.db.prepare(`
225
+ `).all(s)}catch{return[]}}searchArtifacts(t,e){const s=h(t);if(!s)return[];try{return e?this.db.prepare(`
226
+ SELECT a.* FROM memory_artifacts a
227
+ JOIN memory_artifacts_fts fts ON a.id = fts.rowid
228
+ WHERE memory_artifacts_fts MATCH ? AND a.project_id = ?
229
+ AND a.needs_review = 0 AND a.supersedes_id IS NULL
230
+ ORDER BY bm25(memory_artifacts_fts), a.confidence DESC
231
+ LIMIT 100
232
+ `).all(s,e):this.db.prepare(`
233
+ SELECT a.* FROM memory_artifacts a
234
+ JOIN memory_artifacts_fts fts ON a.id = fts.rowid
235
+ WHERE memory_artifacts_fts MATCH ?
236
+ AND a.needs_review = 0 AND a.supersedes_id IS NULL
237
+ ORDER BY bm25(memory_artifacts_fts), a.confidence DESC
238
+ LIMIT 100
239
+ `).all(s)}catch{return[]}}getDataCategories(t){return this.db.prepare(`
199
240
  SELECT category, COUNT(*) as count
200
241
  FROM data_lake
201
242
  WHERE project_id = ?
@@ -205,4 +246,4 @@ import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync
205
246
  DELETE FROM data_lake WHERE project_id = ? AND category = ?
206
247
  `).run(t,e).changes}*streamSessions(t){const e=this.db.prepare(`
207
248
  SELECT * FROM sessions WHERE project_id = ? ORDER BY date DESC
208
- `);for(const s of e.iterate(t))yield s}*streamData(t,e){const s=e?this.db.prepare("SELECT * FROM data_lake WHERE project_id = ? AND category = ?"):this.db.prepare("SELECT * FROM data_lake WHERE project_id = ?"),r=e?[t,e]:[t];for(const n of s.iterate(...r))yield n}getStats(){const t=this.db.prepare("SELECT COUNT(*) as count FROM projects").get(),e=this.db.prepare("SELECT COUNT(*) as count FROM sessions").get(),s=this.db.prepare("SELECT COUNT(*) as count FROM quests").get(),r=this.db.prepare("SELECT COUNT(*) as count FROM data_lake").get(),n=this.db.prepare("SELECT COALESCE(SUM(tokens_estimate), 0) as total FROM sessions WHERE is_archived = 0").get(),i=this.db.pragma("page_count",{simple:!0}),a=this.db.pragma("page_size",{simple:!0}),o=i*a/(1024*1024);return{projects:t.count,sessions:e.count,quests:s.count,dataPoints:r.count,totalTokens:n.total,dbSize:`${o.toFixed(2)} MB`}}getProjectStats(t){const e=this.db.prepare("SELECT COUNT(*) as count FROM sessions WHERE project_id = ?").get(t),s=this.db.prepare("SELECT COUNT(*) as count FROM quests WHERE project_id = ? AND status IN ('pending', 'in_progress')").get(t),r=this.db.prepare("SELECT COUNT(*) as count FROM quests WHERE project_id = ? AND status = 'completed'").get(t),n=this.db.prepare("SELECT COUNT(*) as count FROM data_lake WHERE project_id = ?").get(t),i=this.db.prepare("SELECT COALESCE(SUM(tokens_estimate), 0) as total FROM sessions WHERE project_id = ? AND is_archived = 0").get(t);return{sessions:e.count,quests:{pending:s.count,completed:r.count},dataPoints:n.count,tokens:i.total}}estimateTokens(t){return Math.ceil(t.length/4)}vacuum(){this.db.exec("VACUUM")}checkpoint(){this.db.pragma("wal_checkpoint(TRUNCATE)")}getResilienceStatus(){const t=this.resilience.getCircuitStatus(),e=this.resilience.getIncompleteOperations();return{circuitState:t.state,failures:t.failures,incompleteOps:e.length}}resetCircuitBreaker(){this.resilience.resetCircuit()}close(){try{this.checkpoint(),this.logger.info("Database checkpoint completed")}catch(t){this.logger.error("Checkpoint failed during close",{error:t.message})}try{this.db.close(),this.logger.info("Database closed successfully")}catch(t){this.logger.error("Database close failed",{error:t.message})}}checkIntegrity(){const t=[];try{const e=this.db.pragma("integrity_check",{simple:!0});e!=="ok"&&t.push(`Integrity check failed: ${e}`)}catch(e){t.push(`Integrity check error: ${e.message}`)}try{const e=this.db.pragma("foreign_key_check");e.length>0&&t.push(`Foreign key violations: ${e.length}`)}catch(e){t.push(`FK check error: ${e.message}`)}return{ok:t.length===0,issues:t}}}export{ae as WyrmDB};
249
+ `);for(const s of e.iterate(t))yield s}*streamData(t,e){const s=e?this.db.prepare("SELECT * FROM data_lake WHERE project_id = ? AND category = ?"):this.db.prepare("SELECT * FROM data_lake WHERE project_id = ?"),r=e?[t,e]:[t];for(const n of s.iterate(...r))yield n}getStats(){const t=this.db.prepare("SELECT COUNT(*) as count FROM projects").get(),e=this.db.prepare("SELECT COUNT(*) as count FROM sessions").get(),s=this.db.prepare("SELECT COUNT(*) as count FROM quests").get(),r=this.db.prepare("SELECT COUNT(*) as count FROM memory_artifacts").get(),n=this.db.prepare("SELECT COUNT(*) as count FROM data_lake").get(),i=this.db.prepare("SELECT COALESCE(SUM(tokens_estimate), 0) as total FROM sessions WHERE is_archived = 0").get(),a=this.db.pragma("page_count",{simple:!0}),o=this.db.pragma("page_size",{simple:!0}),c=a*o/(1024*1024);return{projects:t.count,sessions:e.count,quests:s.count,artifacts:r.count,dataPoints:n.count,totalTokens:i.total,dbSize:`${c.toFixed(2)} MB`}}getProjectStats(t){const e=this.db.prepare("SELECT COUNT(*) as count FROM sessions WHERE project_id = ?").get(t),s=this.db.prepare("SELECT COUNT(*) as count FROM quests WHERE project_id = ? AND status IN ('pending', 'in_progress')").get(t),r=this.db.prepare("SELECT COUNT(*) as count FROM quests WHERE project_id = ? AND status = 'completed'").get(t),n=this.db.prepare("SELECT COUNT(*) as count FROM data_lake WHERE project_id = ?").get(t),i=this.db.prepare("SELECT COALESCE(SUM(tokens_estimate), 0) as total FROM sessions WHERE project_id = ? AND is_archived = 0").get(t);return{sessions:e.count,quests:{pending:s.count,completed:r.count},dataPoints:n.count,tokens:i.total}}estimateTokens(t){return Math.ceil(t.length/4)}vacuum(){this.db.exec("VACUUM")}checkpoint(){this.db.pragma("wal_checkpoint(TRUNCATE)")}getResilienceStatus(){const t=this.resilience.getCircuitStatus(),e=this.resilience.getIncompleteOperations();return{circuitState:t.state,failures:t.failures,incompleteOps:e.length}}resetCircuitBreaker(){this.resilience.resetCircuit()}close(){try{this.checkpoint(),this.logger.info("Database checkpoint completed")}catch(t){this.logger.error("Checkpoint failed during close",{error:t.message})}try{this.db.close(),this.logger.info("Database closed successfully")}catch(t){this.logger.error("Database close failed",{error:t.message})}}checkIntegrity(){const t=[];try{const e=this.db.pragma("integrity_check",{simple:!0});e!=="ok"&&t.push(`Integrity check failed: ${e}`)}catch(e){t.push(`Integrity check error: ${e.message}`)}try{const e=this.db.pragma("foreign_key_check");e.length>0&&t.push(`Foreign key violations: ${e.length}`)}catch(e){t.push(`FK check error: ${e.message}`)}return{ok:t.length===0,issues:t}}}export{ce as WyrmDB,ae as resolveDbPath};