@pylabmit/agent-cmdb 1.5.1 → 2.0.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 (51) hide show
  1. package/README.md +20 -3
  2. package/dist/checkpoint.d.ts +6 -0
  3. package/dist/checkpoint.d.ts.map +1 -0
  4. package/dist/checkpoint.js +137 -0
  5. package/dist/checkpoint.js.map +1 -0
  6. package/dist/cli.js +87 -6
  7. package/dist/cli.js.map +1 -1
  8. package/dist/cost.d.ts +3 -0
  9. package/dist/cost.d.ts.map +1 -0
  10. package/dist/cost.js +49 -0
  11. package/dist/cost.js.map +1 -0
  12. package/dist/digest.d.ts +2 -1
  13. package/dist/digest.d.ts.map +1 -1
  14. package/dist/digest.js +18 -2
  15. package/dist/digest.js.map +1 -1
  16. package/dist/engine.d.ts +0 -2
  17. package/dist/engine.d.ts.map +1 -1
  18. package/dist/engine.js +0 -2
  19. package/dist/engine.js.map +1 -1
  20. package/dist/health.d.ts +9 -0
  21. package/dist/health.d.ts.map +1 -0
  22. package/dist/health.js +222 -0
  23. package/dist/health.js.map +1 -0
  24. package/dist/interface.d.ts +14 -1
  25. package/dist/interface.d.ts.map +1 -1
  26. package/dist/interface.js +45 -1
  27. package/dist/interface.js.map +1 -1
  28. package/dist/internal.d.ts +3 -0
  29. package/dist/internal.d.ts.map +1 -0
  30. package/dist/internal.js +3 -0
  31. package/dist/internal.js.map +1 -0
  32. package/dist/loader.js +52 -2
  33. package/dist/loader.js.map +1 -1
  34. package/dist/preflight.d.ts +4 -2
  35. package/dist/preflight.d.ts.map +1 -1
  36. package/dist/preflight.js +31 -3
  37. package/dist/preflight.js.map +1 -1
  38. package/dist/route-resolver.d.ts.map +1 -1
  39. package/dist/route-resolver.js +43 -3
  40. package/dist/route-resolver.js.map +1 -1
  41. package/dist/slo.d.ts +4 -0
  42. package/dist/slo.d.ts.map +1 -0
  43. package/dist/slo.js +147 -0
  44. package/dist/slo.js.map +1 -0
  45. package/dist/store.d.ts +9 -0
  46. package/dist/store.d.ts.map +1 -1
  47. package/dist/store.js +104 -2
  48. package/dist/store.js.map +1 -1
  49. package/dist/types.d.ts +66 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/package.json +1 -13
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { CircuitState, ControlPlane, SourceHealth } from './types.js';
2
+ export declare function recordSourceSuccess(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<SourceHealth>;
3
+ export declare function recordSourceFailure(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<SourceHealth>;
4
+ export declare function getSourceHealth(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<SourceHealth>;
5
+ export declare function listSourceHealth(controlPlane: ControlPlane, storeDir: string): Promise<SourceHealth[]>;
6
+ export declare function isSourceAvailable(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<boolean>;
7
+ export declare function getCircuitState(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<CircuitState>;
8
+ export declare function resetSourceHealth(controlPlane: ControlPlane, storeDir: string, sourceId: string): Promise<SourceHealth>;
9
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAa/F,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CA8BvB;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAG5G;AAED,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAKvB;AAED,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAsBvB"}
package/dist/health.js ADDED
@@ -0,0 +1,222 @@
1
+ import { appendChange, readJsonState, writeJsonState } from './store.js';
2
+ const healthFile = 'health.json';
3
+ const defaultHealthConfig = {
4
+ failureThreshold: 5,
5
+ recoveryTimeoutMs: 30_000
6
+ };
7
+ export async function recordSourceSuccess(controlPlane, storeDir, sourceId) {
8
+ ensureKnownSource(controlPlane, sourceId);
9
+ const state = await readHealthState(storeDir);
10
+ const current = getHealthFromState(state, sourceId);
11
+ const now = new Date().toISOString();
12
+ if (current.warnings && current.warnings.length > 0) {
13
+ return current;
14
+ }
15
+ if (current.status === 'down' && !recoveryElapsed(controlPlane, current)) {
16
+ return current;
17
+ }
18
+ const next = {
19
+ sourceId,
20
+ status: 'up',
21
+ consecutiveFailures: 0,
22
+ lastChecked: now,
23
+ lastFailure: current.lastFailure,
24
+ lastSuccess: now
25
+ };
26
+ await writeHealthEntry(storeDir, state, next);
27
+ await appendChange(storeDir, {
28
+ target: `source.${sourceId}`,
29
+ targetType: 'source',
30
+ action: 'verify',
31
+ actor: 'agent-cmdb-health',
32
+ reason: `Source ${sourceId} reported success.`,
33
+ changedAt: now,
34
+ after: next
35
+ });
36
+ return next;
37
+ }
38
+ export async function recordSourceFailure(controlPlane, storeDir, sourceId) {
39
+ ensureKnownSource(controlPlane, sourceId);
40
+ const state = await readHealthState(storeDir);
41
+ const current = getHealthFromState(state, sourceId);
42
+ const config = healthConfig(controlPlane, sourceId);
43
+ const now = new Date().toISOString();
44
+ const consecutiveFailures = current.status === 'half-open'
45
+ ? config.failureThreshold
46
+ : current.consecutiveFailures + 1;
47
+ const status = consecutiveFailures >= config.failureThreshold ? 'down' : 'up';
48
+ const next = {
49
+ sourceId,
50
+ status,
51
+ consecutiveFailures,
52
+ lastChecked: now,
53
+ lastFailure: now,
54
+ lastSuccess: current.lastSuccess
55
+ };
56
+ await writeHealthEntry(storeDir, state, next);
57
+ await appendChange(storeDir, {
58
+ target: `source.${sourceId}`,
59
+ targetType: 'source',
60
+ action: 'verify',
61
+ actor: 'agent-cmdb-health',
62
+ reason: `Source ${sourceId} reported failure.`,
63
+ changedAt: now,
64
+ after: next
65
+ });
66
+ return next;
67
+ }
68
+ export async function getSourceHealth(controlPlane, storeDir, sourceId) {
69
+ ensureKnownSource(controlPlane, sourceId);
70
+ return getHealthFromState(await readHealthState(storeDir), sourceId);
71
+ }
72
+ export async function listSourceHealth(controlPlane, storeDir) {
73
+ const state = await readHealthState(storeDir);
74
+ return controlPlane.sources.map((source) => getHealthFromState(state, source.id));
75
+ }
76
+ export async function isSourceAvailable(controlPlane, storeDir, sourceId) {
77
+ ensureKnownSource(controlPlane, sourceId);
78
+ const state = await readHealthState(storeDir);
79
+ const current = getHealthFromState(state, sourceId);
80
+ if (current.status === 'up' || current.status === 'half-open') {
81
+ return true;
82
+ }
83
+ if (!recoveryElapsed(controlPlane, current)) {
84
+ return false;
85
+ }
86
+ const next = {
87
+ ...current,
88
+ status: 'half-open',
89
+ lastChecked: new Date().toISOString()
90
+ };
91
+ await writeHealthEntry(storeDir, state, next);
92
+ return true;
93
+ }
94
+ export async function getCircuitState(controlPlane, storeDir, sourceId) {
95
+ const health = await getSourceHealth(controlPlane, storeDir, sourceId);
96
+ if (health.status === 'down')
97
+ return 'open';
98
+ if (health.status === 'half-open')
99
+ return 'half-open';
100
+ return 'closed';
101
+ }
102
+ export async function resetSourceHealth(controlPlane, storeDir, sourceId) {
103
+ ensureKnownSource(controlPlane, sourceId);
104
+ const state = await readHealthState(storeDir);
105
+ const now = new Date().toISOString();
106
+ const next = {
107
+ sourceId,
108
+ status: 'up',
109
+ consecutiveFailures: 0,
110
+ lastChecked: now,
111
+ lastSuccess: now
112
+ };
113
+ await writeHealthEntry(storeDir, state, next);
114
+ await appendChange(storeDir, {
115
+ target: `source.${sourceId}`,
116
+ targetType: 'source',
117
+ action: 'resume',
118
+ actor: 'agent-cmdb-health',
119
+ reason: `Source ${sourceId} health manually reset.`,
120
+ changedAt: now,
121
+ after: next
122
+ });
123
+ return next;
124
+ }
125
+ async function readHealthState(storeDir) {
126
+ return readJsonState(storeDir, healthFile, { sources: [] }, parseHealthState);
127
+ }
128
+ async function writeHealthEntry(storeDir, state, entry) {
129
+ const sources = state.sources.filter((source) => source.sourceId !== entry.sourceId);
130
+ sources.push(entry);
131
+ sources.sort((left, right) => left.sourceId.localeCompare(right.sourceId));
132
+ await writeJsonState(storeDir, healthFile, { sources }, parseHealthState);
133
+ }
134
+ function getHealthFromState(state, sourceId) {
135
+ const health = state.sources.find((source) => source.sourceId === sourceId) ?? {
136
+ sourceId,
137
+ status: 'up',
138
+ consecutiveFailures: 0,
139
+ lastChecked: new Date(0).toISOString()
140
+ };
141
+ if (!state.warnings || state.warnings.length === 0)
142
+ return health;
143
+ return {
144
+ ...health,
145
+ status: 'down',
146
+ consecutiveFailures: Math.max(health.consecutiveFailures, healthConfigFromStateFallback()),
147
+ warnings: state.warnings
148
+ };
149
+ }
150
+ function recoveryElapsed(controlPlane, health) {
151
+ if (!health.lastFailure)
152
+ return true;
153
+ const elapsedMs = Date.now() - Date.parse(health.lastFailure);
154
+ return elapsedMs >= healthConfig(controlPlane, health.sourceId).recoveryTimeoutMs;
155
+ }
156
+ function healthConfig(controlPlane, sourceId) {
157
+ const source = controlPlane.sources.find((candidate) => candidate.id === sourceId);
158
+ return {
159
+ failureThreshold: source?.health?.failureThreshold ?? defaultHealthConfig.failureThreshold,
160
+ recoveryTimeoutMs: source?.health?.recoveryTimeoutMs ?? defaultHealthConfig.recoveryTimeoutMs
161
+ };
162
+ }
163
+ function ensureKnownSource(controlPlane, sourceId) {
164
+ if (!controlPlane.sources.some((source) => source.id === sourceId)) {
165
+ throw new Error(`Unknown source: ${sourceId}.`);
166
+ }
167
+ }
168
+ function parseHealthState(value) {
169
+ const record = requireRecord(value, 'Health state');
170
+ const sources = Array.isArray(record.sources) ? record.sources.map(parseSourceHealth) : [];
171
+ const warnings = Array.isArray(record.warnings)
172
+ ? record.warnings.filter((warning) => typeof warning === 'string')
173
+ : undefined;
174
+ return {
175
+ sources,
176
+ warnings: warnings && warnings.length > 0 ? warnings : undefined
177
+ };
178
+ }
179
+ function parseSourceHealth(value) {
180
+ const record = requireRecord(value, 'Source health');
181
+ const status = readString(record, 'status', 'Source health status');
182
+ if (!['up', 'down', 'half-open'].includes(status)) {
183
+ throw new Error(`Invalid source health status: ${status}.`);
184
+ }
185
+ return {
186
+ sourceId: readString(record, 'sourceId', 'Source health sourceId'),
187
+ status: status,
188
+ consecutiveFailures: readNumber(record, 'consecutiveFailures', 'Source health consecutiveFailures'),
189
+ lastChecked: readString(record, 'lastChecked', 'Source health lastChecked'),
190
+ lastFailure: optionalString(record, 'lastFailure'),
191
+ lastSuccess: optionalString(record, 'lastSuccess')
192
+ };
193
+ }
194
+ function requireRecord(value, label) {
195
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
196
+ throw new Error(`${label} must be an object.`);
197
+ }
198
+ return value;
199
+ }
200
+ function readString(record, key, label) {
201
+ const value = record[key];
202
+ if (typeof value !== 'string' || value.trim().length === 0) {
203
+ throw new Error(`${label} must be a non-empty string.`);
204
+ }
205
+ return value;
206
+ }
207
+ function optionalString(record, key) {
208
+ if (record[key] === undefined)
209
+ return undefined;
210
+ return readString(record, key, key);
211
+ }
212
+ function readNumber(record, key, label) {
213
+ const value = record[key];
214
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
215
+ throw new Error(`${label} must be a non-negative number.`);
216
+ }
217
+ return value;
218
+ }
219
+ function healthConfigFromStateFallback() {
220
+ return defaultHealthConfig.failureThreshold;
221
+ }
222
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentCmdbReport, BrainEntity, BrainEntityKind, BrainReadResult, BrainSearchQuery, BrainWriteInput, ChangeInput, ChangeQuery, ChangeRecord, ControlPlane, DigestResult, EvidenceInput, EvidenceQuery, EvidenceRecord, PreflightRequest, PreflightResult, ResolvedSourceRoute, SourceRouteRequest, ValidationIssue } from './types.js';
1
+ import type { AgentCmdbReport, AgentCheckpoint, BrainEntity, BrainEntityKind, BrainReadResult, BrainSearchQuery, BrainWriteInput, CircuitState, ChangeInput, ChangeQuery, ChangeRecord, ControlPlane, CostSummary, DigestResult, EvidenceInput, EvidenceQuery, EvidenceRecord, PreflightRequest, PreflightResult, ResolvedSourceRoute, SloResult, SourceHealth, SourceRouteRequest, ValidationIssue } from './types.js';
2
2
  export interface AgentCmdbHealth {
3
3
  ok: boolean;
4
4
  errors: number;
@@ -23,6 +23,19 @@ export interface IAgentCMDB {
23
23
  listEntities(kind?: BrainEntityKind): Promise<BrainEntity[]>;
24
24
  generateDailyDigest(profile: string, date?: string): Promise<DigestResult>;
25
25
  generateWeeklyDigest(profile: string, weekStart?: string): Promise<DigestResult>;
26
+ recordSourceSuccess(sourceId: string): Promise<SourceHealth>;
27
+ recordSourceFailure(sourceId: string): Promise<SourceHealth>;
28
+ getSourceHealth(sourceId: string): Promise<SourceHealth>;
29
+ listSourceHealth(): Promise<SourceHealth[]>;
30
+ isSourceAvailable(sourceId: string): Promise<boolean>;
31
+ getCircuitState(sourceId: string): Promise<CircuitState>;
32
+ resetSourceHealth(sourceId: string): Promise<SourceHealth>;
33
+ calculateSlo(profile: string): Promise<SloResult>;
34
+ getCostSummary(profile: string, date?: string): Promise<CostSummary>;
35
+ saveCheckpoint(checkpoint: AgentCheckpoint): Promise<void>;
36
+ loadCheckpoint(id: string): Promise<AgentCheckpoint | null>;
37
+ listCheckpoints(profile?: string): Promise<AgentCheckpoint[]>;
38
+ deleteCheckpoint(id: string): Promise<void>;
26
39
  }
27
40
  export interface AgentCmdbOptions {
28
41
  configPath?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;IAC/D,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrD,WAAW,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1D,QAAQ,IAAI,eAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,eAAe,CAAC;IAC1B,MAAM,IAAI,eAAe,CAAC;IAC1B,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvD,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,YAAY,CACV,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,eAAe,CAAC,EAC1D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAAC;IACxB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,YAAY,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3E,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAiF1E"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"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"}
package/dist/interface.js CHANGED
@@ -1,5 +1,9 @@
1
1
  import { createEntity, deleteEntity, initBrainDir, listEntities, readEntity, searchEntities, writeEntity } from './brain.js';
2
2
  import { generateDailyDigest, generateWeeklyDigest } from './digest.js';
3
+ import { getCircuitState, getSourceHealth, isSourceAvailable, listSourceHealth, recordSourceFailure, recordSourceSuccess, resetSourceHealth } from './health.js';
4
+ import { calculateSlo } from './slo.js';
5
+ import { getCostSummary } from './cost.js';
6
+ import { deleteCheckpoint, listCheckpoints, loadCheckpoint, saveCheckpoint } from './checkpoint.js';
3
7
  import { generateReadinessReport, validateControlPlane } from './validator.js';
4
8
  import { loadDefaultControlPlane, loadControlPlane } from './loader.js';
5
9
  import { preflight } from './preflight.js';
@@ -68,7 +72,8 @@ export function createAgentCmdb(options = {}) {
68
72
  profile,
69
73
  date,
70
74
  storeDir,
71
- brainDir: await requireBrainDir(brainDir)
75
+ brainDir: await requireBrainDir(brainDir),
76
+ controlPlane
72
77
  });
73
78
  },
74
79
  async generateWeeklyDigest(profile, weekStart) {
@@ -78,6 +83,45 @@ export function createAgentCmdb(options = {}) {
78
83
  storeDir,
79
84
  brainDir: await requireBrainDir(brainDir)
80
85
  });
86
+ },
87
+ recordSourceSuccess(sourceId) {
88
+ return recordSourceSuccess(controlPlane, storeDir, sourceId);
89
+ },
90
+ recordSourceFailure(sourceId) {
91
+ return recordSourceFailure(controlPlane, storeDir, sourceId);
92
+ },
93
+ getSourceHealth(sourceId) {
94
+ return getSourceHealth(controlPlane, storeDir, sourceId);
95
+ },
96
+ listSourceHealth() {
97
+ return listSourceHealth(controlPlane, storeDir);
98
+ },
99
+ isSourceAvailable(sourceId) {
100
+ return isSourceAvailable(controlPlane, storeDir, sourceId);
101
+ },
102
+ getCircuitState(sourceId) {
103
+ return getCircuitState(controlPlane, storeDir, sourceId);
104
+ },
105
+ resetSourceHealth(sourceId) {
106
+ return resetSourceHealth(controlPlane, storeDir, sourceId);
107
+ },
108
+ calculateSlo(profile) {
109
+ return calculateSlo(controlPlane, storeDir, profile);
110
+ },
111
+ getCostSummary(profile, date) {
112
+ return getCostSummary(controlPlane, storeDir, profile, date);
113
+ },
114
+ saveCheckpoint(checkpoint) {
115
+ return saveCheckpoint(storeDir, checkpoint);
116
+ },
117
+ loadCheckpoint(id) {
118
+ return loadCheckpoint(storeDir, id);
119
+ },
120
+ listCheckpoints(profile) {
121
+ return listCheckpoints(storeDir, profile);
122
+ },
123
+ deleteCheckpoint(id) {
124
+ return deleteCheckpoint(storeDir, id);
81
125
  }
82
126
  };
83
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { evaluatePolicy, normalizePolicyRequest, policiesConflict, policyMatches, policyShadows } from './policy-engine.js';
2
+ export { evaluatePreflight, preflight } from './preflight.js';
3
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACV,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { evaluatePolicy, normalizePolicyRequest, policiesConflict, policyMatches, policyShadows } from './policy-engine.js';
2
+ export { evaluatePreflight, preflight } from './preflight.js';
3
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACV,MAAM,gBAAgB,CAAC"}
package/dist/loader.js CHANGED
@@ -74,7 +74,9 @@ function parseSourceRef(value) {
74
74
  readOnly: readBoolean(record, 'readOnly', 'Source readOnly'),
75
75
  notes: optionalString(record, 'notes'),
76
76
  freshnessTtl: optionalString(record, 'freshnessTtl'),
77
- brainEntityId: optionalString(record, 'brainEntityId')
77
+ brainEntityId: optionalString(record, 'brainEntityId'),
78
+ health: parseOptionalHealthConfig(record.health),
79
+ costPerCall: optionalNonNegativeNumber(record, 'costPerCall')
78
80
  };
79
81
  }
80
82
  function parseAgentProfile(value) {
@@ -84,7 +86,8 @@ function parseAgentProfile(value) {
84
86
  name: readString(record, 'name', 'Profile name'),
85
87
  purpose: readString(record, 'purpose', 'Profile purpose'),
86
88
  guardrails: readStringArray(record, 'guardrails', 'Profile guardrails'),
87
- routes: readArray(record, 'routes', 'Profile routes').map(parseSourceRoute)
89
+ routes: readArray(record, 'routes', 'Profile routes').map(parseSourceRoute),
90
+ slo: parseOptionalSloConfig(record.slo)
88
91
  };
89
92
  }
90
93
  function parseSourceRoute(value) {
@@ -185,6 +188,53 @@ function optionalBoolean(record, key) {
185
188
  }
186
189
  return record[key];
187
190
  }
191
+ function optionalNonNegativeNumber(record, key) {
192
+ if (record[key] === undefined)
193
+ return undefined;
194
+ if (typeof record[key] !== 'number' || !Number.isFinite(record[key]) || record[key] < 0) {
195
+ throw new ControlPlaneLoadError(`${key} must be a non-negative number.`);
196
+ }
197
+ return record[key];
198
+ }
199
+ function parseOptionalHealthConfig(value) {
200
+ if (value === undefined)
201
+ return undefined;
202
+ const record = requireRecord(value, 'Source health');
203
+ return {
204
+ failureThreshold: optionalPositiveInteger(record, 'failureThreshold'),
205
+ recoveryTimeoutMs: optionalNonNegativeNumber(record, 'recoveryTimeoutMs')
206
+ };
207
+ }
208
+ function parseOptionalSloConfig(value) {
209
+ if (value === undefined)
210
+ return undefined;
211
+ const record = requireRecord(value, 'Profile SLO');
212
+ const metric = readString(record, 'metric', 'Profile SLO metric');
213
+ if (metric !== 'allow_rate') {
214
+ throw new ControlPlaneLoadError(`Profile SLO metric has invalid value ${metric}.`);
215
+ }
216
+ const target = optionalNonNegativeNumber(record, 'target');
217
+ const windowHours = optionalNonNegativeNumber(record, 'windowHours');
218
+ if (target === undefined || target > 1) {
219
+ throw new ControlPlaneLoadError('Profile SLO target must be between 0 and 1.');
220
+ }
221
+ if (windowHours === undefined || windowHours <= 0) {
222
+ throw new ControlPlaneLoadError('Profile SLO windowHours must be greater than 0.');
223
+ }
224
+ return {
225
+ target,
226
+ windowHours,
227
+ metric
228
+ };
229
+ }
230
+ function optionalPositiveInteger(record, key) {
231
+ if (record[key] === undefined)
232
+ return undefined;
233
+ if (!Number.isInteger(record[key]) || record[key] <= 0) {
234
+ throw new ControlPlaneLoadError(`${key} must be a positive integer.`);
235
+ }
236
+ return record[key];
237
+ }
188
238
  function requireRecord(value, label) {
189
239
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
190
240
  throw new ControlPlaneLoadError(`${label} must be an object.`);
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import type { ControlPlane, PreflightRequest, PreflightResult } from './types.js';
2
- export declare function evaluatePreflight(controlPlane: ControlPlane, request: PreflightRequest): PreflightResult;
1
+ import type { ControlPlane, PreflightRequest, PreflightResult, SourceHealth } from './types.js';
2
+ export declare function evaluatePreflight(controlPlane: ControlPlane, request: PreflightRequest, options?: {
3
+ health?: SourceHealth[];
4
+ }): PreflightResult;
3
5
  export declare function preflight(controlPlane: ControlPlane, storeDir: string, request: PreflightRequest): Promise<PreflightResult>;
4
6
  //# sourceMappingURL=preflight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EAEZ,gBAAgB,EAChB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAsDxG;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA8B1B"}
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EAEZ,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CAAO,GACxC,eAAe,CAmFjB;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAmC1B"}
package/dist/preflight.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { evaluatePolicy, normalizePolicyRequest } from './policy-engine.js';
2
2
  import { inspectProfile, resolveSourceRoute } from './route-resolver.js';
3
+ import { isSourceAvailable, listSourceHealth } from './health.js';
4
+ import { updateSloCache } from './slo.js';
3
5
  import { appendChange, appendEvidence } from './store.js';
4
- export function evaluatePreflight(controlPlane, request) {
6
+ export function evaluatePreflight(controlPlane, request, options = {}) {
5
7
  const normalizedRequest = normalizePreflightRequest(request);
6
8
  const decision = evaluatePolicy(controlPlane, normalizedRequest);
7
9
  let finalDecision = decision;
@@ -12,13 +14,26 @@ export function evaluatePreflight(controlPlane, request) {
12
14
  route = resolveSourceRoute(controlPlane, {
13
15
  profile: normalizedRequest.profile,
14
16
  intent: normalizedRequest.intent,
15
- freshness: normalizedRequest.freshness
17
+ freshness: normalizedRequest.freshness,
18
+ health: options.health
16
19
  });
17
20
  if (decision.effect === 'allow' && route.blockOnStale && route.staleSourceIds.length > 0) {
18
21
  const reason = `Route contains stale sources and blockOnStale is enabled: ${route.staleSourceIds.join(', ')}.`;
19
22
  warnings.push(reason);
20
23
  finalDecision = denyDecision(normalizedRequest, 'stale-source-blocked', 'stale_source_blocked', reason, 'Refresh the source freshness snapshots or choose a fresh route.');
21
24
  }
25
+ if (decision.effect === 'allow' && route.sources.length === 0 && route.skippedSources.length > 0) {
26
+ const reason = `All route sources are down: ${route.skippedSources.join(', ')}.`;
27
+ warnings.push(reason);
28
+ finalDecision = denyDecision(normalizedRequest, 'all-sources-down', 'all_sources_down', reason, 'Wait for source recovery or reset source health after manual verification.');
29
+ }
30
+ if (finalDecision.effect === 'allow'
31
+ && normalizedRequest.tool
32
+ && skippedSourcesIncludeTool(route.skippedSources, normalizedRequest.tool)) {
33
+ const reason = `Requested tool ${normalizedRequest.tool} is down.`;
34
+ warnings.push(reason);
35
+ finalDecision = denyDecision(normalizedRequest, 'requested-tool-down', 'requested_tool_down', reason, 'Use one of the returned route fallback sources instead of the down requested tool.');
36
+ }
22
37
  }
23
38
  catch (error) {
24
39
  const message = error instanceof Error ? error.message : String(error);
@@ -42,7 +57,9 @@ export function evaluatePreflight(controlPlane, request) {
42
57
  };
43
58
  }
44
59
  export async function preflight(controlPlane, storeDir, request) {
45
- const result = evaluatePreflight(controlPlane, request);
60
+ await Promise.all(controlPlane.sources.map((source) => isSourceAvailable(controlPlane, storeDir, source.id)));
61
+ const health = await listSourceHealth(controlPlane, storeDir);
62
+ const result = evaluatePreflight(controlPlane, request, { health });
46
63
  if (result.dryRun) {
47
64
  return result;
48
65
  }
@@ -54,6 +71,7 @@ export async function preflight(controlPlane, storeDir, request) {
54
71
  summary: `Denied by ${result.decision.ruleId}: ${result.decision.reason}`,
55
72
  trust: 'high',
56
73
  capturedAt: new Date().toISOString(),
74
+ estimatedCost: estimateCost(controlPlane, result),
57
75
  tags: ['preflight', 'deny', result.decision.ruleId]
58
76
  });
59
77
  }
@@ -66,6 +84,7 @@ export async function preflight(controlPlane, storeDir, request) {
66
84
  changedAt: new Date().toISOString(),
67
85
  after: result
68
86
  });
87
+ await updateSloCache(controlPlane, storeDir, result);
69
88
  return result;
70
89
  }
71
90
  function normalizePreflightRequest(request) {
@@ -129,4 +148,13 @@ function requireNonEmptyString(value, label, suffix) {
129
148
  }
130
149
  return value;
131
150
  }
151
+ function estimateCost(controlPlane, result) {
152
+ const sourceId = result.decision.tool ?? result.route?.sources[0]?.id;
153
+ if (!sourceId)
154
+ return 0;
155
+ return controlPlane.sources.find((source) => source.id === sourceId)?.costPerCall ?? 0;
156
+ }
157
+ function skippedSourcesIncludeTool(skippedSources, tool) {
158
+ return skippedSources.includes(tool) || skippedSources.includes(`source.${tool}`) || skippedSources.includes(`tool.${tool}`);
159
+ }
132
160
  //# sourceMappingURL=preflight.js.map