@helix-agent/core 0.1.0 → 0.2.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 (40) hide show
  1. package/dist/engine/gene-map.d.ts +13 -1
  2. package/dist/engine/gene-map.d.ts.map +1 -1
  3. package/dist/engine/gene-map.js +94 -44
  4. package/dist/engine/gene-map.js.map +1 -1
  5. package/dist/engine/pcec.d.ts +9 -11
  6. package/dist/engine/pcec.d.ts.map +1 -1
  7. package/dist/engine/pcec.js +206 -155
  8. package/dist/engine/pcec.js.map +1 -1
  9. package/dist/engine/provider.d.ts +15 -0
  10. package/dist/engine/provider.d.ts.map +1 -0
  11. package/dist/engine/provider.js +112 -0
  12. package/dist/engine/provider.js.map +1 -0
  13. package/dist/engine/types.d.ts +36 -2
  14. package/dist/engine/types.d.ts.map +1 -1
  15. package/dist/engine/types.js +4 -16
  16. package/dist/engine/types.js.map +1 -1
  17. package/dist/engine/wrap.d.ts.map +1 -1
  18. package/dist/engine/wrap.js +42 -16
  19. package/dist/engine/wrap.js.map +1 -1
  20. package/dist/index.d.ts +3 -3
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/platforms/coinbase/index.d.ts +3 -0
  25. package/dist/platforms/coinbase/index.d.ts.map +1 -0
  26. package/dist/platforms/coinbase/index.js +3 -0
  27. package/dist/platforms/coinbase/index.js.map +1 -0
  28. package/dist/platforms/coinbase/perceive.d.ts +3 -0
  29. package/dist/platforms/coinbase/perceive.d.ts.map +1 -0
  30. package/dist/platforms/coinbase/perceive.js +71 -0
  31. package/dist/platforms/coinbase/perceive.js.map +1 -0
  32. package/dist/platforms/coinbase/strategies.d.ts +3 -0
  33. package/dist/platforms/coinbase/strategies.d.ts.map +1 -0
  34. package/dist/platforms/coinbase/strategies.js +45 -0
  35. package/dist/platforms/coinbase/strategies.js.map +1 -0
  36. package/dist/platforms/index.d.ts +1 -0
  37. package/dist/platforms/index.d.ts.map +1 -1
  38. package/dist/platforms/index.js +10 -22
  39. package/dist/platforms/index.js.map +1 -1
  40. package/package.json +13 -4
@@ -8,12 +8,24 @@ export declare class GeneMap {
8
8
  private stmtUpdatePlatforms;
9
9
  constructor(dbPath?: string);
10
10
  lookup(code: ErrorCode, category: FailureCategory): GeneCapsule | null;
11
- /** Add a platform to an existing gene if not already present */
12
11
  addPlatform(code: ErrorCode, category: FailureCategory, platform: Platform): void;
13
12
  store(gene: GeneCapsule): void;
13
+ /** RL update after successful repair */
14
+ recordSuccess(code: string, category: string, repairMs: number): void;
15
+ /** RL update after failed repair */
16
+ recordFailure(code: string, category: string): void;
14
17
  list(): GeneCapsule[];
15
18
  immuneCount(): number;
16
19
  getSuccessRate(failureCode: string, strategy: string): number;
20
+ stats(): {
21
+ totalGenes: number;
22
+ avgQValue: number;
23
+ platforms: string[];
24
+ topStrategies: {
25
+ strategy: string;
26
+ count: number;
27
+ }[];
28
+ };
17
29
  close(): void;
18
30
  }
19
31
  //# sourceMappingURL=gene-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gene-map.d.ts","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBpF,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,MAAM,GAAE,MAAmB;IAmCvC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAwBtE,gEAAgE;IAChE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAUjF,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAY9B,IAAI,IAAI,WAAW,EAAE;IAgBrB,WAAW,IAAI,MAAM;IAKrB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAW7D,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"gene-map.d.ts","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyCpF,qBAAa,OAAO;IAClB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,MAAM,GAAE,MAAmB;IA8BvC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IActE,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAUjF,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAc9B,wCAAwC;IACxC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkBrE,oCAAoC;IACpC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAgBnD,IAAI,IAAI,WAAW,EAAE;IAIrB,WAAW,IAAI,MAAM;IAIrB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQ7D,KAAK,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE;IAmB7H,KAAK,IAAI,IAAI;CAGd"}
@@ -9,11 +9,33 @@ CREATE TABLE IF NOT EXISTS genes (
9
9
  success_count INTEGER NOT NULL DEFAULT 1,
10
10
  avg_repair_ms REAL NOT NULL DEFAULT 0,
11
11
  platforms TEXT NOT NULL DEFAULT '[]',
12
+ q_value REAL NOT NULL DEFAULT 0.5,
13
+ last_success_at INTEGER,
14
+ last_failed_at INTEGER,
15
+ consecutive_failures INTEGER NOT NULL DEFAULT 0,
12
16
  created_at TEXT NOT NULL DEFAULT (datetime('now')),
13
17
  last_used_at TEXT NOT NULL DEFAULT (datetime('now')),
14
18
  UNIQUE(failure_code, category)
15
19
  );
16
20
  `;
21
+ function parseRow(row) {
22
+ return {
23
+ id: row.id,
24
+ failureCode: row.failure_code,
25
+ category: row.category,
26
+ strategy: row.strategy,
27
+ params: JSON.parse(row.params),
28
+ successCount: row.success_count,
29
+ avgRepairMs: row.avg_repair_ms,
30
+ platforms: JSON.parse(row.platforms),
31
+ qValue: row.q_value,
32
+ consecutiveFailures: row.consecutive_failures,
33
+ lastSuccessAt: row.last_success_at,
34
+ lastFailedAt: row.last_failed_at,
35
+ createdAt: row.created_at,
36
+ lastUsedAt: row.last_used_at,
37
+ };
38
+ }
17
39
  export class GeneMap {
18
40
  db;
19
41
  stmtLookup;
@@ -26,53 +48,39 @@ export class GeneMap {
26
48
  this.db.pragma('journal_mode = WAL');
27
49
  this.db.exec(SCHEMA);
28
50
  this.stmtLookup = this.db.prepare(`
29
- SELECT * FROM genes WHERE failure_code = ? AND category = ?
51
+ SELECT * FROM genes WHERE failure_code = ? AND category = ? ORDER BY q_value DESC LIMIT 1
30
52
  `);
31
53
  this.stmtUpsert = this.db.prepare(`
32
- INSERT INTO genes (failure_code, category, strategy, params, success_count, avg_repair_ms, platforms)
33
- VALUES (@failureCode, @category, @strategy, @params, @successCount, @avgRepairMs, @platforms)
54
+ INSERT INTO genes (failure_code, category, strategy, params, success_count, avg_repair_ms, platforms, q_value, consecutive_failures)
55
+ VALUES (@failureCode, @category, @strategy, @params, @successCount, @avgRepairMs, @platforms, @qValue, @consecutiveFailures)
34
56
  ON CONFLICT(failure_code, category) DO UPDATE SET
35
57
  strategy = @strategy,
36
58
  params = @params,
37
59
  success_count = success_count + 1,
38
60
  avg_repair_ms = (avg_repair_ms * success_count + @avgRepairMs) / (success_count + 1),
39
61
  platforms = @platforms,
62
+ q_value = @qValue,
63
+ consecutive_failures = @consecutiveFailures,
40
64
  last_used_at = datetime('now')
41
65
  `);
42
- this.stmtList = this.db.prepare(`
43
- SELECT * FROM genes ORDER BY success_count DESC
44
- `);
45
- this.stmtCount = this.db.prepare(`
46
- SELECT COUNT(*) as count FROM genes
47
- `);
66
+ this.stmtList = this.db.prepare(`SELECT * FROM genes ORDER BY q_value DESC, success_count DESC`);
67
+ this.stmtCount = this.db.prepare(`SELECT COUNT(*) as count FROM genes`);
48
68
  this.stmtUpdatePlatforms = this.db.prepare(`
49
- UPDATE genes SET platforms = ?, last_used_at = datetime('now')
50
- WHERE failure_code = ? AND category = ?
69
+ UPDATE genes SET platforms = ?, last_used_at = datetime('now') WHERE failure_code = ? AND category = ?
51
70
  `);
52
71
  }
53
72
  lookup(code, category) {
54
73
  const row = this.stmtLookup.get(code, category);
55
74
  if (!row)
56
75
  return null;
57
- // Update last_used_at and increment success_count on hit
58
76
  this.db.prepare(`
59
77
  UPDATE genes SET last_used_at = datetime('now'), success_count = success_count + 1
60
78
  WHERE failure_code = ? AND category = ?
61
79
  `).run(code, category);
62
- return {
63
- id: row.id,
64
- failureCode: row.failure_code,
65
- category: row.category,
66
- strategy: row.strategy,
67
- params: JSON.parse(row.params),
68
- successCount: row.success_count + 1,
69
- avgRepairMs: row.avg_repair_ms,
70
- platforms: JSON.parse(row.platforms),
71
- createdAt: row.created_at,
72
- lastUsedAt: row.last_used_at,
73
- };
80
+ const gene = parseRow(row);
81
+ gene.successCount += 1; // reflect the bump we just did
82
+ return gene;
74
83
  }
75
- /** Add a platform to an existing gene if not already present */
76
84
  addPlatform(code, category, platform) {
77
85
  const row = this.stmtLookup.get(code, category);
78
86
  if (!row)
@@ -92,37 +100,79 @@ export class GeneMap {
92
100
  successCount: gene.successCount,
93
101
  avgRepairMs: gene.avgRepairMs,
94
102
  platforms: JSON.stringify(gene.platforms),
103
+ qValue: gene.qValue ?? 0.5,
104
+ consecutiveFailures: gene.consecutiveFailures ?? 0,
95
105
  });
96
106
  }
107
+ /** RL update after successful repair */
108
+ recordSuccess(code, category, repairMs) {
109
+ const row = this.stmtLookup.get(code, category);
110
+ if (!row)
111
+ return;
112
+ const alpha = 0.1;
113
+ const oldQ = row.q_value;
114
+ const newQ = oldQ + alpha * (1.0 - oldQ);
115
+ this.db.prepare(`
116
+ UPDATE genes SET
117
+ q_value = ?,
118
+ avg_repair_ms = (avg_repair_ms * success_count + ?) / (success_count + 1),
119
+ success_count = success_count + 1,
120
+ last_success_at = ?,
121
+ consecutive_failures = 0,
122
+ last_used_at = datetime('now')
123
+ WHERE failure_code = ? AND category = ?
124
+ `).run(newQ, repairMs, Date.now(), code, category);
125
+ }
126
+ /** RL update after failed repair */
127
+ recordFailure(code, category) {
128
+ const row = this.stmtLookup.get(code, category);
129
+ if (!row)
130
+ return;
131
+ const alpha = 0.1;
132
+ const oldQ = row.q_value;
133
+ const newQ = oldQ + alpha * (0.0 - oldQ);
134
+ this.db.prepare(`
135
+ UPDATE genes SET
136
+ q_value = ?,
137
+ last_failed_at = ?,
138
+ consecutive_failures = consecutive_failures + 1,
139
+ last_used_at = datetime('now')
140
+ WHERE failure_code = ? AND category = ?
141
+ `).run(newQ, Date.now(), code, category);
142
+ }
97
143
  list() {
98
- const rows = this.stmtList.all();
99
- return rows.map((row) => ({
100
- id: row.id,
101
- failureCode: row.failure_code,
102
- category: row.category,
103
- strategy: row.strategy,
104
- params: JSON.parse(row.params),
105
- successCount: row.success_count,
106
- avgRepairMs: row.avg_repair_ms,
107
- platforms: JSON.parse(row.platforms),
108
- createdAt: row.created_at,
109
- lastUsedAt: row.last_used_at,
110
- }));
144
+ return this.stmtList.all().map(parseRow);
111
145
  }
112
146
  immuneCount() {
113
- const row = this.stmtCount.get();
114
- return row.count;
147
+ return this.stmtCount.get().count;
115
148
  }
116
149
  getSuccessRate(failureCode, strategy) {
117
150
  const row = this.db.prepare(`
118
- SELECT success_count FROM genes
119
- WHERE failure_code = ? AND strategy = ?
151
+ SELECT success_count, q_value FROM genes WHERE failure_code = ? AND strategy = ?
120
152
  `).get(failureCode, strategy);
121
153
  if (!row || row.success_count < 3)
122
- return 0.5; // too few samples, return neutral
123
- // More successes → higher probability, capped at 0.95
154
+ return 0.5;
124
155
  return Math.min(0.5 + (row.success_count / 100), 0.95);
125
156
  }
157
+ stats() {
158
+ const rows = this.stmtList.all();
159
+ const allPlatforms = new Set();
160
+ let qSum = 0;
161
+ for (const r of rows) {
162
+ qSum += r.q_value;
163
+ for (const p of JSON.parse(r.platforms))
164
+ allPlatforms.add(p);
165
+ }
166
+ return {
167
+ totalGenes: rows.length,
168
+ avgQValue: rows.length > 0 ? Math.round((qSum / rows.length) * 100) / 100 : 0,
169
+ platforms: [...allPlatforms],
170
+ topStrategies: rows.slice(0, 10).map(r => ({
171
+ strategy: r.strategy,
172
+ count: r.success_count,
173
+ })),
174
+ };
175
+ }
126
176
  close() {
127
177
  this.db.close();
128
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gene-map.js","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;CAcd,CAAC;AAEF,MAAM,OAAO,OAAO;IACV,EAAE,CAAoB;IACtB,UAAU,CAAqB;IAC/B,UAAU,CAAqB;IAC/B,QAAQ,CAAqB;IAC7B,SAAS,CAAqB;IAC9B,mBAAmB,CAAqB;IAEhD,YAAY,SAAiB,UAAU;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEjC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;KAUjC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE/B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEhC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG1C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAe,EAAE,QAAyB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAwC,CAAC;QACvF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,yDAAyD;QACzD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEvB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,WAAW,EAAE,GAAG,CAAC,YAAyB;YAC1C,QAAQ,EAAE,GAAG,CAAC,QAA2B;YACzC,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAgB,CAAC;YACxC,YAAY,EAAG,GAAG,CAAC,aAAwB,GAAG,CAAC;YAC/C,WAAW,EAAE,GAAG,CAAC,aAAuB;YACxC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAmB,CAAe;YAC5D,SAAS,EAAE,GAAG,CAAC,UAAoB;YACnC,UAAU,EAAE,GAAG,CAAC,YAAsB;SACvC,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,WAAW,CAAC,IAAe,EAAE,QAAyB,EAAE,QAAkB;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAwC,CAAC;QACvF,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,SAAS,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAmB,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAiB;QACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAClB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAA+B,CAAC;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,WAAW,EAAE,GAAG,CAAC,YAAyB;YAC1C,QAAQ,EAAE,GAAG,CAAC,QAA2B;YACzC,QAAQ,EAAE,GAAG,CAAC,QAAkB;YAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAgB,CAAC;YACxC,YAAY,EAAE,GAAG,CAAC,aAAuB;YACzC,WAAW,EAAE,GAAG,CAAC,aAAuB;YACxC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAmB,CAAe;YAC5D,SAAS,EAAE,GAAG,CAAC,UAAoB;YACnC,UAAU,EAAE,GAAG,CAAC,YAAsB;SACvC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,WAAW;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAuB,CAAC;QACtD,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,WAAmB,EAAE,QAAgB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG3B,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAA0C,CAAC;QAEvE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,kCAAkC;QACjF,sDAAsD;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"gene-map.js","sourceRoot":"","sources":["../../src/engine/gene-map.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,11 @@
1
1
  import { GeneMap } from './gene-map.js';
2
- import type { FailureClassification, GeneCapsule, PlatformAdapter, RepairCandidate, RepairResult } from './types.js';
3
- export declare function commit(winner: RepairCandidate, _failure: FailureClassification): Promise<{
4
- success: boolean;
5
- result: string;
6
- }>;
2
+ import type { GeneCapsule, PlatformAdapter, RepairResult, WrapOptions } from './types.js';
7
3
  export declare class PcecEngine {
8
4
  private adapters;
9
5
  private geneMap;
10
6
  private agentId;
7
+ private provider;
8
+ private options;
11
9
  stats: {
12
10
  repairs: number;
13
11
  savedRevenue: number;
@@ -15,14 +13,13 @@ export declare class PcecEngine {
15
13
  };
16
14
  private readonly MAX_CYCLES;
17
15
  private cycleCount;
18
- constructor(geneMap: GeneMap, agentId?: string);
19
- /** Register platform adapters (order matters — first match wins for perceive) */
16
+ constructor(geneMap: GeneMap, agentId?: string, options?: WrapOptions);
20
17
  registerAdapter(adapter: PlatformAdapter): void;
21
- /** Perceive chains through adapters until one matches */
18
+ /** D16: Negative pattern guard prevent false positives from success messages */
19
+ private shouldSkipPerceive;
22
20
  private perceive;
23
- /** Construct collects candidates from ALL adapters */
24
- private construct;
25
- /** Full P→C→E→K repair flow */
21
+ private constructCandidates;
22
+ private verify;
26
23
  repair(error: Error, context?: Record<string, unknown>): Promise<RepairResult>;
27
24
  getStats(): {
28
25
  geneCount: number;
@@ -31,5 +28,6 @@ export declare class PcecEngine {
31
28
  savedRevenue: number;
32
29
  immuneHits: number;
33
30
  };
31
+ getGeneMap(): GeneMap;
34
32
  }
35
33
  //# sourceMappingURL=pcec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcec.d.ts","sourceRoot":"","sources":["../../src/engine/pcec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAKpB,wBAAsB,MAAM,CAC1B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAU/C;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACjB,KAAK;;;;MAAkD;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,MAAkB;IAKzD,iFAAiF;IACjF,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI/C,yDAAyD;IACzD,OAAO,CAAC,QAAQ;IAgBhB,sDAAsD;IACtD,OAAO,CAAC,SAAS;IAYjB,+BAA+B;IACzB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA6MpF,QAAQ;;;;;;;CAOT"}
1
+ {"version":3,"file":"pcec.d.ts","sourceRoot":"","sources":["../../src/engine/pcec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAEV,WAAW,EAEX,eAAe,EAEf,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AA6BpB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAc;IACtB,KAAK;;;;MAAkD;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,UAAU,CAAK;gBAEX,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,MAAkB,EAAE,OAAO,CAAC,EAAE,WAAW;IAOhF,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI/C,kFAAkF;IAClF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,mBAAmB;YAWb,MAAM;IAyBd,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAgOpF,QAAQ;;;;;;;IAQR,UAAU,IAAI,OAAO;CAGtB"}