@auxiora/consciousness 1.10.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 (50) hide show
  1. package/LICENSE +191 -0
  2. package/dist/consciousness.d.ts +34 -0
  3. package/dist/consciousness.d.ts.map +1 -0
  4. package/dist/consciousness.js +48 -0
  5. package/dist/consciousness.js.map +1 -0
  6. package/dist/index.d.ts +19 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +13 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/journal/journal-types.d.ts +55 -0
  11. package/dist/journal/journal-types.d.ts.map +1 -0
  12. package/dist/journal/journal-types.js +2 -0
  13. package/dist/journal/journal-types.js.map +1 -0
  14. package/dist/journal/session-journal.d.ts +23 -0
  15. package/dist/journal/session-journal.d.ts.map +1 -0
  16. package/dist/journal/session-journal.js +149 -0
  17. package/dist/journal/session-journal.js.map +1 -0
  18. package/dist/model/model-types.d.ts +37 -0
  19. package/dist/model/model-types.d.ts.map +1 -0
  20. package/dist/model/model-types.js +2 -0
  21. package/dist/model/model-types.js.map +1 -0
  22. package/dist/model/self-model.d.ts +53 -0
  23. package/dist/model/self-model.d.ts.map +1 -0
  24. package/dist/model/self-model.js +126 -0
  25. package/dist/model/self-model.js.map +1 -0
  26. package/dist/monitor/monitor-types.d.ts +38 -0
  27. package/dist/monitor/monitor-types.d.ts.map +1 -0
  28. package/dist/monitor/monitor-types.js +2 -0
  29. package/dist/monitor/monitor-types.js.map +1 -0
  30. package/dist/monitor/self-monitor.d.ts +20 -0
  31. package/dist/monitor/self-monitor.d.ts.map +1 -0
  32. package/dist/monitor/self-monitor.js +55 -0
  33. package/dist/monitor/self-monitor.js.map +1 -0
  34. package/dist/monitor/signal-synthesizer.d.ts +57 -0
  35. package/dist/monitor/signal-synthesizer.d.ts.map +1 -0
  36. package/dist/monitor/signal-synthesizer.js +81 -0
  37. package/dist/monitor/signal-synthesizer.js.map +1 -0
  38. package/dist/repair/repair-actions.d.ts +10 -0
  39. package/dist/repair/repair-actions.d.ts.map +1 -0
  40. package/dist/repair/repair-actions.js +77 -0
  41. package/dist/repair/repair-actions.js.map +1 -0
  42. package/dist/repair/repair-types.d.ts +28 -0
  43. package/dist/repair/repair-types.d.ts.map +1 -0
  44. package/dist/repair/repair-types.js +2 -0
  45. package/dist/repair/repair-types.js.map +1 -0
  46. package/dist/repair/self-repair-engine.d.ts +32 -0
  47. package/dist/repair/self-repair-engine.d.ts.map +1 -0
  48. package/dist/repair/self-repair-engine.js +122 -0
  49. package/dist/repair/self-repair-engine.js.map +1 -0
  50. package/package.json +31 -0
@@ -0,0 +1,53 @@
1
+ import type { SessionSummary } from '../journal/journal-types.js';
2
+ import type { SystemPulse } from '../monitor/monitor-types.js';
3
+ import type { SelfModelSnapshot } from './model-types.js';
4
+ export interface SessionJournalLike {
5
+ getRecentSessions(limit?: number): Promise<SessionSummary[]>;
6
+ }
7
+ export interface SelfMonitorLike {
8
+ getPulse(): SystemPulse;
9
+ }
10
+ export interface SelfRepairEngineLike {
11
+ getRepairHistory(limit?: number): Array<{
12
+ actionId: string;
13
+ executedAt: number;
14
+ }>;
15
+ getPendingApprovals(): unknown[];
16
+ }
17
+ export interface DecisionLogLike {
18
+ query(q: {
19
+ status?: string;
20
+ limit?: number;
21
+ }): Array<{
22
+ id: string;
23
+ status: string;
24
+ }>;
25
+ getDueFollowUps(): unknown[];
26
+ }
27
+ export interface FeedbackStoreLike {
28
+ getInsights(): {
29
+ weakDomains: string[];
30
+ trend: 'improving' | 'declining' | 'stable';
31
+ totalFeedback: number;
32
+ };
33
+ }
34
+ export interface SelfModelDeps {
35
+ journal: SessionJournalLike;
36
+ monitor: SelfMonitorLike;
37
+ repair: SelfRepairEngineLike;
38
+ decisionLog: DecisionLogLike;
39
+ feedbackStore: FeedbackStoreLike;
40
+ version: string;
41
+ }
42
+ export declare class SelfModel {
43
+ private readonly deps;
44
+ constructor(deps: SelfModelDeps);
45
+ synthesize(): Promise<SelfModelSnapshot>;
46
+ private buildIdentity;
47
+ private buildMemory;
48
+ private buildPerformance;
49
+ private buildRepair;
50
+ private formatUptime;
51
+ private buildNarrative;
52
+ }
53
+ //# sourceMappingURL=self-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-model.d.ts","sourceRoot":"","sources":["../../src/model/self-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,IAAI,WAAW,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,mBAAmB,IAAI,OAAO,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,eAAe,IAAI,OAAO,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC5C,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,iBAAiB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;gBAEzB,IAAI,EAAE,aAAa;IAIzB,UAAU,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiC9C,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,cAAc;CAkDvB"}
@@ -0,0 +1,126 @@
1
+ const DAY_MS = 24 * 60 * 60 * 1000;
2
+ export class SelfModel {
3
+ deps;
4
+ constructor(deps) {
5
+ this.deps = deps;
6
+ }
7
+ async synthesize() {
8
+ const now = Date.now();
9
+ const pulse = this.deps.monitor.getPulse();
10
+ const sessions = await this.deps.journal.getRecentSessions(100);
11
+ const feedback = this.deps.feedbackStore.getInsights();
12
+ const activeDecisions = this.deps.decisionLog.query({ status: 'active' });
13
+ const pendingFollowUps = this.deps.decisionLog.getDueFollowUps();
14
+ const repairHistory = this.deps.repair.getRepairHistory(100);
15
+ const pendingApprovals = this.deps.repair.getPendingApprovals();
16
+ const identity = this.buildIdentity(pulse);
17
+ const memory = this.buildMemory(sessions, activeDecisions, pendingFollowUps);
18
+ const performance = this.buildPerformance(pulse, feedback);
19
+ const repair = this.buildRepair(repairHistory, pendingApprovals, now);
20
+ const selfNarrative = this.buildNarrative(identity, memory, pulse, feedback, pendingApprovals);
21
+ return {
22
+ generatedAt: now,
23
+ identity,
24
+ memory,
25
+ health: pulse,
26
+ performance,
27
+ repair,
28
+ selfNarrative,
29
+ };
30
+ }
31
+ buildIdentity(pulse) {
32
+ return {
33
+ name: 'Auxiora',
34
+ version: this.deps.version,
35
+ personality: 'The Architect',
36
+ uptime: pulse.resources.uptimeSeconds,
37
+ };
38
+ }
39
+ buildMemory(sessions, activeDecisions, pendingFollowUps) {
40
+ const totalSessions = sessions.length;
41
+ const totalMessages = sessions.reduce((sum, s) => sum + s.messageCount, 0);
42
+ const oldestMemory = sessions.length > 0
43
+ ? Math.min(...sessions.map((s) => s.startTime))
44
+ : 0;
45
+ const domainSet = new Set();
46
+ for (const session of sessions) {
47
+ for (const domain of session.domains) {
48
+ domainSet.add(domain);
49
+ }
50
+ }
51
+ const recentTopics = [...domainSet].slice(0, 5);
52
+ return {
53
+ totalSessions,
54
+ totalMessages,
55
+ oldestMemory,
56
+ recentTopics,
57
+ activeDecisions: activeDecisions.length,
58
+ pendingFollowUps: pendingFollowUps.length,
59
+ };
60
+ }
61
+ buildPerformance(pulse, feedback) {
62
+ return {
63
+ responseQuality: pulse.reasoning.avgResponseQuality,
64
+ domainAccuracy: pulse.reasoning.domainAccuracy,
65
+ userSatisfaction: feedback.trend,
66
+ strongDomains: [],
67
+ weakDomains: feedback.weakDomains,
68
+ };
69
+ }
70
+ buildRepair(repairHistory, pendingApprovals, now) {
71
+ const recentCutoff = now - DAY_MS;
72
+ const recentActions = repairHistory.filter((r) => r.executedAt >= recentCutoff).length;
73
+ const lastRepairAt = repairHistory.length > 0
74
+ ? Math.max(...repairHistory.map((r) => r.executedAt))
75
+ : null;
76
+ return {
77
+ recentActions,
78
+ pendingApprovals: pendingApprovals.length,
79
+ lastRepairAt,
80
+ };
81
+ }
82
+ formatUptime(seconds) {
83
+ if (seconds < 60)
84
+ return `${seconds}s`;
85
+ if (seconds < 3600)
86
+ return `${Math.floor(seconds / 60)}m`;
87
+ if (seconds < 86400)
88
+ return `${Math.floor(seconds / 3600)}h`;
89
+ return `${Math.floor(seconds / 86400)}d`;
90
+ }
91
+ buildNarrative(identity, memory, pulse, feedback, pendingApprovals) {
92
+ const parts = [];
93
+ // Sentence 1: Identity
94
+ parts.push(`I am Auxiora v${identity.version}, running for ${this.formatUptime(identity.uptime)}. I use The Architect personality framework.`);
95
+ // Sentence 2: Memory
96
+ if (memory.totalSessions === 0) {
97
+ parts.push('I have no conversation history yet.');
98
+ }
99
+ else {
100
+ const topicStr = memory.recentTopics.length > 0
101
+ ? ` My recent focus has been on ${memory.recentTopics.join(', ')}.`
102
+ : '';
103
+ parts.push(`I remember ${memory.totalSessions} conversations with ${memory.totalMessages} messages.${topicStr}`);
104
+ }
105
+ // Sentence 3: Health
106
+ let healthStr = `My systems are ${pulse.overall}.`;
107
+ if (pulse.overall !== 'healthy' && pulse.anomalies.length > 0) {
108
+ const issues = pulse.anomalies.map((a) => a.description).join('; ');
109
+ healthStr += ` Issues: ${issues}.`;
110
+ }
111
+ parts.push(healthStr);
112
+ // Sentence 4: Satisfaction
113
+ parts.push(`User satisfaction is ${feedback.trend}.`);
114
+ // Sentence 5: Decisions / approvals (conditional)
115
+ if (memory.activeDecisions > 0 || pendingApprovals.length > 0) {
116
+ let decisionStr = `I have ${memory.activeDecisions} active decisions`;
117
+ if (pendingApprovals.length > 0) {
118
+ decisionStr += ` and ${pendingApprovals.length} repair actions awaiting approval`;
119
+ }
120
+ decisionStr += '.';
121
+ parts.push(decisionStr);
122
+ }
123
+ return parts.join(' ');
124
+ }
125
+ }
126
+ //# sourceMappingURL=self-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-model.js","sourceRoot":"","sources":["../../src/model/self-model.ts"],"names":[],"mappings":"AA6CA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,OAAO,SAAS;IACH,IAAI,CAAgB;IAErC,YAAY,IAAmB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAEhE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CACvC,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,WAAW,EAAE,GAAG;YAChB,QAAQ;YACR,MAAM;YACN,MAAM,EAAE,KAAK;YACb,WAAW;YACX,MAAM;YACN,aAAa;SACd,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,KAAkB;QACtC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC1B,WAAW,EAAE,eAAe;YAC5B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;SACtC,CAAC;IACJ,CAAC;IAEO,WAAW,CACjB,QAA0B,EAC1B,eAAsD,EACtD,gBAA2B;QAE3B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;QACtC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,YAAY,GAChB,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC,CAAC;QAER,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhD,OAAO;YACL,aAAa;YACb,aAAa;YACb,YAAY;YACZ,YAAY;YACZ,eAAe,EAAE,eAAe,CAAC,MAAM;YACvC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CACtB,KAAkB,EAClB,QAAsD;QAEtD,OAAO;YACL,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,kBAAkB;YACnD,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc;YAC9C,gBAAgB,EAAE,QAAQ,CAAC,KAAK;YAChC,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;IACJ,CAAC;IAEO,WAAW,CACjB,aAA8D,EAC9D,gBAA2B,EAC3B,GAAW;QAEX,MAAM,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC;QAClC,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,MAAM,CAAC;QACvF,MAAM,YAAY,GAChB,aAAa,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO;YACL,aAAa;YACb,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;YACzC,YAAY;SACb,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,OAAe;QAClC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,GAAG,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC;QAC1D,IAAI,OAAO,GAAG,KAAK;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAC7D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC3C,CAAC;IAEO,cAAc,CACpB,QAAsB,EACtB,MAAkB,EAClB,KAAkB,EAClB,QAAsD,EACtD,gBAA2B;QAE3B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,uBAAuB;QACvB,KAAK,CAAC,IAAI,CACR,iBAAiB,QAAQ,CAAC,OAAO,iBAAiB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,8CAA8C,CACnI,CAAC;QAEF,qBAAqB;QACrB,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GACZ,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,gCAAgC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACnE,CAAC,CAAC,EAAE,CAAC;YACT,KAAK,CAAC,IAAI,CACR,cAAc,MAAM,CAAC,aAAa,uBAAuB,MAAM,CAAC,aAAa,aAAa,QAAQ,EAAE,CACrG,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,SAAS,GAAG,kBAAkB,KAAK,CAAC,OAAO,GAAG,CAAC;QACnD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,SAAS,IAAI,YAAY,MAAM,GAAG,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,2BAA2B;QAC3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAEtD,kDAAkD;QAClD,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,WAAW,GAAG,UAAU,MAAM,CAAC,eAAe,mBAAmB,CAAC;YACtE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,WAAW,IAAI,QAAQ,gBAAgB,CAAC,MAAM,mCAAmC,CAAC;YACpF,CAAC;YACD,WAAW,IAAI,GAAG,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ export interface SubsystemStatus {
2
+ name: string;
3
+ status: 'up' | 'degraded' | 'down';
4
+ lastCheck: number;
5
+ metrics?: Record<string, number>;
6
+ }
7
+ export interface Anomaly {
8
+ subsystem: string;
9
+ severity: 'low' | 'medium' | 'high';
10
+ description: string;
11
+ detectedAt: number;
12
+ }
13
+ export interface ReasoningMetrics {
14
+ avgResponseQuality: number;
15
+ domainAccuracy: number;
16
+ preferenceStability: number;
17
+ }
18
+ export interface ResourceMetrics {
19
+ memoryUsageMb: number;
20
+ cpuPercent: number;
21
+ activeConnections: number;
22
+ uptimeSeconds: number;
23
+ }
24
+ export interface CapabilityMetrics {
25
+ totalCapabilities: number;
26
+ healthyCapabilities: number;
27
+ degradedCapabilities: string[];
28
+ }
29
+ export interface SystemPulse {
30
+ timestamp: number;
31
+ overall: 'healthy' | 'degraded' | 'critical';
32
+ subsystems: SubsystemStatus[];
33
+ anomalies: Anomaly[];
34
+ reasoning: ReasoningMetrics;
35
+ resources: ResourceMetrics;
36
+ capabilities: CapabilityMetrics;
37
+ }
38
+ //# sourceMappingURL=monitor-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-types.d.ts","sourceRoot":"","sources":["../../src/monitor/monitor-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,iBAAiB,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=monitor-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-types.js","sourceRoot":"","sources":["../../src/monitor/monitor-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { SystemPulse, Anomaly } from './monitor-types.js';
2
+ import type { SignalSynthesizer } from './signal-synthesizer.js';
3
+ export interface SelfMonitorOptions {
4
+ intervalMs?: number;
5
+ }
6
+ export declare class SelfMonitor {
7
+ private readonly synthesizer;
8
+ private readonly intervalMs;
9
+ private latestPulse;
10
+ private previousAnomalyKeys;
11
+ private intervalId;
12
+ private anomalyHandlers;
13
+ constructor(synthesizer: SignalSynthesizer, options?: SelfMonitorOptions);
14
+ start(): void;
15
+ stop(): void;
16
+ getPulse(): SystemPulse;
17
+ onAnomaly(handler: (anomaly: Anomaly) => void): void;
18
+ private tick;
19
+ }
20
+ //# sourceMappingURL=self-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-monitor.d.ts","sourceRoot":"","sources":["../../src/monitor/self-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgBD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,eAAe,CAAyC;gBAEpD,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAKxE,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAOZ,QAAQ,IAAI,WAAW;IAIvB,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,IAAI;CAiBb"}
@@ -0,0 +1,55 @@
1
+ const EMPTY_PULSE = {
2
+ timestamp: 0,
3
+ overall: 'healthy',
4
+ subsystems: [],
5
+ anomalies: [],
6
+ reasoning: { avgResponseQuality: 0, domainAccuracy: 0, preferenceStability: 0 },
7
+ resources: { memoryUsageMb: 0, cpuPercent: 0, activeConnections: 0, uptimeSeconds: 0 },
8
+ capabilities: { totalCapabilities: 0, healthyCapabilities: 0, degradedCapabilities: [] },
9
+ };
10
+ function anomalyKey(a) {
11
+ return `${a.subsystem}:${a.description}`;
12
+ }
13
+ export class SelfMonitor {
14
+ synthesizer;
15
+ intervalMs;
16
+ latestPulse = EMPTY_PULSE;
17
+ previousAnomalyKeys = new Set();
18
+ intervalId;
19
+ anomalyHandlers = [];
20
+ constructor(synthesizer, options) {
21
+ this.synthesizer = synthesizer;
22
+ this.intervalMs = options?.intervalMs ?? 30_000;
23
+ }
24
+ start() {
25
+ this.tick();
26
+ this.intervalId = setInterval(() => this.tick(), this.intervalMs);
27
+ }
28
+ stop() {
29
+ if (this.intervalId !== undefined) {
30
+ clearInterval(this.intervalId);
31
+ this.intervalId = undefined;
32
+ }
33
+ }
34
+ getPulse() {
35
+ return this.latestPulse;
36
+ }
37
+ onAnomaly(handler) {
38
+ this.anomalyHandlers.push(handler);
39
+ }
40
+ tick() {
41
+ const pulse = this.synthesizer.synthesize();
42
+ this.latestPulse = pulse;
43
+ const currentKeys = new Set(pulse.anomalies.map(anomalyKey));
44
+ for (const anomaly of pulse.anomalies) {
45
+ const key = anomalyKey(anomaly);
46
+ if (!this.previousAnomalyKeys.has(key)) {
47
+ for (const handler of this.anomalyHandlers) {
48
+ handler(anomaly);
49
+ }
50
+ }
51
+ }
52
+ this.previousAnomalyKeys = currentKeys;
53
+ }
54
+ }
55
+ //# sourceMappingURL=self-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-monitor.js","sourceRoot":"","sources":["../../src/monitor/self-monitor.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAAgB;IAC/B,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE;IAC/E,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;IACtF,YAAY,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,oBAAoB,EAAE,EAAE,EAAE;CACzF,CAAC;AAEF,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,OAAO,WAAW;IACL,WAAW,CAAoB;IAC/B,UAAU,CAAS;IAC5B,WAAW,GAAgB,WAAW,CAAC;IACvC,mBAAmB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC7C,UAAU,CAA6C;IACvD,eAAe,GAAsC,EAAE,CAAC;IAEhE,YAAY,WAA8B,EAAE,OAA4B;QACtE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,MAAM,CAAC;IAClD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,OAAmC;QAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEO,IAAI;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAE7D,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ import type { SystemPulse, ResourceMetrics, CapabilityMetrics } from './monitor-types.js';
2
+ export interface HealthMonitorLike {
3
+ getHealthState(): {
4
+ overall: 'healthy' | 'degraded' | 'unhealthy';
5
+ subsystems: Array<{
6
+ name: string;
7
+ status: string;
8
+ lastCheck: string;
9
+ details?: string;
10
+ }>;
11
+ issues: Array<{
12
+ id: string;
13
+ subsystem: string;
14
+ severity: 'warning' | 'critical';
15
+ description: string;
16
+ detectedAt: string;
17
+ autoFixable: boolean;
18
+ }>;
19
+ lastCheck: string;
20
+ };
21
+ }
22
+ export interface FeedbackStoreLike {
23
+ getInsights(): {
24
+ suggestedAdjustments: Record<string, number>;
25
+ weakDomains: string[];
26
+ trend: 'improving' | 'declining' | 'stable';
27
+ totalFeedback: number;
28
+ };
29
+ }
30
+ export interface CorrectionStoreLike {
31
+ getStats(): {
32
+ totalCorrections: number;
33
+ topMisclassifications: Array<{
34
+ from: string;
35
+ to: string;
36
+ count: number;
37
+ }>;
38
+ correctionRate: Record<string, number>;
39
+ };
40
+ }
41
+ export interface PreferenceHistoryLike {
42
+ detectConflicts(): unknown[];
43
+ }
44
+ export interface SignalSynthesizerDeps {
45
+ healthMonitor: HealthMonitorLike;
46
+ feedbackStore: FeedbackStoreLike;
47
+ correctionStore: CorrectionStoreLike;
48
+ preferenceHistory: PreferenceHistoryLike;
49
+ getResourceMetrics: () => ResourceMetrics;
50
+ getCapabilityMetrics: () => CapabilityMetrics;
51
+ }
52
+ export declare class SignalSynthesizer {
53
+ private readonly deps;
54
+ constructor(deps: SignalSynthesizerDeps);
55
+ synthesize(): SystemPulse;
56
+ }
57
+ //# sourceMappingURL=signal-synthesizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-synthesizer.d.ts","sourceRoot":"","sources":["../../src/monitor/signal-synthesizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAIX,eAAe,EACf,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,cAAc,IAAI;QAChB,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;QAC9C,UAAU,EAAE,KAAK,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC;YACnB,WAAW,EAAE,OAAO,CAAC;SACtB,CAAC,CAAC;QACH,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI;QACb,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC5C,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,IAAI;QACV,gBAAgB,EAAE,MAAM,CAAC;QACzB,qBAAqB,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1E,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,IAAI,OAAO,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,iBAAiB,CAAC;IACjC,aAAa,EAAE,iBAAiB,CAAC;IACjC,eAAe,EAAE,mBAAmB,CAAC;IACrC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,kBAAkB,EAAE,MAAM,eAAe,CAAC;IAC1C,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;CAC/C;AAwDD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;gBAEjC,IAAI,EAAE,qBAAqB;IAIvC,UAAU,IAAI,WAAW;CAqC1B"}
@@ -0,0 +1,81 @@
1
+ function mapOverall(overall) {
2
+ if (overall === 'unhealthy')
3
+ return 'critical';
4
+ return overall;
5
+ }
6
+ function mapSubsystemStatus(status) {
7
+ if (status === 'healthy')
8
+ return 'up';
9
+ if (status === 'degraded')
10
+ return 'degraded';
11
+ return 'down';
12
+ }
13
+ function mapIssueSeverity(severity) {
14
+ return severity === 'critical' ? 'high' : 'low';
15
+ }
16
+ function computeReasoning(feedbackStore, correctionStore, preferenceHistory) {
17
+ const insights = feedbackStore.getInsights();
18
+ const stats = correctionStore.getStats();
19
+ const conflicts = preferenceHistory.detectConflicts();
20
+ // avgResponseQuality: trend-based, 0.5 if no feedback
21
+ let avgResponseQuality;
22
+ if (insights.totalFeedback === 0) {
23
+ avgResponseQuality = 0.5;
24
+ }
25
+ else if (insights.trend === 'improving') {
26
+ avgResponseQuality = 0.85;
27
+ }
28
+ else if (insights.trend === 'stable') {
29
+ avgResponseQuality = 0.7;
30
+ }
31
+ else {
32
+ avgResponseQuality = 0.5;
33
+ }
34
+ // domainAccuracy: 1 - avg(correctionRates), clamped [0,1]
35
+ const rates = Object.values(stats.correctionRate);
36
+ let domainAccuracy;
37
+ if (rates.length === 0) {
38
+ domainAccuracy = 1;
39
+ }
40
+ else {
41
+ const avg = rates.reduce((sum, r) => sum + r, 0) / rates.length;
42
+ domainAccuracy = Math.max(0, Math.min(1, 1 - avg));
43
+ }
44
+ // preferenceStability: max(0, 1 - conflicts.length * 0.15)
45
+ const preferenceStability = Math.max(0, 1 - conflicts.length * 0.15);
46
+ return { avgResponseQuality, domainAccuracy, preferenceStability };
47
+ }
48
+ export class SignalSynthesizer {
49
+ deps;
50
+ constructor(deps) {
51
+ this.deps = deps;
52
+ }
53
+ synthesize() {
54
+ const healthState = this.deps.healthMonitor.getHealthState();
55
+ const overall = mapOverall(healthState.overall);
56
+ const subsystems = healthState.subsystems.map((s) => ({
57
+ name: s.name,
58
+ status: mapSubsystemStatus(s.status),
59
+ lastCheck: new Date(s.lastCheck).getTime(),
60
+ }));
61
+ const anomalies = healthState.issues.map((issue) => ({
62
+ subsystem: issue.subsystem,
63
+ severity: mapIssueSeverity(issue.severity),
64
+ description: issue.description,
65
+ detectedAt: new Date(issue.detectedAt).getTime(),
66
+ }));
67
+ const reasoning = computeReasoning(this.deps.feedbackStore, this.deps.correctionStore, this.deps.preferenceHistory);
68
+ const resources = this.deps.getResourceMetrics();
69
+ const capabilities = this.deps.getCapabilityMetrics();
70
+ return {
71
+ timestamp: Date.now(),
72
+ overall,
73
+ subsystems,
74
+ anomalies,
75
+ reasoning,
76
+ resources,
77
+ capabilities,
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=signal-synthesizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-synthesizer.js","sourceRoot":"","sources":["../../src/monitor/signal-synthesizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Anomaly } from '../monitor/monitor-types.js';
2
+ import type { RepairAction } from './repair-types.js';
3
+ export interface RepairPattern {
4
+ match: (anomaly: Anomaly) => boolean;
5
+ rootCause: string;
6
+ confidence: number;
7
+ actions: () => RepairAction[];
8
+ }
9
+ export declare const BUILT_IN_PATTERNS: RepairPattern[];
10
+ //# sourceMappingURL=repair-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-actions.d.ts","sourceRoot":"","sources":["../../src/repair/repair-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,YAAY,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA0E5C,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export const BUILT_IN_PATTERNS = [
3
+ {
4
+ match: (a) => a.subsystem === 'providers' && a.description.includes('all down'),
5
+ rootCause: 'All providers are down — likely credential expiry or upstream outage',
6
+ confidence: 0.9,
7
+ actions: () => [
8
+ {
9
+ id: randomUUID(),
10
+ tier: 'approve',
11
+ description: 'Rotate provider credentials',
12
+ command: 'rotateCredentials --subsystem providers',
13
+ rollback: 'restoreCredentials --subsystem providers',
14
+ estimatedImpact: 'Brief downtime during credential rotation',
15
+ },
16
+ ],
17
+ },
18
+ {
19
+ match: (a) => a.subsystem === 'providers' && a.severity === 'high',
20
+ rootCause: 'Provider subsystem degraded with high severity',
21
+ confidence: 0.75,
22
+ actions: () => [
23
+ {
24
+ id: randomUUID(),
25
+ tier: 'notify',
26
+ description: 'Failover to backup provider',
27
+ command: 'failover --subsystem providers',
28
+ rollback: 'revert-failover --subsystem providers',
29
+ estimatedImpact: 'Temporary switch to backup provider',
30
+ },
31
+ ],
32
+ },
33
+ {
34
+ match: (a) => a.subsystem === 'cache' || a.description.includes('stale'),
35
+ rootCause: 'Stale or corrupted cache detected',
36
+ confidence: 0.85,
37
+ actions: () => [
38
+ {
39
+ id: randomUUID(),
40
+ tier: 'auto',
41
+ description: 'Clear stale cache entries',
42
+ command: 'clearCache --all',
43
+ estimatedImpact: 'Cache miss spike until entries are rebuilt',
44
+ },
45
+ ],
46
+ },
47
+ {
48
+ match: (a) => a.subsystem === 'channels',
49
+ rootCause: 'Channel connection lost or unstable',
50
+ confidence: 0.8,
51
+ actions: () => [
52
+ {
53
+ id: randomUUID(),
54
+ tier: 'auto',
55
+ description: 'Reconnect channel',
56
+ command: 'reconnect --subsystem channels',
57
+ estimatedImpact: 'Brief message delivery delay during reconnect',
58
+ },
59
+ ],
60
+ },
61
+ {
62
+ match: (a) => a.subsystem === 'memory' && a.severity !== 'low',
63
+ rootCause: 'Memory subsystem pressure detected',
64
+ confidence: 0.7,
65
+ actions: () => [
66
+ {
67
+ id: randomUUID(),
68
+ tier: 'notify',
69
+ description: 'Clear memory caches to reduce pressure',
70
+ command: 'clearCaches --subsystem memory',
71
+ rollback: 'restoreCaches --subsystem memory',
72
+ estimatedImpact: 'Temporary performance degradation while caches rebuild',
73
+ },
74
+ ],
75
+ },
76
+ ];
77
+ //# sourceMappingURL=repair-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-actions.js","sourceRoot":"","sources":["../../src/repair/repair-actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD;QACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC/E,SAAS,EAAE,sEAAsE;QACjF,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,GAAG,EAAE,CAAC;YACb;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,6BAA6B;gBAC1C,OAAO,EAAE,yCAAyC;gBAClD,QAAQ,EAAE,0CAA0C;gBACpD,eAAe,EAAE,2CAA2C;aAC7D;SACF;KACF;IACD;QACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAClE,SAAS,EAAE,gDAAgD;QAC3D,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,EAAE,CAAC;YACb;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6BAA6B;gBAC1C,OAAO,EAAE,gCAAgC;gBACzC,QAAQ,EAAE,uCAAuC;gBACjD,eAAe,EAAE,qCAAqC;aACvD;SACF;KACF;IACD;QACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxE,SAAS,EAAE,mCAAmC;QAC9C,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,GAAG,EAAE,CAAC;YACb;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,2BAA2B;gBACxC,OAAO,EAAE,kBAAkB;gBAC3B,eAAe,EAAE,4CAA4C;aAC9D;SACF;KACF;IACD;QACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU;QACxC,SAAS,EAAE,qCAAqC;QAChD,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,GAAG,EAAE,CAAC;YACb;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,mBAAmB;gBAChC,OAAO,EAAE,gCAAgC;gBACzC,eAAe,EAAE,+CAA+C;aACjE;SACF;KACF;IACD;QACE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK;QAC9D,SAAS,EAAE,oCAAoC;QAC/C,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,GAAG,EAAE,CAAC;YACb;gBACE,EAAE,EAAE,UAAU,EAAE;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;gBACrD,OAAO,EAAE,gCAAgC;gBACzC,QAAQ,EAAE,kCAAkC;gBAC5C,eAAe,EAAE,wDAAwD;aAC1E;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Anomaly } from '../monitor/monitor-types.js';
2
+ export type RepairTier = 'auto' | 'notify' | 'approve';
3
+ export interface Diagnosis {
4
+ id: string;
5
+ timestamp: number;
6
+ anomaly: Anomaly;
7
+ rootCause: string;
8
+ confidence: number;
9
+ suggestedActions: RepairAction[];
10
+ }
11
+ export interface RepairAction {
12
+ id: string;
13
+ tier: RepairTier;
14
+ description: string;
15
+ command: string;
16
+ rollback?: string;
17
+ estimatedImpact: string;
18
+ }
19
+ export interface RepairLog {
20
+ actionId: string;
21
+ diagnosisId: string;
22
+ tier: RepairTier;
23
+ status: 'executed' | 'approved' | 'rejected' | 'failed' | 'rolled_back';
24
+ executedAt: number;
25
+ result?: string;
26
+ error?: string;
27
+ }
28
+ //# sourceMappingURL=repair-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-types.d.ts","sourceRoot":"","sources":["../../src/repair/repair-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=repair-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-types.js","sourceRoot":"","sources":["../../src/repair/repair-types.ts"],"names":[],"mappings":""}