@pylabmit/agent-cmdb 1.5.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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +249 -0
  3. package/dist/agent-preflight.d.ts +6 -0
  4. package/dist/agent-preflight.d.ts.map +1 -0
  5. package/dist/agent-preflight.js +55 -0
  6. package/dist/agent-preflight.js.map +1 -0
  7. package/dist/brain.d.ts +12 -0
  8. package/dist/brain.d.ts.map +1 -0
  9. package/dist/brain.js +372 -0
  10. package/dist/brain.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +495 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/digest.d.ts +14 -0
  16. package/dist/digest.d.ts.map +1 -0
  17. package/dist/digest.js +122 -0
  18. package/dist/digest.js.map +1 -0
  19. package/dist/doctor.d.ts +9 -0
  20. package/dist/doctor.d.ts.map +1 -0
  21. package/dist/doctor.js +170 -0
  22. package/dist/doctor.js.map +1 -0
  23. package/dist/duration.d.ts +2 -0
  24. package/dist/duration.d.ts.map +1 -0
  25. package/dist/duration.js +15 -0
  26. package/dist/duration.js.map +1 -0
  27. package/dist/engine.d.ts +12 -0
  28. package/dist/engine.d.ts.map +1 -0
  29. package/dist/engine.js +12 -0
  30. package/dist/engine.js.map +1 -0
  31. package/dist/freshness.d.ts +3 -0
  32. package/dist/freshness.d.ts.map +1 -0
  33. package/dist/freshness.js +19 -0
  34. package/dist/freshness.js.map +1 -0
  35. package/dist/graph-engine.d.ts +4 -0
  36. package/dist/graph-engine.d.ts.map +1 -0
  37. package/dist/graph-engine.js +36 -0
  38. package/dist/graph-engine.js.map +1 -0
  39. package/dist/interface.d.ts +34 -0
  40. package/dist/interface.d.ts.map +1 -0
  41. package/dist/interface.js +91 -0
  42. package/dist/interface.js.map +1 -0
  43. package/dist/loader.d.ts +9 -0
  44. package/dist/loader.d.ts.map +1 -0
  45. package/dist/loader.js +199 -0
  46. package/dist/loader.js.map +1 -0
  47. package/dist/policy-engine.d.ts +7 -0
  48. package/dist/policy-engine.d.ts.map +1 -0
  49. package/dist/policy-engine.js +143 -0
  50. package/dist/policy-engine.js.map +1 -0
  51. package/dist/preflight-action.d.ts +3 -0
  52. package/dist/preflight-action.d.ts.map +1 -0
  53. package/dist/preflight-action.js +101 -0
  54. package/dist/preflight-action.js.map +1 -0
  55. package/dist/preflight.d.ts +4 -0
  56. package/dist/preflight.d.ts.map +1 -0
  57. package/dist/preflight.js +36 -0
  58. package/dist/preflight.js.map +1 -0
  59. package/dist/route-resolver.d.ts +6 -0
  60. package/dist/route-resolver.d.ts.map +1 -0
  61. package/dist/route-resolver.js +130 -0
  62. package/dist/route-resolver.js.map +1 -0
  63. package/dist/store.d.ts +15 -0
  64. package/dist/store.d.ts.map +1 -0
  65. package/dist/store.js +230 -0
  66. package/dist/store.js.map +1 -0
  67. package/dist/types.d.ts +277 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +2 -0
  70. package/dist/types.js.map +1 -0
  71. package/dist/validator.d.ts +6 -0
  72. package/dist/validator.d.ts.map +1 -0
  73. package/dist/validator.js +165 -0
  74. package/dist/validator.js.map +1 -0
  75. package/examples/basic/control-plane.yaml +122 -0
  76. package/examples/multi-agent/control-plane.yaml +352 -0
  77. package/package.json +79 -0
package/dist/brain.js ADDED
@@ -0,0 +1,372 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
+ import { dirname, relative, resolve, sep } from 'node:path';
4
+ import { appendChange } from './store.js';
5
+ import { sanitizeText } from './store.js';
6
+ const staleThresholdMs = 604_800_000;
7
+ const entityIdPattern = /^[a-z0-9][a-z0-9-]*$/;
8
+ const brainVersion = '1.0';
9
+ const brainDirs = [
10
+ 'entities/people',
11
+ 'entities/companies',
12
+ 'entities/topics',
13
+ 'entities/tools',
14
+ 'entities/projects',
15
+ 'decisions',
16
+ 'digest/daily',
17
+ 'digest/weekly'
18
+ ];
19
+ export async function initBrainDir(brainDir) {
20
+ await Promise.all(brainDirs.map((dir) => mkdir(resolve(brainDir, dir), { recursive: true })));
21
+ try {
22
+ await readFile(indexPath(brainDir), 'utf8');
23
+ }
24
+ catch (error) {
25
+ if (isNodeError(error, 'ENOENT')) {
26
+ await writeBrainIndex(brainDir, {
27
+ version: brainVersion,
28
+ updatedAt: new Date().toISOString(),
29
+ entities: []
30
+ });
31
+ return;
32
+ }
33
+ throw error;
34
+ }
35
+ }
36
+ export async function readBrainIndex(brainDir) {
37
+ try {
38
+ const content = await readFile(indexPath(brainDir), 'utf8');
39
+ return parseBrainIndex(JSON.parse(content));
40
+ }
41
+ catch (error) {
42
+ if (isNodeError(error, 'ENOENT')) {
43
+ return {
44
+ version: brainVersion,
45
+ updatedAt: new Date().toISOString(),
46
+ entities: []
47
+ };
48
+ }
49
+ throw error;
50
+ }
51
+ }
52
+ export async function writeBrainIndex(brainDir, index) {
53
+ await mkdir(brainDir, { recursive: true });
54
+ const normalizedIndex = parseBrainIndex(index);
55
+ const target = indexPath(brainDir);
56
+ const temp = `${target}.${process.pid}.${randomUUID()}.tmp`;
57
+ await writeFile(temp, `${JSON.stringify(normalizedIndex, null, 2)}\n`, 'utf8');
58
+ await rename(temp, target);
59
+ }
60
+ export async function readEntity(brainDir, entityId) {
61
+ const normalizedId = normalizeEntityId(entityId);
62
+ const index = await readBrainIndex(brainDir);
63
+ const entity = index.entities.find((candidate) => candidate.id === normalizedId);
64
+ if (!entity) {
65
+ throw new Error(`Unknown brain entity: ${normalizedId}.`);
66
+ }
67
+ const content = await readFile(resolveEntityPath(brainDir, entity.filePath), 'utf8');
68
+ const ageMs = Math.max(0, Date.now() - new Date(entity.lastUpdated).getTime());
69
+ return {
70
+ entity,
71
+ content,
72
+ ageMs,
73
+ stale: ageMs > staleThresholdMs
74
+ };
75
+ }
76
+ export async function createEntity(brainDir, storeDir, entity, content, actor) {
77
+ await initBrainDir(brainDir);
78
+ const normalizedEntity = normalizeNewEntity(entity, actor);
79
+ const index = await readBrainIndex(brainDir);
80
+ if (index.entities.some((candidate) => candidate.id === normalizedEntity.id)) {
81
+ throw new Error(`Brain entity already exists: ${normalizedEntity.id}.`);
82
+ }
83
+ if (index.entities.some((candidate) => candidate.filePath === normalizedEntity.filePath)) {
84
+ throw new Error(`Brain entity filePath already exists: ${normalizedEntity.filePath}.`);
85
+ }
86
+ const entityPath = resolveEntityPath(brainDir, normalizedEntity.filePath);
87
+ await mkdir(dirname(entityPath), { recursive: true });
88
+ await writeNewEntityFile(entityPath, normalizedEntity.filePath, sanitizeMarkdown(content));
89
+ index.entities.push(normalizedEntity);
90
+ index.updatedAt = normalizedEntity.lastUpdated;
91
+ await writeBrainIndex(brainDir, index);
92
+ await appendChange(storeDir, {
93
+ target: `brain.${normalizedEntity.id}`,
94
+ targetType: 'memory',
95
+ action: 'create',
96
+ actor,
97
+ reason: `Created brain entity ${normalizedEntity.id}.`,
98
+ changedAt: normalizedEntity.lastUpdated,
99
+ after: normalizedEntity
100
+ });
101
+ return normalizedEntity;
102
+ }
103
+ export async function writeEntity(brainDir, storeDir, input) {
104
+ await initBrainDir(brainDir);
105
+ const normalizedInput = normalizeWriteInput(input);
106
+ const index = await readBrainIndex(brainDir);
107
+ const entityIndex = index.entities.findIndex((candidate) => candidate.id === normalizedInput.entityId);
108
+ if (entityIndex === -1) {
109
+ throw new Error(`Unknown brain entity: ${normalizedInput.entityId}.`);
110
+ }
111
+ const entity = index.entities[entityIndex];
112
+ const entityPath = resolveEntityPath(brainDir, entity.filePath);
113
+ const sanitizedContent = sanitizeMarkdown(normalizedInput.content);
114
+ const nextContent = normalizedInput.appendOnly
115
+ ? `${await readTextIfExists(entityPath)}\n---\n## Update - ${new Date().toISOString()}\n\n${sanitizedContent}`.trim()
116
+ : sanitizedContent;
117
+ await writeFile(entityPath, nextContent, 'utf8');
118
+ const updatedEntity = {
119
+ ...entity,
120
+ lastUpdated: new Date().toISOString(),
121
+ lastUpdatedBy: normalizedInput.actor
122
+ };
123
+ index.entities[entityIndex] = updatedEntity;
124
+ index.updatedAt = updatedEntity.lastUpdated;
125
+ await writeBrainIndex(brainDir, index);
126
+ await appendChange(storeDir, {
127
+ target: `brain.${updatedEntity.id}`,
128
+ targetType: 'memory',
129
+ action: 'update',
130
+ actor: normalizedInput.actor,
131
+ reason: normalizedInput.reason,
132
+ changedAt: updatedEntity.lastUpdated,
133
+ after: {
134
+ appendOnly: Boolean(normalizedInput.appendOnly),
135
+ entity: updatedEntity
136
+ }
137
+ });
138
+ return updatedEntity;
139
+ }
140
+ export async function deleteEntity(brainDir, storeDir, entityId, actor, reason) {
141
+ await initBrainDir(brainDir);
142
+ const normalizedId = normalizeEntityId(entityId);
143
+ const index = await readBrainIndex(brainDir);
144
+ const entity = index.entities.find((candidate) => candidate.id === normalizedId);
145
+ if (!entity) {
146
+ throw new Error(`Unknown brain entity: ${normalizedId}.`);
147
+ }
148
+ await rm(resolveEntityPath(brainDir, entity.filePath), { force: true });
149
+ index.entities = index.entities.filter((candidate) => candidate.id !== normalizedId);
150
+ index.updatedAt = new Date().toISOString();
151
+ await writeBrainIndex(brainDir, index);
152
+ await appendChange(storeDir, {
153
+ target: `brain.${normalizedId}`,
154
+ targetType: 'memory',
155
+ action: 'delete',
156
+ actor: sanitizeText(actor),
157
+ reason: sanitizeText(reason),
158
+ changedAt: index.updatedAt,
159
+ before: entity
160
+ });
161
+ }
162
+ export async function searchEntities(brainDir, query) {
163
+ const index = await readBrainIndex(brainDir);
164
+ const normalizedQuery = normalizeSearchQuery(query);
165
+ const keyword = normalizedQuery.keyword?.toLowerCase();
166
+ return index.entities
167
+ .filter((entity) => {
168
+ if (normalizedQuery.kind && entity.kind !== normalizedQuery.kind)
169
+ return false;
170
+ if (normalizedQuery.tag && !entity.tags.includes(normalizedQuery.tag))
171
+ return false;
172
+ if (normalizedQuery.updatedAfter && entity.lastUpdated < normalizedQuery.updatedAfter)
173
+ return false;
174
+ if (normalizedQuery.updatedBefore && entity.lastUpdated > normalizedQuery.updatedBefore)
175
+ return false;
176
+ if (keyword) {
177
+ const haystack = `${entity.name} ${entity.summary} ${entity.tags.join(' ')}`.toLowerCase();
178
+ if (!haystack.includes(keyword))
179
+ return false;
180
+ }
181
+ return true;
182
+ })
183
+ .sort((left, right) => right.lastUpdated.localeCompare(left.lastUpdated));
184
+ }
185
+ export async function listEntities(brainDir, kind) {
186
+ const index = await readBrainIndex(brainDir);
187
+ return index.entities
188
+ .filter((entity) => !kind || entity.kind === normalizeEntityKind(kind))
189
+ .sort((left, right) => left.name.localeCompare(right.name));
190
+ }
191
+ function normalizeNewEntity(entity, actor) {
192
+ const record = requireRecord(entity, 'Brain entity');
193
+ const now = new Date().toISOString();
194
+ const normalized = {
195
+ id: normalizeEntityId(readString(record, 'id', 'Brain entity id')),
196
+ kind: normalizeEntityKind(readString(record, 'kind', 'Brain entity kind')),
197
+ name: sanitizeText(readString(record, 'name', 'Brain entity name')),
198
+ filePath: sanitizeFilePath(readString(record, 'filePath', 'Brain entity filePath')),
199
+ tags: readStringArray(record, 'tags', 'Brain entity tags').map((tag) => sanitizeText(tag)),
200
+ trust: normalizeTrustLevel(readString(record, 'trust', 'Brain entity trust')),
201
+ lastUpdated: now,
202
+ lastUpdatedBy: sanitizeText(actor),
203
+ summary: sanitizeText(readString(record, 'summary', 'Brain entity summary')),
204
+ relatedEntities: optionalStringArray(record, 'relatedEntities', 'Brain related entities')?.map(normalizeEntityId)
205
+ };
206
+ return normalized;
207
+ }
208
+ function normalizeWriteInput(input) {
209
+ const record = requireRecord(input, 'Brain write input');
210
+ return {
211
+ entityId: normalizeEntityId(readString(record, 'entityId', 'Brain write entityId')),
212
+ content: readString(record, 'content', 'Brain write content'),
213
+ actor: sanitizeText(readString(record, 'actor', 'Brain write actor')),
214
+ reason: sanitizeText(readString(record, 'reason', 'Brain write reason')),
215
+ appendOnly: Boolean(record.appendOnly)
216
+ };
217
+ }
218
+ function normalizeSearchQuery(query) {
219
+ const record = requireRecord(query ?? {}, 'Brain search query');
220
+ return {
221
+ kind: record.kind === undefined ? undefined : normalizeEntityKind(readString(record, 'kind', 'Brain search kind')),
222
+ tag: record.tag === undefined ? undefined : sanitizeText(readString(record, 'tag', 'Brain search tag')),
223
+ updatedAfter: record.updatedAfter === undefined ? undefined : readString(record, 'updatedAfter', 'Brain search updatedAfter'),
224
+ updatedBefore: record.updatedBefore === undefined ? undefined : readString(record, 'updatedBefore', 'Brain search updatedBefore'),
225
+ keyword: record.keyword === undefined ? undefined : sanitizeText(readString(record, 'keyword', 'Brain search keyword'))
226
+ };
227
+ }
228
+ function parseBrainIndex(value) {
229
+ const record = requireRecord(value, 'Brain index');
230
+ const entities = readArray(record, 'entities', 'Brain index entities').map(parseBrainEntity);
231
+ assertUniqueEntityKeys(entities);
232
+ return {
233
+ version: readString(record, 'version', 'Brain index version'),
234
+ updatedAt: readString(record, 'updatedAt', 'Brain index updatedAt'),
235
+ entities
236
+ };
237
+ }
238
+ function parseBrainEntity(value) {
239
+ const record = requireRecord(value, 'Brain entity');
240
+ return {
241
+ id: normalizeEntityId(readString(record, 'id', 'Brain entity id')),
242
+ kind: normalizeEntityKind(readString(record, 'kind', 'Brain entity kind')),
243
+ name: sanitizeText(readString(record, 'name', 'Brain entity name')),
244
+ filePath: sanitizeFilePath(readString(record, 'filePath', 'Brain entity filePath')),
245
+ tags: readStringArray(record, 'tags', 'Brain entity tags').map((tag) => sanitizeText(tag)),
246
+ trust: normalizeTrustLevel(readString(record, 'trust', 'Brain entity trust')),
247
+ lastUpdated: readString(record, 'lastUpdated', 'Brain entity lastUpdated'),
248
+ lastUpdatedBy: sanitizeText(readString(record, 'lastUpdatedBy', 'Brain entity lastUpdatedBy')),
249
+ summary: sanitizeText(readString(record, 'summary', 'Brain entity summary')),
250
+ relatedEntities: optionalStringArray(record, 'relatedEntities', 'Brain related entities')?.map(normalizeEntityId)
251
+ };
252
+ }
253
+ function resolveEntityPath(brainDir, filePath) {
254
+ const brainRoot = resolve(brainDir);
255
+ const target = resolve(brainRoot, sanitizeFilePath(filePath));
256
+ if (target !== brainRoot && !target.startsWith(`${brainRoot}${sep}`)) {
257
+ throw new Error('Brain entity filePath must stay within brainDir.');
258
+ }
259
+ return target;
260
+ }
261
+ function sanitizeFilePath(filePath) {
262
+ const normalized = sanitizeText(filePath).replaceAll('\\', '/');
263
+ if (!normalized || normalized.startsWith('/') || normalized.includes('..')) {
264
+ throw new Error('Brain entity filePath must be relative and stay within brainDir.');
265
+ }
266
+ return normalized;
267
+ }
268
+ function sanitizeMarkdown(value) {
269
+ return sanitizeText(value, { preserveLineBreaks: true });
270
+ }
271
+ function assertUniqueEntityKeys(entities) {
272
+ const ids = new Set();
273
+ const filePaths = new Set();
274
+ for (const entity of entities) {
275
+ if (ids.has(entity.id)) {
276
+ throw new Error(`Brain index contains duplicate id: ${entity.id}.`);
277
+ }
278
+ if (filePaths.has(entity.filePath)) {
279
+ throw new Error(`Brain index contains duplicate filePath: ${entity.filePath}.`);
280
+ }
281
+ ids.add(entity.id);
282
+ filePaths.add(entity.filePath);
283
+ }
284
+ }
285
+ function normalizeEntityId(entityId) {
286
+ const normalized = sanitizeText(entityId);
287
+ if (!entityIdPattern.test(normalized)) {
288
+ throw new Error('Brain entity id must be lowercase kebab-case.');
289
+ }
290
+ return normalized;
291
+ }
292
+ function normalizeEntityKind(kind) {
293
+ const aliases = {
294
+ people: 'person',
295
+ companies: 'company',
296
+ topics: 'topic',
297
+ tools: 'tool',
298
+ projects: 'project'
299
+ };
300
+ const normalized = aliases[kind] ?? kind;
301
+ if (!['person', 'company', 'topic', 'tool', 'project'].includes(normalized)) {
302
+ throw new Error('Brain entity kind must be one of: person, company, topic, tool, project.');
303
+ }
304
+ return normalized;
305
+ }
306
+ function normalizeTrustLevel(trust) {
307
+ if (!['high', 'medium', 'low'].includes(trust)) {
308
+ throw new Error('Brain entity trust must be one of: high, medium, low.');
309
+ }
310
+ return trust;
311
+ }
312
+ function indexPath(brainDir) {
313
+ return resolve(brainDir, 'index.json');
314
+ }
315
+ async function readTextIfExists(filePath) {
316
+ try {
317
+ return await readFile(filePath, 'utf8');
318
+ }
319
+ catch (error) {
320
+ if (isNodeError(error, 'ENOENT'))
321
+ return '';
322
+ throw error;
323
+ }
324
+ }
325
+ async function writeNewEntityFile(filePath, relativePath, content) {
326
+ try {
327
+ await writeFile(filePath, content, { encoding: 'utf8', flag: 'wx' });
328
+ }
329
+ catch (error) {
330
+ if (isNodeError(error, 'EEXIST')) {
331
+ throw new Error(`Brain entity file already exists: ${relativePath}.`);
332
+ }
333
+ throw error;
334
+ }
335
+ }
336
+ function requireRecord(value, label) {
337
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
338
+ throw new Error(`${label} must be an object.`);
339
+ }
340
+ return value;
341
+ }
342
+ function readArray(record, key, label) {
343
+ const value = record[key];
344
+ if (!Array.isArray(value)) {
345
+ throw new Error(`${label} must be an array.`);
346
+ }
347
+ return value;
348
+ }
349
+ function readStringArray(record, key, label) {
350
+ return readArray(record, key, label).map((value) => requireString(value, label));
351
+ }
352
+ function optionalStringArray(record, key, label) {
353
+ if (record[key] === undefined)
354
+ return undefined;
355
+ return readStringArray(record, key, label);
356
+ }
357
+ function readString(record, key, label) {
358
+ return requireString(record[key], label);
359
+ }
360
+ function requireString(value, label) {
361
+ if (typeof value !== 'string' || value.trim().length === 0) {
362
+ throw new Error(`${label} must be a non-empty string.`);
363
+ }
364
+ return value;
365
+ }
366
+ function isNodeError(error, code) {
367
+ return Boolean(error && typeof error === 'object' && 'code' in error && error.code === code);
368
+ }
369
+ export function entityRelativePath(brainDir, absolutePath) {
370
+ return relative(resolve(brainDir), absolutePath).replaceAll('\\', '/');
371
+ }
372
+ //# sourceMappingURL=brain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.js","sourceRoot":"","sources":["../src/brain.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}