@soleri/core 2.0.0 → 2.0.2

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 (68) hide show
  1. package/dist/brain/brain.d.ts +3 -12
  2. package/dist/brain/brain.d.ts.map +1 -1
  3. package/dist/brain/brain.js +13 -245
  4. package/dist/brain/brain.js.map +1 -1
  5. package/dist/curator/curator.d.ts +28 -0
  6. package/dist/curator/curator.d.ts.map +1 -0
  7. package/dist/curator/curator.js +523 -0
  8. package/dist/curator/curator.js.map +1 -0
  9. package/dist/curator/types.d.ts +87 -0
  10. package/dist/curator/types.d.ts.map +1 -0
  11. package/dist/curator/types.js +3 -0
  12. package/dist/curator/types.js.map +1 -0
  13. package/dist/facades/types.d.ts +1 -1
  14. package/dist/index.d.ts +9 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +10 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/llm/llm-client.d.ts +28 -0
  19. package/dist/llm/llm-client.d.ts.map +1 -0
  20. package/dist/llm/llm-client.js +219 -0
  21. package/dist/llm/llm-client.js.map +1 -0
  22. package/dist/runtime/core-ops.d.ts +17 -0
  23. package/dist/runtime/core-ops.d.ts.map +1 -0
  24. package/dist/runtime/core-ops.js +448 -0
  25. package/dist/runtime/core-ops.js.map +1 -0
  26. package/dist/runtime/domain-ops.d.ts +25 -0
  27. package/dist/runtime/domain-ops.d.ts.map +1 -0
  28. package/dist/runtime/domain-ops.js +130 -0
  29. package/dist/runtime/domain-ops.js.map +1 -0
  30. package/dist/runtime/runtime.d.ts +19 -0
  31. package/dist/runtime/runtime.d.ts.map +1 -0
  32. package/dist/runtime/runtime.js +62 -0
  33. package/dist/runtime/runtime.js.map +1 -0
  34. package/dist/runtime/types.d.ts +39 -0
  35. package/dist/runtime/types.d.ts.map +1 -0
  36. package/dist/runtime/types.js +2 -0
  37. package/dist/{cognee → runtime}/types.js.map +1 -1
  38. package/dist/text/similarity.d.ts +8 -0
  39. package/dist/text/similarity.d.ts.map +1 -0
  40. package/dist/text/similarity.js +161 -0
  41. package/dist/text/similarity.js.map +1 -0
  42. package/package.json +6 -2
  43. package/src/__tests__/brain.test.ts +27 -222
  44. package/src/__tests__/core-ops.test.ts +190 -0
  45. package/src/__tests__/curator.test.ts +479 -0
  46. package/src/__tests__/domain-ops.test.ts +124 -0
  47. package/src/__tests__/llm-client.test.ts +69 -0
  48. package/src/__tests__/runtime.test.ts +93 -0
  49. package/src/brain/brain.ts +19 -275
  50. package/src/curator/curator.ts +662 -0
  51. package/src/curator/types.ts +114 -0
  52. package/src/index.ts +40 -11
  53. package/src/llm/llm-client.ts +316 -0
  54. package/src/runtime/core-ops.ts +472 -0
  55. package/src/runtime/domain-ops.ts +144 -0
  56. package/src/runtime/runtime.ts +71 -0
  57. package/src/runtime/types.ts +37 -0
  58. package/src/text/similarity.ts +168 -0
  59. package/dist/cognee/client.d.ts +0 -35
  60. package/dist/cognee/client.d.ts.map +0 -1
  61. package/dist/cognee/client.js +0 -289
  62. package/dist/cognee/client.js.map +0 -1
  63. package/dist/cognee/types.d.ts +0 -46
  64. package/dist/cognee/types.d.ts.map +0 -1
  65. package/dist/cognee/types.js +0 -3
  66. package/src/__tests__/cognee-client.test.ts +0 -524
  67. package/src/cognee/client.ts +0 -350
  68. package/src/cognee/types.ts +0 -62
@@ -0,0 +1,448 @@
1
+ /**
2
+ * Generic core operations factory — 26 ops that every agent gets.
3
+ *
4
+ * These ops are agent-agnostic (no persona, no activation).
5
+ * The 5 agent-specific ops (health, identity, activate, inject_claude_md, setup)
6
+ * stay in generated code because they reference agent-specific modules.
7
+ */
8
+ import { z } from 'zod';
9
+ /**
10
+ * Create the 26 generic core operations for an agent runtime.
11
+ *
12
+ * Groups: search/vault (4), memory (4), export (1), planning (5),
13
+ * brain (4), curator (8).
14
+ */
15
+ export function createCoreOps(runtime) {
16
+ const { vault, brain, planner, curator, llmClient, keyPool } = runtime;
17
+ return [
18
+ // ─── Search / Vault ──────────────────────────────────────────
19
+ {
20
+ name: 'search',
21
+ description: 'Search across all knowledge domains. Results ranked by TF-IDF + severity + recency + tag overlap + domain match.',
22
+ auth: 'read',
23
+ schema: z.object({
24
+ query: z.string(),
25
+ domain: z.string().optional(),
26
+ type: z.enum(['pattern', 'anti-pattern', 'rule']).optional(),
27
+ severity: z.enum(['critical', 'warning', 'suggestion']).optional(),
28
+ tags: z.array(z.string()).optional(),
29
+ limit: z.number().optional(),
30
+ }),
31
+ handler: async (params) => {
32
+ return brain.intelligentSearch(params.query, {
33
+ domain: params.domain,
34
+ type: params.type,
35
+ severity: params.severity,
36
+ tags: params.tags,
37
+ limit: params.limit ?? 10,
38
+ });
39
+ },
40
+ },
41
+ {
42
+ name: 'vault_stats',
43
+ description: 'Get vault statistics — entry counts by type, domain, severity.',
44
+ auth: 'read',
45
+ handler: async () => vault.stats(),
46
+ },
47
+ {
48
+ name: 'list_all',
49
+ description: 'List all knowledge entries with optional filters.',
50
+ auth: 'read',
51
+ schema: z.object({
52
+ domain: z.string().optional(),
53
+ type: z.enum(['pattern', 'anti-pattern', 'rule']).optional(),
54
+ severity: z.enum(['critical', 'warning', 'suggestion']).optional(),
55
+ tags: z.array(z.string()).optional(),
56
+ limit: z.number().optional(),
57
+ offset: z.number().optional(),
58
+ }),
59
+ handler: async (params) => {
60
+ return vault.list({
61
+ domain: params.domain,
62
+ type: params.type,
63
+ severity: params.severity,
64
+ tags: params.tags,
65
+ limit: params.limit ?? 50,
66
+ offset: params.offset ?? 0,
67
+ });
68
+ },
69
+ },
70
+ {
71
+ name: 'register',
72
+ description: 'Register a project for this session. Call on every new session to track usage and get context.',
73
+ auth: 'write',
74
+ schema: z.object({
75
+ projectPath: z.string().optional().default('.'),
76
+ name: z.string().optional().describe('Project display name (derived from path if omitted)'),
77
+ }),
78
+ handler: async (params) => {
79
+ const { resolve } = await import('node:path');
80
+ const projectPath = resolve(params.projectPath ?? '.');
81
+ const project = vault.registerProject(projectPath, params.name);
82
+ const stats = vault.stats();
83
+ const isNew = project.sessionCount === 1;
84
+ return {
85
+ project,
86
+ is_new: isNew,
87
+ message: isNew
88
+ ? 'Welcome! New project registered.'
89
+ : 'Welcome back! Session #' + project.sessionCount + ' for ' + project.name + '.',
90
+ vault: { entries: stats.totalEntries, domains: Object.keys(stats.byDomain) },
91
+ };
92
+ },
93
+ },
94
+ // ─── Memory ──────────────────────────────────────────────────
95
+ {
96
+ name: 'memory_search',
97
+ description: 'Search memories using full-text search.',
98
+ auth: 'read',
99
+ schema: z.object({
100
+ query: z.string(),
101
+ type: z.enum(['session', 'lesson', 'preference']).optional(),
102
+ projectPath: z.string().optional(),
103
+ limit: z.number().optional(),
104
+ }),
105
+ handler: async (params) => {
106
+ return vault.searchMemories(params.query, {
107
+ type: params.type,
108
+ projectPath: params.projectPath,
109
+ limit: params.limit ?? 10,
110
+ });
111
+ },
112
+ },
113
+ {
114
+ name: 'memory_capture',
115
+ description: 'Capture a memory — session summary, lesson learned, or preference.',
116
+ auth: 'write',
117
+ schema: z.object({
118
+ projectPath: z.string(),
119
+ type: z.enum(['session', 'lesson', 'preference']),
120
+ context: z.string(),
121
+ summary: z.string(),
122
+ topics: z.array(z.string()).optional().default([]),
123
+ filesModified: z.array(z.string()).optional().default([]),
124
+ toolsUsed: z.array(z.string()).optional().default([]),
125
+ }),
126
+ handler: async (params) => {
127
+ const memory = vault.captureMemory({
128
+ projectPath: params.projectPath,
129
+ type: params.type,
130
+ context: params.context,
131
+ summary: params.summary,
132
+ topics: params.topics ?? [],
133
+ filesModified: params.filesModified ?? [],
134
+ toolsUsed: params.toolsUsed ?? [],
135
+ });
136
+ return { captured: true, memory };
137
+ },
138
+ },
139
+ {
140
+ name: 'memory_list',
141
+ description: 'List memories with optional filters.',
142
+ auth: 'read',
143
+ schema: z.object({
144
+ type: z.enum(['session', 'lesson', 'preference']).optional(),
145
+ projectPath: z.string().optional(),
146
+ limit: z.number().optional(),
147
+ offset: z.number().optional(),
148
+ }),
149
+ handler: async (params) => {
150
+ const memories = vault.listMemories({
151
+ type: params.type,
152
+ projectPath: params.projectPath,
153
+ limit: params.limit ?? 50,
154
+ offset: params.offset ?? 0,
155
+ });
156
+ const stats = vault.memoryStats();
157
+ return { memories, stats };
158
+ },
159
+ },
160
+ {
161
+ name: 'session_capture',
162
+ description: 'Capture a session summary before context compaction. Called automatically by PreCompact hook.',
163
+ auth: 'write',
164
+ schema: z.object({
165
+ projectPath: z.string().optional().default('.'),
166
+ summary: z.string().describe('Brief summary of what was accomplished in this session'),
167
+ topics: z.array(z.string()).optional().default([]),
168
+ filesModified: z.array(z.string()).optional().default([]),
169
+ toolsUsed: z.array(z.string()).optional().default([]),
170
+ }),
171
+ handler: async (params) => {
172
+ const { resolve } = await import('node:path');
173
+ const projectPath = resolve(params.projectPath ?? '.');
174
+ const memory = vault.captureMemory({
175
+ projectPath,
176
+ type: 'session',
177
+ context: 'Auto-captured before context compaction',
178
+ summary: params.summary,
179
+ topics: params.topics ?? [],
180
+ filesModified: params.filesModified ?? [],
181
+ toolsUsed: params.toolsUsed ?? [],
182
+ });
183
+ return { captured: true, memory, message: 'Session summary saved to memory.' };
184
+ },
185
+ },
186
+ // ─── Export ───────────────────────────────────────────────────
187
+ {
188
+ name: 'export',
189
+ description: 'Export vault entries as JSON intelligence bundles — one per domain. Enables version control and sharing.',
190
+ auth: 'read',
191
+ schema: z.object({
192
+ domain: z.string().optional().describe('Export only this domain. Omit to export all.'),
193
+ }),
194
+ handler: async (params) => {
195
+ const stats = vault.stats();
196
+ const domains = params.domain
197
+ ? [params.domain]
198
+ : Object.keys(stats.byDomain);
199
+ const bundles = [];
200
+ for (const d of domains) {
201
+ const entries = vault.list({ domain: d, limit: 10000 });
202
+ bundles.push({ domain: d, version: '1.0.0', entries });
203
+ }
204
+ return {
205
+ exported: true,
206
+ bundles,
207
+ totalEntries: bundles.reduce((sum, b) => sum + b.entries.length, 0),
208
+ domains: bundles.map((b) => b.domain),
209
+ };
210
+ },
211
+ },
212
+ // ─── Planning ────────────────────────────────────────────────
213
+ {
214
+ name: 'create_plan',
215
+ description: 'Create a new plan in draft status. Plans track multi-step tasks with decisions and sub-tasks.',
216
+ auth: 'write',
217
+ schema: z.object({
218
+ objective: z.string().describe('What the plan aims to achieve'),
219
+ scope: z.string().describe('Which parts of the codebase are affected'),
220
+ decisions: z.array(z.string()).optional().default([]),
221
+ tasks: z.array(z.object({ title: z.string(), description: z.string() })).optional().default([]),
222
+ }),
223
+ handler: async (params) => {
224
+ const plan = planner.create({
225
+ objective: params.objective,
226
+ scope: params.scope,
227
+ decisions: params.decisions ?? [],
228
+ tasks: params.tasks ?? [],
229
+ });
230
+ return { created: true, plan };
231
+ },
232
+ },
233
+ {
234
+ name: 'get_plan',
235
+ description: 'Get a plan by ID, or list all active plans if no ID provided.',
236
+ auth: 'read',
237
+ schema: z.object({
238
+ planId: z.string().optional().describe('Plan ID. Omit to list all active plans.'),
239
+ }),
240
+ handler: async (params) => {
241
+ if (params.planId) {
242
+ const plan = planner.get(params.planId);
243
+ if (!plan)
244
+ return { error: 'Plan not found: ' + params.planId };
245
+ return plan;
246
+ }
247
+ return { active: planner.getActive(), executing: planner.getExecuting() };
248
+ },
249
+ },
250
+ {
251
+ name: 'approve_plan',
252
+ description: 'Approve a draft plan and optionally start execution.',
253
+ auth: 'write',
254
+ schema: z.object({
255
+ planId: z.string(),
256
+ startExecution: z.boolean().optional().default(false).describe('If true, immediately start execution after approval'),
257
+ }),
258
+ handler: async (params) => {
259
+ let plan = planner.approve(params.planId);
260
+ if (params.startExecution) {
261
+ plan = planner.startExecution(plan.id);
262
+ }
263
+ return { approved: true, executing: plan.status === 'executing', plan };
264
+ },
265
+ },
266
+ {
267
+ name: 'update_task',
268
+ description: 'Update a task status within an executing plan.',
269
+ auth: 'write',
270
+ schema: z.object({
271
+ planId: z.string(),
272
+ taskId: z.string(),
273
+ status: z.enum(['pending', 'in_progress', 'completed', 'skipped', 'failed']),
274
+ }),
275
+ handler: async (params) => {
276
+ const plan = planner.updateTask(params.planId, params.taskId, params.status);
277
+ const task = plan.tasks.find((t) => t.id === params.taskId);
278
+ return { updated: true, task, plan: { id: plan.id, status: plan.status } };
279
+ },
280
+ },
281
+ {
282
+ name: 'complete_plan',
283
+ description: 'Mark an executing plan as completed.',
284
+ auth: 'write',
285
+ schema: z.object({
286
+ planId: z.string(),
287
+ }),
288
+ handler: async (params) => {
289
+ const plan = planner.complete(params.planId);
290
+ const taskSummary = {
291
+ completed: plan.tasks.filter((t) => t.status === 'completed').length,
292
+ skipped: plan.tasks.filter((t) => t.status === 'skipped').length,
293
+ failed: plan.tasks.filter((t) => t.status === 'failed').length,
294
+ total: plan.tasks.length,
295
+ };
296
+ return { completed: true, plan, taskSummary };
297
+ },
298
+ },
299
+ // ─── Brain ───────────────────────────────────────────────────
300
+ {
301
+ name: 'record_feedback',
302
+ description: 'Record feedback on a search result — accepted or dismissed. Used for adaptive weight tuning.',
303
+ auth: 'write',
304
+ schema: z.object({
305
+ query: z.string().describe('The original search query'),
306
+ entryId: z.string().describe('The entry ID that was accepted or dismissed'),
307
+ action: z.enum(['accepted', 'dismissed']),
308
+ }),
309
+ handler: async (params) => {
310
+ brain.recordFeedback(params.query, params.entryId, params.action);
311
+ return { recorded: true, query: params.query, entryId: params.entryId, action: params.action };
312
+ },
313
+ },
314
+ {
315
+ name: 'rebuild_vocabulary',
316
+ description: 'Force rebuild the TF-IDF vocabulary from all vault entries.',
317
+ auth: 'write',
318
+ handler: async () => {
319
+ brain.rebuildVocabulary();
320
+ return { rebuilt: true, vocabularySize: brain.getVocabularySize() };
321
+ },
322
+ },
323
+ {
324
+ name: 'brain_stats',
325
+ description: 'Get brain intelligence stats — vocabulary size, feedback count, current scoring weights.',
326
+ auth: 'read',
327
+ handler: async () => {
328
+ return brain.getStats();
329
+ },
330
+ },
331
+ {
332
+ name: 'llm_status',
333
+ description: 'LLM client status — provider availability, key pool status, model routing config.',
334
+ auth: 'read',
335
+ handler: async () => {
336
+ const available = llmClient.isAvailable();
337
+ return {
338
+ providers: {
339
+ openai: {
340
+ available: available.openai,
341
+ keyPool: keyPool.openai.hasKeys ? keyPool.openai.getStatus() : null,
342
+ },
343
+ anthropic: {
344
+ available: available.anthropic,
345
+ keyPool: keyPool.anthropic.hasKeys ? keyPool.anthropic.getStatus() : null,
346
+ },
347
+ },
348
+ routes: llmClient.getRoutes(),
349
+ };
350
+ },
351
+ },
352
+ // ─── Curator ─────────────────────────────────────────────────
353
+ {
354
+ name: 'curator_status',
355
+ description: 'Curator status — table row counts, last groomed timestamp.',
356
+ auth: 'read',
357
+ handler: async () => {
358
+ return curator.getStatus();
359
+ },
360
+ },
361
+ {
362
+ name: 'curator_detect_duplicates',
363
+ description: 'Detect duplicate entries using TF-IDF cosine similarity.',
364
+ auth: 'read',
365
+ schema: z.object({
366
+ entryId: z.string().optional().describe('Check a specific entry. Omit to scan all.'),
367
+ threshold: z.number().optional().describe('Similarity threshold (0-1). Default 0.45.'),
368
+ }),
369
+ handler: async (params) => {
370
+ return curator.detectDuplicates(params.entryId, params.threshold);
371
+ },
372
+ },
373
+ {
374
+ name: 'curator_contradictions',
375
+ description: 'List or detect contradictions between patterns and anti-patterns.',
376
+ auth: 'read',
377
+ schema: z.object({
378
+ status: z.enum(['open', 'resolved', 'dismissed']).optional().describe('Filter by status.'),
379
+ detect: z.boolean().optional().describe('If true, run detection before listing.'),
380
+ }),
381
+ handler: async (params) => {
382
+ if (params.detect) {
383
+ curator.detectContradictions();
384
+ }
385
+ return curator.getContradictions(params.status);
386
+ },
387
+ },
388
+ {
389
+ name: 'curator_resolve_contradiction',
390
+ description: 'Resolve or dismiss a contradiction.',
391
+ auth: 'write',
392
+ schema: z.object({
393
+ id: z.number().describe('Contradiction ID.'),
394
+ resolution: z.enum(['resolved', 'dismissed']),
395
+ }),
396
+ handler: async (params) => {
397
+ return curator.resolveContradiction(params.id, params.resolution);
398
+ },
399
+ },
400
+ {
401
+ name: 'curator_groom',
402
+ description: 'Groom a single entry — normalize tags, check staleness.',
403
+ auth: 'write',
404
+ schema: z.object({
405
+ entryId: z.string().describe('Entry ID to groom.'),
406
+ }),
407
+ handler: async (params) => {
408
+ return curator.groomEntry(params.entryId);
409
+ },
410
+ },
411
+ {
412
+ name: 'curator_groom_all',
413
+ description: 'Groom all vault entries — normalize tags, detect staleness.',
414
+ auth: 'write',
415
+ handler: async () => {
416
+ return curator.groomAll();
417
+ },
418
+ },
419
+ {
420
+ name: 'curator_consolidate',
421
+ description: 'Consolidate vault — find duplicates, stale entries, contradictions. Dry-run by default.',
422
+ auth: 'write',
423
+ schema: z.object({
424
+ dryRun: z.boolean().optional().describe('Default true. Set false to apply mutations.'),
425
+ staleDaysThreshold: z.number().optional().describe('Days before entry is stale. Default 90.'),
426
+ duplicateThreshold: z.number().optional().describe('Cosine similarity threshold. Default 0.45.'),
427
+ contradictionThreshold: z.number().optional().describe('Contradiction threshold. Default 0.4.'),
428
+ }),
429
+ handler: async (params) => {
430
+ return curator.consolidate({
431
+ dryRun: params.dryRun,
432
+ staleDaysThreshold: params.staleDaysThreshold,
433
+ duplicateThreshold: params.duplicateThreshold,
434
+ contradictionThreshold: params.contradictionThreshold,
435
+ });
436
+ },
437
+ },
438
+ {
439
+ name: 'curator_health_audit',
440
+ description: 'Audit vault health — score (0-100), coverage, freshness, quality, tag health, recommendations.',
441
+ auth: 'read',
442
+ handler: async () => {
443
+ return curator.healthAudit();
444
+ },
445
+ },
446
+ ];
447
+ }
448
+ //# sourceMappingURL=core-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-ops.js","sourceRoot":"","sources":["../../src/runtime/core-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Domain facade factory — creates the standard 5-op domain facade pattern.
3
+ *
4
+ * Every domain gets: get_patterns, search, get_entry, capture, remove.
5
+ * This replaces per-domain generated facade files.
6
+ */
7
+ import type { FacadeConfig } from '../facades/types.js';
8
+ import type { AgentRuntime } from './types.js';
9
+ /**
10
+ * Create a single domain facade with 5 standard ops.
11
+ *
12
+ * @param runtime - The agent runtime (vault + brain)
13
+ * @param agentId - Agent identifier (used for facade naming)
14
+ * @param domain - Domain name (e.g. 'security', 'api-design')
15
+ */
16
+ export declare function createDomainFacade(runtime: AgentRuntime, agentId: string, domain: string): FacadeConfig;
17
+ /**
18
+ * Create domain facades for all domains.
19
+ *
20
+ * @param runtime - The agent runtime
21
+ * @param agentId - Agent identifier
22
+ * @param domains - Array of domain names
23
+ */
24
+ export declare function createDomainFacades(runtime: AgentRuntime, agentId: string, domains: string[]): FacadeConfig[];
25
+ //# sourceMappingURL=domain-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/domain-ops.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,YAAY,CAsGd;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,GAChB,YAAY,EAAE,CAEhB"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Domain facade factory — creates the standard 5-op domain facade pattern.
3
+ *
4
+ * Every domain gets: get_patterns, search, get_entry, capture, remove.
5
+ * This replaces per-domain generated facade files.
6
+ */
7
+ import { z } from 'zod';
8
+ function capitalize(s) {
9
+ return s.charAt(0).toUpperCase() + s.slice(1);
10
+ }
11
+ /**
12
+ * Create a single domain facade with 5 standard ops.
13
+ *
14
+ * @param runtime - The agent runtime (vault + brain)
15
+ * @param agentId - Agent identifier (used for facade naming)
16
+ * @param domain - Domain name (e.g. 'security', 'api-design')
17
+ */
18
+ export function createDomainFacade(runtime, agentId, domain) {
19
+ const { vault, brain } = runtime;
20
+ const facadeName = `${agentId}_${domain.replace(/-/g, '_')}`;
21
+ const ops = [
22
+ {
23
+ name: 'get_patterns',
24
+ description: `Get ${domain} patterns filtered by tags or severity.`,
25
+ auth: 'read',
26
+ schema: z.object({
27
+ tags: z.array(z.string()).optional(),
28
+ severity: z.enum(['critical', 'warning', 'suggestion']).optional(),
29
+ type: z.enum(['pattern', 'anti-pattern', 'rule']).optional(),
30
+ limit: z.number().optional(),
31
+ }),
32
+ handler: async (params) => {
33
+ return vault.list({
34
+ domain,
35
+ severity: params.severity,
36
+ type: params.type,
37
+ tags: params.tags,
38
+ limit: params.limit ?? 20,
39
+ });
40
+ },
41
+ },
42
+ {
43
+ name: 'search',
44
+ description: `Search ${domain} knowledge with natural language query. Results ranked by TF-IDF + severity + recency.`,
45
+ auth: 'read',
46
+ schema: z.object({
47
+ query: z.string(),
48
+ tags: z.array(z.string()).optional(),
49
+ limit: z.number().optional(),
50
+ }),
51
+ handler: async (params) => {
52
+ return brain.intelligentSearch(params.query, {
53
+ domain,
54
+ tags: params.tags,
55
+ limit: params.limit ?? 10,
56
+ });
57
+ },
58
+ },
59
+ {
60
+ name: 'get_entry',
61
+ description: `Get a specific ${domain} knowledge entry by ID.`,
62
+ auth: 'read',
63
+ schema: z.object({ id: z.string() }),
64
+ handler: async (params) => {
65
+ const entry = vault.get(params.id);
66
+ if (!entry)
67
+ return { error: 'Entry not found: ' + params.id };
68
+ return entry;
69
+ },
70
+ },
71
+ {
72
+ name: 'capture',
73
+ description: `Capture a new ${domain} pattern, anti-pattern, or rule. Auto-tags and checks for duplicates.`,
74
+ auth: 'write',
75
+ schema: z.object({
76
+ id: z.string(),
77
+ type: z.enum(['pattern', 'anti-pattern', 'rule']),
78
+ title: z.string(),
79
+ severity: z.enum(['critical', 'warning', 'suggestion']),
80
+ description: z.string(),
81
+ context: z.string().optional(),
82
+ example: z.string().optional(),
83
+ counterExample: z.string().optional(),
84
+ why: z.string().optional(),
85
+ tags: z.array(z.string()).optional().default([]),
86
+ }),
87
+ handler: async (params) => {
88
+ return brain.enrichAndCapture({
89
+ id: params.id,
90
+ type: params.type,
91
+ domain,
92
+ title: params.title,
93
+ severity: params.severity,
94
+ description: params.description,
95
+ context: params.context,
96
+ example: params.example,
97
+ counterExample: params.counterExample,
98
+ why: params.why,
99
+ tags: params.tags,
100
+ });
101
+ },
102
+ },
103
+ {
104
+ name: 'remove',
105
+ description: `Remove a ${domain} knowledge entry by ID.`,
106
+ auth: 'admin',
107
+ schema: z.object({ id: z.string() }),
108
+ handler: async (params) => {
109
+ const removed = vault.remove(params.id);
110
+ return { removed, id: params.id };
111
+ },
112
+ },
113
+ ];
114
+ return {
115
+ name: facadeName,
116
+ description: `${capitalize(domain.replace(/-/g, ' '))} patterns, rules, and guidance.`,
117
+ ops,
118
+ };
119
+ }
120
+ /**
121
+ * Create domain facades for all domains.
122
+ *
123
+ * @param runtime - The agent runtime
124
+ * @param agentId - Agent identifier
125
+ * @param domains - Array of domain names
126
+ */
127
+ export function createDomainFacades(runtime, agentId, domains) {
128
+ return domains.map((d) => createDomainFacade(runtime, agentId, d));
129
+ }
130
+ //# sourceMappingURL=domain-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-ops.js","sourceRoot":"","sources":["../../src/runtime/domain-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Agent runtime factory — one call to initialize all modules.
3
+ *
4
+ * ```ts
5
+ * const runtime = createAgentRuntime({ agentId: 'my-agent' });
6
+ * // runtime.vault, runtime.brain, runtime.planner, etc. all ready
7
+ * ```
8
+ */
9
+ import type { AgentRuntimeConfig, AgentRuntime } from './types.js';
10
+ /**
11
+ * Create a fully initialized agent runtime.
12
+ *
13
+ * All modules (vault, brain, planner, curator, key pools, LLM client)
14
+ * are initialized and wired together. New modules added to core in
15
+ * future versions will be included automatically — existing agents
16
+ * just `npm update @soleri/core`.
17
+ */
18
+ export declare function createAgentRuntime(config: AgentRuntimeConfig): AgentRuntime;
19
+ //# sourceMappingURL=runtime.d.ts.map