@lloyal-labs/lloyal-agents 1.5.8 → 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 (68) hide show
  1. package/README.md +81 -97
  2. package/dist/Agent.d.ts +60 -1
  3. package/dist/Agent.d.ts.map +1 -1
  4. package/dist/Agent.js +87 -1
  5. package/dist/Agent.js.map +1 -1
  6. package/dist/AgentPolicy.d.ts +52 -16
  7. package/dist/AgentPolicy.d.ts.map +1 -1
  8. package/dist/AgentPolicy.js +114 -43
  9. package/dist/AgentPolicy.js.map +1 -1
  10. package/dist/agent-pool.d.ts +17 -5
  11. package/dist/agent-pool.d.ts.map +1 -1
  12. package/dist/agent-pool.js +707 -417
  13. package/dist/agent-pool.js.map +1 -1
  14. package/dist/combinators.d.ts +29 -0
  15. package/dist/combinators.d.ts.map +1 -0
  16. package/dist/combinators.js +37 -0
  17. package/dist/combinators.js.map +1 -0
  18. package/dist/context.d.ts +18 -1
  19. package/dist/context.d.ts.map +1 -1
  20. package/dist/context.js +18 -1
  21. package/dist/context.js.map +1 -1
  22. package/dist/create-agent-pool.d.ts +96 -0
  23. package/dist/create-agent-pool.d.ts.map +1 -0
  24. package/dist/create-agent-pool.js +84 -0
  25. package/dist/create-agent-pool.js.map +1 -0
  26. package/dist/index.d.ts +10 -5
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +17 -8
  29. package/dist/index.js.map +1 -1
  30. package/dist/orchestrators.d.ts +161 -0
  31. package/dist/orchestrators.d.ts.map +1 -0
  32. package/dist/orchestrators.js +173 -0
  33. package/dist/orchestrators.js.map +1 -0
  34. package/dist/replay.d.ts +96 -0
  35. package/dist/replay.d.ts.map +1 -0
  36. package/dist/replay.js +108 -0
  37. package/dist/replay.js.map +1 -0
  38. package/dist/shared-root.d.ts +56 -18
  39. package/dist/shared-root.d.ts.map +1 -1
  40. package/dist/shared-root.js +79 -52
  41. package/dist/shared-root.js.map +1 -1
  42. package/dist/source.d.ts.map +1 -1
  43. package/dist/source.js.map +1 -1
  44. package/dist/trace-types.d.ts +23 -2
  45. package/dist/trace-types.d.ts.map +1 -1
  46. package/dist/trace-writer.d.ts +4 -1
  47. package/dist/trace-writer.d.ts.map +1 -1
  48. package/dist/trace-writer.js +6 -2
  49. package/dist/trace-writer.js.map +1 -1
  50. package/dist/types.d.ts +42 -5
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/use-agent.d.ts +92 -0
  53. package/dist/use-agent.d.ts.map +1 -0
  54. package/dist/use-agent.js +127 -0
  55. package/dist/use-agent.js.map +1 -0
  56. package/package.json +5 -5
  57. package/dist/generate.d.ts +0 -77
  58. package/dist/generate.d.ts.map +0 -1
  59. package/dist/generate.js +0 -166
  60. package/dist/generate.js.map +0 -1
  61. package/dist/run-agents.d.ts +0 -39
  62. package/dist/run-agents.d.ts.map +0 -1
  63. package/dist/run-agents.js +0 -46
  64. package/dist/run-agents.js.map +0 -1
  65. package/dist/spawn-agents.d.ts +0 -104
  66. package/dist/spawn-agents.d.ts.map +0 -1
  67. package/dist/spawn-agents.js +0 -255
  68. package/dist/spawn-agents.js.map +0 -1
@@ -1,255 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.spawnAgents = spawnAgents;
4
- const effection_1 = require("effection");
5
- const Tool_1 = require("./Tool");
6
- const context_1 = require("./context");
7
- const trace_scope_1 = require("./trace-scope");
8
- const toolkit_1 = require("./toolkit");
9
- const shared_root_1 = require("./shared-root");
10
- const agent_pool_1 = require("./agent-pool");
11
- // ── Recursive tool ───────────────────────────────────────────
12
- const DEFAULT_ARGS_SCHEMA = {
13
- type: 'object',
14
- properties: {
15
- tasks: {
16
- type: 'array',
17
- items: { type: 'string' },
18
- description: 'Sub-tasks to delegate to parallel agents',
19
- },
20
- },
21
- required: ['tasks'],
22
- };
23
- /**
24
- * Internal tool that calls spawnAgents() recursively.
25
- * Created by spawnAgents() when `recursive` is enabled.
26
- */
27
- class DelegateTool extends Tool_1.Tool {
28
- name;
29
- description;
30
- parameters;
31
- _spawnOpts;
32
- _extractTasks;
33
- _toolkit = null;
34
- constructor(name, description, argsSchema, extractTasks, spawnOpts) {
35
- super();
36
- this.name = name;
37
- this.description = description;
38
- this.parameters = argsSchema;
39
- this._extractTasks = extractTasks;
40
- this._spawnOpts = spawnOpts;
41
- }
42
- /** Wire the circular toolkit reference. Called after createToolkit(). */
43
- setToolkit(toolkit) {
44
- this._toolkit = toolkit;
45
- }
46
- *execute(args, context) {
47
- let tasks;
48
- try {
49
- tasks = this._extractTasks(args);
50
- }
51
- catch {
52
- return { error: 'Failed to extract tasks from arguments.' };
53
- }
54
- if (!Array.isArray(tasks) || tasks.length === 0) {
55
- return { error: 'Tasks must be a non-empty array of strings.' };
56
- }
57
- if (!this._toolkit) {
58
- throw new Error(`${this.name}: toolkit not wired. Internal error.`);
59
- }
60
- const tw = yield* context_1.Trace.expect();
61
- // Entailment gate: filter drifted/echoed tasks before spawning
62
- const scorer = context?.scorer;
63
- let filtered;
64
- if (scorer) {
65
- const allTasks = [...tasks];
66
- const scores = yield* (0, effection_1.call)(() => scorer.scoreEntailmentBatch(tasks));
67
- const surviving = [];
68
- const rejected = [];
69
- for (let i = 0; i < tasks.length; i++) {
70
- if (scorer.shouldProceed(scores[i])) {
71
- surviving.push(tasks[i]);
72
- }
73
- else {
74
- rejected.push({ task: tasks[i], score: scores[i] });
75
- }
76
- }
77
- if (rejected.length > 0)
78
- filtered = rejected;
79
- // Read calling agent for diagnostic — same read the echo guard will do
80
- let _diagAgent;
81
- try {
82
- _diagAgent = yield* context_1.CallingAgent.get();
83
- }
84
- catch { /* top-level */ }
85
- tw.write({
86
- traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
87
- type: 'entailment:delegate',
88
- tool: this.name,
89
- callingAgentId: _diagAgent?.id,
90
- callingAgentTaskLength: _diagAgent?.task?.length,
91
- callingAgentTask: _diagAgent?.task?.slice(0, 200),
92
- tasks: allTasks.map((text, i) => ({
93
- text: text.slice(0, 200),
94
- score: scores[i],
95
- kept: scorer.shouldProceed(scores[i]),
96
- })),
97
- });
98
- if (surviving.length === 0) {
99
- return { filtered, error: 'All proposed tasks drifted from the original query.' };
100
- }
101
- tasks = surviving;
102
- // Echo guard: reject if all surviving questions are paraphrases of the agent's task
103
- const echoThreshold = this._spawnOpts.echoThreshold ?? 0.8;
104
- let callingAgent;
105
- try {
106
- callingAgent = yield* context_1.CallingAgent.get();
107
- }
108
- catch { /* top-level */ }
109
- if (callingAgent?.task) {
110
- const echoScores = yield* (0, effection_1.call)(() => scorer.scoreSimilarityBatch(callingAgent.task, tasks));
111
- const minEchoScore = Math.min(...echoScores);
112
- const echoRejected = minEchoScore > echoThreshold;
113
- tw.write({
114
- traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
115
- type: 'entailment:delegate:echo',
116
- tool: this.name,
117
- agentTask: callingAgent.task.slice(0, 200),
118
- tasks: tasks.map((text, i) => ({ text: text.slice(0, 200), echoScore: echoScores[i] })),
119
- threshold: echoThreshold,
120
- rejected: echoRejected,
121
- });
122
- if (echoRejected) {
123
- return {
124
- filtered,
125
- echoRejected: true,
126
- error: 'Your sub-questions are too similar to your own task. You have already searched and read content on this topic. Call report() with what you found, including what you checked but could not find.',
127
- };
128
- }
129
- // Optional: check ancestor tasks
130
- if (this._spawnOpts.checkAncestorEcho) {
131
- const ancestorTasks = callingAgent.walkAncestors(a => a.task ? [a.task] : [])
132
- .filter(t => t !== callingAgent.task);
133
- for (const ancestorTask of ancestorTasks) {
134
- const ancestorScores = yield* (0, effection_1.call)(() => scorer.scoreSimilarityBatch(ancestorTask, tasks));
135
- if (Math.min(...ancestorScores) > echoThreshold) {
136
- tw.write({
137
- traceId: tw.nextId(), parentTraceId: null, ts: performance.now(),
138
- type: 'entailment:delegate:echo',
139
- tool: this.name,
140
- agentTask: ancestorTask.slice(0, 200),
141
- tasks: tasks.map((text, i) => ({ text: text.slice(0, 200), echoScore: ancestorScores[i] })),
142
- threshold: echoThreshold,
143
- rejected: true,
144
- });
145
- return {
146
- filtered,
147
- echoRejected: true,
148
- error: 'Your sub-questions echo an ancestor task. Report what you found instead of re-delegating.',
149
- };
150
- }
151
- }
152
- }
153
- }
154
- }
155
- const opts = this._spawnOpts;
156
- const toolkit = this._toolkit;
157
- const scope = (0, trace_scope_1.traceScope)(tw, null, `delegate:${this.name}`, { taskCount: tasks.length, filtered: filtered?.length ?? 0 });
158
- // Scorer propagation: same immutable scorer reaches all descendant pools
159
- const pool = yield* (0, shared_root_1.withSharedRoot)({ systemPrompt: opts.systemPrompt, tools: toolkit.toolsJson, parent: context?.branch }, function* (root) {
160
- return yield* (0, agent_pool_1.useAgentPool)({
161
- tasks: tasks.map((t) => ({
162
- systemPrompt: opts.systemPrompt,
163
- content: t,
164
- tools: toolkit.toolsJson,
165
- parent: root,
166
- })),
167
- tools: toolkit.toolMap,
168
- terminalTool: opts.terminalTool?.name,
169
- pruneOnReport: opts.pruneOnReport ?? true,
170
- maxTurns: opts.maxTurns,
171
- trace: opts.trace,
172
- policy: opts.policy,
173
- scorer: context?.scorer,
174
- });
175
- });
176
- const result = {
177
- results: pool.agents.map((a) => a.result).filter(Boolean),
178
- nestedResults: pool.agents.flatMap((a) => a.nestedResults ?? []),
179
- agentCount: pool.agents.length,
180
- totalTokens: pool.totalTokens,
181
- totalToolCalls: pool.totalToolCalls,
182
- ...(filtered ? { filtered } : {}),
183
- };
184
- scope.close();
185
- return result;
186
- }
187
- }
188
- // ── spawnAgents ──────────────────────────────────────────────
189
- /**
190
- * Spawn parallel agents with tools, optionally self-referential.
191
- *
192
- * Creates a shared root, forks one agent per task, runs the four-phase
193
- * tick loop, and returns results. When `recursive` is enabled, a
194
- * delegate tool is added to the toolkit that calls `spawnAgents()`
195
- * again — enabling agents to delegate sub-tasks at arbitrary depth.
196
- *
197
- * This is the general-purpose orchestration primitive. The harness
198
- * controls the prompt, tools, recursion shape, and policy. Sources
199
- * just provide data access tools.
200
- *
201
- * @example Research harness
202
- * ```typescript
203
- * const result = yield* spawnAgents({
204
- * tools: source.tools,
205
- * systemPrompt: RESEARCH_PROMPT,
206
- * tasks: questions,
207
- * terminalTool: { name: 'report', tool: reportTool },
208
- * recursive: { name: 'web_research', extractTasks: (a) => a.questions as string[] },
209
- * });
210
- * ```
211
- *
212
- * @category Agents
213
- */
214
- function* spawnAgents(opts) {
215
- // Build the recursive delegate tool if enabled
216
- let delegateTool;
217
- if (opts.recursive) {
218
- const rc = typeof opts.recursive === 'object' ? opts.recursive : {};
219
- const name = rc.name ?? 'delegate';
220
- const description = rc.description ?? `Delegate sub-tasks to parallel agents. Each task gets its own agent.`;
221
- const argsSchema = rc.argsSchema ?? DEFAULT_ARGS_SCHEMA;
222
- const extractTasks = rc.extractTasks ?? ((args) => args.tasks);
223
- delegateTool = new DelegateTool(name, description, argsSchema, extractTasks, opts);
224
- }
225
- // Compose toolkit: data tools + terminal tool + optional delegate tool
226
- const allTools = [
227
- ...opts.tools,
228
- ...(opts.terminalTool ? [opts.terminalTool.tool] : []),
229
- ...(delegateTool ? [delegateTool] : []),
230
- ];
231
- const toolkit = (0, toolkit_1.createToolkit)(allTools);
232
- // Wire circular reference: delegate tool needs the toolkit that contains it
233
- if (delegateTool) {
234
- delegateTool.setToolkit(toolkit);
235
- }
236
- // Run the pool
237
- return yield* (0, shared_root_1.withSharedRoot)({ systemPrompt: opts.systemPrompt, tools: toolkit.toolsJson, parent: opts.parent }, function* (root) {
238
- return yield* (0, agent_pool_1.useAgentPool)({
239
- tasks: opts.tasks.map((t) => ({
240
- systemPrompt: opts.systemPrompt,
241
- content: t,
242
- tools: toolkit.toolsJson,
243
- parent: root,
244
- })),
245
- tools: toolkit.toolMap,
246
- terminalTool: opts.terminalTool?.name,
247
- pruneOnReport: opts.pruneOnReport,
248
- maxTurns: opts.maxTurns,
249
- trace: opts.trace,
250
- policy: opts.policy,
251
- scorer: opts.scorer,
252
- });
253
- });
254
- }
255
- //# sourceMappingURL=spawn-agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn-agents.js","sourceRoot":"","sources":["../src/spawn-agents.ts"],"names":[],"mappings":"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"}