@soleri/core 9.3.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/brain/intelligence.d.ts +5 -0
  2. package/dist/brain/intelligence.d.ts.map +1 -1
  3. package/dist/brain/intelligence.js +115 -26
  4. package/dist/brain/intelligence.js.map +1 -1
  5. package/dist/brain/learning-radar.d.ts +3 -3
  6. package/dist/brain/learning-radar.d.ts.map +1 -1
  7. package/dist/brain/learning-radar.js +8 -4
  8. package/dist/brain/learning-radar.js.map +1 -1
  9. package/dist/control/intent-router.d.ts +2 -2
  10. package/dist/control/intent-router.d.ts.map +1 -1
  11. package/dist/control/intent-router.js +35 -1
  12. package/dist/control/intent-router.js.map +1 -1
  13. package/dist/control/types.d.ts +10 -2
  14. package/dist/control/types.d.ts.map +1 -1
  15. package/dist/curator/curator.d.ts +4 -0
  16. package/dist/curator/curator.d.ts.map +1 -1
  17. package/dist/curator/curator.js +23 -1
  18. package/dist/curator/curator.js.map +1 -1
  19. package/dist/curator/schema.d.ts +1 -1
  20. package/dist/curator/schema.d.ts.map +1 -1
  21. package/dist/curator/schema.js +8 -0
  22. package/dist/curator/schema.js.map +1 -1
  23. package/dist/domain-packs/types.d.ts +6 -0
  24. package/dist/domain-packs/types.d.ts.map +1 -1
  25. package/dist/domain-packs/types.js +1 -0
  26. package/dist/domain-packs/types.js.map +1 -1
  27. package/dist/engine/module-manifest.d.ts +2 -0
  28. package/dist/engine/module-manifest.d.ts.map +1 -1
  29. package/dist/engine/module-manifest.js +117 -2
  30. package/dist/engine/module-manifest.js.map +1 -1
  31. package/dist/engine/register-engine.d.ts +9 -0
  32. package/dist/engine/register-engine.d.ts.map +1 -1
  33. package/dist/engine/register-engine.js +59 -1
  34. package/dist/engine/register-engine.js.map +1 -1
  35. package/dist/facades/types.d.ts +5 -1
  36. package/dist/facades/types.d.ts.map +1 -1
  37. package/dist/facades/types.js.map +1 -1
  38. package/dist/index.d.ts +6 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +5 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/operator/operator-context-store.d.ts +54 -0
  43. package/dist/operator/operator-context-store.d.ts.map +1 -0
  44. package/dist/operator/operator-context-store.js +434 -0
  45. package/dist/operator/operator-context-store.js.map +1 -0
  46. package/dist/operator/operator-context-types.d.ts +101 -0
  47. package/dist/operator/operator-context-types.d.ts.map +1 -0
  48. package/dist/operator/operator-context-types.js +27 -0
  49. package/dist/operator/operator-context-types.js.map +1 -0
  50. package/dist/packs/index.d.ts +2 -2
  51. package/dist/packs/index.d.ts.map +1 -1
  52. package/dist/packs/index.js +1 -1
  53. package/dist/packs/index.js.map +1 -1
  54. package/dist/packs/lockfile.d.ts +3 -0
  55. package/dist/packs/lockfile.d.ts.map +1 -1
  56. package/dist/packs/lockfile.js.map +1 -1
  57. package/dist/packs/types.d.ts +8 -2
  58. package/dist/packs/types.d.ts.map +1 -1
  59. package/dist/packs/types.js +6 -0
  60. package/dist/packs/types.js.map +1 -1
  61. package/dist/planning/plan-lifecycle.d.ts +12 -1
  62. package/dist/planning/plan-lifecycle.d.ts.map +1 -1
  63. package/dist/planning/plan-lifecycle.js +52 -19
  64. package/dist/planning/plan-lifecycle.js.map +1 -1
  65. package/dist/planning/planner-types.d.ts +6 -0
  66. package/dist/planning/planner-types.d.ts.map +1 -1
  67. package/dist/planning/planner.d.ts +21 -1
  68. package/dist/planning/planner.d.ts.map +1 -1
  69. package/dist/planning/planner.js +62 -3
  70. package/dist/planning/planner.js.map +1 -1
  71. package/dist/planning/task-complexity-assessor.d.ts +42 -0
  72. package/dist/planning/task-complexity-assessor.d.ts.map +1 -0
  73. package/dist/planning/task-complexity-assessor.js +132 -0
  74. package/dist/planning/task-complexity-assessor.js.map +1 -0
  75. package/dist/plugins/types.d.ts +18 -18
  76. package/dist/runtime/admin-ops.d.ts +1 -1
  77. package/dist/runtime/admin-ops.d.ts.map +1 -1
  78. package/dist/runtime/admin-ops.js +118 -3
  79. package/dist/runtime/admin-ops.js.map +1 -1
  80. package/dist/runtime/admin-setup-ops.d.ts.map +1 -1
  81. package/dist/runtime/admin-setup-ops.js +19 -9
  82. package/dist/runtime/admin-setup-ops.js.map +1 -1
  83. package/dist/runtime/capture-ops.d.ts.map +1 -1
  84. package/dist/runtime/capture-ops.js +35 -7
  85. package/dist/runtime/capture-ops.js.map +1 -1
  86. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  87. package/dist/runtime/facades/brain-facade.js +4 -2
  88. package/dist/runtime/facades/brain-facade.js.map +1 -1
  89. package/dist/runtime/facades/control-facade.d.ts.map +1 -1
  90. package/dist/runtime/facades/control-facade.js +8 -2
  91. package/dist/runtime/facades/control-facade.js.map +1 -1
  92. package/dist/runtime/facades/curator-facade.d.ts.map +1 -1
  93. package/dist/runtime/facades/curator-facade.js +13 -0
  94. package/dist/runtime/facades/curator-facade.js.map +1 -1
  95. package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
  96. package/dist/runtime/facades/memory-facade.js +10 -12
  97. package/dist/runtime/facades/memory-facade.js.map +1 -1
  98. package/dist/runtime/facades/orchestrate-facade.d.ts.map +1 -1
  99. package/dist/runtime/facades/orchestrate-facade.js +36 -1
  100. package/dist/runtime/facades/orchestrate-facade.js.map +1 -1
  101. package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
  102. package/dist/runtime/facades/plan-facade.js +20 -4
  103. package/dist/runtime/facades/plan-facade.js.map +1 -1
  104. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  105. package/dist/runtime/orchestrate-ops.js +109 -31
  106. package/dist/runtime/orchestrate-ops.js.map +1 -1
  107. package/dist/runtime/plan-feedback-helper.d.ts +21 -0
  108. package/dist/runtime/plan-feedback-helper.d.ts.map +1 -0
  109. package/dist/runtime/plan-feedback-helper.js +52 -0
  110. package/dist/runtime/plan-feedback-helper.js.map +1 -0
  111. package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
  112. package/dist/runtime/planning-extra-ops.js +73 -34
  113. package/dist/runtime/planning-extra-ops.js.map +1 -1
  114. package/dist/runtime/session-briefing.d.ts.map +1 -1
  115. package/dist/runtime/session-briefing.js +9 -1
  116. package/dist/runtime/session-briefing.js.map +1 -1
  117. package/dist/runtime/types.d.ts +3 -0
  118. package/dist/runtime/types.d.ts.map +1 -1
  119. package/dist/skills/sync-skills.d.ts.map +1 -1
  120. package/dist/skills/sync-skills.js +13 -7
  121. package/dist/skills/sync-skills.js.map +1 -1
  122. package/package.json +1 -1
  123. package/src/brain/brain-intelligence.test.ts +30 -0
  124. package/src/brain/extraction-quality.test.ts +323 -0
  125. package/src/brain/intelligence.ts +133 -30
  126. package/src/brain/learning-radar.ts +8 -5
  127. package/src/brain/second-brain-features.test.ts +1 -1
  128. package/src/control/intent-router.test.ts +73 -3
  129. package/src/control/intent-router.ts +38 -1
  130. package/src/control/types.ts +13 -2
  131. package/src/curator/curator.test.ts +92 -0
  132. package/src/curator/curator.ts +29 -1
  133. package/src/curator/schema.ts +8 -0
  134. package/src/domain-packs/types.ts +8 -0
  135. package/src/engine/module-manifest.test.ts +51 -2
  136. package/src/engine/module-manifest.ts +119 -2
  137. package/src/engine/register-engine.test.ts +73 -1
  138. package/src/engine/register-engine.ts +61 -1
  139. package/src/facades/types.ts +5 -0
  140. package/src/index.ts +30 -0
  141. package/src/operator/operator-context-store.test.ts +698 -0
  142. package/src/operator/operator-context-store.ts +569 -0
  143. package/src/operator/operator-context-types.ts +139 -0
  144. package/src/packs/index.ts +3 -1
  145. package/src/packs/lockfile.ts +3 -0
  146. package/src/packs/types.ts +9 -0
  147. package/src/planning/plan-lifecycle.ts +80 -22
  148. package/src/planning/planner-types.ts +6 -0
  149. package/src/planning/planner.ts +74 -4
  150. package/src/planning/task-complexity-assessor.test.ts +302 -0
  151. package/src/planning/task-complexity-assessor.ts +180 -0
  152. package/src/runtime/admin-ops.test.ts +159 -3
  153. package/src/runtime/admin-ops.ts +123 -3
  154. package/src/runtime/admin-setup-ops.ts +30 -10
  155. package/src/runtime/capture-ops.test.ts +84 -0
  156. package/src/runtime/capture-ops.ts +35 -7
  157. package/src/runtime/facades/admin-facade.test.ts +1 -1
  158. package/src/runtime/facades/brain-facade.ts +6 -3
  159. package/src/runtime/facades/control-facade.ts +10 -2
  160. package/src/runtime/facades/curator-facade.ts +18 -0
  161. package/src/runtime/facades/memory-facade.test.ts +14 -12
  162. package/src/runtime/facades/memory-facade.ts +10 -12
  163. package/src/runtime/facades/orchestrate-facade.ts +33 -1
  164. package/src/runtime/facades/plan-facade.test.ts +213 -0
  165. package/src/runtime/facades/plan-facade.ts +23 -4
  166. package/src/runtime/orchestrate-ops.test.ts +404 -0
  167. package/src/runtime/orchestrate-ops.ts +129 -37
  168. package/src/runtime/plan-feedback-helper.test.ts +173 -0
  169. package/src/runtime/plan-feedback-helper.ts +63 -0
  170. package/src/runtime/planning-extra-ops.test.ts +43 -1
  171. package/src/runtime/planning-extra-ops.ts +96 -33
  172. package/src/runtime/session-briefing.test.ts +1 -0
  173. package/src/runtime/session-briefing.ts +10 -1
  174. package/src/runtime/types.ts +3 -0
  175. package/src/skills/sync-skills.ts +14 -7
  176. package/src/vault/vault-scaling.test.ts +5 -5
  177. package/vitest.config.ts +1 -0
@@ -0,0 +1,434 @@
1
+ /**
2
+ * OperatorContextStore — persistence and compounding for the operator context
3
+ * signal taxonomy.
4
+ *
5
+ * Manages a single SQLite table (`operator_context`) and implements the
6
+ * compounding algorithms that blend per-session signals into a stable profile.
7
+ */
8
+ import { randomUUID } from 'node:crypto';
9
+ import { DECLINED_CATEGORIES, } from './operator-context-types.js';
10
+ // =============================================================================
11
+ // CONSTANTS
12
+ // =============================================================================
13
+ const DEFAULT_CONFIDENCE = 0.5;
14
+ /** Patterns that indicate the user is prohibiting / stopping something. */
15
+ const DONT_PATTERNS = /^(don't|do not|stop|never|no |avoid |quit )/i;
16
+ /** Patterns that indicate the user is reversing a previous prohibition. */
17
+ const DO_PATTERNS = /^(actually,? ?|you can |feel free |go ahead |it's fine |is fine |start )/i;
18
+ /** Regex to detect declined-category content in signal text fields. */
19
+ const DECLINED_RE = new RegExp(`\\b(${DECLINED_CATEGORIES.join('|')})\\b`, 'i');
20
+ // =============================================================================
21
+ // STORE
22
+ // =============================================================================
23
+ export class OperatorContextStore {
24
+ provider;
25
+ lastRendered = null;
26
+ constructor(provider) {
27
+ this.provider = provider;
28
+ this.init();
29
+ }
30
+ // ─── Initialization ─────────────────────────────────────────────────
31
+ init() {
32
+ this.provider.execSql(`
33
+ CREATE TABLE IF NOT EXISTS operator_context (
34
+ id TEXT PRIMARY KEY,
35
+ type TEXT NOT NULL,
36
+ key TEXT NOT NULL,
37
+ value TEXT NOT NULL,
38
+ confidence REAL DEFAULT 0.5,
39
+ scope TEXT DEFAULT 'global',
40
+ session_count INTEGER DEFAULT 1,
41
+ last_observed INTEGER NOT NULL,
42
+ created_at INTEGER NOT NULL,
43
+ active INTEGER DEFAULT 1
44
+ );
45
+
46
+ CREATE INDEX IF NOT EXISTS idx_operator_context_type
47
+ ON operator_context(type);
48
+
49
+ CREATE INDEX IF NOT EXISTS idx_operator_context_key
50
+ ON operator_context(type, key);
51
+ `);
52
+ }
53
+ // ─── Read ──────────────────────────────────────────────────────────
54
+ getContext() {
55
+ const rows = this.provider.all('SELECT * FROM operator_context WHERE active = 1 ORDER BY type, last_observed DESC');
56
+ const expertise = [];
57
+ const corrections = [];
58
+ const interests = [];
59
+ const patterns = [];
60
+ for (const row of rows) {
61
+ const parsed = JSON.parse(row.value);
62
+ switch (row.type) {
63
+ case 'expertise':
64
+ expertise.push(parsed);
65
+ break;
66
+ case 'correction':
67
+ corrections.push(parsed);
68
+ break;
69
+ case 'interest':
70
+ interests.push(parsed);
71
+ break;
72
+ case 'pattern':
73
+ patterns.push(parsed);
74
+ break;
75
+ }
76
+ }
77
+ const sessionCountRow = this.provider.get('SELECT MAX(session_count) as cnt FROM operator_context');
78
+ const lastRow = this.provider.get('SELECT MAX(last_observed) as ts FROM operator_context');
79
+ return {
80
+ expertise,
81
+ corrections,
82
+ interests,
83
+ patterns,
84
+ sessionCount: sessionCountRow?.cnt ?? 0,
85
+ lastUpdated: lastRow?.ts ?? 0,
86
+ };
87
+ }
88
+ // ─── Compound ─────────────────────────────────────────────────────
89
+ compoundSignals(signals, sessionId) {
90
+ this.provider.transaction(() => {
91
+ for (const sig of signals.expertise) {
92
+ if (this.isDeclined(sig.topic, sig.evidence))
93
+ continue;
94
+ this.compoundExpertise(sig);
95
+ }
96
+ for (const sig of signals.corrections) {
97
+ if (this.isDeclined(sig.rule, sig.quote))
98
+ continue;
99
+ // If this correction undoes an existing one, deactivate it and skip storage
100
+ if (this.tryUndoCorrection(sig.rule))
101
+ continue;
102
+ this.compoundCorrection(sig, sessionId);
103
+ }
104
+ for (const sig of signals.interests) {
105
+ if (this.isDeclined(sig.tag, sig.context))
106
+ continue;
107
+ this.compoundInterest(sig);
108
+ }
109
+ for (const sig of signals.patterns) {
110
+ if (this.isDeclined(sig.pattern))
111
+ continue;
112
+ this.compoundPattern(sig);
113
+ }
114
+ // Decay interests not mentioned in this session
115
+ this.decayInterests(signals.interests.map((i) => i.tag));
116
+ });
117
+ }
118
+ // ─── Drift ────────────────────────────────────────────────────────
119
+ hasDrifted() {
120
+ const current = this.renderContextFile();
121
+ if (this.lastRendered === null) {
122
+ this.lastRendered = current;
123
+ return true; // first render is always drift
124
+ }
125
+ const drifted = current !== this.lastRendered;
126
+ if (drifted) {
127
+ this.lastRendered = current;
128
+ }
129
+ return drifted;
130
+ }
131
+ // ─── Render ───────────────────────────────────────────────────────
132
+ renderContextFile() {
133
+ const ctx = this.getContext();
134
+ const lines = ['# Operator Context', ''];
135
+ // Expertise
136
+ if (ctx.expertise.length > 0) {
137
+ const items = ctx.expertise
138
+ .sort((a, b) => b.confidence - a.confidence)
139
+ .map((e) => `${e.topic} (${e.level}, ${e.sessionCount} sessions, confidence ${e.confidence.toFixed(2)})`);
140
+ lines.push(`**Expertise:** ${items.join(', ')}.`);
141
+ lines.push('');
142
+ }
143
+ // Corrections
144
+ const active = ctx.corrections.filter((c) => c.active);
145
+ if (active.length > 0) {
146
+ lines.push('**Corrections:**');
147
+ for (const c of active) {
148
+ const scopeTag = c.scope === 'project' ? ` [project]` : '';
149
+ const quoteTag = c.quote ? ` — "${c.quote}"` : '';
150
+ lines.push(`- ${c.rule}${scopeTag}${quoteTag}`);
151
+ }
152
+ lines.push('');
153
+ }
154
+ // Interests
155
+ const significantInterests = ctx.interests
156
+ .filter((i) => i.confidence >= 0.3)
157
+ .sort((a, b) => b.confidence - a.confidence);
158
+ if (significantInterests.length > 0) {
159
+ const items = significantInterests.map((i) => `${i.tag} (${i.mentionCount} mentions, confidence ${i.confidence.toFixed(2)})`);
160
+ lines.push(`**Interests:** ${items.join(', ')}.`);
161
+ lines.push('');
162
+ }
163
+ // Patterns
164
+ if (ctx.patterns.length > 0) {
165
+ const items = ctx.patterns
166
+ .sort((a, b) => b.confidence - a.confidence)
167
+ .map((p) => `${p.pattern} (${p.frequency}, ${p.observedCount} observations)`);
168
+ lines.push(`**Work patterns:** ${items.join(', ')}.`);
169
+ lines.push('');
170
+ }
171
+ return lines.join('\n').trimEnd();
172
+ }
173
+ // ─── Inspect / Delete ─────────────────────────────────────────────
174
+ inspect() {
175
+ return this.getContext();
176
+ }
177
+ deleteItem(type, id) {
178
+ const result = this.provider.run('DELETE FROM operator_context WHERE type = ? AND id = ?', [
179
+ type,
180
+ id,
181
+ ]);
182
+ return result.changes > 0;
183
+ }
184
+ // ─── Private: Compounding Algorithms ──────────────────────────────
185
+ compoundExpertise(sig) {
186
+ const now = Date.now();
187
+ const signalConf = sig.confidence ?? DEFAULT_CONFIDENCE;
188
+ const key = sig.topic.toLowerCase();
189
+ const existing = this.getRow('expertise', key);
190
+ if (existing) {
191
+ const item = JSON.parse(existing.value);
192
+ // Exponential moving average
193
+ const newConfidence = item.confidence * 0.7 + signalConf * 0.3;
194
+ // Level upgrade: only up, never down automatically
195
+ let level = item.level;
196
+ if (this.levelRank(sig.level) > this.levelRank(item.level) && newConfidence > 0.8) {
197
+ level = sig.level;
198
+ }
199
+ const updated = {
200
+ ...item,
201
+ level,
202
+ confidence: Math.min(1.0, newConfidence),
203
+ sessionCount: item.sessionCount + 1,
204
+ lastObserved: now,
205
+ };
206
+ this.updateRow(existing.id, 'expertise', key, updated, updated.confidence);
207
+ }
208
+ else {
209
+ const item = {
210
+ topic: sig.topic,
211
+ level: sig.level,
212
+ confidence: signalConf,
213
+ sessionCount: 1,
214
+ lastObserved: now,
215
+ };
216
+ this.insertRow('expertise', key, item, signalConf);
217
+ }
218
+ }
219
+ compoundCorrection(sig, sessionId) {
220
+ const now = Date.now();
221
+ const key = sig.rule.toLowerCase();
222
+ // Corrections: latest wins on conflict
223
+ const existing = this.getRow('correction', key);
224
+ if (existing) {
225
+ const item = {
226
+ ...JSON.parse(existing.value),
227
+ rule: sig.rule,
228
+ quote: sig.quote,
229
+ scope: sig.scope,
230
+ active: true,
231
+ sessionId,
232
+ };
233
+ this.updateRow(existing.id, 'correction', key, item, 1.0, sig.scope);
234
+ }
235
+ else {
236
+ const correctionId = randomUUID();
237
+ const item = {
238
+ id: correctionId,
239
+ rule: sig.rule,
240
+ quote: sig.quote,
241
+ scope: sig.scope,
242
+ active: true,
243
+ createdAt: now,
244
+ sessionId,
245
+ };
246
+ this.insertRow('correction', key, item, 1.0, sig.scope, correctionId);
247
+ }
248
+ }
249
+ compoundInterest(sig) {
250
+ const now = Date.now();
251
+ const key = sig.tag.toLowerCase();
252
+ const existing = this.getRow('interest', key);
253
+ if (existing) {
254
+ const item = JSON.parse(existing.value);
255
+ const newMentions = item.mentionCount + 1;
256
+ const newConfidence = Math.min(1.0, item.confidence + 0.1);
257
+ const updated = {
258
+ ...item,
259
+ confidence: newConfidence,
260
+ mentionCount: newMentions,
261
+ lastMentioned: now,
262
+ };
263
+ this.updateRow(existing.id, 'interest', key, updated, updated.confidence);
264
+ }
265
+ else {
266
+ const item = {
267
+ tag: sig.tag,
268
+ confidence: DEFAULT_CONFIDENCE,
269
+ mentionCount: 1,
270
+ lastMentioned: now,
271
+ };
272
+ this.insertRow('interest', key, item, item.confidence);
273
+ }
274
+ }
275
+ compoundPattern(sig) {
276
+ const now = Date.now();
277
+ const signalConf = DEFAULT_CONFIDENCE;
278
+ const key = sig.pattern.toLowerCase();
279
+ const existing = this.getRow('pattern', key);
280
+ if (existing) {
281
+ const item = JSON.parse(existing.value);
282
+ // Exponential moving average
283
+ const newConfidence = item.confidence * 0.8 + signalConf * 0.2;
284
+ const newCount = item.observedCount + 1;
285
+ // Frequency upgrades
286
+ let frequency = item.frequency;
287
+ if (newCount >= 8)
288
+ frequency = 'frequent';
289
+ else if (newCount >= 3)
290
+ frequency = 'occasional';
291
+ const updated = {
292
+ ...item,
293
+ frequency,
294
+ confidence: Math.min(1.0, newConfidence),
295
+ observedCount: newCount,
296
+ lastObserved: now,
297
+ };
298
+ this.updateRow(existing.id, 'pattern', key, updated, updated.confidence);
299
+ }
300
+ else {
301
+ const item = {
302
+ pattern: sig.pattern,
303
+ frequency: sig.frequency ?? 'once',
304
+ confidence: signalConf,
305
+ observedCount: 1,
306
+ lastObserved: now,
307
+ };
308
+ this.insertRow('pattern', key, item, item.confidence);
309
+ }
310
+ }
311
+ decayInterests(mentionedTags) {
312
+ const mentioned = new Set(mentionedTags.map((t) => t.toLowerCase()));
313
+ const allInterests = this.provider.all("SELECT * FROM operator_context WHERE type = 'interest' AND active = 1");
314
+ for (const row of allInterests) {
315
+ if (mentioned.has(row.key))
316
+ continue;
317
+ const item = JSON.parse(row.value);
318
+ const decayed = Math.max(0.1, item.confidence - 0.01);
319
+ if (decayed !== item.confidence) {
320
+ const updated = { ...item, confidence: decayed };
321
+ this.updateRow(row.id, 'interest', row.key, updated, decayed);
322
+ }
323
+ }
324
+ }
325
+ // ─── Private: DB Helpers ──────────────────────────────────────────
326
+ getRow(type, key) {
327
+ return this.provider.get('SELECT * FROM operator_context WHERE type = ? AND key = ? AND active = 1', [type, key]);
328
+ }
329
+ insertRow(type, key, value, confidence, scope = 'global', rowId) {
330
+ const now = Date.now();
331
+ this.provider.run(`INSERT INTO operator_context (id, type, key, value, confidence, scope, session_count, last_observed, created_at, active)
332
+ VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?, 1)`, [rowId ?? randomUUID(), type, key, JSON.stringify(value), confidence, scope, now, now]);
333
+ }
334
+ updateRow(id, type, key, value, confidence, scope) {
335
+ const now = Date.now();
336
+ const scopeClause = scope !== undefined ? ', scope = ?' : '';
337
+ const params = [
338
+ JSON.stringify(value),
339
+ confidence,
340
+ now,
341
+ ...(scope !== undefined ? [scope] : []),
342
+ id,
343
+ ];
344
+ this.provider.run(`UPDATE operator_context SET value = ?, confidence = ?, last_observed = ?${scopeClause} WHERE id = ?`, params);
345
+ // Suppress unused warnings
346
+ void type;
347
+ void key;
348
+ }
349
+ // ─── Private: Utilities ───────────────────────────────────────────
350
+ levelRank(level) {
351
+ switch (level) {
352
+ case 'learning':
353
+ return 0;
354
+ case 'intermediate':
355
+ return 1;
356
+ case 'expert':
357
+ return 2;
358
+ }
359
+ }
360
+ isDeclined(...fields) {
361
+ for (const field of fields) {
362
+ if (field && DECLINED_RE.test(field))
363
+ return true;
364
+ }
365
+ return false;
366
+ }
367
+ /**
368
+ * Check all active corrections for an undo match. If found, deactivate the
369
+ * existing correction and return `true` (meaning: the new signal is a
370
+ * reversal, not a new rule to store).
371
+ */
372
+ tryUndoCorrection(rule) {
373
+ const newNorm = normalizeCorrection(rule);
374
+ const activeCorrections = this.provider.all("SELECT * FROM operator_context WHERE type = 'correction' AND active = 1");
375
+ for (const row of activeCorrections) {
376
+ const item = JSON.parse(row.value);
377
+ const existingNorm = normalizeCorrection(item.rule);
378
+ if (isUndoCorrection(newNorm, existingNorm)) {
379
+ // Deactivate the old correction
380
+ const deactivated = { ...item, active: false };
381
+ this.provider.run('UPDATE operator_context SET value = ?, active = 0, last_observed = ? WHERE id = ?', [JSON.stringify(deactivated), Date.now(), row.id]);
382
+ return true;
383
+ }
384
+ }
385
+ return false;
386
+ }
387
+ }
388
+ /**
389
+ * Extract the core topic and direction from a correction rule.
390
+ *
391
+ * "don't summarize" → { topic: "summarize", direction: "dont" }
392
+ * "actually, summaries are fine" → { topic: "summaries are fine", direction: "do" }
393
+ */
394
+ export function normalizeCorrection(rule) {
395
+ let direction = 'dont';
396
+ let topic = rule.toLowerCase().trim();
397
+ if (DONT_PATTERNS.test(topic)) {
398
+ direction = 'dont';
399
+ topic = topic.replace(DONT_PATTERNS, '').trim();
400
+ }
401
+ else if (DO_PATTERNS.test(topic)) {
402
+ direction = 'do';
403
+ topic = topic.replace(DO_PATTERNS, '').trim();
404
+ }
405
+ // Strip trailing punctuation and common filler for comparison
406
+ topic = topic.replace(/[.!?]+$/, '').trim();
407
+ return { topic, direction };
408
+ }
409
+ /**
410
+ * Two corrections are an undo pair when they share a topic (fuzzy substring
411
+ * match) but have opposite directions.
412
+ */
413
+ export function isUndoCorrection(a, b) {
414
+ if (a.direction === b.direction)
415
+ return false;
416
+ // Exact match
417
+ if (a.topic === b.topic)
418
+ return true;
419
+ // Fuzzy: one topic is a substring of the other (covers "summarize" vs
420
+ // "summaries are fine" — we check if either contains the first significant
421
+ // word of the other).
422
+ const aWords = significantWords(a.topic);
423
+ const bWords = significantWords(b.topic);
424
+ // At least one significant word must overlap
425
+ return aWords.some((w) => bWords.includes(w));
426
+ }
427
+ /** Extract meaningful words (>= 4 chars) for fuzzy topic matching. */
428
+ function significantWords(topic) {
429
+ return topic
430
+ .split(/\s+/)
431
+ .filter((w) => w.length >= 4)
432
+ .map((w) => w.replace(/(?:ing|ies|ise|ize|es|s)$/, '')); // crude stemming
433
+ }
434
+ //# sourceMappingURL=operator-context-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-context-store.js","sourceRoot":"","sources":["../../src/operator/operator-context-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Operator Context Signal Taxonomy — types for Soleri's adaptive persona feature.
3
+ *
4
+ * 4 signal types the agent reports through `orchestrate_complete`:
5
+ * - expertise: what the operator knows
6
+ * - corrections: what the operator wants done differently
7
+ * - interests: what the operator cares about beyond work
8
+ * - patterns: how the operator works
9
+ *
10
+ * Signals are compounded over sessions into a stable OperatorContext profile.
11
+ */
12
+ /** Bag of signals the agent reports after a session. */
13
+ export interface OperatorSignals {
14
+ expertise: ExpertiseSignal[];
15
+ corrections: CorrectionSignal[];
16
+ interests: InterestSignal[];
17
+ patterns: WorkPatternSignal[];
18
+ }
19
+ /** Observed expertise in a topic. */
20
+ export interface ExpertiseSignal {
21
+ /** e.g. "typescript", "react", "postgresql" */
22
+ topic: string;
23
+ level: ExpertiseLevel;
24
+ /** Brief quote or observation. */
25
+ evidence?: string;
26
+ /** 0.0–1.0, engine assigns default if missing. */
27
+ confidence?: number;
28
+ }
29
+ /** Operator correction — "do this" / "don't do that". */
30
+ export interface CorrectionSignal {
31
+ /** What to do or not do. */
32
+ rule: string;
33
+ /** User's exact words. */
34
+ quote?: string;
35
+ scope: SignalScope;
36
+ }
37
+ /** Something the operator cares about outside of work. */
38
+ export interface InterestSignal {
39
+ /** e.g. "metal music", "coffee", "climbing" */
40
+ tag: string;
41
+ /** How it came up. */
42
+ context?: string;
43
+ }
44
+ /** How the operator works. */
45
+ export interface WorkPatternSignal {
46
+ /** e.g. "batches work locally", "prefers small PRs" */
47
+ pattern: string;
48
+ frequency?: PatternFrequency;
49
+ }
50
+ /** Full compounded operator context, assembled from accumulated signals. */
51
+ export interface OperatorContext {
52
+ expertise: ExpertiseItem[];
53
+ corrections: CorrectionItem[];
54
+ interests: InterestItem[];
55
+ patterns: WorkPatternItem[];
56
+ sessionCount: number;
57
+ lastUpdated: number;
58
+ }
59
+ /** Compounded expertise entry. */
60
+ export interface ExpertiseItem {
61
+ topic: string;
62
+ level: ExpertiseLevel;
63
+ confidence: number;
64
+ /** How many sessions observed this topic. */
65
+ sessionCount: number;
66
+ lastObserved: number;
67
+ }
68
+ /** Stored correction. */
69
+ export interface CorrectionItem {
70
+ id: string;
71
+ rule: string;
72
+ quote?: string;
73
+ scope: SignalScope;
74
+ projectPath?: string;
75
+ active: boolean;
76
+ createdAt: number;
77
+ sessionId?: string;
78
+ }
79
+ /** Compounded interest entry. */
80
+ export interface InterestItem {
81
+ tag: string;
82
+ confidence: number;
83
+ mentionCount: number;
84
+ lastMentioned: number;
85
+ }
86
+ /** Compounded work pattern entry. */
87
+ export interface WorkPatternItem {
88
+ pattern: string;
89
+ frequency: PatternFrequency;
90
+ confidence: number;
91
+ observedCount: number;
92
+ lastObserved: number;
93
+ }
94
+ export type ExpertiseLevel = 'learning' | 'intermediate' | 'expert';
95
+ export type SignalScope = 'global' | 'project';
96
+ export type PatternFrequency = 'once' | 'occasional' | 'frequent';
97
+ export type ContextItemType = 'expertise' | 'correction' | 'interest' | 'pattern';
98
+ /** Categories the agent must never store, regardless of what is observed. */
99
+ export declare const DECLINED_CATEGORIES: readonly ["health", "medical", "political", "religious", "sexual", "financial", "legal", "family", "relationship"];
100
+ export type DeclinedCategory = (typeof DECLINED_CATEGORIES)[number];
101
+ //# sourceMappingURL=operator-context-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-context-types.d.ts","sourceRoot":"","sources":["../../src/operator/operator-context-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Operator Context Signal Taxonomy — types for Soleri's adaptive persona feature.
3
+ *
4
+ * 4 signal types the agent reports through `orchestrate_complete`:
5
+ * - expertise: what the operator knows
6
+ * - corrections: what the operator wants done differently
7
+ * - interests: what the operator cares about beyond work
8
+ * - patterns: how the operator works
9
+ *
10
+ * Signals are compounded over sessions into a stable OperatorContext profile.
11
+ */
12
+ // =============================================================================
13
+ // MUST-NOT-LEARN CATEGORIES
14
+ // =============================================================================
15
+ /** Categories the agent must never store, regardless of what is observed. */
16
+ export const DECLINED_CATEGORIES = [
17
+ 'health',
18
+ 'medical',
19
+ 'political',
20
+ 'religious',
21
+ 'sexual',
22
+ 'financial',
23
+ 'legal',
24
+ 'family',
25
+ 'relationship',
26
+ ];
27
+ //# sourceMappingURL=operator-context-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-context-types.js","sourceRoot":"","sources":["../../src/operator/operator-context-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+GH,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;IACX,QAAQ;IACR,WAAW;IACX,OAAO;IACP,QAAQ;IACR,cAAc;CACN,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Knowledge Packs — Barrel Exports
3
3
  */
4
- export { packManifestSchema, type PackManifest, type PackStatus, type InstalledPack, type InstallResult, type ValidateResult, } from './types.js';
4
+ export { packManifestSchema, PACK_TIERS, type PackManifest, type PackTier as ManifestPackTier, type PackStatus, type InstalledPack, type InstallResult, type ValidateResult, } from './types.js';
5
5
  export { PackInstaller } from './pack-installer.js';
6
6
  export { PackLockfile, inferPackType } from './lockfile.js';
7
- export type { LockEntry, PackType, PackSource, LockfileData } from './lockfile.js';
7
+ export type { LockEntry, PackType, PackSource, PackTier, LockfileData } from './lockfile.js';
8
8
  export { resolvePack, checkNpmVersion, checkVersionCompat } from './resolver.js';
9
9
  export type { ResolvedPack, ResolveOptions } from './resolver.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/packs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/packs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,QAAQ,IAAI,gBAAgB,EACjC,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Knowledge Packs — Barrel Exports
3
3
  */
4
- export { packManifestSchema, } from './types.js';
4
+ export { packManifestSchema, PACK_TIERS, } from './types.js';
5
5
  export { PackInstaller } from './pack-installer.js';
6
6
  export { PackLockfile, inferPackType } from './lockfile.js';
7
7
  export { resolvePack, checkNpmVersion, checkVersionCompat } from './resolver.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/packs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,GAMnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/packs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,UAAU,GAOX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -32,9 +32,12 @@ export interface LockEntry {
32
32
  facadesRegistered: boolean;
33
33
  /** Compatible @soleri/core version range (from manifest "soleri" field) */
34
34
  soleriRange?: string;
35
+ /** Pack tier: default (ships with engine), community (free), premium (unlocked today) */
36
+ tier?: PackTier;
35
37
  }
36
38
  export type PackType = 'hooks' | 'skills' | 'knowledge' | 'domain' | 'bundle';
37
39
  export type PackSource = 'built-in' | 'local' | 'npm';
40
+ export type PackTier = 'default' | 'community' | 'premium';
38
41
  export interface LockfileData {
39
42
  /** Lockfile format version */
40
43
  version: 1;
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/packs/lockfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,kCAAkC;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAID,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,KAAK,CAAS;gBAEO,QAAQ,EAAE,MAAM;IAI7C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI1C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO/B;;OAEG;IACH,IAAI,IAAI,SAAS,EAAE;IAInB;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,OAAO;IAWf;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAMrD,OAAO,CAAC,IAAI;CAcb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,QAAQ,CAcX"}
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/packs/lockfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,kCAAkC;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAID,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,KAAK,CAAS;gBAEO,QAAQ,EAAE,MAAM;IAI7C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI1C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAK3B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO/B;;OAEG;IACH,IAAI,IAAI,SAAS,EAAE;IAInB;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,OAAO;IAWf;;OAEG;IACH,MAAM,IAAI,IAAI;IAKd;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAMrD,OAAO,CAAC,IAAI;CAcb;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,QAAQ,CAcX"}