@agntk/core 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +56 -90
  2. package/dist/advanced/index.d.ts +9 -2
  3. package/dist/advanced/index.d.ts.map +1 -1
  4. package/dist/advanced/index.js +13 -2
  5. package/dist/advanced/index.js.map +1 -1
  6. package/dist/agent.d.ts +27 -31
  7. package/dist/agent.d.ts.map +1 -1
  8. package/dist/agent.js +228 -275
  9. package/dist/agent.js.map +1 -1
  10. package/dist/config/schema.d.ts +38 -38
  11. package/dist/evals/runner.js +16 -9
  12. package/dist/evals/runner.js.map +1 -1
  13. package/dist/evals/types.d.ts +1 -1
  14. package/dist/evals/types.d.ts.map +1 -1
  15. package/dist/index.d.ts +4 -9
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +6 -9
  18. package/dist/index.js.map +1 -1
  19. package/dist/observability/langfuse.d.ts +2 -2
  20. package/dist/observability/langfuse.d.ts.map +1 -1
  21. package/dist/observability/langfuse.js +39 -17
  22. package/dist/observability/langfuse.js.map +1 -1
  23. package/dist/presets/sub-agent-configs.d.ts +11 -3
  24. package/dist/presets/sub-agent-configs.d.ts.map +1 -1
  25. package/dist/presets/sub-agent-configs.js +5 -10
  26. package/dist/presets/sub-agent-configs.js.map +1 -1
  27. package/dist/presets/tools.d.ts +5 -5
  28. package/dist/tools/browser/tool.d.ts +2 -2
  29. package/dist/tools/browser/types.d.ts +2 -2
  30. package/dist/tools/plan/tools.d.ts +1 -1
  31. package/dist/tools/plan/types.d.ts +2 -2
  32. package/dist/tools/progress/index.d.ts +2 -2
  33. package/dist/tools/spawn-agent/index.d.ts +7 -9
  34. package/dist/tools/spawn-agent/index.d.ts.map +1 -1
  35. package/dist/tools/spawn-agent/index.js +2 -4
  36. package/dist/tools/spawn-agent/index.js.map +1 -1
  37. package/dist/types/agent.d.ts +69 -199
  38. package/dist/types/agent.d.ts.map +1 -1
  39. package/dist/types/agent.js +4 -2
  40. package/dist/types/agent.js.map +1 -1
  41. package/dist/types/index.d.ts +1 -1
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/types/index.js.map +1 -1
  44. package/dist/usage-limits.d.ts +1 -1
  45. package/dist/usage-limits.js +1 -1
  46. package/dist/workflow/index.d.ts +1 -5
  47. package/dist/workflow/index.d.ts.map +1 -1
  48. package/dist/workflow/index.js +1 -9
  49. package/dist/workflow/index.js.map +1 -1
  50. package/dist/wrappers/best-of-n.d.ts +1 -1
  51. package/dist/wrappers/best-of-n.d.ts.map +1 -1
  52. package/dist/wrappers/best-of-n.js +11 -6
  53. package/dist/wrappers/best-of-n.js.map +1 -1
  54. package/package.json +4 -14
  55. package/dist/memory/engine.d.ts +0 -130
  56. package/dist/memory/engine.d.ts.map +0 -1
  57. package/dist/memory/engine.js +0 -227
  58. package/dist/memory/engine.js.map +0 -1
  59. package/dist/memory/vectra-store.d.ts +0 -31
  60. package/dist/memory/vectra-store.d.ts.map +0 -1
  61. package/dist/memory/vectra-store.js +0 -122
  62. package/dist/memory/vectra-store.js.map +0 -1
  63. package/dist/pool/index.d.ts +0 -7
  64. package/dist/pool/index.d.ts.map +0 -1
  65. package/dist/pool/index.js +0 -6
  66. package/dist/pool/index.js.map +0 -1
  67. package/dist/pool/specialist-pool.d.ts +0 -59
  68. package/dist/pool/specialist-pool.d.ts.map +0 -1
  69. package/dist/pool/specialist-pool.js +0 -224
  70. package/dist/pool/specialist-pool.js.map +0 -1
  71. package/dist/pool/tools.d.ts +0 -63
  72. package/dist/pool/tools.d.ts.map +0 -1
  73. package/dist/pool/tools.js +0 -83
  74. package/dist/pool/tools.js.map +0 -1
  75. package/dist/pool/types.d.ts +0 -79
  76. package/dist/pool/types.d.ts.map +0 -1
  77. package/dist/pool/types.js +0 -5
  78. package/dist/pool/types.js.map +0 -1
  79. package/dist/presets/index.d.ts +0 -5
  80. package/dist/presets/index.d.ts.map +0 -1
  81. package/dist/presets/index.js +0 -5
  82. package/dist/presets/index.js.map +0 -1
  83. package/dist/presets/role-registry.d.ts +0 -41
  84. package/dist/presets/role-registry.d.ts.map +0 -1
  85. package/dist/presets/role-registry.js +0 -213
  86. package/dist/presets/role-registry.js.map +0 -1
  87. package/dist/presets/roles.d.ts +0 -105
  88. package/dist/presets/roles.d.ts.map +0 -1
  89. package/dist/presets/roles.js +0 -207
  90. package/dist/presets/roles.js.map +0 -1
  91. package/dist/prompts/templates.d.ts +0 -11
  92. package/dist/prompts/templates.d.ts.map +0 -1
  93. package/dist/prompts/templates.js +0 -115
  94. package/dist/prompts/templates.js.map +0 -1
  95. package/dist/streaming/data-parts.d.ts +0 -163
  96. package/dist/streaming/data-parts.d.ts.map +0 -1
  97. package/dist/streaming/data-parts.js +0 -14
  98. package/dist/streaming/data-parts.js.map +0 -1
  99. package/dist/streaming/index.d.ts +0 -8
  100. package/dist/streaming/index.d.ts.map +0 -1
  101. package/dist/streaming/index.js +0 -10
  102. package/dist/streaming/index.js.map +0 -1
  103. package/dist/streaming/transient.d.ts +0 -136
  104. package/dist/streaming/transient.d.ts.map +0 -1
  105. package/dist/streaming/transient.js +0 -201
  106. package/dist/streaming/transient.js.map +0 -1
  107. package/dist/tools/provider.d.ts +0 -97
  108. package/dist/tools/provider.d.ts.map +0 -1
  109. package/dist/tools/provider.js +0 -178
  110. package/dist/tools/provider.js.map +0 -1
  111. package/dist/utils/logger.d.ts +0 -35
  112. package/dist/utils/logger.d.ts.map +0 -1
  113. package/dist/utils/logger.js +0 -149
  114. package/dist/utils/logger.js.map +0 -1
  115. package/dist/workflow/builders/adapt.d.ts +0 -20
  116. package/dist/workflow/builders/adapt.d.ts.map +0 -1
  117. package/dist/workflow/builders/adapt.js +0 -33
  118. package/dist/workflow/builders/adapt.js.map +0 -1
  119. package/dist/workflow/builders/index.d.ts +0 -8
  120. package/dist/workflow/builders/index.d.ts.map +0 -1
  121. package/dist/workflow/builders/index.js +0 -7
  122. package/dist/workflow/builders/index.js.map +0 -1
  123. package/dist/workflow/builders/parallel.d.ts +0 -25
  124. package/dist/workflow/builders/parallel.d.ts.map +0 -1
  125. package/dist/workflow/builders/parallel.js +0 -60
  126. package/dist/workflow/builders/parallel.js.map +0 -1
  127. package/dist/workflow/builders/pipeline.d.ts +0 -22
  128. package/dist/workflow/builders/pipeline.d.ts.map +0 -1
  129. package/dist/workflow/builders/pipeline.js +0 -48
  130. package/dist/workflow/builders/pipeline.js.map +0 -1
  131. package/dist/workflow/builders/types.d.ts +0 -54
  132. package/dist/workflow/builders/types.d.ts.map +0 -1
  133. package/dist/workflow/builders/types.js +0 -5
  134. package/dist/workflow/builders/types.js.map +0 -1
  135. package/dist/workflow/durable-agent.d.ts +0 -128
  136. package/dist/workflow/durable-agent.d.ts.map +0 -1
  137. package/dist/workflow/durable-agent.js +0 -323
  138. package/dist/workflow/durable-agent.js.map +0 -1
  139. package/dist/workflow/schedulers.d.ts +0 -231
  140. package/dist/workflow/schedulers.d.ts.map +0 -1
  141. package/dist/workflow/schedulers.js +0 -250
  142. package/dist/workflow/schedulers.js.map +0 -1
  143. package/dist/workflow/team/create-team.d.ts +0 -34
  144. package/dist/workflow/team/create-team.d.ts.map +0 -1
  145. package/dist/workflow/team/create-team.js +0 -242
  146. package/dist/workflow/team/create-team.js.map +0 -1
  147. package/dist/workflow/team/index.d.ts +0 -9
  148. package/dist/workflow/team/index.d.ts.map +0 -1
  149. package/dist/workflow/team/index.js +0 -8
  150. package/dist/workflow/team/index.js.map +0 -1
  151. package/dist/workflow/team/machines.d.ts +0 -152
  152. package/dist/workflow/team/machines.d.ts.map +0 -1
  153. package/dist/workflow/team/machines.js +0 -197
  154. package/dist/workflow/team/machines.js.map +0 -1
  155. package/dist/workflow/team/task-board.d.ts +0 -47
  156. package/dist/workflow/team/task-board.d.ts.map +0 -1
  157. package/dist/workflow/team/task-board.js +0 -111
  158. package/dist/workflow/team/task-board.js.map +0 -1
  159. package/dist/workflow/team/tools.d.ts +0 -66
  160. package/dist/workflow/team/tools.d.ts.map +0 -1
  161. package/dist/workflow/team/tools.js +0 -100
  162. package/dist/workflow/team/tools.js.map +0 -1
  163. package/dist/workflow/team/types.d.ts +0 -109
  164. package/dist/workflow/team/types.d.ts.map +0 -1
  165. package/dist/workflow/team/types.js +0 -5
  166. package/dist/workflow/team/types.js.map +0 -1
  167. package/dist/workflow/templates.d.ts +0 -71
  168. package/dist/workflow/templates.d.ts.map +0 -1
  169. package/dist/workflow/templates.js +0 -132
  170. package/dist/workflow/templates.js.map +0 -1
@@ -1,122 +0,0 @@
1
- /**
2
- * @agntk/core - Vectra Memory Store
3
- *
4
- * Portable in-memory vector database using Vectra.
5
- * Zero native dependencies, file-based persistence.
6
- */
7
- import { LocalIndex } from 'vectra';
8
- import * as path from 'node:path';
9
- import * as fs from 'node:fs/promises';
10
- import { createLogger } from '@agntk/logger';
11
- import { getConfig } from '../config/index.js';
12
- import { DEFAULT_EMBEDDING_URL, DEFAULT_EMBEDDING_MODEL, DEFAULT_MEMORY_PATH, DEFAULT_MEMORY_TOP_K, DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } from '../constants.js';
13
- const log = createLogger('@agntk/core:memory');
14
- // ============================================================================
15
- // Embedding - Using OpenAI directly
16
- // ============================================================================
17
- async function getEmbedding(text, modelName, embeddingUrl) {
18
- const apiKey = process.env['OPENAI_API_KEY'];
19
- if (!apiKey) {
20
- throw new Error('OPENAI_API_KEY required for memory embeddings');
21
- }
22
- const url = embeddingUrl ?? DEFAULT_EMBEDDING_URL;
23
- const response = await fetch(url, {
24
- method: 'POST',
25
- headers: {
26
- 'Content-Type': 'application/json',
27
- 'Authorization': `Bearer ${apiKey}`,
28
- },
29
- body: JSON.stringify({
30
- model: modelName ?? DEFAULT_EMBEDDING_MODEL,
31
- input: text,
32
- }),
33
- });
34
- if (!response.ok) {
35
- throw new Error(`Embedding failed: ${response.statusText}`);
36
- }
37
- const data = await response.json();
38
- return data.data[0].embedding;
39
- }
40
- // ============================================================================
41
- // Memory Store Implementation
42
- // ============================================================================
43
- export async function createMemoryStore(options = {}) {
44
- // Merge with config values
45
- const config = getConfig();
46
- const memoryConfig = (config.memory ?? {});
47
- const { path: storagePath = memoryConfig.path ?? DEFAULT_MEMORY_PATH, embedModel = memoryConfig.embedModel ?? DEFAULT_EMBEDDING_MODEL, topK = memoryConfig.topK ?? DEFAULT_MEMORY_TOP_K, similarityThreshold = memoryConfig.similarityThreshold ?? DEFAULT_MEMORY_SIMILARITY_THRESHOLD, } = options;
48
- log.info('Creating memory store', { path: storagePath, embedModel, topK });
49
- const absolutePath = path.resolve(storagePath);
50
- await fs.mkdir(absolutePath, { recursive: true });
51
- const index = new LocalIndex(absolutePath);
52
- if (!await index.isIndexCreated()) {
53
- await index.createIndex();
54
- }
55
- const store = {
56
- async remember(text, metadata) {
57
- const id = generateId();
58
- const vector = await getEmbedding(text, embedModel);
59
- await index.insertItem({
60
- id,
61
- vector,
62
- metadata: { text, timestamp: new Date().toISOString(), ...metadata },
63
- });
64
- return id;
65
- },
66
- async recall(query, opts) {
67
- const queryVector = await getEmbedding(query, embedModel);
68
- const k = opts?.topK ?? topK;
69
- const threshold = opts?.threshold ?? similarityThreshold;
70
- const results = await index.queryItems(queryVector, k);
71
- return results
72
- .filter(r => r.score >= threshold)
73
- .map(r => ({
74
- item: {
75
- id: r.item.id,
76
- text: r.item.metadata?.text ?? '',
77
- metadata: r.item.metadata,
78
- timestamp: new Date(r.item.metadata?.timestamp ?? Date.now()),
79
- },
80
- score: r.score,
81
- }));
82
- },
83
- async forget(id) {
84
- try {
85
- await index.deleteItem(id);
86
- return true;
87
- }
88
- catch (_e) {
89
- return false;
90
- }
91
- },
92
- async forgetAll(filter) {
93
- const items = await index.listItems();
94
- let deleted = 0;
95
- for (const item of items) {
96
- const memoryItem = {
97
- id: item.id,
98
- text: item.metadata?.text ?? '',
99
- metadata: item.metadata,
100
- timestamp: new Date(item.metadata?.timestamp ?? Date.now()),
101
- };
102
- if (!filter || filter(memoryItem)) {
103
- await index.deleteItem(item.id);
104
- deleted++;
105
- }
106
- }
107
- return deleted;
108
- },
109
- async count() {
110
- const items = await index.listItems();
111
- return items.length;
112
- },
113
- async close() {
114
- // Vectra auto-persists
115
- },
116
- };
117
- return store;
118
- }
119
- function generateId() {
120
- return `mem_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
121
- }
122
- //# sourceMappingURL=vectra-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectra-store.js","sourceRoot":"","sources":["../../src/memory/vectra-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @fileoverview Pool module barrel exports.
3
- */
4
- export { SpecialistPool } from './specialist-pool.js';
5
- export { createPoolTools, createSpawnSpecialistTool, createListSpecialistsTool } from './tools.js';
6
- export type { SpecialistPoolConfig, SpecialistConfig, CachedSpecialist, ConversationMessage, SpecialistAgent, HistoryStrategy, } from './types.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAChG,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @fileoverview Pool module barrel exports.
3
- */
4
- export { SpecialistPool } from './specialist-pool.js';
5
- export { createPoolTools, createSpawnSpecialistTool, createListSpecialistsTool } from './tools.js';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,59 +0,0 @@
1
- /**
2
- * @fileoverview SpecialistPool — LRU+TTL cache of domain specialists.
3
- *
4
- * Spawns (or reuses) specialist agents keyed by domain name.
5
- * Each specialist can have skills injected and maintains conversation history.
6
- */
7
- import type { SpecialistPoolConfig, SpecialistConfig, CachedSpecialist } from './types.js';
8
- export declare class SpecialistPool {
9
- private cache;
10
- private readonly maxAgents;
11
- private readonly ttlMs;
12
- private readonly defaultHistoryStrategy;
13
- private readonly defaultWindowSize;
14
- private readonly createAgent;
15
- constructor(config: SpecialistPoolConfig);
16
- /**
17
- * Spawn or reuse a specialist for the given domain.
18
- * Returns the cached specialist if not expired; otherwise creates a new one.
19
- */
20
- spawn(config: SpecialistConfig): Promise<CachedSpecialist>;
21
- /**
22
- * Generate a response from a specialist, managing conversation history.
23
- */
24
- generate(domain: string, prompt: string): Promise<string>;
25
- /**
26
- * List all cached specialists with their metadata.
27
- */
28
- list(): Array<{
29
- domain: string;
30
- createdAt: number;
31
- lastUsedAt: number;
32
- useCount: number;
33
- historyLength: number;
34
- expired: boolean;
35
- skills: string[];
36
- }>;
37
- /**
38
- * Remove a specialist from the cache.
39
- */
40
- remove(domain: string): boolean;
41
- /**
42
- * Clear all cached specialists.
43
- */
44
- clear(): void;
45
- /**
46
- * Get the current number of cached specialists.
47
- */
48
- get size(): number;
49
- /**
50
- * Get a cached specialist by domain (without modifying LRU state).
51
- */
52
- get(domain: string): CachedSpecialist | undefined;
53
- private isExpired;
54
- private evictIfNeeded;
55
- private createSpecialist;
56
- private buildContextualPrompt;
57
- private getRelevantHistory;
58
- }
59
- //# sourceMappingURL=specialist-pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specialist-pool.d.ts","sourceRoot":"","sources":["../../src/pool/specialist-pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAmBjB,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAkB;IACzD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;gBAEtD,MAAM,EAAE,oBAAoB;IAkBxC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6BhE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B/D;;OAEG;IACH,IAAI,IAAI,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAYF;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAQjD,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;YAsBP,gBAAgB;IAwC9B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kBAAkB;CAsB3B"}
@@ -1,224 +0,0 @@
1
- /**
2
- * @fileoverview SpecialistPool — LRU+TTL cache of domain specialists.
3
- *
4
- * Spawns (or reuses) specialist agents keyed by domain name.
5
- * Each specialist can have skills injected and maintains conversation history.
6
- */
7
- import { createLogger } from '@agntk/logger';
8
- import { loadSkillsFromPaths, buildSkillsSystemPrompt } from '../skills/index.js';
9
- const log = createLogger('@agntk/core:pool');
10
- // ============================================================================
11
- // Constants
12
- // ============================================================================
13
- const DEFAULT_MAX_AGENTS = 10;
14
- const DEFAULT_TTL_MS = 30 * 60 * 1000; // 30 minutes
15
- const DEFAULT_HISTORY_STRATEGY = 'full';
16
- const DEFAULT_WINDOW_SIZE = 20;
17
- // ============================================================================
18
- // SpecialistPool
19
- // ============================================================================
20
- export class SpecialistPool {
21
- cache = new Map();
22
- maxAgents;
23
- ttlMs;
24
- defaultHistoryStrategy;
25
- defaultWindowSize;
26
- createAgent;
27
- constructor(config) {
28
- this.maxAgents = config.maxAgents ?? DEFAULT_MAX_AGENTS;
29
- this.ttlMs = config.ttlMs ?? DEFAULT_TTL_MS;
30
- this.defaultHistoryStrategy = config.defaultHistoryStrategy ?? DEFAULT_HISTORY_STRATEGY;
31
- this.defaultWindowSize = config.defaultWindowSize ?? DEFAULT_WINDOW_SIZE;
32
- this.createAgent = config.createAgent;
33
- log.info('SpecialistPool created', {
34
- maxAgents: this.maxAgents,
35
- ttlMs: this.ttlMs,
36
- defaultHistoryStrategy: this.defaultHistoryStrategy,
37
- });
38
- }
39
- // --------------------------------------------------------------------------
40
- // Public API
41
- // --------------------------------------------------------------------------
42
- /**
43
- * Spawn or reuse a specialist for the given domain.
44
- * Returns the cached specialist if not expired; otherwise creates a new one.
45
- */
46
- async spawn(config) {
47
- const { domain } = config;
48
- // Check for existing cached specialist
49
- const existing = this.cache.get(domain);
50
- if (existing && !this.isExpired(existing)) {
51
- log.debug('Cache hit', { domain, useCount: existing.useCount });
52
- existing.lastUsedAt = Date.now();
53
- existing.useCount += 1;
54
- return existing;
55
- }
56
- // Remove expired entry if present
57
- if (existing) {
58
- log.debug('Cache expired, recreating', { domain });
59
- this.cache.delete(domain);
60
- }
61
- // Evict LRU if at capacity
62
- this.evictIfNeeded();
63
- // Create new specialist
64
- const specialist = await this.createSpecialist(config);
65
- this.cache.set(domain, specialist);
66
- log.info('Specialist spawned', { domain, skills: config.skills?.length ?? 0 });
67
- return specialist;
68
- }
69
- /**
70
- * Generate a response from a specialist, managing conversation history.
71
- */
72
- async generate(domain, prompt) {
73
- const cached = this.cache.get(domain);
74
- if (!cached) {
75
- throw new Error(`No specialist found for domain: ${domain}. Call spawn() first.`);
76
- }
77
- if (this.isExpired(cached)) {
78
- this.cache.delete(domain);
79
- throw new Error(`Specialist for domain "${domain}" has expired. Call spawn() again.`);
80
- }
81
- cached.lastUsedAt = Date.now();
82
- cached.useCount += 1;
83
- // Build prompt with history context
84
- const contextualPrompt = this.buildContextualPrompt(cached, prompt);
85
- const result = await cached.agent.generate({ prompt: contextualPrompt });
86
- const text = result.text ?? '';
87
- // Update history
88
- cached.history.push({ role: 'user', content: prompt, timestamp: Date.now() }, { role: 'assistant', content: text, timestamp: Date.now() });
89
- return text;
90
- }
91
- /**
92
- * List all cached specialists with their metadata.
93
- */
94
- list() {
95
- return Array.from(this.cache.values()).map((entry) => ({
96
- domain: entry.domain,
97
- createdAt: entry.createdAt,
98
- lastUsedAt: entry.lastUsedAt,
99
- useCount: entry.useCount,
100
- historyLength: entry.history.length,
101
- expired: this.isExpired(entry),
102
- skills: entry.agent.skills,
103
- }));
104
- }
105
- /**
106
- * Remove a specialist from the cache.
107
- */
108
- remove(domain) {
109
- const deleted = this.cache.delete(domain);
110
- if (deleted) {
111
- log.info('Specialist removed', { domain });
112
- }
113
- return deleted;
114
- }
115
- /**
116
- * Clear all cached specialists.
117
- */
118
- clear() {
119
- const count = this.cache.size;
120
- this.cache.clear();
121
- log.info('Pool cleared', { removedCount: count });
122
- }
123
- /**
124
- * Get the current number of cached specialists.
125
- */
126
- get size() {
127
- return this.cache.size;
128
- }
129
- /**
130
- * Get a cached specialist by domain (without modifying LRU state).
131
- */
132
- get(domain) {
133
- return this.cache.get(domain);
134
- }
135
- // --------------------------------------------------------------------------
136
- // Private
137
- // --------------------------------------------------------------------------
138
- isExpired(entry) {
139
- return Date.now() - entry.createdAt > this.ttlMs;
140
- }
141
- evictIfNeeded() {
142
- while (this.cache.size >= this.maxAgents) {
143
- // Find LRU: oldest lastUsedAt
144
- let lruKey;
145
- let lruTime = Infinity;
146
- for (const [key, entry] of this.cache) {
147
- if (entry.lastUsedAt < lruTime) {
148
- lruTime = entry.lastUsedAt;
149
- lruKey = key;
150
- }
151
- }
152
- if (lruKey) {
153
- log.info('Evicting LRU specialist', { domain: lruKey, lastUsedAt: lruTime });
154
- this.cache.delete(lruKey);
155
- }
156
- else {
157
- break;
158
- }
159
- }
160
- }
161
- async createSpecialist(config) {
162
- const role = config.role ?? 'generic';
163
- const skills = config.skills ?? [];
164
- // Build system prompt with skills
165
- let systemPrompt = config.instructions ?? '';
166
- if (skills.length > 0) {
167
- const loadedSkills = loadSkillsFromPaths(skills);
168
- if (loadedSkills.length > 0) {
169
- const skillsPrompt = buildSkillsSystemPrompt(loadedSkills);
170
- systemPrompt = systemPrompt ? `${systemPrompt}\n${skillsPrompt}` : skillsPrompt;
171
- }
172
- }
173
- // Create the agent via the factory
174
- const agentOptions = {
175
- role,
176
- ...(systemPrompt && { systemPrompt }),
177
- ...config.agentOptions,
178
- };
179
- const rawAgent = this.createAgent(agentOptions);
180
- const agent = {
181
- generate: rawAgent.generate,
182
- domain: config.domain,
183
- skills,
184
- };
185
- const now = Date.now();
186
- return {
187
- domain: config.domain,
188
- agent,
189
- createdAt: now,
190
- lastUsedAt: now,
191
- useCount: 1,
192
- history: [],
193
- };
194
- }
195
- buildContextualPrompt(cached, prompt) {
196
- const history = this.getRelevantHistory(cached);
197
- if (history.length === 0)
198
- return prompt;
199
- const historyText = history
200
- .map((msg) => `${msg.role === 'user' ? 'User' : 'Assistant'}: ${msg.content}`)
201
- .join('\n\n');
202
- return `Previous conversation:\n${historyText}\n\nCurrent request: ${prompt}`;
203
- }
204
- getRelevantHistory(cached) {
205
- const strategy = this.defaultHistoryStrategy;
206
- const history = cached.history;
207
- switch (strategy) {
208
- case 'full':
209
- return history;
210
- case 'sliding-window': {
211
- const windowSize = this.defaultWindowSize;
212
- return history.slice(-windowSize);
213
- }
214
- case 'summary':
215
- // Summary strategy: keep first message + last few for context
216
- if (history.length <= 4)
217
- return history;
218
- return [...history.slice(0, 2), ...history.slice(-2)];
219
- default:
220
- return history;
221
- }
222
- }
223
- }
224
- //# sourceMappingURL=specialist-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specialist-pool.js","sourceRoot":"","sources":["../../src/pool/specialist-pool.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- /**
2
- * @fileoverview AI SDK tools for SpecialistPool interaction.
3
- *
4
- * - spawn_specialist: Spawn or reuse a cached domain specialist.
5
- * - list_specialists: List all cached specialists and their state.
6
- */
7
- import type { SpecialistPool } from './specialist-pool.js';
8
- export declare function createSpawnSpecialistTool(pool: SpecialistPool): import("ai").Tool<{
9
- prompt: string;
10
- domain: string;
11
- role?: "generic" | "coder" | "researcher" | "analyst" | undefined;
12
- skills?: string[] | undefined;
13
- instructions?: string | undefined;
14
- }, {
15
- domain: string;
16
- response: string;
17
- useCount: number;
18
- skills: string[];
19
- fromCache: boolean;
20
- }>;
21
- export declare function createListSpecialistsTool(pool: SpecialistPool): import("ai").Tool<{}, {
22
- count: number;
23
- specialists: {
24
- domain: string;
25
- useCount: number;
26
- historyLength: number;
27
- expired: boolean;
28
- skills: string[];
29
- ageMs: number;
30
- lastUsedMs: number;
31
- }[];
32
- }>;
33
- /**
34
- * Create all pool tools for use with an Agent's tool set.
35
- */
36
- export declare function createPoolTools(pool: SpecialistPool): {
37
- spawn_specialist: import("ai").Tool<{
38
- prompt: string;
39
- domain: string;
40
- role?: "generic" | "coder" | "researcher" | "analyst" | undefined;
41
- skills?: string[] | undefined;
42
- instructions?: string | undefined;
43
- }, {
44
- domain: string;
45
- response: string;
46
- useCount: number;
47
- skills: string[];
48
- fromCache: boolean;
49
- }>;
50
- list_specialists: import("ai").Tool<{}, {
51
- count: number;
52
- specialists: {
53
- domain: string;
54
- useCount: number;
55
- historyLength: number;
56
- expired: boolean;
57
- skills: string[];
58
- ageMs: number;
59
- lastUsedMs: number;
60
- }[];
61
- }>;
62
- };
63
- //# sourceMappingURL=tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/pool/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc;;;;;;;;;;;;GAmC7D;AAMD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc;;;;;;;;;;;GAsB7D;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnD"}
@@ -1,83 +0,0 @@
1
- /**
2
- * @fileoverview AI SDK tools for SpecialistPool interaction.
3
- *
4
- * - spawn_specialist: Spawn or reuse a cached domain specialist.
5
- * - list_specialists: List all cached specialists and their state.
6
- */
7
- import { z } from 'zod';
8
- import { tool } from 'ai';
9
- // ============================================================================
10
- // spawn_specialist
11
- // ============================================================================
12
- export function createSpawnSpecialistTool(pool) {
13
- return tool({
14
- description: 'Spawn or reuse a cached domain specialist. If a specialist for the given domain ' +
15
- 'already exists and has not expired, it is reused. Otherwise a new specialist is created ' +
16
- 'with the specified role, skills, and instructions.',
17
- inputSchema: z.object({
18
- domain: z.string().describe('Domain/specialty name (used as cache key).'),
19
- role: z
20
- .enum(['generic', 'coder', 'researcher', 'analyst'])
21
- .optional()
22
- .describe('Agent role. Default: generic.'),
23
- skills: z
24
- .array(z.string())
25
- .optional()
26
- .describe('Skill directory paths or skill names to inject.'),
27
- instructions: z
28
- .string()
29
- .optional()
30
- .describe('Custom system prompt instructions for this specialist.'),
31
- prompt: z.string().describe('The prompt/task to send to the specialist.'),
32
- }),
33
- execute: async ({ domain, role, skills, instructions, prompt }) => {
34
- const cached = await pool.spawn({ domain, role, skills, instructions });
35
- const response = await pool.generate(domain, prompt);
36
- return {
37
- domain: cached.domain,
38
- response,
39
- useCount: cached.useCount,
40
- skills: cached.agent.skills,
41
- fromCache: cached.useCount > 1,
42
- };
43
- },
44
- });
45
- }
46
- // ============================================================================
47
- // list_specialists
48
- // ============================================================================
49
- export function createListSpecialistsTool(pool) {
50
- return tool({
51
- description: 'List all cached specialists in the pool with their domain, age, usage count, ' +
52
- 'history length, and expiration status.',
53
- inputSchema: z.object({}),
54
- execute: async () => {
55
- const specialists = pool.list();
56
- return {
57
- count: specialists.length,
58
- specialists: specialists.map((s) => ({
59
- domain: s.domain,
60
- useCount: s.useCount,
61
- historyLength: s.historyLength,
62
- expired: s.expired,
63
- skills: s.skills,
64
- ageMs: Date.now() - s.createdAt,
65
- lastUsedMs: Date.now() - s.lastUsedAt,
66
- })),
67
- };
68
- },
69
- });
70
- }
71
- // ============================================================================
72
- // Factory
73
- // ============================================================================
74
- /**
75
- * Create all pool tools for use with an Agent's tool set.
76
- */
77
- export function createPoolTools(pool) {
78
- return {
79
- spawn_specialist: createSpawnSpecialistTool(pool),
80
- list_specialists: createListSpecialistsTool(pool),
81
- };
82
- }
83
- //# sourceMappingURL=tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/pool/tools.ts"],"names":[],"mappings":"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"}