wyrm-mcp 7.2.2 → 7.2.4

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 (171) hide show
  1. package/dist/activation.d.ts +8 -9
  2. package/dist/activation.d.ts.map +1 -1
  3. package/dist/activation.js.map +1 -1
  4. package/dist/agent-daemon.d.ts +1 -1
  5. package/dist/agent-loop.d.ts +1 -1
  6. package/dist/analytics.d.ts +1 -1
  7. package/dist/attribution.d.ts +1 -1
  8. package/dist/audit.d.ts +1 -1
  9. package/dist/auto-orchestrator.d.ts +1 -1
  10. package/dist/autoconfig.d.ts +1 -1
  11. package/dist/autoconfig.js +5 -5
  12. package/dist/autoconfig.js.map +1 -1
  13. package/dist/buddy-runner.d.ts +1 -1
  14. package/dist/buddy.d.ts +1 -1
  15. package/dist/build-flags.d.ts +6 -8
  16. package/dist/build-flags.d.ts.map +1 -1
  17. package/dist/build-flags.js.map +1 -1
  18. package/dist/capabilities.d.ts +1 -1
  19. package/dist/capture.d.ts +1 -1
  20. package/dist/causality.d.ts +1 -1
  21. package/dist/cli.d.ts +1 -1
  22. package/dist/cloud/client.js +1 -1
  23. package/dist/cloud/client.js.map +1 -1
  24. package/dist/cloud/machine-id.d.ts +1 -1
  25. package/dist/cloud/sync-engine.d.ts.map +1 -1
  26. package/dist/cloud/sync-engine.js +6 -6
  27. package/dist/cloud/sync-engine.js.map +1 -1
  28. package/dist/cloud-backup.d.ts +1 -1
  29. package/dist/cloud-profile.d.ts +1 -1
  30. package/dist/cloud-sync-entrypoint.d.ts +1 -1
  31. package/dist/cloud-sync.d.ts +1 -1
  32. package/dist/constellation.d.ts +1 -1
  33. package/dist/context-build-budgeted.d.ts +1 -1
  34. package/dist/context-ranking.d.ts +1 -1
  35. package/dist/crypto.d.ts +1 -1
  36. package/dist/daemon-write-endpoint.d.ts +1 -1
  37. package/dist/daemon-writer.d.ts +1 -1
  38. package/dist/database.d.ts +88 -1
  39. package/dist/database.d.ts.map +1 -1
  40. package/dist/database.js +61 -20
  41. package/dist/database.js.map +1 -1
  42. package/dist/design.d.ts +1 -1
  43. package/dist/event-replication.d.ts +1 -1
  44. package/dist/events-sse.d.ts +1 -1
  45. package/dist/failure-patterns.d.ts +1 -1
  46. package/dist/federation.d.ts +1 -1
  47. package/dist/goals.d.ts +1 -1
  48. package/dist/handlers/agent.d.ts +1 -1
  49. package/dist/handlers/alias-adapters.d.ts +1 -1
  50. package/dist/handlers/aliases.d.ts +1 -1
  51. package/dist/handlers/audit.d.ts +1 -1
  52. package/dist/handlers/boundary.d.ts +1 -1
  53. package/dist/handlers/capture.d.ts +1 -1
  54. package/dist/handlers/causality.d.ts +1 -1
  55. package/dist/handlers/cloud.d.ts +1 -1
  56. package/dist/handlers/companion.d.ts +1 -1
  57. package/dist/handlers/datalake.d.ts +1 -1
  58. package/dist/handlers/dispatch-context.d.ts +1 -1
  59. package/dist/handlers/entity.d.ts +1 -1
  60. package/dist/handlers/events.d.ts +1 -1
  61. package/dist/handlers/failure.d.ts +1 -1
  62. package/dist/handlers/goals.d.ts +1 -1
  63. package/dist/handlers/intelligence.d.ts +1 -1
  64. package/dist/handlers/intelligence.d.ts.map +1 -1
  65. package/dist/handlers/intelligence.js +16 -16
  66. package/dist/handlers/intelligence.js.map +1 -1
  67. package/dist/handlers/invoicing.d.ts +1 -1
  68. package/dist/handlers/mcpclient.d.ts +1 -1
  69. package/dist/handlers/orchestration.d.ts +1 -1
  70. package/dist/handlers/output-schemas.d.ts +1 -1
  71. package/dist/handlers/presence.d.ts +1 -1
  72. package/dist/handlers/project.d.ts +1 -1
  73. package/dist/handlers/prompts.d.ts +1 -1
  74. package/dist/handlers/quest.d.ts +1 -1
  75. package/dist/handlers/recall.d.ts +1 -1
  76. package/dist/handlers/registry.d.ts +1 -1
  77. package/dist/handlers/resources.d.ts +1 -1
  78. package/dist/handlers/review.d.ts +1 -1
  79. package/dist/handlers/run.d.ts +1 -1
  80. package/dist/handlers/search.d.ts +1 -1
  81. package/dist/handlers/search.d.ts.map +1 -1
  82. package/dist/handlers/search.js +2 -2
  83. package/dist/handlers/search.js.map +1 -1
  84. package/dist/handlers/session.d.ts +1 -1
  85. package/dist/handlers/session.d.ts.map +1 -1
  86. package/dist/handlers/session.js +21 -18
  87. package/dist/handlers/session.js.map +1 -1
  88. package/dist/handlers/share.d.ts +1 -1
  89. package/dist/handlers/shims.d.ts +1 -1
  90. package/dist/handlers/skill.d.ts +1 -1
  91. package/dist/handlers/survivors.d.ts +1 -1
  92. package/dist/handlers/symbols.d.ts +1 -1
  93. package/dist/handlers/syncops.d.ts +1 -1
  94. package/dist/handlers/types.d.ts +2 -2
  95. package/dist/handlers/types.d.ts.map +1 -1
  96. package/dist/harvest.d.ts +1 -1
  97. package/dist/hours.d.ts +1 -1
  98. package/dist/http-auth.d.ts +1 -1
  99. package/dist/http-fast.d.ts.map +1 -1
  100. package/dist/http-fast.js +18 -17
  101. package/dist/http-fast.js.map +1 -1
  102. package/dist/icons.d.ts +1 -1
  103. package/dist/index.d.ts +1 -1
  104. package/dist/index.js +2 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/indexer.d.ts +1 -1
  107. package/dist/intelligence.d.ts +1 -1
  108. package/dist/internal-dispatch.d.ts +1 -1
  109. package/dist/keyset.d.ts +1 -1
  110. package/dist/knowledge-graph.d.ts +1 -1
  111. package/dist/license.d.ts +1 -1
  112. package/dist/logger.d.ts +1 -1
  113. package/dist/maintenance.d.ts +1 -1
  114. package/dist/mcp-client.d.ts +1 -1
  115. package/dist/memory-artifacts.d.ts +46 -2
  116. package/dist/memory-artifacts.d.ts.map +1 -1
  117. package/dist/memory-artifacts.js +34 -24
  118. package/dist/memory-artifacts.js.map +1 -1
  119. package/dist/migrate-prompt.d.ts +1 -1
  120. package/dist/migrations.d.ts +1 -1
  121. package/dist/migrations.d.ts.map +1 -1
  122. package/dist/migrations.js +24 -0
  123. package/dist/migrations.js.map +1 -1
  124. package/dist/presence.d.ts +1 -1
  125. package/dist/priority-embed.d.ts +1 -1
  126. package/dist/providers/embedding-provider.d.ts +1 -1
  127. package/dist/rehydration.d.ts +1 -1
  128. package/dist/reindex.d.ts +1 -1
  129. package/dist/render-target.d.ts +1 -1
  130. package/dist/render.d.ts +1 -1
  131. package/dist/repl-guard.d.ts +1 -1
  132. package/dist/replication-daemon-entrypoint.d.ts +1 -1
  133. package/dist/replication-daemon.d.ts +1 -1
  134. package/dist/rerank.d.ts +59 -0
  135. package/dist/rerank.d.ts.map +1 -0
  136. package/dist/rerank.js +1 -0
  137. package/dist/rerank.js.map +1 -0
  138. package/dist/resilience.d.ts +1 -1
  139. package/dist/reverse-bridge.d.ts +1 -1
  140. package/dist/security.d.ts +1 -1
  141. package/dist/session-seen.d.ts +1 -1
  142. package/dist/setup.d.ts +1 -1
  143. package/dist/skill-author.d.ts +1 -1
  144. package/dist/spec-kit.d.ts +1 -1
  145. package/dist/sqlite-busy.d.ts +1 -1
  146. package/dist/statusline.d.ts +1 -1
  147. package/dist/statusline.js +10 -10
  148. package/dist/statusline.js.map +1 -1
  149. package/dist/sub-agent.d.ts +1 -1
  150. package/dist/symbols.d.ts +1 -1
  151. package/dist/sync.d.ts +1 -1
  152. package/dist/token-budget.d.ts +1 -1
  153. package/dist/tool-analytics.d.ts +1 -1
  154. package/dist/tool-manifest-v2.json +1 -1
  155. package/dist/tool-manifest.json +1 -1
  156. package/dist/tool-profiles.d.ts +1 -1
  157. package/dist/trace-harvest.d.ts +1 -1
  158. package/dist/types.d.ts +1 -1
  159. package/dist/ui-dashboard.d.ts +1 -1
  160. package/dist/ulid.d.ts +1 -1
  161. package/dist/validate.d.ts +1 -1
  162. package/dist/vectors.d.ts +1 -1
  163. package/dist/version-check.d.ts +1 -1
  164. package/dist/visibility.d.ts +1 -1
  165. package/dist/wyrm-cli.d.ts +1 -1
  166. package/dist/wyrm-cli.js +5 -5
  167. package/dist/wyrm-cli.js.map +1 -1
  168. package/dist/wyrm-guard.d.ts +1 -1
  169. package/dist/wyrm-manifest.json +1 -1
  170. package/dist/wyrm-ui.d.ts +1 -1
  171. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAc,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUvE,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,cAAc,EACd,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,CAC3F,CAAC;AAgVF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAwTpE,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAc,QAAQ,EAAE,MAAM,YAAY,CAAC;AAUvE,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,cAAc,EACd,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,CAC3F,CAAC;AAsWF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAiUpE,CAAC"}
@@ -1,23 +1,26 @@
1
- import{basename as K}from"path";import{createHash as z}from"crypto";import{blockText as U}from"./types.js";import{TOOL_ANNOTATIONS as v}from"../tool-annotations.js";import{renderResult as w,withGlyph as N,cacheKeyFor as q}from"../render.js";import{computeStaleness as X}from"../intelligence.js";import{ValidationError as Z,asInt as ee,asString as te}from"../validate.js";import{sanitizeActorId as se}from"./boundary.js";import{makeEstimator as ne}from"../token-budget.js";const oe={tech_stack:"\u{1F6E0}\uFE0F Tech Stack",architecture:"\u{1F3D7}\uFE0F Architecture",constraint:"\u{1F6A7} Constraints",decision:"\u{1F4CB} Decisions",contact:"\u{1F464} Contacts",other:"\u{1F4CC} Other Facts"};function G(e,t){let n=`### \u{1F4DA} Project Ground Truths _(treat as authoritative \u2014 do not infer or contradict)_
2
- `;const s=new Map;for(const o of e)s.has(o.category)||s.set(o.category,[]),s.get(o.category).push(o);for(const[o,r]of s){n+=`**${oe[o]??o}:**
3
- `;for(const i of r){let p="";if(t){const u=X(i);u!==null&&u>.7&&(p="[\u26A0\uFE0F STALE] ")}n+=`- ${p}**${i.key}:** ${i.value}${i.rationale?` _(${i.rationale})_`:""}
4
- `}}return n}const J=`
1
+ import{basename as X}from"path";import{createHash as Z}from"crypto";import{blockText as G}from"./types.js";import{TOOL_ANNOTATIONS as T}from"../tool-annotations.js";import{renderResult as x,withGlyph as O,cacheKeyFor as N}from"../render.js";import{computeStaleness as ee}from"../intelligence.js";import{ValidationError as te,asInt as se,asString as ne}from"../validate.js";import{sanitizeActorId as oe}from"./boundary.js";import{makeEstimator as ie}from"../token-budget.js";function J(e){return!e||!e.thread.trim()?null:`### \u{1F9F5} Where We Left Off _(the living thread \u2014 what we were working on and thinking about)_
2
+ `+`_updated ${e.updated_at}${e.updated_by?" \xB7 "+e.updated_by:""} \xB7 ${e.turn_count} turn(s)_`+`
3
+
4
+ `+e.thread.slice(-1800)}const re={tech_stack:"\u{1F6E0}\uFE0F Tech Stack",architecture:"\u{1F3D7}\uFE0F Architecture",constraint:"\u{1F6A7} Constraints",decision:"\u{1F4CB} Decisions",contact:"\u{1F464} Contacts",other:"\u{1F4CC} Other Facts"};function Q(e,t){let n=`### \u{1F4DA} Project Ground Truths _(treat as authoritative \u2014 do not infer or contradict)_
5
+ `;const s=new Map;for(const o of e)s.has(o.category)||s.set(o.category,[]),s.get(o.category).push(o);for(const[o,i]of s){n+=`**${re[o]??o}:**
6
+ `;for(const c of i){let p="";if(t){const u=ee(c);u!==null&&u>.7&&(p="[\u26A0\uFE0F STALE] ")}n+=`- ${p}**${c.key}:** ${c.value}${c.rationale?` _(${c.rationale})_`:""}
7
+ `}}return n}const V=`
5
8
  SELECT * FROM quests
6
9
  WHERE project_id = ? AND status = 'pending'
7
10
  ORDER BY
8
11
  CASE priority WHEN 'critical' THEN 1 WHEN 'high' THEN 2 WHEN 'medium' THEN 3 ELSE 4 END,
9
12
  id
10
13
  LIMIT 5
11
- `;function Q(e){const t={critical:"\u{1F534}",high:"\u{1F7E0}",medium:"\u{1F7E1}",low:"\u{1F7E2}"};let n=`### \u{1F3AF} Active Quests
14
+ `;function Y(e){const t={critical:"\u{1F534}",high:"\u{1F7E0}",medium:"\u{1F7E1}",low:"\u{1F7E2}"};let n=`### \u{1F3AF} Active Quests
12
15
  `;for(const s of e)n+=`- ${t[s.priority]??"\u2022"} #${s.id}: ${s.title}
13
- `;return n}function P(e,t,n,s){return n?e.getProjectById(n):s?t.prepare("SELECT * FROM projects WHERE LOWER(name) LIKE LOWER(?) LIMIT 1").get(`%${s}%`):t.prepare(`
16
+ `;return n}function q(e,t,n,s){return n?e.getProjectById(n):s?t.prepare("SELECT * FROM projects WHERE LOWER(name) LIKE LOWER(?) LIMIT 1").get(`%${s}%`):t.prepare(`
14
17
  SELECT p.* FROM projects p
15
18
  JOIN sessions s ON s.project_id = p.id
16
19
  ORDER BY s.created_at DESC LIMIT 1
17
- `).get()}function C(e){const t=e.getAllProjects(20);return t.length===0?{content:[{type:"text",text:"No projects found. Run `wyrm_scan_projects` first."}],isError:!0}:{content:[{type:"text",text:`Project not found. Available projects:
20
+ `).get()}function P(e){const t=e.getAllProjects(20);return t.length===0?{content:[{type:"text",text:"No projects found. Run `wyrm_scan_projects` first."}],isError:!0}:{content:[{type:"text",text:`Project not found. Available projects:
18
21
  ${t.map(s=>`- ${s.name} (ID: ${s.id})`).join(`
19
- `)}`}],isError:!0}}const V=(e,t)=>{const n=e.session_id!==null?`
20
- Session logged: #${e.session_id}`:"";return N(t.brand,`Wyrm primed for **${e.project_name}** | ${e.truth_count} truth${e.truth_count!==1?"s":""} - ${e.quest_count} quest${e.quest_count!==1?"s":""} - ${e.memory_count} memor${e.memory_count!==1?"ies":"y"}${n}`)},L=(e,t)=>{const n=V(e,t);return e.sections.length>0?e.sections.map(s=>s.text).join(`
22
+ `)}`}],isError:!0}}const K=(e,t)=>{const n=e.session_id!==null?`
23
+ Session logged: #${e.session_id}`:"";return O(t.brand,`Wyrm primed for **${e.project_name}** | ${e.truth_count} truth${e.truth_count!==1?"s":""} - ${e.quest_count} quest${e.quest_count!==1?"s":""} - ${e.memory_count} memor${e.memory_count!==1?"ies":"y"}${n}`)},L=(e,t)=>{const n=K(e,t);return e.sections.length>0?e.sections.map(s=>s.text).join(`
21
24
 
22
25
  ---
23
26
 
@@ -25,13 +28,13 @@ Session logged: #${e.session_id}`:"";return N(t.brand,`Wyrm primed for **${e.pro
25
28
 
26
29
  `+n:n+`
27
30
 
28
- _No memory stored yet -- start working and Wyrm will learn._`},A={summary:V};async function D(e,t,n){try{const{logSavings:s}=await import("../statusline.js"),o=U(n.content[0]).length,r=Math.round(o/4),i=e.prepare("SELECT id FROM sessions WHERE project_id = ? ORDER BY created_at DESC LIMIT 1").get(t);s(e,"wyrm_session_prime","recovered_context",r,i?.id)}catch{}}const re={truths:{path:"truths",tool:"wyrm_truth_get"},scaffold:{path:"scaffolds",tool:"wyrm_context_build"},memory:{path:"memory",tool:"wyrm_recall"},quests:{path:"quests",tool:"wyrm_all_quests"}},ie=48,ce=1200;async function ae(e,{store:t,raw:n,memory:s,truths:o,scaffolds:r,cache:i}){const{project_id:p,project_name:u,task:c,log_session:_}=e,a=se(e.run_id);if(a===null)throw new Z("run_id",'must be <=64 printable-ASCII chars (no ";")');const m=te("role",e.role,{maxLen:200})??"",g=ee("token_budget",e.token_budget,{min:1})??ce,f=n(),E=()=>f.prepare("SELECT body_json FROM run_briefs WHERE run_id = ? AND role = ?").get(a,m),h=p||u?P(t,f,p,u):void 0;if((p||u)&&!h)return C(t);let b=E();if(b&&h){const d=JSON.parse(b.body_json);if(d.project_id!==h.id)return{content:[{type:"text",text:`Fleet brief for (run ${a}, role '${m}') is pinned to project '${d.project_name}' (ID: ${d.project_id}) \u2014 refusing to serve it for requested project '${h.name}' (ID: ${h.id}). Use a distinct role for a second project, or prime without run_id.`}],isError:!0}}if(!b){const d=h??P(t,f,p,u);if(!d)return C(t);const y=[],k=o.getCurrent(d.id);k.length>0&&y.push({kind:"truths",text:G(k,!1).slice(0,1200)});const x=c??(m||void 0);if(x){const S=r.findBest(x,d.id,.3);S&&y.push({kind:"scaffold",text:r.formatForContext(S,1500)})}const $=s.buildContextBrief(d.id,x??"general",{maxItems:10,minConfidence:.3});$.text&&y.push({kind:"memory",text:$.text.slice(0,2e3)});const I=f.prepare(J).all(d.id);I.length>0&&y.push({kind:"quests",text:Q(I).slice(0,800)});const M=ne(),R=[];let O=ie;for(const S of y){const F=M.count(S.text)+2;if(O+F<=g)R.push(S),O+=F;else{const H=re[S.kind]??{path:S.kind,tool:"wyrm_search"},W=`[beyond token_budget] wyrm://project/${d.id}/${H.path} -- fetch via ${H.tool}`;R.push({kind:S.kind,text:W}),O+=M.count(W)+2}}let B=null;_&&(B=t.createSession(d.id,{objectives:c??"Session started via wyrm_session_prime",summary:""}).id);const Y={project_id:d.id,project_name:d.name,truth_count:o.getStats(d.id).current,quest_count:I.length,memory_count:s.getStats(d.id).total,session_id:B,sections:R,run_id:a,role:m,token_budget:g};f.prepare("INSERT OR IGNORE INTO run_briefs (run_id, role, body_json, token_budget) VALUES (?, ?, ?, ?)").run(a,m,JSON.stringify(Y),g),b=E()}const l=JSON.parse(b.body_json),j=w(l,L,A);if(e.for_spawn===!0){const d=w(l,L,{...A,exemptStructured:!0}),y=U(d.content[0]),k=z("sha256").update(y,"utf8").digest("hex"),x={project_id:l.project_id,project_name:l.project_name,session_id:l.session_id??null,sections:l.sections,for_spawn:!0,run_id:a,role:m,brief:y,brief_hash:k,brief_chars:y.length,cache_key:{table:"run_briefs",run_id:a,role:m}};await D(f,l.project_id,d);const $={content:[{type:"text",text:y}],structuredContent:x};return i.set(q("wyrm_session_prime",JSON.stringify(e)),$,3e4),$}return await D(f,l.project_id,j),i.set(q("wyrm_session_prime",JSON.stringify(e)),j,3e4),j}const je=[{name:"wyrm_session_start",description:"Start or continue a session for a project",inputSchema:{type:"object",properties:{projectPath:{type:"string",description:"Project path"},objectives:{type:"string",description:"Session objectives"}},required:["projectPath"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project:{type:"string"},date:{type:"string"},objectives:{type:["string","null"]}},required:["session_id","project","date","objectives"]},annotations:v.wyrm_session_start,aliases:[],handler:(e,{store:t})=>{const{projectPath:n,objectives:s}=e;let o=t.getProject(n);o||(o=t.registerProject(K(n),n));let r=t.getTodaySession(o.id);r?s&&(r=t.updateSession(r.id,{objectives:r.objectives?`${r.objectives}
29
- ${s}`:s})):r=t.createSession(o.id,{objectives:s||""}),t.archiveOldSessions(o.id,10);const i={session_id:r.id,project:o.name,date:r.date,objectives:r.objectives||null};return w(i,(p,u)=>N(u.brand,`Session ${p.session_id} for ${p.project}`)+`
31
+ _No memory stored yet -- start working and Wyrm will learn._`},A={summary:K};async function D(e,t,n){try{const{logSavings:s}=await import("../statusline.js"),o=G(n.content[0]).length,i=Math.round(o/4),c=e.prepare("SELECT id FROM sessions WHERE project_id = ? ORDER BY created_at DESC LIMIT 1").get(t);s(e,"wyrm_session_prime","recovered_context",i,c?.id)}catch{}}const ce={continuity:{path:"continuity",tool:"wyrm_session_prime"},truths:{path:"truths",tool:"wyrm_truth_get"},scaffold:{path:"scaffolds",tool:"wyrm_context_build"},memory:{path:"memory",tool:"wyrm_recall"},quests:{path:"quests",tool:"wyrm_all_quests"}},ae=48,de=1200;async function pe(e,{store:t,raw:n,memory:s,truths:o,scaffolds:i,cache:c}){const{project_id:p,project_name:u,task:a,log_session:f}=e,r=oe(e.run_id);if(r===null)throw new te("run_id",'must be <=64 printable-ASCII chars (no ";")');const m=ne("role",e.role,{maxLen:200})??"",j=se("token_budget",e.token_budget,{min:1})??de,_=n(),$=()=>_.prepare("SELECT body_json FROM run_briefs WHERE run_id = ? AND role = ?").get(r,m),y=p||u?q(t,_,p,u):void 0;if((p||u)&&!y)return P(t);let g=$();if(g&&y){const d=JSON.parse(g.body_json);if(d.project_id!==y.id)return{content:[{type:"text",text:`Fleet brief for (run ${r}, role '${m}') is pinned to project '${d.project_name}' (ID: ${d.project_id}) \u2014 refusing to serve it for requested project '${y.name}' (ID: ${y.id}). Use a distinct role for a second project, or prime without run_id.`}],isError:!0}}if(!g){const d=y??q(t,_,p,u);if(!d)return P(t);const l=[],k=J(t.getContinuity(d.id));k&&l.push({kind:"continuity",text:k});const v=o.getCurrent(d.id);v.length>0&&l.push({kind:"truths",text:Q(v,!1).slice(0,1200)});const w=a??(m||void 0);if(w){const S=i.findBest(w,d.id,.3);S&&l.push({kind:"scaffold",text:i.formatForContext(S,1500)})}const B=s.buildContextBrief(d.id,w??"general",{maxItems:10,minConfidence:.3});B.text&&l.push({kind:"memory",text:B.text.slice(0,2e3)});const I=_.prepare(V).all(d.id);I.length>0&&l.push({kind:"quests",text:Y(I).slice(0,800)});const M=ie(),R=[];let C=ae;for(const S of l){const W=M.count(S.text)+2;if(C+W<=j)R.push(S),C+=W;else{const H=ce[S.kind]??{path:S.kind,tool:"wyrm_search"},U=`[beyond token_budget] wyrm://project/${d.id}/${H.path} -- fetch via ${H.tool}`;R.push({kind:S.kind,text:U}),C+=M.count(U)+2}}let F=null;f&&(F=t.createSession(d.id,{objectives:a??"Session started via wyrm_session_prime",summary:""}).id);const z={project_id:d.id,project_name:d.name,truth_count:o.getStats(d.id).current,quest_count:I.length,memory_count:s.getStats(d.id).total,session_id:F,sections:R,run_id:r,role:m,token_budget:j};_.prepare("INSERT OR IGNORE INTO run_briefs (run_id, role, body_json, token_budget) VALUES (?, ?, ?, ?)").run(r,m,JSON.stringify(z),j),g=$()}const h=JSON.parse(g.body_json),b=x(h,L,A);if(e.for_spawn===!0){const d=x(h,L,{...A,exemptStructured:!0}),l=G(d.content[0]),k=Z("sha256").update(l,"utf8").digest("hex"),v={project_id:h.project_id,project_name:h.project_name,session_id:h.session_id??null,sections:h.sections,for_spawn:!0,run_id:r,role:m,brief:l,brief_hash:k,brief_chars:l.length,cache_key:{table:"run_briefs",run_id:r,role:m}};await D(_,h.project_id,d);const w={content:[{type:"text",text:l}],structuredContent:v};return c.set(N("wyrm_session_prime",JSON.stringify(e)),w,3e4),w}return await D(_,h.project_id,b),c.set(N("wyrm_session_prime",JSON.stringify(e)),b,3e4),b}const Se=[{name:"wyrm_session_start",description:"Start or continue a session for a project",inputSchema:{type:"object",properties:{projectPath:{type:"string",description:"Project path"},objectives:{type:"string",description:"Session objectives"}},required:["projectPath"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project:{type:"string"},date:{type:"string"},objectives:{type:["string","null"]}},required:["session_id","project","date","objectives"]},annotations:T.wyrm_session_start,aliases:[],handler:(e,{store:t})=>{const{projectPath:n,objectives:s}=e;let o=t.getProject(n);o||(o=t.registerProject(X(n),n));let i=t.getTodaySession(o.id);i?s&&(i=t.updateSession(i.id,{objectives:i.objectives?`${i.objectives}
32
+ ${s}`:s})):i=t.createSession(o.id,{objectives:s||""}),t.archiveOldSessions(o.id,10);const c={session_id:i.id,project:o.name,date:i.date,objectives:i.objectives||null};return x(c,(p,u)=>O(u.brand,`Session ${p.session_id} for ${p.project}`)+`
30
33
  **Date:** ${p.date}
31
- **Objectives:** ${p.objectives??"None set"}`)}},{name:"wyrm_session_update",description:"Update the current session with completed work, issues, or notes",inputSchema:{type:"object",properties:{projectPath:{type:"string"},completed:{type:"string",description:"What was completed"},issues:{type:"string"},commits:{type:"string",description:"Git commits made"},notes:{type:"string"}},required:["projectPath"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project:{type:"string"},updated:{type:"array",items:{type:"string",enum:["completed","issues","commits","notes"]}}},required:["session_id","project","updated"]},annotations:v.wyrm_session_update,aliases:[],handler:(e,{store:t,indexing:n})=>{const{projectPath:s,completed:o,issues:r,commits:i,notes:p}=e,u=t.getProject(s);if(!u)return{content:[{type:"text",text:"Project not found"}],isError:!0};let c=t.getTodaySession(u.id);c||(c=t.createSession(u.id,{}));const _={};o&&(_.completed=c.completed?`${c.completed}
32
- ${o}`:o),r&&(_.issues=c.issues?`${c.issues}
33
- ${r}`:r),i&&(_.commits=c.commits?`${c.commits}
34
- ${i}`:i),p&&(_.notes=c.notes?`${c.notes}
35
- ${p}`:p),c=t.updateSession(c.id,_),n()?.enqueue("session",c.id,u.id);const a={session_id:c.id,project:u.name,updated:Object.keys(_)};return w(a,(m,g)=>N(g.brand,`Session updated for ${m.project}`))}},{name:"wyrm_session_rehydrate",description:"Lossless session rehydration. Given a past session ID, returns a complete briefing markdown a fresh AI agent can ingest to inherit prior state: objectives, completed work, notes, summary, current ground truths, open quests, validated patterns (artifacts), unresolved failure patterns. Cross-session continuity no other AI memory tool offers.",inputSchema:{type:"object",properties:{session_id:{type:"number",description:"ID of the session to rehydrate"},include_artifacts:{type:"boolean",description:"Include memory artifacts (default true)"},include_failures:{type:"boolean",description:"Include unresolved failure patterns (default true)"},max_truth_chars:{type:"number",description:"Cap on chars used for ground truths (default 2000)"}},required:["session_id"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project_name:{type:"string"},project_path:{type:"string"},briefing_markdown:{type:"string"},context_chars:{type:"integer"},attached:{type:"object",properties:{quests:{type:"integer"},truths:{type:"integer"},artifacts:{type:"integer"},failures:{type:"integer"}},required:["quests","truths","artifacts","failures"]}},required:["session_id","project_name","project_path","briefing_markdown","context_chars","attached"]},annotations:v.wyrm_session_rehydrate,aliases:[],handler:(e,{rehydration:t})=>{const{session_id:n,include_artifacts:s,include_failures:o,max_truth_chars:r}=e,i=t.rehydrate(n,{include_artifacts:s,include_failures:o,max_truth_chars:r});return i?w({...i},p=>p.briefing_markdown,{exemptStructured:!0}):{content:[{type:"text",text:`Session #${n} not found.`}],isError:!0}}},{name:"wyrm_session_prime",description:"Use first at session start - load everything you need to know before starting work, and catch me up on where we left off last time: ground truths, memory brief, reasoning scaffold, and active quests in one call. First call every agent makes in a run.",inputSchema:{type:"object",properties:{project_id:{type:"number"},project_name:{type:"string"},task:{type:"string",description:"Drives scaffold + memory selection"},log_session:{type:"boolean",description:"Also log a session row"},run_id:{type:"string",description:"Fleet: brief cached per (run_id, role)"},role:{type:"string"},token_budget:{type:"number"},for_spawn:{type:"boolean"}}},outputSchema:{type:"object",properties:{project_id:{type:"integer"},project_name:{type:"string"},session_id:{type:["integer","null"]},sections:{type:"array",items:{type:"object",properties:{kind:{type:"string"},text:{type:"string"}},required:["kind","text"]}}},required:["project_id","project_name","session_id","sections"]},annotations:v.wyrm_session_prime,aliases:[],handler:async(e,{store:t,raw:n,memory:s,truths:o,scaffolds:r,cache:i})=>{const{project_id:p,project_name:u,task:c,log_session:_}=e;if(e.run_id!==void 0&&e.run_id!==null)return ae(e,{store:t,raw:n,memory:s,truths:o,scaffolds:r,cache:i});const a=P(t,n(),p,u);if(!a)return C(t);const m=[],g=o.getCurrent(a.id);if(g.length>0&&m.push({kind:"truths",text:G(g,!0).slice(0,1200)}),c){const j=r.findBest(c,a.id,.3);j&&m.push({kind:"scaffold",text:r.formatForContext(j,1500)})}const f=s.buildContextBrief(a.id,c??"general",{maxItems:10,minConfidence:.3});f.text&&m.push({kind:"memory",text:f.text.slice(0,2e3)});const E=n().prepare(J).all(a.id);E.length>0&&m.push({kind:"quests",text:Q(E).slice(0,800)});try{const{vaultAdvisory:j}=await import("../vault.js"),T=j();T.length>0&&m.push({kind:"vault",text:`### \u{1F510} Credential Vault
36
- `+T.map(d=>`- ${d}`).join(`
37
- `)})}catch{}let h=null;_&&(h=t.createSession(a.id,{objectives:c??"Session started via wyrm_session_prime",summary:""}).id);const b={project_id:a.id,project_name:a.name,truth_count:o.getStats(a.id).current,quest_count:E.length,memory_count:s.getStats(a.id).total,session_id:h,sections:m},l=w(b,L,A);return await D(n(),a.id,l),i.set(q("wyrm_session_prime",JSON.stringify(e)),l,3e4),l}}];export{je as sessionToolSpecs};
34
+ **Objectives:** ${p.objectives??"None set"}`)}},{name:"wyrm_session_update",description:"Update the current session with completed work, issues, or notes",inputSchema:{type:"object",properties:{projectPath:{type:"string"},completed:{type:"string",description:"What was completed"},issues:{type:"string"},commits:{type:"string",description:"Git commits made"},notes:{type:"string"}},required:["projectPath"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project:{type:"string"},updated:{type:"array",items:{type:"string",enum:["completed","issues","commits","notes"]}}},required:["session_id","project","updated"]},annotations:T.wyrm_session_update,aliases:[],handler:(e,{store:t,indexing:n})=>{const{projectPath:s,completed:o,issues:i,commits:c,notes:p}=e,u=t.getProject(s);if(!u)return{content:[{type:"text",text:"Project not found"}],isError:!0};let a=t.getTodaySession(u.id);a||(a=t.createSession(u.id,{}));const f={};o&&(f.completed=a.completed?`${a.completed}
35
+ ${o}`:o),i&&(f.issues=a.issues?`${a.issues}
36
+ ${i}`:i),c&&(f.commits=a.commits?`${a.commits}
37
+ ${c}`:c),p&&(f.notes=a.notes?`${a.notes}
38
+ ${p}`:p),a=t.updateSession(a.id,f);const r=[o,i,p].filter(Boolean).join(" \xB7 ");r&&t.updateContinuity(u.id,r,"session_update"),n()?.enqueue("session",a.id,u.id);const m={session_id:a.id,project:u.name,updated:Object.keys(f)};return x(m,(j,_)=>O(_.brand,`Session updated for ${j.project}`))}},{name:"wyrm_session_rehydrate",description:"Lossless session rehydration. Given a past session ID, returns a complete briefing markdown a fresh AI agent can ingest to inherit prior state: objectives, completed work, notes, summary, current ground truths, open quests, validated patterns (artifacts), unresolved failure patterns. Cross-session continuity no other AI memory tool offers.",inputSchema:{type:"object",properties:{session_id:{type:"number",description:"ID of the session to rehydrate"},include_artifacts:{type:"boolean",description:"Include memory artifacts (default true)"},include_failures:{type:"boolean",description:"Include unresolved failure patterns (default true)"},max_truth_chars:{type:"number",description:"Cap on chars used for ground truths (default 2000)"}},required:["session_id"]},outputSchema:{type:"object",properties:{session_id:{type:"integer"},project_name:{type:"string"},project_path:{type:"string"},briefing_markdown:{type:"string"},context_chars:{type:"integer"},attached:{type:"object",properties:{quests:{type:"integer"},truths:{type:"integer"},artifacts:{type:"integer"},failures:{type:"integer"}},required:["quests","truths","artifacts","failures"]}},required:["session_id","project_name","project_path","briefing_markdown","context_chars","attached"]},annotations:T.wyrm_session_rehydrate,aliases:[],handler:(e,{rehydration:t})=>{const{session_id:n,include_artifacts:s,include_failures:o,max_truth_chars:i}=e,c=t.rehydrate(n,{include_artifacts:s,include_failures:o,max_truth_chars:i});return c?x({...c},p=>p.briefing_markdown,{exemptStructured:!0}):{content:[{type:"text",text:`Session #${n} not found.`}],isError:!0}}},{name:"wyrm_session_prime",description:"Use first at session start - load everything you need to know before starting work, and catch me up on where we left off last time: ground truths, memory brief, reasoning scaffold, and active quests in one call. First call every agent makes in a run.",inputSchema:{type:"object",properties:{project_id:{type:"number"},project_name:{type:"string"},task:{type:"string",description:"Drives scaffold + memory selection"},log_session:{type:"boolean",description:"Also log a session row"},run_id:{type:"string",description:"Fleet: brief cached per (run_id, role)"},role:{type:"string"},token_budget:{type:"number"},for_spawn:{type:"boolean"}}},outputSchema:{type:"object",properties:{project_id:{type:"integer"},project_name:{type:"string"},session_id:{type:["integer","null"]},sections:{type:"array",items:{type:"object",properties:{kind:{type:"string"},text:{type:"string"}},required:["kind","text"]}}},required:["project_id","project_name","session_id","sections"]},annotations:T.wyrm_session_prime,aliases:[],handler:async(e,{store:t,raw:n,memory:s,truths:o,scaffolds:i,cache:c})=>{const{project_id:p,project_name:u,task:a,log_session:f}=e;if(e.run_id!==void 0&&e.run_id!==null)return pe(e,{store:t,raw:n,memory:s,truths:o,scaffolds:i,cache:c});const r=q(t,n(),p,u);if(!r)return P(t);const m=[],j=J(t.getContinuity(r.id));j&&m.push({kind:"continuity",text:j});const _=o.getCurrent(r.id);if(_.length>0&&m.push({kind:"truths",text:Q(_,!0).slice(0,1200)}),a){const E=i.findBest(a,r.id,.3);E&&m.push({kind:"scaffold",text:i.formatForContext(E,1500)})}const $=s.buildContextBrief(r.id,a??"general",{maxItems:10,minConfidence:.3});$.text&&m.push({kind:"memory",text:$.text.slice(0,2e3)});const y=n().prepare(V).all(r.id);y.length>0&&m.push({kind:"quests",text:Y(y).slice(0,800)});try{const{vaultAdvisory:E}=await import("../vault.js"),d=E();d.length>0&&m.push({kind:"vault",text:`### \u{1F510} Credential Vault
39
+ `+d.map(l=>`- ${l}`).join(`
40
+ `)})}catch{}let g=null;f&&(g=t.createSession(r.id,{objectives:a??"Session started via wyrm_session_prime",summary:""}).id);const h={project_id:r.id,project_name:r.name,truth_count:o.getStats(r.id).current,quest_count:y.length,memory_count:s.getStats(r.id).total,session_id:g,sections:m},b=x(h,L,A);return await D(n(),r.id,b),c.set(N("wyrm_session_prime",JSON.stringify(e)),b,3e4),b}}];export{Se as sessionToolSpecs};
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAiB,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcnD;;;;GAIG;AACH,SAAS,0BAA0B,CACjC,CAA+F;IAE/F,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,WAAW,CAAC;IAC9G,OAAO,CACL,+FAA+F;QAC/F,IAAI;QACJ,MAAM;QACN,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CACtB,CAAC;AACJ,CAAC;AAYD,MAAM,kBAAkB,GAA2B;IACjD,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB;IAC9D,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc;IACtD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB;CAChD,CAAC;AAEF;;gEAEgE;AAChE,SAAS,sBAAsB,CAAC,aAA4B,EAAE,gBAAyB;IACrF,IAAI,YAAY,GAAG,wFAAwF,CAAC;IAC5G,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,YAAY,IAAI,KAAK,kBAAkB,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;QAC3D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,GAAG,GAAG;oBAAE,WAAW,GAAG,aAAa,CAAC;YACzE,CAAC;YACD,YAAY,IAAI,KAAK,WAAW,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAC1G,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG;;;;;;;OAOnB,CAAC;AAER,mEAAmE;AACnE,SAAS,sBAAsB,CAAC,YAAqB;IACnD,MAAM,aAAa,GAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACtG,IAAI,WAAW,GAAG,wBAAwB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,WAAW,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;qDACqD;AACrD,SAAS,mBAAmB,CAC1B,KAA8B,EAC9B,EAAqB,EACrB,IAAa,EACb,MAAe;IAEf,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAQ,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,CAAyB,CAAC;IAClI,CAAC;IACD,OAAQ,EAAE,CAAC,OAAO,CAAC;;;;SAIZ,CAAC,CAAC,GAAG,EAA0B,CAAC;AACzC,CAAC;AAED,yEAAyE;AACzE,SAAS,oBAAoB,CAAC,KAA8B;IAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtH,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvH,CAAC;AAED;;oEAEoE;AACpE,MAAM,YAAY,GAAG,CAAC,CAAY,EAAE,CAAW,EAAU,EAAE;IACzD,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,EACtB,qBAAqB,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC,WAAW,SAAS,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;QACpG,GAAG,CAAC,CAAC,WAAW,SAAS,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;QAC5D,GAAG,CAAC,CAAC,YAAY,SAAS,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF;4EAC4E;AAC5E,MAAM,aAAa,GAAG,CAAC,CAAY,EAAE,CAAW,EAAU,EAAE;IAC1D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,WAAW;QAC1E,CAAC,CAAC,WAAW,GAAG,kEAAkE,CAAC;AACvF,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAEpD,+EAA+E;AAC/E,KAAK,UAAU,eAAe,CAAC,EAAqB,EAAE,SAAiB,EAAE,QAAoB;IAC3F,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,qDAAqD;QACrD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACvD,yDAAyD;QACzD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,CAAC,SAAS,CAA+B,CAAC;QAC7J,UAAU,CAAC,EAAE,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAE/E;;6EAE6E;AAC7E,MAAM,SAAS,GAAmD;IAChE,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE;IAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE;CACpD,CAAC;AAEF;2EAC2E;AAC3E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;;;;;;GAQG;AACH,KAAK,UAAU,UAAU,CACvB,IAA6B,EAC7B,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAuF;IAErI,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAEpF,CAAC;IACF,MAAM,KAAK,GAAG,eAAe,CAAE,IAA6B,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;IACvG,0DAA0D;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAG,IAA2B,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACxF,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,EAAG,IAAmC,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC;IAE5H,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,GAAsC,EAAE,CACxD,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAsC,CAAC;IAErI,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,mEAAmE;IACnE,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAEvE,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;IACtB,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAc,CAAC;QACtD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,KAAK,WAAW,IAAI,4BAA4B,MAAM,CAAC,YAAY,UAAU,MAAM,CAAC,UAAU,mDAAmD,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,EAAE,uEAAuE;qBAC3R,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,SAAS,IAAI,mBAAmB,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO;YAAE,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,2CAA2C;QAE7F,sEAAsE;QACtE,sEAAsE;QACtE,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,iFAAiF;QACjF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,mEAAmE;QACnE,6CAA6C;QAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,IAAI,aAAa;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;QACnH,IAAI,OAAO,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAY,CAAC;QAC9E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,qEAAqE;QACrE,qEAAqE;QACrE,uEAAuE;QACvE,mDAAmD;QACnD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,qBAAqB,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC;YACvE,IAAI,IAAI,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,IAAI,IAAI,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBACvE,MAAM,IAAI,GAAG,wCAAwC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,IAAI,EAAE,CAAC;gBACvG,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;gBAC1C,UAAU,EAAE,MAAM,IAAI,wCAAwC;gBAC9D,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC,EAAE,CAAC;QACR,CAAC;QAED,MAAM,IAAI,GAAc;YACtB,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,YAAY,EAAE,OAAO,CAAC,IAAI;YAC1B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO;YAChD,WAAW,EAAE,YAAY,CAAC,MAAM;YAChC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK;YAC/C,UAAU,EAAE,SAAS;YACrB,QAAQ;YACR,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,EAAE,CAAC,OAAO,CACR,8FAA8F,CAC/F,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACjD,GAAG,GAAG,SAAS,EAAE,CAAC;IACpB,CAAC;IAED,0EAA0E;IAC1E,8DAA8D;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAI,CAAC,SAAS,CAAc,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAExE,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,sEAAsE;IACtE,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,QAAQ,GAAI,IAAgC,CAAC,SAAS,KAAK,IAAI,CAAC;IACtE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5G,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,qEAAqE;QACrE,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,SAAS,GAAG;YAChB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,IAAI;YACJ,KAAK;YACL,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC5D,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,WAAW,GAAe;YAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACxC,iBAAiB,EAAE,SAAS;SAC7B,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACvF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvD,6DAA6D;IAC7D,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAA4C;IACvE;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2CAA2C;QACxD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBAC5D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAClE;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;aACzC;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC;SAC1D;QACD,WAAW,EAAE,gBAAgB,CAAC,kBAAkB;QAChD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAoD,CAAC;YAEzF,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,wBAAwB;gBACxB,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;oBACxC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU;iBACrF,CAAC,CAAC;YACL,CAAC;YAED,uBAAuB;YACvB,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAEzC,MAAM,IAAI,GAAG;gBACX,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;aACvC,CAAC;YACF,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;gBACrE,aAAa,CAAC,CAAC,IAAI,IAAI;gBACvB,mBAAmB,CAAC,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,kEAAkE;QAC/E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE;aACzG;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;SAC/C;QACD,WAAW,EAAE,gBAAgB,CAAC,mBAAmB;QACjD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAM1D,CAAC;YAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,iEAAiE;gBACjE,kEAAkE;gBAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACnF,CAAC;YAED,IAAI,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,SAAS;gBAAE,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACtF,IAAI,OAAO;gBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5F,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAEhF,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAEnD,0FAA0F;YAC1F,yEAAyE;YACzE,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,UAAU;gBAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAEjF,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAEvD,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9F,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,uVAAuV;QACpW,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAC7E,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBAC9F,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oDAAoD,EAAE;gBACxG,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;aACvG;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACrC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;qBAC9B;oBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;iBACxD;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,CAAC;SAC3G;QACD,WAAW,EAAE,gBAAgB,CAAC,sBAAsB;QACpD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YACjC,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAG5E,CAAC;YACF,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE;gBAC9C,iBAAiB,EAAE,gBAAgB,EAAE,eAAe;aACrD,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,UAAU,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACnG,CAAC;YACD,iEAAiE;YACjE,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,8DAA8D;YAC9D,OAAO,YAAY,CACjB,EAAE,GAAG,KAAK,EAA6B,EACvC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAmC,CAAC,iBAAiB,EAC7D,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC3B,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,4PAA4P;QACzQ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBAC3E,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBACvE,qEAAqE;gBACrE,sEAAsE;gBACtE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;gBACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC/B;SACF;QACD,sEAAsE;QACtE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;gBACzC,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACzB;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;qBAC3B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC;SACnE;QACD,WAAW,EAAE,gBAAgB,CAAC,kBAAkB;QAChD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YACxE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAKpF,CAAC;YAEF,uEAAuE;YACvE,IAAK,IAA6B,CAAC,MAAM,KAAK,SAAS,IAAK,IAA6B,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC1G,OAAO,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,sEAAsE;YACtE,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAElE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,oEAAoE;gBACpE,sCAAsC;gBACtC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,QAAQ,GAAmB,EAAE,CAAC;YAEpC,iFAAiF;YACjF,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,IAAI,UAAU;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAExE,oEAAoE;YACpE,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,oDAAoD;YACpD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACtE,IAAI,eAAe,EAAE,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;YAED,8CAA8C;YAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;YAClH,IAAI,OAAO,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvF,8CAA8C;YAC9C,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAY,CAAC;YAErF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;YAED,6EAA6E;YAC7E,+EAA+E;YAC/E,iEAAiE;YACjE,IAAI,CAAC;gBACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;gBACnC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAEhC,yBAAyB;YACzB,IAAI,SAAS,GAAkB,IAAI,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE;oBAChD,UAAU,EAAE,MAAM,IAAI,wCAAwC;oBAC9D,OAAO,EAAE,EAAE;iBACZ,CAAC,CAAC;gBACH,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,IAAI,GAAc;gBACtB,UAAU,EAAE,SAAS,CAAC,EAAE;gBACxB,YAAY,EAAE,SAAS,CAAC,IAAI;gBAC5B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO;gBAClD,WAAW,EAAE,cAAc,CAAC,MAAM;gBAClC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK;gBACjD,UAAU,EAAE,SAAS;gBACrB,QAAQ;aACT,CAAC;YAEF,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAExE,sEAAsE;YACtE,kEAAkE;YAClE,kEAAkE;YAClE,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAEvD,6DAA6D;YAC7D,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACtF,OAAO,UAAU,CAAC;QACpB,CAAC;KACF;CACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
3
- * @license AGPL-3.0-or-later
3
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
4
4
  */
5
5
  import type { DispatcherContext, ToolSpec } from "./dispatch-context.js";
6
6
  export declare const shareToolSpecs: ReadonlyArray<ToolSpec<DispatcherContext>>;
@@ -37,7 +37,7 @@
37
37
  * action is a clean SEP-1303 boundary ValidationError (T020).
38
38
  *
39
39
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
40
- * @license AGPL-3.0-or-laterdual-licensed; commercial terms: ghosts.lk@proton.me. See LICENSE.
40
+ * @license Proprietary(c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
41
41
  */
42
42
  import type { WireToolDef } from './registry.js';
43
43
  /** A nested route: a second discriminator key picks the final target. */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
3
- * @license AGPL-3.0-or-later
3
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
4
4
  */
5
5
  import type { DispatcherContext, ToolSpec } from "./dispatch-context.js";
6
6
  export declare const skillToolSpecs: ReadonlyArray<ToolSpec<DispatcherContext>>;
@@ -35,7 +35,7 @@
35
35
  * exactly at the pin.
36
36
  *
37
37
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
38
- * @license AGPL-3.0-or-later
38
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
39
39
  */
40
40
  /**
41
41
  * Survivors whose names exist on the 6.x (pre-shim) surface.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
3
- * @license AGPL-3.0-or-later
3
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
4
4
  */
5
5
  import type { DispatcherContext, ToolSpec } from "./dispatch-context.js";
6
6
  export declare const symbolsToolSpecs: ReadonlyArray<ToolSpec<DispatcherContext>>;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
3
- * @license AGPL-3.0-or-later
3
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
4
4
  */
5
5
  import type { DispatcherContext, ToolSpec } from "./dispatch-context.js";
6
6
  export declare const syncopsToolSpecs: ReadonlyArray<ToolSpec<DispatcherContext>>;
@@ -15,7 +15,7 @@
15
15
  * behavior cannot drift because they are one value.
16
16
  *
17
17
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
18
- * @license AGPL-3.0-or-later
18
+ * @license Proprietary — (c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
19
19
  */
20
20
  import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
21
21
  import type Database from 'better-sqlite3';
@@ -104,7 +104,7 @@ export interface GoalsContext {
104
104
  * monolith drain) can split this union per domain once every consumer is
105
105
  * registry-resident. WyrmDB satisfies it structurally (`store: db`).
106
106
  */
107
- export type WyrmStore = Pick<WyrmDB, 'getProject' | 'getProjectById' | 'getAllProjects' | 'registerProject' | 'addQuest' | 'updateQuest' | 'updateQuestFields' | 'findQuestBySpecSignature' | 'upsertSpec' | 'getAllPendingQuests' | 'getTodaySession' | 'createSession' | 'updateSession' | 'archiveOldSessions' | 'searchSessions' | 'searchQuests' | 'searchData' | 'searchSkills'>;
107
+ export type WyrmStore = Pick<WyrmDB, 'getProject' | 'getProjectById' | 'getAllProjects' | 'registerProject' | 'addQuest' | 'updateQuest' | 'updateQuestFields' | 'findQuestBySpecSignature' | 'upsertSpec' | 'getAllPendingQuests' | 'getTodaySession' | 'createSession' | 'updateSession' | 'archiveOldSessions' | 'searchSessions' | 'searchQuests' | 'searchData' | 'searchArtifacts' | 'searchSkills' | 'getContinuity' | 'updateContinuity'>;
108
108
  /** The in-memory read-cache capability (performance.ts `cache`) handlers use
109
109
  * to publish/invalidate READ_ONLY_TOOLS responses. Keys follow the dispatcher
110
110
  * convention `${toolName}:${JSON.stringify(args)}` (the resolved call). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"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"}
package/dist/harvest.d.ts CHANGED
@@ -14,7 +14,7 @@
14
14
  * extraction logic is unit-testable without a database.
15
15
  *
16
16
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
17
- * @license AGPL-3.0-or-laterdual-licensed; commercial terms: ghosts.lk@proton.me. See LICENSE.
17
+ * @license Proprietary(c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
18
18
  */
19
19
  export type HarvestKind = 'lesson' | 'pattern' | 'anti_pattern';
20
20
  export interface HarvestItem {
package/dist/hours.d.ts CHANGED
@@ -14,7 +14,7 @@
14
14
  * report so the operator can review and correct.
15
15
  *
16
16
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
17
- * @license AGPL-3.0-or-laterdual-licensed; commercial terms: ghosts.lk@proton.me. See LICENSE.
17
+ * @license Proprietary(c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
18
18
  */
19
19
  import type Database from 'better-sqlite3';
20
20
  export interface SessionRow {
@@ -2,7 +2,7 @@
2
2
  * Wyrm HTTP Authentication - Secure API access control
3
3
  *
4
4
  * @copyright 2026 Ghost Protocol (Pvt) Ltd.
5
- * @license AGPL-3.0-or-laterdual-licensed; commercial terms: ghosts.lk@proton.me. See LICENSE.
5
+ * @license Proprietary(c) 2026 Ghost Protocol (Pvt) Ltd. All rights reserved. See LICENSE.
6
6
  * @module http-auth
7
7
  * @version 3.0.0
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"http-fast.d.ts","sourceRoot":"","sources":["../src/http-fast.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AA+/BxB,QAAA,MAAM,MAAM,sEA2HV,CAAC;AA+BH,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"http-fast.d.ts","sourceRoot":"","sources":["../src/http-fast.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AA4oCxB,QAAA,MAAM,MAAM,sEA4IV,CAAC;AA+BH,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/dist/http-fast.js CHANGED
@@ -1,31 +1,31 @@
1
1
  #!/usr/bin/env node
2
- import Q from"http";import{WyrmDB as F}from"./database.js";import{cache as E,estimateTokens as X,truncateToTokens as K,timed as H}from"./performance.js";import{authMiddleware as z,getAuthStatus as D,getSecurityHeaders as L}from"./http-auth.js";import{WyrmLogger as V}from"./logger.js";import{sanitizeFtsQuery as W,validateProjectPath as Z}from"./security.js";import{readFileSync as R,existsSync as y,readdirSync as tt,realpathSync as G}from"fs";import{homedir as et}from"os";import{dirname as U,join as _}from"path";import{fileURLToPath as rt}from"url";const x=_(U(rt(import.meta.url)),"..","ui","dragon-mark.svg");let v=null;import{getUIDashboardHTML as nt}from"./ui-dashboard.js";import{verifyLicense as B}from"./license.js";import{MemoryArtifacts as st}from"./memory-artifacts.js";import{GroundTruths as ot,computeStaleness as at}from"./intelligence.js";import{FailurePatterns as ct}from"./failure-patterns.js";import{handleDaemonWrite as it}from"./daemon-write-endpoint.js";import{retryableWriteCause as ut,busyErrorBody as lt}from"./sqlite-busy.js";import{sseFrame as dt,resolveStartCursor as Y,SSE_KEEPALIVE as mt}from"./events-sse.js";import{readonlyBlocks as pt}from"./readonly-gate.js";import{resolveActorEnvelope as ft,runWithActor as Et}from"./handlers/boundary.js";const C=parseInt(process.env.WYRM_PORT||"3333")||3333,T=process.env.WYRM_UI_READONLY==="1",ht=512*1024,b=500,St=parseInt(process.env.WYRM_MAX_SSE_STREAMS||"64",10)||64,_t=parseInt(process.env.WYRM_MAX_SSE_PER_IP||"8",10)||8;let N=0;const O=new Map;let g=null,j=null,M=null,I=null;function o(){return g||(g=new F(process.env.WYRM_DB_PATH)),g}function yt(){return j||(j=new st(o().getDatabase())),j}function Tt(){return M||(M=new ot(o().getDatabase())),M}function Ot(){return I||(I=new ct(o().getDatabase())),I}function gt(t){const e=g;g=t,j=null,M=null,I=null;try{e?.close()}catch{}}function $(){const t=[],e=et(),r=new Set;let n=[];try{n=tt(e)}catch{return t}n.sort((s,a)=>a.localeCompare(s));for(const s of n){if(s!==".wyrm"&&!s.startsWith(".wyrm-"))continue;let a;try{a=G(_(e,s))}catch{continue}if(r.has(a))continue;const u=_(a,"wyrm.db");if(!y(u))continue;r.add(a);let c="Local",i="free";try{const m=_(a,"license.json");if(y(m)){const d=JSON.parse(R(m,"utf-8")),p=B(d);c=d.license&&d.license.issued_to||c,i=p.valid?p.tier:"free"}else{const d=_(a,"cloud.json");y(d)&&(c=JSON.parse(R(d,"utf-8")).email||c)}}catch{}const l=s.replace(/^\.wyrm-?/,"")||"default";t.push({name:l,dbPath:u,account:c,tier:i})}return t}const A=new V({level:"info"});function S(t,e,r){const n=Number.parseInt(String(t??""),10);return!Number.isFinite(n)||n<1?e:Math.min(n,r)}function P(t){const e=t==null?"":String(t);if(e)return o().getProject(e)||o().getProjectByName(e)}function h(t,e,r,n=200){const s=JSON.stringify(r),a=L(e);t.writeHead(n,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s),"X-Tokens":String(X(r)),...a}),t.end(s)}function Rt(t,e,r){const n=L(e);t.writeHead(200,{...n,"Content-Type":"text/html; charset=utf-8","Content-Length":Buffer.byteLength(r),"Cache-Control":"no-store"}),t.end(r)}function vt(t){return new Promise((e,r)=>{if(t.method==="GET"){e({});return}let n="",s=0;t.on("data",a=>{if(s+=a.length,s>ht){t.destroy(),r(new Error("Request body too large"));return}n+=a}),t.on("end",()=>{try{e(n?JSON.parse(n):{})}catch{r(new Error("Invalid JSON"))}}),t.on("error",r)})}const J={"GET /c":t=>{const e=`ctx:${t.p||"global"}`,r=E.get(e);if(r)return r;const n=t.p;let s;if(n){const a=o().getProject(n);if(!a)return{e:"not found"};const u=o().getPendingQuests(a.id),c=o().getRecentSessions(a.id,3);s={n:a.name,s:a.stack,q:u.length,qt:u.slice(0,5).map(i=>i.title),r:c[0]?.summary||c[0]?.notes?.slice(0,200)||null}}else{const a=o().getAllProjects(20),u=o().getAllPendingQuests();s={p:a.map(c=>({n:c.name,s:c.stack,q:o().getPendingQuests(c.id).length})),tq:u.length}}return E.set(e,s),s},"GET /p":()=>{const t=E.get("projects");if(t)return t;const r=o().getAllProjects(50).map(n=>({i:n.id,n:n.name,p:n.path,s:n.stack}));return E.set("projects",r),r},"POST /scan":t=>{const e=t.d||t.directory||process.env.HOME+"/Git Projects",r=Z(e);return r?(E.invalidate(),{found:o().scanForProjects(r,!0).length}):{e:"path not allowed"}},"GET /q":t=>{const e=t.p;if(e){const r=o().getProject(e);return r?o().getPendingQuests(r.id).map(n=>({i:n.id,t:n.title,p:n.priority[0]})):{e:"not found"}}return o().getAllPendingQuests().slice(0,20).map(r=>({i:r.id,t:r.title,p:r.priority[0]}))},"POST /q":t=>{const e=t.p,r=o().getProject(e);return r?(E.invalidate("ctx"),{i:o().addQuest(r.id,t.t,t.d,t.pr||"medium").id}):{e:"not found"}},"POST /qc":t=>{const e=typeof t.i=="number"?t.i:parseInt(String(t.i),10);return!e||e<1?{e:"id required"}:(E.invalidate("ctx"),o().updateQuest(e,"completed"),{ok:1})},"POST /s":t=>{const e=t.p;let r=o().getProject(e);if(r||(o().scanForProjects(e,!1),r=o().getProject(e)),!r)return{e:"not found"};let n=o().getTodaySession(r.id);return n||(n=o().createSession(r.id,{objectives:t.o||"",notes:""})),E.invalidate("ctx"),{i:n.id,d:n.date}},"POST /su":t=>{const e=t.i;return E.invalidate("ctx"),o().updateSession(e,{notes:t.n,summary:t.s,completed:t.c}),{ok:1}},"POST /x":t=>{const e=t.p,r=o().getProject(e);return r?(o().setContext(r.id,t.k,t.v),E.invalidate("ctx"),{ok:1}):{e:"not found"}},"GET /x":t=>{const e=t.p,r=o().getProject(e);return r?o().getAllContext(r.id):{e:"not found"}},"POST /g":t=>{const e=t.k,r=t.v;return!e||typeof e!="string"?{e:"k (key) required"}:r==null?{e:"v (value) required"}:(o().setGlobalContext(e,String(r)),E.invalidate(),{ok:1})},"GET /g":()=>o().getAllGlobalContext(),"GET /s":t=>{const e=t.q;if(!e)return{e:"query required"};const r=W(e);return{q:o().searchQuests(r).slice(0,5).map(s=>({i:s.id,t:s.title})),s:o().searchSessions(r).slice(0,3).map(s=>({i:s.id,d:s.date})),p:o().searchProjects(r).slice(0,3).map(s=>({n:s.name,p:s.path}))}},"POST /d":t=>{const e=t.p,r=o().getProject(e);return r?{i:o().insertData(r.id,t.c,t.k,t.v,t.m).id}:{e:"not found"}},"GET /d":t=>{const e=t.p,r=o().getProject(e);if(!r)return{e:"not found"};const n=S(t.l,20,100);return o().queryData(r.id,t.c,n).map(s=>({k:s.key,v:K(s.value,100)}))},"GET /d/agg":t=>{const e=t.p,r=o().getProject(e);if(!r)return{e:"not found"};const n=t.c;if(!n)return{e:"c (category) required"};const s=t.stack_key,a=t.scanner,u=S(t.l,1e3,1e4),c={};for(const i of o().queryData(r.id,n,u)){let l;try{l=JSON.parse(i.value)}catch{continue}if(s&&l.stack_key!==s||a&&l.scanner!==a)continue;const m=String(l.scanner??""),d=String(l.payload_hash??"");if(!m||!d)continue;const p=`${m}:${d}`,f=c[p]??{s:m,ph:d,sk:String(l.stack_key??""),h:0,t:0};f.t+=1,l.hit&&(f.h+=1),c[p]=f}return Object.values(c).map(i=>({...i,r:i.t>0?i.h/i.t:0})).sort((i,l)=>l.r-i.r||l.h-i.h)},"POST /batch":t=>{const e=t.ops;if(!e||!Array.isArray(e))return{e:"ops required"};if(e.length>b)return{e:`max ${b} ops per batch`};const r=performance.now();return{r:e.map(s=>{const a=`${s.m} ${s.r}`,u=J[a];if(!u)return{e:"unknown"};try{return{d:u(s.a||{})}}catch{return{e:"op failed"}}}),ms:Math.round(performance.now()-r)}},"POST /write":t=>it({db:o(),artifacts:yt(),truths:Tt(),failures:Ot()},t),"GET /syms":t=>{const e=String(t.q??"").slice(0,200);if(!e)return[];const r=S(t.limit,20,200),n=o().getDatabase();try{return n.prepare(`
2
+ import V from"http";import{WyrmDB as H}from"./database.js";import{cache as h,estimateTokens as z,truncateToTokens as Z,timed as G}from"./performance.js";import{authMiddleware as tt,getAuthStatus as D,getSecurityHeaders as L}from"./http-auth.js";import{WyrmLogger as et}from"./logger.js";import{sanitizeFtsQuery as W,validateProjectPath as rt}from"./security.js";import{readFileSync as R,existsSync as S,readdirSync as nt,realpathSync as U}from"fs";import{homedir as st}from"os";import{dirname as x,join as y}from"path";import{fileURLToPath as ot}from"url";const B=y(x(ot(import.meta.url)),"..","ui","dragon-mark.svg");let v=null;import{getUIDashboardHTML as at}from"./ui-dashboard.js";import{verifyLicense as Y}from"./license.js";import{MemoryArtifacts as ct}from"./memory-artifacts.js";import{createVectorStore as it}from"./vectors.js";import{GroundTruths as lt,computeStaleness as ut}from"./intelligence.js";import{FailurePatterns as dt}from"./failure-patterns.js";import{handleDaemonWrite as mt}from"./daemon-write-endpoint.js";import{retryableWriteCause as $,busyErrorBody as q}from"./sqlite-busy.js";import{sseFrame as pt,resolveStartCursor as J,SSE_KEEPALIVE as ft}from"./events-sse.js";import{readonlyBlocks as Et}from"./readonly-gate.js";import{resolveActorEnvelope as ht,runWithActor as _t}from"./handlers/boundary.js";const C=parseInt(process.env.WYRM_PORT||"3333")||3333,T=process.env.WYRM_UI_READONLY==="1",yt=512*1024,j=500,St=parseInt(process.env.WYRM_MAX_SSE_STREAMS||"64",10)||64,Tt=parseInt(process.env.WYRM_MAX_SSE_PER_IP||"8",10)||8;let k=0;const O=new Map;let g=null,b=null,M=null,I=null;function o(){return g||(g=new H(process.env.WYRM_DB_PATH)),g}function A(){if(!b){b=new ct(o().getDatabase());try{const t=process.env.WYRM_VECTOR_PROVIDER||"auto";t!=="none"&&b.setVectorStore(it({provider:t},o().getDatabase()))}catch{}}return b}function Ot(){return M||(M=new lt(o().getDatabase())),M}function gt(){return I||(I=new dt(o().getDatabase())),I}function Rt(t){const e=g;g=t,b=null,M=null,I=null;try{e?.close()}catch{}}function Q(){const t=[],e=st(),r=new Set;let n=[];try{n=nt(e)}catch{return t}n.sort((s,a)=>a.localeCompare(s));for(const s of n){if(s!==".wyrm"&&!s.startsWith(".wyrm-"))continue;let a;try{a=U(y(e,s))}catch{continue}if(r.has(a))continue;const l=y(a,"wyrm.db");if(!S(l))continue;r.add(a);let c="Local",i="free";try{const p=y(a,"license.json");if(S(p)){const d=JSON.parse(R(p,"utf-8")),m=Y(d);c=d.license&&d.license.issued_to||c,i=m.valid?m.tier:"free"}else{const d=y(a,"cloud.json");S(d)&&(c=JSON.parse(R(d,"utf-8")).email||c)}}catch{}const u=s.replace(/^\.wyrm-?/,"")||"default";t.push({name:u,dbPath:l,account:c,tier:i})}return t}const N=new et({level:"info"});function _(t,e,r){const n=Number.parseInt(String(t??""),10);return!Number.isFinite(n)||n<1?e:Math.min(n,r)}function P(t){const e=t==null?"":String(t);if(e)return o().getProject(e)||o().getProjectByName(e)}function E(t,e,r,n=200){const s=JSON.stringify(r),a=L(e);t.writeHead(n,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s),"X-Tokens":String(z(r)),...a}),t.end(s)}function vt(t,e,r){const n=L(e);t.writeHead(200,{...n,"Content-Type":"text/html; charset=utf-8","Content-Length":Buffer.byteLength(r),"Cache-Control":"no-store"}),t.end(r)}function bt(t){return new Promise((e,r)=>{if(t.method==="GET"){e({});return}let n="",s=0;t.on("data",a=>{if(s+=a.length,s>yt){t.destroy(),r(new Error("Request body too large"));return}n+=a}),t.on("end",()=>{try{e(n?JSON.parse(n):{})}catch{r(new Error("Invalid JSON"))}}),t.on("error",r)})}const X={"GET /c":t=>{const e=`ctx:${t.p||"global"}`,r=h.get(e);if(r)return r;const n=t.p;let s;if(n){const a=o().getProject(n);if(!a)return{e:"not found"};const l=o().getPendingQuests(a.id),c=o().getRecentSessions(a.id,3);s={n:a.name,s:a.stack,q:l.length,qt:l.slice(0,5).map(i=>i.title),r:c[0]?.summary||c[0]?.notes?.slice(0,200)||null}}else{const a=o().getAllProjects(20),l=o().getAllPendingQuests();s={p:a.map(c=>({n:c.name,s:c.stack,q:o().getPendingQuests(c.id).length})),tq:l.length}}return h.set(e,s),s},"GET /p":()=>{const t=h.get("projects");if(t)return t;const r=o().getAllProjects(50).map(n=>({i:n.id,n:n.name,p:n.path,s:n.stack}));return h.set("projects",r),r},"POST /scan":t=>{const e=t.d||t.directory||process.env.HOME+"/Git Projects",r=rt(e);return r?(h.invalidate(),{found:o().scanForProjects(r,!0).length}):{e:"path not allowed"}},"GET /q":t=>{const e=t.p;if(e){const r=o().getProject(e);return r?o().getPendingQuests(r.id).map(n=>({i:n.id,t:n.title,p:n.priority[0]})):{e:"not found"}}return o().getAllPendingQuests().slice(0,20).map(r=>({i:r.id,t:r.title,p:r.priority[0]}))},"POST /q":t=>{const e=t.p,r=o().getProject(e);return r?(h.invalidate("ctx"),{i:o().addQuest(r.id,t.t,t.d,t.pr||"medium").id}):{e:"not found"}},"POST /qc":t=>{const e=typeof t.i=="number"?t.i:parseInt(String(t.i),10);return!e||e<1?{e:"id required"}:(h.invalidate("ctx"),o().updateQuest(e,"completed"),{ok:1})},"POST /s":t=>{const e=t.p;let r=o().getProject(e);if(r||(o().scanForProjects(e,!1),r=o().getProject(e)),!r)return{e:"not found"};let n=o().getTodaySession(r.id);return n||(n=o().createSession(r.id,{objectives:t.o||"",notes:""})),h.invalidate("ctx"),{i:n.id,d:n.date}},"POST /su":t=>{const e=t.i;return h.invalidate("ctx"),o().updateSession(e,{notes:t.n,summary:t.s,completed:t.c}),{ok:1}},"POST /x":t=>{const e=t.p,r=o().getProject(e);return r?(o().setContext(r.id,t.k,t.v),h.invalidate("ctx"),{ok:1}):{e:"not found"}},"GET /x":t=>{const e=t.p,r=o().getProject(e);return r?o().getAllContext(r.id):{e:"not found"}},"POST /g":t=>{const e=t.k,r=t.v;return!e||typeof e!="string"?{e:"k (key) required"}:r==null?{e:"v (value) required"}:(o().setGlobalContext(e,String(r)),h.invalidate(),{ok:1})},"GET /g":()=>o().getAllGlobalContext(),"GET /s":t=>{const e=t.q;if(!e)return{e:"query required"};const r=W(e);return{q:o().searchQuests(r).slice(0,5).map(s=>({i:s.id,t:s.title})),s:o().searchSessions(r).slice(0,3).map(s=>({i:s.id,d:s.date})),p:o().searchProjects(r).slice(0,3).map(s=>({n:s.name,p:s.path}))}},"POST /d":t=>{const e=t.p,r=o().getProject(e);return r?{i:o().insertData(r.id,t.c,t.k,t.v,t.m).id}:{e:"not found"}},"GET /d":t=>{const e=t.p,r=o().getProject(e);if(!r)return{e:"not found"};const n=_(t.l,20,100);return o().queryData(r.id,t.c,n).map(s=>({k:s.key,v:Z(s.value,100)}))},"GET /d/agg":t=>{const e=t.p,r=o().getProject(e);if(!r)return{e:"not found"};const n=t.c;if(!n)return{e:"c (category) required"};const s=t.stack_key,a=t.scanner,l=_(t.l,1e3,1e4),c={};for(const i of o().queryData(r.id,n,l)){let u;try{u=JSON.parse(i.value)}catch{continue}if(s&&u.stack_key!==s||a&&u.scanner!==a)continue;const p=String(u.scanner??""),d=String(u.payload_hash??"");if(!p||!d)continue;const m=`${p}:${d}`,f=c[m]??{s:p,ph:d,sk:String(u.stack_key??""),h:0,t:0};f.t+=1,u.hit&&(f.h+=1),c[m]=f}return Object.values(c).map(i=>({...i,r:i.t>0?i.h/i.t:0})).sort((i,u)=>u.r-i.r||u.h-i.h)},"POST /batch":t=>{const e=t.ops;if(!e||!Array.isArray(e))return{e:"ops required"};if(e.length>j)return{e:`max ${j} ops per batch`};const r=performance.now();return{r:e.map(s=>{const a=`${s.m} ${s.r}`,l=X[a];if(!l)return{e:"unknown"};try{return{d:l(s.a||{})}}catch{return{e:"op failed"}}}),ms:Math.round(performance.now()-r)}},"POST /write":t=>mt({db:o(),artifacts:A(),truths:Ot(),failures:gt()},t),"GET /syms":t=>{const e=String(t.q??"").slice(0,200);if(!e)return[];const r=_(t.limit,20,200),n=o().getDatabase();try{return n.prepare(`
3
3
  SELECT symbol, kind, language, file_path, line, signature, project_id
4
4
  FROM symbol_index
5
5
  WHERE symbol LIKE ?
6
6
  ORDER BY project_id, file_path, line
7
7
  LIMIT ?
8
- `).all(`%${e}%`,r)}catch{return[]}},"GET /failures":t=>{const e=String(t.target??"").slice(0,200),r=S(t.limit,10,100),n=o().getDatabase();try{return n.prepare(`
8
+ `).all(`%${e}%`,r)}catch{return[]}},"GET /failures":t=>{const e=String(t.target??"").slice(0,200),r=_(t.limit,10,100),n=o().getDatabase();try{return n.prepare(`
9
9
  SELECT id, scope, target, description, why_failed, occurrences,
10
10
  severity, last_seen
11
11
  FROM failure_patterns
12
12
  WHERE resolved = 0 AND (target = ? OR target LIKE ?)
13
13
  ORDER BY occurrences DESC, last_seen DESC
14
14
  LIMIT ?
15
- `).all(e,`%${e}%`,r)}catch{return[]}},"GET /truths":t=>{const e=String(t.q??"").slice(0,200),r=S(t.limit,5,50);if(!e)return[];const n=o().getDatabase();try{return n.prepare(`
15
+ `).all(e,`%${e}%`,r)}catch{return[]}},"GET /truths":t=>{const e=String(t.q??"").slice(0,200),r=_(t.limit,5,50);if(!e)return[];const n=o().getDatabase();try{return n.prepare(`
16
16
  SELECT category, key, value, rationale, confidence, ttl_days
17
17
  FROM ground_truths
18
18
  WHERE is_current = 1
19
19
  AND (key LIKE ? OR value LIKE ? OR rationale LIKE ?)
20
20
  ORDER BY confidence DESC
21
21
  LIMIT ?
22
- `).all(`%${e}%`,`%${e}%`,`%${e}%`,r)}catch{return[]}},"GET /audit":t=>{const e=S(t.limit,50,500),r=t.kind,n=o().getDatabase();try{return r?n.prepare("SELECT * FROM audit_log WHERE event_kind = ? ORDER BY id DESC LIMIT ?").all(r,e):n.prepare("SELECT * FROM audit_log ORDER BY id DESC LIMIT ?").all(e)}catch{return[]}},"GET /sync/push":t=>{const e=t.since,r=S(t.limit,500,5e3),n=o().getDatabase(),s=[],a=e??"1970-01-01",u=[["session","sessions","created_at"],["quest","quests","created_at"],["truth","ground_truths","updated_at"],["artifact","memory_artifacts","last_accessed_at"],["edge","decision_edges","created_at"]],c=(()=>{try{return n.prepare("PRAGMA table_info(projects)").all().some(l=>l.name==="sync_policy")?"AND (project_id IS NULL OR project_id IN (SELECT id FROM projects WHERE sync_policy = 'team'))":""}catch{return""}})();for(const[i,l,m]of u){if(s.length>=r)break;try{const d=n.prepare(`SELECT * FROM ${l}
23
- WHERE is_shared = 1 ${c} AND ${m} > ?
24
- ORDER BY ${m} ASC
25
- LIMIT ?`).all(a,Math.max(1,r-s.length));for(const p of d)s.push({kind:i,id:p.id,project_id:p.project_id??null,updated_at:p[m]??null,payload:p})}catch{}}return{rows:s,count:s.length,cursor:new Date().toISOString()}},"GET /events":t=>{if(!o().liveMemoryEnabled())return{e:"live memory disabled",disabled:1};const e=P(t.project??t.p);if(!e)return{e:"not found"};const r=Y(void 0,t.since),n=S(t.limit??t.l,100,1e3),a=t.shared==="1"||t.shared==="true"?o().eventsForPush(e.id,r,n):o().eventsSince(e.id,r,n),u=a.length?a[a.length-1].cursor:r;return{project:e.name,cursor:u,count:a.length,events:a}},"POST /events":t=>{if(!o().liveMemoryEnabled())return{e:"live memory disabled",disabled:1};const e=P(t.project??t.p);if(!e)return{e:"not found"};const r=Array.isArray(t.events)?t.events:t.event?[t.event]:[];if(r.length===0)return{e:"events[] required"};if(r.length>b)return{e:`max ${b} events per request`};let n=0,s=0,a=0;for(const u of r){const c=o().ingestRemoteEvent(e.id,u);c==="inserted"?n++:c==="echo"?a++:s++}return n>0&&E.invalidate("ctx"),{project:e.name,inserted:n,duplicate:s,echo:a}},"GET /stats":()=>{const{result:t,ms:e}=H(()=>o().getStats());return{...t,ms:e,cache:E.stats()}},"GET /health":()=>({ok:1,ts:Date.now()}),"GET /auth/status":()=>{const t=D();return{auth:t.requireAuth?1:0,origins:t.allowedOrigins.length}},"GET /ui/stats":()=>{const t=o().getDatabase(),e=t.prepare("SELECT COUNT(*) as c FROM projects").get().c,r=t.prepare("SELECT COUNT(*) as c FROM sessions").get().c,n=t.prepare("SELECT COUNT(*) as c FROM quests WHERE status IN ('pending','in_progress')").get().c,s=t.prepare("SELECT COUNT(*) as c FROM data_lake").get().c,a=t.prepare("SELECT COUNT(*) as c FROM memory_artifacts WHERE needs_review = 0").get().c,u=t.prepare("SELECT COUNT(*) as c FROM memory_artifacts WHERE needs_review = 1").get().c,c=t.prepare("SELECT COUNT(*) as c FROM ground_truths WHERE is_current = 1").get().c,i=t.prepare(`
22
+ `).all(`%${e}%`,`%${e}%`,`%${e}%`,r)}catch{return[]}},"GET /routing":t=>{const e=String(t.task_type??t.t??"").slice(0,200).trim();if(!e)return{e:"task_type required"};const r=_(t.limit,10,100);let n;const s=t.p;if(s){const c=o().getProject(s);if(!c)return{e:"not found"};n=c.id}const a=t.since_days!=null?Number(t.since_days):void 0;return o().recallRouting(e,{projectId:n,limit:r,sinceDays:Number.isFinite(a)?a:void 0}).map(c=>({m:c.model_id,tools:c.tool_names,runs:c.runs,ok:c.successes,fail:c.failures,rate:Math.round(c.success_rate*1e3)/1e3,ms:c.avg_latency_ms,last:c.last_ts}))},"POST /routing":t=>{const e=String(t.task_type??"").slice(0,200).trim(),r=String(t.model_id??"").slice(0,200).trim();if(!e)return{e:"task_type required"};if(!r)return{e:"model_id required"};if(t.success===void 0||t.success===null)return{e:"success required"};let n;const s=t.p;if(s){const i=o().getProject(s);i&&(n=i.id)}const a=Array.isArray(t.tool_names)?t.tool_names.map(i=>String(i)):t.tool_names!=null?String(t.tool_names):null,l=t.latency_ms!=null?Number(t.latency_ms):null,c=t.success===!0||t.success===1||t.success==="1"||t.success==="true";try{return{i:o().recordRouting({projectId:n,taskType:e,modelId:r,toolNames:a,success:c,latencyMs:Number.isFinite(l)?l:null})}}catch(i){return{e:i.message}}},"GET /audit":t=>{const e=_(t.limit,50,500),r=t.kind,n=o().getDatabase();try{return r?n.prepare("SELECT * FROM audit_log WHERE event_kind = ? ORDER BY id DESC LIMIT ?").all(r,e):n.prepare("SELECT * FROM audit_log ORDER BY id DESC LIMIT ?").all(e)}catch{return[]}},"GET /sync/push":t=>{const e=t.since,r=_(t.limit,500,5e3),n=o().getDatabase(),s=[],a=e??"1970-01-01",l=[["session","sessions","created_at"],["quest","quests","created_at"],["truth","ground_truths","updated_at"],["artifact","memory_artifacts","last_accessed_at"],["edge","decision_edges","created_at"]],c=(()=>{try{return n.prepare("PRAGMA table_info(projects)").all().some(u=>u.name==="sync_policy")?"AND (project_id IS NULL OR project_id IN (SELECT id FROM projects WHERE sync_policy = 'team'))":""}catch{return""}})();for(const[i,u,p]of l){if(s.length>=r)break;try{const d=n.prepare(`SELECT * FROM ${u}
23
+ WHERE is_shared = 1 ${c} AND ${p} > ?
24
+ ORDER BY ${p} ASC
25
+ LIMIT ?`).all(a,Math.max(1,r-s.length));for(const m of d)s.push({kind:i,id:m.id,project_id:m.project_id??null,updated_at:m[p]??null,payload:m})}catch{}}return{rows:s,count:s.length,cursor:new Date().toISOString()}},"GET /events":t=>{if(!o().liveMemoryEnabled())return{e:"live memory disabled",disabled:1};const e=P(t.project??t.p);if(!e)return{e:"not found"};const r=J(void 0,t.since),n=_(t.limit??t.l,100,1e3),a=t.shared==="1"||t.shared==="true"?o().eventsForPush(e.id,r,n):o().eventsSince(e.id,r,n),l=a.length?a[a.length-1].cursor:r;return{project:e.name,cursor:l,count:a.length,events:a}},"POST /events":t=>{if(!o().liveMemoryEnabled())return{e:"live memory disabled",disabled:1};const e=P(t.project??t.p);if(!e)return{e:"not found"};const r=Array.isArray(t.events)?t.events:t.event?[t.event]:[];if(r.length===0)return{e:"events[] required"};if(r.length>j)return{e:`max ${j} events per request`};let n=0,s=0,a=0;for(const l of r){const c=o().ingestRemoteEvent(e.id,l);c==="inserted"?n++:c==="echo"?a++:s++}return n>0&&h.invalidate("ctx"),{project:e.name,inserted:n,duplicate:s,echo:a}},"GET /stats":()=>{const{result:t,ms:e}=G(()=>o().getStats());return{...t,ms:e,cache:h.stats()}},"GET /health":()=>({ok:1,ts:Date.now()}),"GET /auth/status":()=>{const t=D();return{auth:t.requireAuth?1:0,origins:t.allowedOrigins.length}},"GET /ui/stats":()=>{const t=o().getDatabase(),e=t.prepare("SELECT COUNT(*) as c FROM projects").get().c,r=t.prepare("SELECT COUNT(*) as c FROM sessions").get().c,n=t.prepare("SELECT COUNT(*) as c FROM quests WHERE status IN ('pending','in_progress')").get().c,s=t.prepare("SELECT COUNT(*) as c FROM data_lake").get().c,a=t.prepare("SELECT COUNT(*) as c FROM memory_artifacts WHERE needs_review = 0").get().c,l=t.prepare("SELECT COUNT(*) as c FROM memory_artifacts WHERE needs_review = 1").get().c,c=t.prepare("SELECT COUNT(*) as c FROM ground_truths WHERE is_current = 1").get().c,i=t.prepare(`
26
26
  SELECT date, summary, objectives FROM sessions
27
27
  ORDER BY created_at DESC LIMIT 8
28
- `).all();return{projects:e,sessions:r,active_quests:n,data_points:s,artifacts:a,review_queue:u,truths:c,recent_sessions:i}},"GET /ui/memories":t=>{const e=o().getDatabase(),r=Math.max(1,parseInt(String(t.page||"1"),10)),n=Math.min(100,Math.max(1,parseInt(String(t.limit||"20"),10))),s=t.kind?String(t.kind):"",a=t.search?String(t.search):"",u=(r-1)*n;let c,i,l,m;if(a){const f=W(a);s?(c=`
28
+ `).all();return{projects:e,sessions:r,active_quests:n,data_points:s,artifacts:a,review_queue:l,truths:c,recent_sessions:i}},"GET /ui/memories":t=>{const e=o().getDatabase(),r=Math.max(1,parseInt(String(t.page||"1"),10)),n=Math.min(100,Math.max(1,parseInt(String(t.limit||"20"),10))),s=t.kind?String(t.kind):"",a=t.search?String(t.search):"",l=(r-1)*n;let c,i,u,p;if(a){const f=W(a);s?(c=`
29
29
  SELECT ma.*, p.name AS project_name
30
30
  FROM memory_artifacts ma
31
31
  JOIN memory_artifacts_fts fts ON fts.rowid = ma.id
@@ -36,7 +36,7 @@ import Q from"http";import{WyrmDB as F}from"./database.js";import{cache as E,est
36
36
  SELECT COUNT(*) as c FROM memory_artifacts ma
37
37
  JOIN memory_artifacts_fts fts ON fts.rowid = ma.id
38
38
  WHERE memory_artifacts_fts MATCH ? AND ma.kind = ?
39
- AND ma.supersedes_id IS NULL`,l=[f,s,n,u],m=[f,s]):(c=`
39
+ AND ma.supersedes_id IS NULL`,u=[f,s,n,l],p=[f,s]):(c=`
40
40
  SELECT ma.*, p.name AS project_name
41
41
  FROM memory_artifacts ma
42
42
  JOIN memory_artifacts_fts fts ON fts.rowid = ma.id
@@ -45,17 +45,17 @@ import Q from"http";import{WyrmDB as F}from"./database.js";import{cache as E,est
45
45
  ORDER BY ma.confidence DESC LIMIT ? OFFSET ?`,i=`
46
46
  SELECT COUNT(*) as c FROM memory_artifacts ma
47
47
  JOIN memory_artifacts_fts fts ON fts.rowid = ma.id
48
- WHERE memory_artifacts_fts MATCH ? AND ma.supersedes_id IS NULL`,l=[f,n,u],m=[f])}else s?(c=`
48
+ WHERE memory_artifacts_fts MATCH ? AND ma.supersedes_id IS NULL`,u=[f,n,l],p=[f])}else s?(c=`
49
49
  SELECT ma.*, p.name AS project_name
50
50
  FROM memory_artifacts ma
51
51
  LEFT JOIN projects p ON ma.project_id = p.id
52
52
  WHERE ma.kind = ? AND ma.supersedes_id IS NULL
53
- ORDER BY ma.confidence DESC LIMIT ? OFFSET ?`,i="SELECT COUNT(*) as c FROM memory_artifacts WHERE kind = ? AND supersedes_id IS NULL",l=[s,n,u],m=[s]):(c=`
53
+ ORDER BY ma.confidence DESC LIMIT ? OFFSET ?`,i="SELECT COUNT(*) as c FROM memory_artifacts WHERE kind = ? AND supersedes_id IS NULL",u=[s,n,l],p=[s]):(c=`
54
54
  SELECT ma.*, p.name AS project_name
55
55
  FROM memory_artifacts ma
56
56
  LEFT JOIN projects p ON ma.project_id = p.id
57
57
  WHERE ma.supersedes_id IS NULL
58
- ORDER BY ma.confidence DESC LIMIT ? OFFSET ?`,i="SELECT COUNT(*) as c FROM memory_artifacts WHERE supersedes_id IS NULL",l=[n,u],m=[]);const d=e.prepare(c).all(...l),p=e.prepare(i).get(...m).c;return{items:d,total:p,page:r,limit:n}},"GET /ui/quests":()=>{const e=o().getDatabase().prepare(`
58
+ ORDER BY ma.confidence DESC LIMIT ? OFFSET ?`,i="SELECT COUNT(*) as c FROM memory_artifacts WHERE supersedes_id IS NULL",u=[n,l],p=[]);const d=e.prepare(c).all(...u),m=e.prepare(i).get(...p).c;return{items:d,total:m,page:r,limit:n}},"GET /ui/quests":()=>{const e=o().getDatabase().prepare(`
59
59
  SELECT q.id, q.title, q.status, q.priority, p.name AS project_name
60
60
  FROM quests q
61
61
  LEFT JOIN projects p ON q.project_id = p.id
@@ -66,15 +66,16 @@ import Q from"http";import{WyrmDB as F}from"./database.js";import{cache as E,est
66
66
  LEFT JOIN projects p ON gt.project_id = p.id
67
67
  WHERE gt.is_current = 1
68
68
  ORDER BY gt.updated_at DESC LIMIT ? OFFSET ?
69
- `).all(n,s),u=e.prepare("SELECT COUNT(*) as c FROM ground_truths WHERE is_current = 1").get().c;return{items:a.map(i=>({...i,staleness:at(i)})),total:u,page:r,limit:n}},"GET /ui/review":()=>({items:o().getDatabase().prepare(`
69
+ `).all(n,s),l=e.prepare("SELECT COUNT(*) as c FROM ground_truths WHERE is_current = 1").get().c;return{items:a.map(i=>({...i,staleness:ut(i)})),total:l,page:r,limit:n}},"GET /ui/review":()=>({items:o().getDatabase().prepare(`
70
70
  SELECT ma.*, p.name AS project_name
71
71
  FROM memory_artifacts ma
72
72
  LEFT JOIN projects p ON ma.project_id = p.id
73
73
  WHERE ma.needs_review = 1
74
74
  ORDER BY ma.created_at DESC
75
- `).all()}),"GET /ui/account":()=>{const t=U(o().getDatabasePath());try{const e=_(t,"license.json");if(y(e)){const r=JSON.parse(R(e,"utf-8")),n=B(r);return{account:r.license&&r.license.issued_to||"unknown",tier:n.valid?n.tier:"free",valid:!!n.valid,expires:n.expiresAt||null,readonly:T}}}catch{}try{const e=_(t,"cloud.json");if(y(e))return{account:JSON.parse(R(e,"utf-8")).email||"Local",tier:"free",valid:!1,expires:null,readonly:T}}catch{}return{account:"Local",tier:"free",valid:!1,expires:null,readonly:T}},"GET /ui/impact":()=>{const t=o().getDatabase(),e=r=>{try{return t.prepare(r).get()?.n||0}catch{return 0}};return{failures_blocked:e("SELECT COALESCE(SUM(occurrences),0) AS n FROM failure_patterns"),tokens_saved:e("SELECT COALESCE(SUM(estimated_tokens),0) AS n FROM token_savings_log"),memories:e("SELECT COUNT(*) AS n FROM memory_artifacts WHERE supersedes_id IS NULL"),memories_week:e("SELECT COUNT(*) AS n FROM memory_artifacts WHERE created_at >= datetime('now','-7 days')"),truths:e("SELECT COUNT(*) AS n FROM ground_truths WHERE is_current = 1"),sessions:e("SELECT COUNT(*) AS n FROM sessions"),quests_completed:e("SELECT COUNT(*) AS n FROM quests WHERE status = 'completed'"),skills:e("SELECT COUNT(*) AS n FROM skills"),projects:e("SELECT COUNT(*) AS n FROM projects")}},"GET /ui/memory":t=>{const e=o().getDatabase(),r=parseInt(String(t&&t.id||"0"),10);if(!r)return{item:null};try{return{item:e.prepare(`SELECT ma.*, p.name AS project_name
75
+ `).all()}),"GET /ui/account":()=>{const t=x(o().getDatabasePath());try{const e=y(t,"license.json");if(S(e)){const r=JSON.parse(R(e,"utf-8")),n=Y(r);return{account:r.license&&r.license.issued_to||"unknown",tier:n.valid?n.tier:"free",valid:!!n.valid,expires:n.expiresAt||null,readonly:T}}}catch{}try{const e=y(t,"cloud.json");if(S(e))return{account:JSON.parse(R(e,"utf-8")).email||"Local",tier:"free",valid:!1,expires:null,readonly:T}}catch{}return{account:"Local",tier:"free",valid:!1,expires:null,readonly:T}},"GET /ui/impact":()=>{const t=o().getDatabase(),e=r=>{try{return t.prepare(r).get()?.n||0}catch{return 0}};return{failures_blocked:e("SELECT COALESCE(SUM(occurrences),0) AS n FROM failure_patterns"),tokens_saved:e("SELECT COALESCE(SUM(estimated_tokens),0) AS n FROM token_savings_log"),memories:e("SELECT COUNT(*) AS n FROM memory_artifacts WHERE supersedes_id IS NULL"),memories_week:e("SELECT COUNT(*) AS n FROM memory_artifacts WHERE created_at >= datetime('now','-7 days')"),truths:e("SELECT COUNT(*) AS n FROM ground_truths WHERE is_current = 1"),sessions:e("SELECT COUNT(*) AS n FROM sessions"),quests_completed:e("SELECT COUNT(*) AS n FROM quests WHERE status = 'completed'"),skills:e("SELECT COUNT(*) AS n FROM skills"),projects:e("SELECT COUNT(*) AS n FROM projects")}},"GET /ui/memory":t=>{const e=o().getDatabase(),r=parseInt(String(t&&t.id||"0"),10);if(!r)return{item:null};try{return{item:e.prepare(`SELECT ma.*, p.name AS project_name
76
76
  FROM memory_artifacts ma LEFT JOIN projects p ON ma.project_id = p.id
77
- WHERE ma.id = ?`).get(r)||null}}catch{return{item:null}}},"GET /ui/skills":()=>{const t=o().getDatabase();try{const e=t.prepare(`SELECT name, description, category, tier, usage_count, is_active
78
- FROM skills ORDER BY category COLLATE NOCASE, name COLLATE NOCASE`).all();return{items:e,total:e.length}}catch{return{items:[],total:0}}},"GET /ui/homes":()=>{const t=$();let e=o().getDatabasePath();try{e=G(e)}catch{}return{homes:t.map(r=>({...r,active:r.dbPath===e}))}},"POST /ui/switch":t=>{const e=String(t&&t.path||""),r=$().find(n=>n.dbPath===e);if(!r)return{ok:!1,error:"unknown home"};try{return gt(new F(r.dbPath)),{ok:!0,account:r.account,tier:r.tier}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}};function Lt(t,e,r){if(!o().liveMemoryEnabled()){h(e,t,{e:"live memory disabled",disabled:1},503);return}const n=P(r.project??r.p);if(!n){h(e,t,{e:"not found"},404);return}const s=t.socket.remoteAddress||"unknown";if(N>=St){h(e,t,{e:"too many concurrent streams",retry_after:5},503);return}if((O.get(s)??0)>=_t){h(e,t,{e:"too many concurrent streams from this client",retry_after:5},503);return}N++,O.set(s,(O.get(s)??0)+1);let a=Y(t.headers["last-event-id"],r.since);const c=!(s==="127.0.0.1"||s==="::1"||s==="::ffff:127.0.0.1")||r.shared==="1"||r.shared==="true";e.writeHead(200,{...L(t),"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}),e.write(`retry: 3000
77
+ WHERE ma.id = ?`).get(r)||null}}catch{return{item:null}}},"GET /ui/recall":async t=>{const e=t.search?String(t.search):t.q?String(t.q):"";if(!e)return{items:[],total:0};const r=_(t.limit,6,25),n=t.kind?String(t.kind):void 0,a=(await A().recallHybridGlobal(e,{limit:r,kind:n})).map(l=>({...l.artifact,relevance:Math.round(l.relevance_score*1e3)/1e3,match_type:l.match_type}));return{items:a,total:a.length}},"GET /ui/context":async t=>{const e=t.search?String(t.search):t.q?String(t.q):"";if(!e)return{context:"",items:[],total:0,tokens:0};const r=_(t.limit,10,25),n=_(t.budget,900,2400),s=await A().recallHybridGlobal(e,{limit:r}),a=[],l=[];let c=0;for(const i of s){const u=i.artifact,p=String(u.problem??u.title??u.summary??u.key??u.kind??"").trim(),d=String(u.validated_fix??u.content??u.body??u.value??u.problem??"").replace(/\s+/g," ").trim(),m=`- ${p}${d?": "+d.slice(0,320):""}`,f=Math.ceil(m.length/4);c+f<=n?(a.push(m),c+=f):a.push(`- ${p.slice(0,64)} \u2026 (recall for detail)`),l.push({...u,relevance:Math.round(i.relevance_score*1e3)/1e3,match_type:i.match_type})}return{context:a.join(`
78
+ `),tokens:c,items:l,total:l.length}},"GET /ui/skills":()=>{const t=o().getDatabase();try{const e=t.prepare(`SELECT name, description, category, tier, usage_count, is_active
79
+ FROM skills ORDER BY category COLLATE NOCASE, name COLLATE NOCASE`).all();return{items:e,total:e.length}}catch{return{items:[],total:0}}},"GET /ui/homes":()=>{const t=Q();let e=o().getDatabasePath();try{e=U(e)}catch{}return{homes:t.map(r=>({...r,active:r.dbPath===e}))}},"POST /ui/switch":t=>{const e=String(t&&t.path||""),r=Q().find(n=>n.dbPath===e);if(!r)return{ok:!1,error:"unknown home"};try{return Rt(new H(r.dbPath)),{ok:!0,account:r.account,tier:r.tier}}catch(n){return{ok:!1,error:n instanceof Error?n.message:String(n)}}}};function Lt(t,e,r){if(!o().liveMemoryEnabled()){E(e,t,{e:"live memory disabled",disabled:1},503);return}const n=P(r.project??r.p);if(!n){E(e,t,{e:"not found"},404);return}const s=t.socket.remoteAddress||"unknown";if(k>=St){E(e,t,{e:"too many concurrent streams",retry_after:5},503);return}if((O.get(s)??0)>=Tt){E(e,t,{e:"too many concurrent streams from this client",retry_after:5},503);return}k++,O.set(s,(O.get(s)??0)+1);let a=J(t.headers["last-event-id"],r.since);const c=!(s==="127.0.0.1"||s==="::1"||s==="::ffff:127.0.0.1")||r.shared==="1"||r.shared==="true";e.writeHead(200,{...L(t),"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}),e.write(`retry: 3000
79
80
 
80
- `);let i,l,m=!1;const d=()=>{if(m)return;m=!0,i&&clearInterval(i),l&&clearInterval(l),N--;const f=(O.get(s)??1)-1;f<=0?O.delete(s):O.set(s,f)},p=()=>{if(e.writableEnded){d();return}try{const f=c?o().eventsForPush(n.id,a,200):o().eventsSince(n.id,a,200);for(const k of f)a=k.cursor,e.write(dt(k))}catch{}};p(),i=setInterval(p,1e3),l=setInterval(()=>{try{e.write(mt)}catch{}},25e3),t.on("close",d),e.on("close",d),e.on("error",d)}const w=Q.createServer(async(t,e)=>{if(!z(t,e).error)try{const n=new URL(t.url||"/",`http://localhost:${C}`);if(T&&pt(t.method||"GET",n.pathname)){h(e,t,{e:"read-only mode",readonly:1},403);return}let s;try{s=await vt(t)}catch(d){if(d.message==="Invalid JSON"){h(e,t,{e:"Invalid JSON body"},400);return}throw d}if(n.searchParams.forEach((d,p)=>s[p]=d),t.method==="GET"&&n.pathname==="/dragon-mark.svg"){try{if(!v&&y(x)&&(v=R(x)),v){e.writeHead(200,{...L(t),"Content-Type":"image/svg+xml","Cache-Control":"public, max-age=86400","Content-Length":v.length}),e.end(v);return}}catch{}h(e,t,{e:"not found"},404);return}if(t.method==="GET"&&n.pathname==="/ui"){Rt(e,t,nt());return}if(t.method==="GET"&&n.pathname==="/events/stream"){Lt(t,e,s);return}const a=n.pathname.match(/^\/ui\/review\/(\d+)\/(approve|reject)$/);if(t.method==="POST"&&a){const d=parseInt(a[1],10),p=a[2],f=o().getDatabase();p==="approve"?f.prepare("UPDATE memory_artifacts SET needs_review = 0 WHERE id = ?").run(d):f.prepare("DELETE FROM memory_artifacts WHERE id = ?").run(d),h(e,t,{ok:!0});return}const u=`${t.method} ${n.pathname}`,c=J[u];if(!c){if(n.pathname==="/"){h(e,t,{wyrm:"3.0",auth:D().requireAuth?"required":"disabled",tip:"GET /c for quick context"});return}h(e,t,{e:"not found"},404);return}const i=ft({header:t.headers["wyrm-actor"]}),{result:l,ms:m}=H(()=>Et(i,()=>c(s)));e.setHeader("X-Time-Ms",String(m)),h(e,t,l)}catch(n){const s=ut(n);if(s!==null){const a=lt("http",s);e.setHeader("Retry-After",String(Math.ceil(a.error.retry_after_ms/1e3))),h(e,t,a,503);return}A.error("Fast API request failed",{path:t.url,error:n.message}),h(e,t,{e:"Internal server error"},500)}}),q=()=>{w.close(()=>{try{g?.close()}catch{}process.exit(0)})};process.on("SIGINT",q),process.on("SIGTERM",q);import{fileURLToPath as Ct}from"url";const bt=Ct(import.meta.url);if(process.argv[1]===bt){const t=process.env.WYRM_BIND_HOST||"127.0.0.1";w.listen(C,t,()=>{A.info("Wyrm Fast API started",{port:C,host:t}),console.log(`\u{F115D} Wyrm Fast API on ${t}:${C}`),console.log(` Auth: ${D().requireAuth?"required":"disabled"}`),T&&console.log(" Read-only: writes + off-box egress blocked (safe to expose)"),t!=="127.0.0.1"&&t!=="::1"&&t!=="localhost"&&(A.warn("Wyrm Fast API bound to a NON-loopback host \u2014 reachable beyond localhost; ensure auth is required",{host:t}),console.log(` \u26A0 bound to ${t}: reachable beyond localhost \u2014 make sure auth is required`),T||console.log(" \u26A0 not in read-only mode; set WYRM_UI_READONLY=1 for a public bind"))})}export{w as server};
81
+ `);let i,u,p=!1;const d=()=>{if(p)return;p=!0,i&&clearInterval(i),u&&clearInterval(u),k--;const f=(O.get(s)??1)-1;f<=0?O.delete(s):O.set(s,f)},m=()=>{if(e.writableEnded){d();return}try{const f=c?o().eventsForPush(n.id,a,200):o().eventsSince(n.id,a,200);for(const F of f)a=F.cursor,e.write(pt(F))}catch{}};m(),i=setInterval(m,1e3),u=setInterval(()=>{try{e.write(ft)}catch{}},25e3),t.on("close",d),e.on("close",d),e.on("error",d)}const w=V.createServer(async(t,e)=>{if(!tt(t,e).error)try{const n=new URL(t.url||"/",`http://localhost:${C}`);if(T&&Et(t.method||"GET",n.pathname)){E(e,t,{e:"read-only mode",readonly:1},403);return}let s;try{s=await bt(t)}catch(d){if(d.message==="Invalid JSON"){E(e,t,{e:"Invalid JSON body"},400);return}throw d}if(n.searchParams.forEach((d,m)=>s[m]=d),t.method==="GET"&&n.pathname==="/dragon-mark.svg"){try{if(!v&&S(B)&&(v=R(B)),v){e.writeHead(200,{...L(t),"Content-Type":"image/svg+xml","Cache-Control":"public, max-age=86400","Content-Length":v.length}),e.end(v);return}}catch{}E(e,t,{e:"not found"},404);return}if(t.method==="GET"&&n.pathname==="/ui"){vt(e,t,at());return}if(t.method==="GET"&&n.pathname==="/events/stream"){Lt(t,e,s);return}const a=n.pathname.match(/^\/ui\/review\/(\d+)\/(approve|reject)$/);if(t.method==="POST"&&a){const d=parseInt(a[1],10),m=a[2],f=o().getDatabase();m==="approve"?f.prepare("UPDATE memory_artifacts SET needs_review = 0 WHERE id = ?").run(d):f.prepare("DELETE FROM memory_artifacts WHERE id = ?").run(d),E(e,t,{ok:!0});return}const l=`${t.method} ${n.pathname}`,c=X[l];if(!c){if(n.pathname==="/"){E(e,t,{wyrm:"3.0",auth:D().requireAuth?"required":"disabled",tip:"GET /c for quick context"});return}E(e,t,{e:"not found"},404);return}const i=ht({header:t.headers["wyrm-actor"]}),{result:u,ms:p}=G(()=>_t(i,()=>c(s)));e.setHeader("X-Time-Ms",String(p)),u instanceof Promise?u.then(d=>E(e,t,d)).catch(d=>{const m=$(d);if(m!==null){const f=q("http",m);e.setHeader("Retry-After",String(Math.ceil(f.error.retry_after_ms/1e3))),E(e,t,f,503);return}N.error("Fast API request failed",{path:t.url,error:d.message}),E(e,t,{e:"Internal server error"},500)}):E(e,t,u)}catch(n){const s=$(n);if(s!==null){const a=q("http",s);e.setHeader("Retry-After",String(Math.ceil(a.error.retry_after_ms/1e3))),E(e,t,a,503);return}N.error("Fast API request failed",{path:t.url,error:n.message}),E(e,t,{e:"Internal server error"},500)}}),K=()=>{w.close(()=>{try{g?.close()}catch{}process.exit(0)})};process.on("SIGINT",K),process.on("SIGTERM",K);import{fileURLToPath as Ct}from"url";const jt=Ct(import.meta.url);if(process.argv[1]===jt){const t=process.env.WYRM_BIND_HOST||"127.0.0.1";w.listen(C,t,()=>{N.info("Wyrm Fast API started",{port:C,host:t}),console.log(`\u{F115D} Wyrm Fast API on ${t}:${C}`),console.log(` Auth: ${D().requireAuth?"required":"disabled"}`),T&&console.log(" Read-only: writes + off-box egress blocked (safe to expose)"),t!=="127.0.0.1"&&t!=="::1"&&t!=="localhost"&&(N.warn("Wyrm Fast API bound to a NON-loopback host \u2014 reachable beyond localhost; ensure auth is required",{host:t}),console.log(` \u26A0 bound to ${t}: reachable beyond localhost \u2014 make sure auth is required`),T||console.log(" \u26A0 not in read-only mode; set WYRM_UI_READONLY=1 for a public bind"))})}export{w as server};