@cogitator-ai/core 0.22.0 → 0.24.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.
- package/README.md +95 -0
- package/dist/agent-tool.d.ts +7 -1
- package/dist/agent-tool.d.ts.map +1 -1
- package/dist/agent-tool.js +4 -1
- package/dist/agent-tool.js.map +1 -1
- package/dist/agent.d.ts +6 -25
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +18 -3
- package/dist/agent.js.map +1 -1
- package/dist/cogitator/handoffs.d.ts +14 -0
- package/dist/cogitator/handoffs.d.ts.map +1 -0
- package/dist/cogitator/handoffs.js +53 -0
- package/dist/cogitator/handoffs.js.map +1 -0
- package/dist/cogitator/initializers.d.ts.map +1 -1
- package/dist/cogitator/initializers.js +14 -2
- package/dist/cogitator/initializers.js.map +1 -1
- package/dist/cogitator/message-builder.d.ts +1 -1
- package/dist/cogitator/message-builder.d.ts.map +1 -1
- package/dist/cogitator/message-builder.js +23 -8
- package/dist/cogitator/message-builder.js.map +1 -1
- package/dist/cogitator/prompts.d.ts +69 -0
- package/dist/cogitator/prompts.d.ts.map +1 -0
- package/dist/cogitator/prompts.js +149 -0
- package/dist/cogitator/prompts.js.map +1 -0
- package/dist/cogitator/run-checkpoints.d.ts +20 -0
- package/dist/cogitator/run-checkpoints.d.ts.map +1 -0
- package/dist/cogitator/run-checkpoints.js +67 -0
- package/dist/cogitator/run-checkpoints.js.map +1 -0
- package/dist/cogitator/streaming.d.ts +9 -7
- package/dist/cogitator/streaming.d.ts.map +1 -1
- package/dist/cogitator/streaming.js +12 -1
- package/dist/cogitator/streaming.js.map +1 -1
- package/dist/cogitator/threads.d.ts +27 -0
- package/dist/cogitator/threads.d.ts.map +1 -0
- package/dist/cogitator/threads.js +54 -0
- package/dist/cogitator/threads.js.map +1 -0
- package/dist/cogitator/tool-executor.d.ts +1 -1
- package/dist/cogitator/tool-executor.d.ts.map +1 -1
- package/dist/cogitator/tool-executor.js +2 -2
- package/dist/cogitator/tool-executor.js.map +1 -1
- package/dist/constitutional/constitutional-ai.d.ts +7 -1
- package/dist/constitutional/constitutional-ai.d.ts.map +1 -1
- package/dist/constitutional/constitutional-ai.js +6 -2
- package/dist/constitutional/constitutional-ai.js.map +1 -1
- package/dist/constitutional/tool-guard.d.ts +3 -1
- package/dist/constitutional/tool-guard.d.ts.map +1 -1
- package/dist/constitutional/tool-guard.js +2 -2
- package/dist/constitutional/tool-guard.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/postgres-trace-store.d.ts +5 -1
- package/dist/learning/postgres-trace-store.d.ts.map +1 -1
- package/dist/learning/postgres-trace-store.js +23 -0
- package/dist/learning/postgres-trace-store.js.map +1 -1
- package/dist/learning/prompt-stores.d.ts +26 -0
- package/dist/learning/prompt-stores.d.ts.map +1 -0
- package/dist/learning/prompt-stores.js +97 -0
- package/dist/learning/prompt-stores.js.map +1 -0
- package/dist/llm/anthropic-thinking.d.ts +29 -0
- package/dist/llm/anthropic-thinking.d.ts.map +1 -0
- package/dist/llm/anthropic-thinking.js +100 -0
- package/dist/llm/anthropic-thinking.js.map +1 -0
- package/dist/llm/anthropic.d.ts +14 -0
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +139 -85
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/azure.d.ts +2 -0
- package/dist/llm/azure.d.ts.map +1 -1
- package/dist/llm/azure.js +1 -0
- package/dist/llm/azure.js.map +1 -1
- package/dist/llm/bedrock.d.ts +2 -0
- package/dist/llm/bedrock.d.ts.map +1 -1
- package/dist/llm/bedrock.js +139 -39
- package/dist/llm/bedrock.js.map +1 -1
- package/dist/llm/claude-models.d.ts +23 -0
- package/dist/llm/claude-models.d.ts.map +1 -1
- package/dist/llm/claude-models.js +50 -0
- package/dist/llm/claude-models.js.map +1 -1
- package/dist/llm/errors.d.ts +5 -0
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +36 -26
- package/dist/llm/errors.js.map +1 -1
- package/dist/llm/google.d.ts +12 -1
- package/dist/llm/google.d.ts.map +1 -1
- package/dist/llm/google.js +91 -15
- package/dist/llm/google.js.map +1 -1
- package/dist/llm/index.d.ts +7 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +16 -2
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/ollama.d.ts +6 -1
- package/dist/llm/ollama.d.ts.map +1 -1
- package/dist/llm/ollama.js +33 -3
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai-compatible-base.d.ts.map +1 -1
- package/dist/llm/openai-compatible-base.js +29 -21
- package/dist/llm/openai-compatible-base.js.map +1 -1
- package/dist/llm/openai-responses.d.ts.map +1 -1
- package/dist/llm/openai-responses.js +20 -3
- package/dist/llm/openai-responses.js.map +1 -1
- package/dist/llm/openai.d.ts +2 -0
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +1 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/retry.d.ts +32 -0
- package/dist/llm/retry.d.ts.map +1 -0
- package/dist/llm/retry.js +107 -0
- package/dist/llm/retry.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +3 -5
- package/dist/logger.js.map +1 -1
- package/dist/runtime.d.ts +49 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +571 -187
- package/dist/runtime.js.map +1 -1
- package/dist/security/pii.d.ts +44 -0
- package/dist/security/pii.d.ts.map +1 -0
- package/dist/security/pii.js +285 -0
- package/dist/security/pii.js.map +1 -0
- package/dist/skill.d.ts.map +1 -1
- package/dist/skill.js +16 -10
- package/dist/skill.js.map +1 -1
- package/dist/tools/audio-generate.d.ts +1 -1
- package/dist/tools/audio-generate.d.ts.map +1 -1
- package/dist/tools/audio-generate.js +2 -1
- package/dist/tools/audio-generate.js.map +1 -1
- package/dist/tools/audio-transcribe.d.ts.map +1 -1
- package/dist/tools/audio-transcribe.js +2 -1
- package/dist/tools/audio-transcribe.js.map +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +10 -9
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/github.d.ts.map +1 -1
- package/dist/tools/github.js +2 -1
- package/dist/tools/github.js.map +1 -1
- package/dist/tools/image-generate.d.ts +2 -2
- package/dist/tools/image-generate.d.ts.map +1 -1
- package/dist/tools/image-generate.js +2 -1
- package/dist/tools/image-generate.js.map +1 -1
- package/dist/tools/vector-search.d.ts.map +1 -1
- package/dist/tools/vector-search.js +8 -7
- package/dist/tools/vector-search.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +7 -6
- package/dist/tools/web-search.js.map +1 -1
- package/dist/utils/env.d.ts +9 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +26 -0
- package/dist/utils/env.js.map +1 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -59,6 +59,7 @@ console.log(result.output);
|
|
|
59
59
|
- **Time Travel** - Checkpoint, replay, fork, and compare executions
|
|
60
60
|
- **Causal Reasoning** - Pearl's do-calculus, counterfactuals, d-separation
|
|
61
61
|
- **Resilience** - Retry, circuit breaker, and fallback patterns
|
|
62
|
+
- **PII Masking** - Personal data and secrets replaced with placeholders before they reach the provider
|
|
62
63
|
- **Observability** - Full tracing with spans and callbacks
|
|
63
64
|
|
|
64
65
|
---
|
|
@@ -216,6 +217,31 @@ const variant = agent.clone({
|
|
|
216
217
|
});
|
|
217
218
|
```
|
|
218
219
|
|
|
220
|
+
### Reasoning and Prompt Caching
|
|
221
|
+
|
|
222
|
+
`reasoning` sets how hard a reasoning model thinks, in one vocabulary for every provider (Anthropic adaptive thinking and effort, OpenAI `reasoning.effort`, Gemini thinking levels or budgets, Ollama `think`), and can ask for a readable summary:
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
const analyst = new Agent({
|
|
226
|
+
name: 'analyst',
|
|
227
|
+
model: 'anthropic/claude-opus-5-5',
|
|
228
|
+
instructions: 'Explain the numbers.',
|
|
229
|
+
reasoning: { effort: 'high', summary: true }, // none | minimal | low | medium | high | xhigh | max
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
const result = await cog.run(analyst, {
|
|
233
|
+
input,
|
|
234
|
+
stream: true,
|
|
235
|
+
onReasoning: (d) => process.stdout.write(d),
|
|
236
|
+
});
|
|
237
|
+
result.reasoning; // the summary
|
|
238
|
+
result.usage.reasoningTokens; // billed as output
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Reasoning that has to travel with tool calls (Claude thinking blocks, OpenAI reasoning items, Gemini thought signatures) is sent back while the agent works through a tool loop.
|
|
242
|
+
|
|
243
|
+
Runs cache their prompt by default: Anthropic and Bedrock requests mark their stable prefix, OpenAI and Gemini cache on their own, and `usage.cachedInputTokens` / `cacheWriteTokens` are priced at the model's cache prices. `llm.promptCache: { ttl: '1h' }` or `false` changes it.
|
|
244
|
+
|
|
219
245
|
---
|
|
220
246
|
|
|
221
247
|
## Tools
|
|
@@ -240,6 +266,59 @@ const weatherTool = tool({
|
|
|
240
266
|
});
|
|
241
267
|
```
|
|
242
268
|
|
|
269
|
+
### Handoffs
|
|
270
|
+
|
|
271
|
+
`handoffs` lets an agent pass the conversation to another one: each target becomes a `transfer_to_<name>` tool, and the rest of the run goes on as the target — its instructions, tools and model — with the whole conversation:
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
const triage = new Agent({
|
|
275
|
+
name: 'triage',
|
|
276
|
+
model,
|
|
277
|
+
instructions: 'Hand the customer to the right specialist.',
|
|
278
|
+
handoffs: [billing, techSupport],
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
const result = await cog.run(triage, { input: 'How much do I owe on INV-204?' });
|
|
282
|
+
result.handoffs; // [{ from: 'triage', to: 'billing', reason }]
|
|
283
|
+
result.finalAgent; // 'billing'
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Approvals
|
|
287
|
+
|
|
288
|
+
A tool with `requiresApproval` (`true` or a function of its arguments) never runs without a person's decision. Decide inline with `onApproval`, or let the run pause and resume it later:
|
|
289
|
+
|
|
290
|
+
```typescript
|
|
291
|
+
const result = await cog.run(agent, { input: 'Refund order A-1', threadId, userId });
|
|
292
|
+
|
|
293
|
+
if (result.status === 'paused') {
|
|
294
|
+
// result.pendingApprovals: [{ toolCallId, toolName, arguments, description }]
|
|
295
|
+
const done = await cog.resume(agent, threadId, {
|
|
296
|
+
userId,
|
|
297
|
+
decisions: { [result.pendingApprovals![0].toolCallId]: { approved: true } },
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Nothing of the paused turn runs until every call in it is decided. Paused runs live in the thread's memory (or process memory, or your `runCheckpoints` store), so a resume can come after a restart; a new message on the thread instead declines the waiting calls.
|
|
303
|
+
|
|
304
|
+
### PII Masking
|
|
305
|
+
|
|
306
|
+
`security.pii` replaces emails, phones, card numbers (Luhn-checked), IBANs, SSNs, IP addresses, API keys and your own patterns with placeholders before every LLM request, so the provider never sees them:
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
const cog = new Cogitator({
|
|
310
|
+
security: {
|
|
311
|
+
pii: {
|
|
312
|
+
mode: 'mask', // 'redact' keeps placeholders in the answer, 'block' rejects such input
|
|
313
|
+
custom: [{ type: 'customer_id', pattern: /CUS-\d{6}/ }],
|
|
314
|
+
onDetect: (counts) => audit.log(counts), // { email: 1 } — never the values
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
In `mask` mode the answer, its stream and tool call arguments get the real values back, so `send_email({ to: '[EMAIL_1]' })` reaches the tool as the real address. `PiiMasker`, `PiiVault` and `withPiiMasking` work outside a run too.
|
|
321
|
+
|
|
243
322
|
### Tool Context
|
|
244
323
|
|
|
245
324
|
Every tool receives a context object:
|
|
@@ -1033,6 +1112,22 @@ const hypotheses = await generator.generateFromFailure(trace, { agentId: 'agent-
|
|
|
1033
1112
|
|
|
1034
1113
|
## Error Handling & Resilience
|
|
1035
1114
|
|
|
1115
|
+
### Retrying LLM Calls
|
|
1116
|
+
|
|
1117
|
+
Agent runs retry failed LLM calls on their own: rate limits, 5xx, timeouts and dropped connections, with exponential backoff and the provider's `Retry-After`. Streams are retried only before the first chunk. Tune or turn this off with `llm.retry`:
|
|
1118
|
+
|
|
1119
|
+
```typescript
|
|
1120
|
+
const cog = new Cogitator({
|
|
1121
|
+
llm: {
|
|
1122
|
+
retry: { maxRetries: 3, maxRetryAfter: 30_000, onRetry: (e) => console.warn(e) },
|
|
1123
|
+
// retry: false — no retries
|
|
1124
|
+
},
|
|
1125
|
+
});
|
|
1126
|
+
|
|
1127
|
+
// A backend used on its own
|
|
1128
|
+
const backend = withLLMRetry(new GoogleBackend({ apiKey }), { maxRetries: 3 });
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1036
1131
|
### Retry with Backoff
|
|
1037
1132
|
|
|
1038
1133
|
```typescript
|
package/dist/agent-tool.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Tool } from '@cogitator-ai/types';
|
|
1
|
+
import type { RunOptions, Tool } from '@cogitator-ai/types';
|
|
2
2
|
import type { Agent } from './agent.js';
|
|
3
3
|
import type { Cogitator } from './runtime.js';
|
|
4
4
|
export interface AgentAsToolOptions {
|
|
@@ -7,6 +7,12 @@ export interface AgentAsToolOptions {
|
|
|
7
7
|
timeout?: number;
|
|
8
8
|
includeUsage?: boolean;
|
|
9
9
|
includeToolCalls?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Decides the calls of the inner agent that need approval. Without it they
|
|
12
|
+
* are declined, since a delegated run cannot wait for a person; the inner
|
|
13
|
+
* agent is told why and answers accordingly.
|
|
14
|
+
*/
|
|
15
|
+
onApproval?: RunOptions['onApproval'];
|
|
10
16
|
}
|
|
11
17
|
export interface AgentToolResult {
|
|
12
18
|
output: string;
|
package/dist/agent-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-tool.d.ts","sourceRoot":"","sources":["../src/agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-tool.d.ts","sourceRoot":"","sources":["../src/agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAI3C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACzD;AAMD,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,eAAe,CAAC,CAmDzC"}
|
package/dist/agent-tool.js
CHANGED
|
@@ -4,7 +4,7 @@ const DEFAULT_SCHEMA = z.object({
|
|
|
4
4
|
task: z.string().describe('The task to delegate to the agent'),
|
|
5
5
|
});
|
|
6
6
|
export function agentAsTool(cogitator, agent, options) {
|
|
7
|
-
const { name, description, timeout, includeUsage = false, includeToolCalls = false } = options;
|
|
7
|
+
const { name, description, timeout, includeUsage = false, includeToolCalls = false, onApproval, } = options;
|
|
8
8
|
return tool({
|
|
9
9
|
name,
|
|
10
10
|
description,
|
|
@@ -18,6 +18,9 @@ export function agentAsTool(cogitator, agent, options) {
|
|
|
18
18
|
input: params.task,
|
|
19
19
|
timeout: effectiveTimeout,
|
|
20
20
|
signal: context.signal,
|
|
21
|
+
...(context.userId !== undefined && { userId: context.userId }),
|
|
22
|
+
onApproval: onApproval ??
|
|
23
|
+
(() => ({ approved: false, reason: 'no one can approve calls of a delegated agent' })),
|
|
21
24
|
});
|
|
22
25
|
return {
|
|
23
26
|
output: result.output,
|
package/dist/agent-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../src/agent-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../src/agent-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CACzB,SAAoB,EACpB,KAAY,EACZ,OAA2B;IAE3B,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,OAAO,EACP,YAAY,GAAG,KAAK,EACpB,gBAAgB,GAAG,KAAK,EACxB,UAAU,GACX,GAAG,OAAO,CAAC;IAEZ,OAAO,IAAI,CAAC;QACV,IAAI;QACJ,WAAW;QACX,UAAU,EAAE,cAAc;QAC1B,OAAO;QACP,WAAW,EAAE,CAAC,UAAU,CAAC;QAEzB,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,OAAoB,EAA4B,EAAE;YAC1F,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;gBAEzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE;oBACxC,KAAK,EAAE,MAAM,CAAC,IAAI;oBAClB,OAAO,EAAE,gBAAgB;oBACzB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC/D,UAAU,EACR,UAAU;wBACV,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAC,CAAC;iBACzF,CAAC,CAAC;gBAEH,OAAO;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,IAAI;oBACb,GAAG,CAAC,YAAY,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;oBACnD,GAAG,CAAC,gBAAgB,IAAI;wBACtB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;4BACvC,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,SAAS,EAAE,EAAE,CAAC,SAAS;yBACxB,CAAC,CAAC;qBACJ,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/agent.d.ts
CHANGED
|
@@ -2,32 +2,7 @@ import type { Agent as IAgent, AgentConfig, Tool, AgentSnapshot, DeserializeOpti
|
|
|
2
2
|
export declare class AgentDeserializationError extends Error {
|
|
3
3
|
constructor(message: string);
|
|
4
4
|
}
|
|
5
|
-
/**
|
|
6
|
-
* AI agent that can execute tasks using LLM and tools.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Agent, tool } from '@cogitator-ai/core';
|
|
11
|
-
* import { z } from 'zod';
|
|
12
|
-
*
|
|
13
|
-
* const searchTool = tool({
|
|
14
|
-
* name: 'search',
|
|
15
|
-
* description: 'Search the web',
|
|
16
|
-
* parameters: z.object({ query: z.string() }),
|
|
17
|
-
* execute: async ({ query }) => ({ results: [] }),
|
|
18
|
-
* });
|
|
19
|
-
*
|
|
20
|
-
* const agent = new Agent({
|
|
21
|
-
* name: 'researcher',
|
|
22
|
-
* model: 'anthropic/claude-sonnet-5-5',
|
|
23
|
-
* instructions: 'You are a research assistant.',
|
|
24
|
-
* tools: [searchTool],
|
|
25
|
-
* });
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
5
|
export declare class Agent implements IAgent {
|
|
29
|
-
/** Unique identifier for this agent instance */
|
|
30
|
-
readonly id: string;
|
|
31
6
|
/** Human-readable name of the agent */
|
|
32
7
|
readonly name: string;
|
|
33
8
|
/** Full configuration including model, instructions, tools, and parameters */
|
|
@@ -45,6 +20,12 @@ export declare class Agent implements IAgent {
|
|
|
45
20
|
* @param config.timeout - Run timeout in milliseconds (default: 120000)
|
|
46
21
|
*/
|
|
47
22
|
constructor(config: AgentConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Unique identifier for this agent instance: `config.id`, or one generated
|
|
25
|
+
* on first read — not in the constructor, so agents can be created at module
|
|
26
|
+
* scope where generating random values is not allowed (Cloudflare Workers).
|
|
27
|
+
*/
|
|
28
|
+
get id(): string;
|
|
48
29
|
/** LLM model identifier */
|
|
49
30
|
get model(): string | undefined;
|
|
50
31
|
/** System prompt defining agent behavior */
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,IAAI,MAAM,EACf,WAAW,EACX,IAAI,EACJ,aAAa,EACb,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,IAAI,MAAM,EACf,WAAW,EACX,IAAI,EACJ,aAAa,EACb,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AA2BD,qBAAa,KAAM,YAAW,MAAM;IAClC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B;;;;;;;;;;;OAWG;gBACS,MAAM,EAAE,WAAW;IAgB/B;;;;OAIG;IACH,IAAI,EAAE,IAAI,MAAM,CAQf;IAED,2BAA2B;IAC3B,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,4CAA4C;IAC5C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,oCAAoC;IACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAElB;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK;IAQ7C;;;;;;;;;;;OAWG;IACH,SAAS,IAAI,aAAa;IA0B1B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAE,kBAAuB,GAAG,KAAK;IA8CpF;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,aAAa;CAiBtE"}
|
package/dist/agent.js
CHANGED
|
@@ -30,9 +30,8 @@ export class AgentDeserializationError extends Error {
|
|
|
30
30
|
* });
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
+
const generatedIds = new WeakMap();
|
|
33
34
|
export class Agent {
|
|
34
|
-
/** Unique identifier for this agent instance */
|
|
35
|
-
id;
|
|
36
35
|
/** Human-readable name of the agent */
|
|
37
36
|
name;
|
|
38
37
|
/** Full configuration including model, instructions, tools, and parameters */
|
|
@@ -50,7 +49,6 @@ export class Agent {
|
|
|
50
49
|
* @param config.timeout - Run timeout in milliseconds (default: 120000)
|
|
51
50
|
*/
|
|
52
51
|
constructor(config) {
|
|
53
|
-
this.id = config.id ?? `agent_${nanoid(12)}`;
|
|
54
52
|
this.name = config.name;
|
|
55
53
|
let finalConfig = { ...config };
|
|
56
54
|
if (config.skills && config.skills.length > 0) {
|
|
@@ -63,6 +61,21 @@ export class Agent {
|
|
|
63
61
|
...finalConfig,
|
|
64
62
|
};
|
|
65
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Unique identifier for this agent instance: `config.id`, or one generated
|
|
66
|
+
* on first read — not in the constructor, so agents can be created at module
|
|
67
|
+
* scope where generating random values is not allowed (Cloudflare Workers).
|
|
68
|
+
*/
|
|
69
|
+
get id() {
|
|
70
|
+
if (this.config.id)
|
|
71
|
+
return this.config.id;
|
|
72
|
+
let id = generatedIds.get(this);
|
|
73
|
+
if (!id) {
|
|
74
|
+
id = `agent_${nanoid(12)}`;
|
|
75
|
+
generatedIds.set(this, id);
|
|
76
|
+
}
|
|
77
|
+
return id;
|
|
78
|
+
}
|
|
66
79
|
/** LLM model identifier */
|
|
67
80
|
get model() {
|
|
68
81
|
return this.config.model;
|
|
@@ -122,6 +135,7 @@ export class Agent {
|
|
|
122
135
|
maxTokens: this.config.maxTokens,
|
|
123
136
|
stopSequences: this.config.stopSequences,
|
|
124
137
|
responseFormat: serializeResponseFormat(this.config.responseFormat),
|
|
138
|
+
...(this.config.reasoning && { reasoning: this.config.reasoning }),
|
|
125
139
|
maxIterations: this.config.maxIterations,
|
|
126
140
|
timeout: this.config.timeout,
|
|
127
141
|
},
|
|
@@ -179,6 +193,7 @@ export class Agent {
|
|
|
179
193
|
maxTokens: snapshot.config.maxTokens,
|
|
180
194
|
stopSequences: snapshot.config.stopSequences,
|
|
181
195
|
responseFormat: deserializeResponseFormat(snapshot, overrides?.responseFormat),
|
|
196
|
+
...(snapshot.config.reasoning && { reasoning: snapshot.config.reasoning }),
|
|
182
197
|
maxIterations: snapshot.config.maxIterations,
|
|
183
198
|
timeout: snapshot.config.timeout,
|
|
184
199
|
...overrides,
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Agent as IAgent, Tool } from '@cogitator-ai/types';
|
|
2
|
+
export interface HandoffTools {
|
|
3
|
+
tools: Tool[];
|
|
4
|
+
/** The agent each handoff tool hands over to, by tool name */
|
|
5
|
+
targets: Map<string, IAgent>;
|
|
6
|
+
}
|
|
7
|
+
/** The `transfer_to_<name>` tools of an agent's `handoffs`. */
|
|
8
|
+
export declare function handoffTools(agent: IAgent): HandoffTools;
|
|
9
|
+
/**
|
|
10
|
+
* The agent called `name` among `entry` and the agents it can reach through
|
|
11
|
+
* handoffs, for resuming a run that paused after a handoff.
|
|
12
|
+
*/
|
|
13
|
+
export declare function findHandoffAgent(entry: IAgent, name: string): IAgent | undefined;
|
|
14
|
+
//# sourceMappingURL=handoffs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoffs.d.ts","sourceRoot":"","sources":["../../src/cogitator/handoffs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,MAAM,EAAW,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAQ1E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,8DAA8D;IAC9D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAyBxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWhF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { tool } from '../tool.js';
|
|
3
|
+
const handoffParameters = z.object({
|
|
4
|
+
reason: z.string().optional().describe('Why the conversation goes to this agent'),
|
|
5
|
+
});
|
|
6
|
+
/** The `transfer_to_<name>` tools of an agent's `handoffs`. */
|
|
7
|
+
export function handoffTools(agent) {
|
|
8
|
+
const tools = [];
|
|
9
|
+
const targets = new Map();
|
|
10
|
+
for (const entry of agent.config.handoffs ?? []) {
|
|
11
|
+
const { agent: target, toolName, description } = toHandoff(entry);
|
|
12
|
+
const name = toolName ?? `transfer_to_${toToolName(target.name)}`;
|
|
13
|
+
targets.set(name, target);
|
|
14
|
+
tools.push(tool({
|
|
15
|
+
name,
|
|
16
|
+
description: description ??
|
|
17
|
+
`Hand the conversation over to ${target.name}${target.config.description ? `: ${target.config.description}` : '.'}`,
|
|
18
|
+
parameters: handoffParameters,
|
|
19
|
+
execute: async ({ reason }) => ({
|
|
20
|
+
transferred: true,
|
|
21
|
+
to: target.name,
|
|
22
|
+
...(reason && { reason }),
|
|
23
|
+
}),
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
return { tools, targets };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The agent called `name` among `entry` and the agents it can reach through
|
|
30
|
+
* handoffs, for resuming a run that paused after a handoff.
|
|
31
|
+
*/
|
|
32
|
+
export function findHandoffAgent(entry, name) {
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
const queue = [entry];
|
|
35
|
+
while (queue.length > 0) {
|
|
36
|
+
const current = queue.shift();
|
|
37
|
+
if (seen.has(current))
|
|
38
|
+
continue;
|
|
39
|
+
seen.add(current);
|
|
40
|
+
if (current.name === name)
|
|
41
|
+
return current;
|
|
42
|
+
for (const next of current.config.handoffs ?? [])
|
|
43
|
+
queue.push(toHandoff(next).agent);
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
function toHandoff(entry) {
|
|
48
|
+
return 'agent' in entry ? entry : { agent: entry };
|
|
49
|
+
}
|
|
50
|
+
function toToolName(name) {
|
|
51
|
+
return name.replace(/[^a-zA-Z0-9_-]+/g, '_').replace(/^_+|_+$/g, '') || 'agent';
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=handoffs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoffs.js","sourceRoot":"","sources":["../../src/cogitator/handoffs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CAClF,CAAC,CAAC;AAQH,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,QAAQ,IAAI,eAAe,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,IAAI,CAAC;YACH,IAAI;YACJ,WAAW,EACT,WAAW;gBACX,iCAAiC,MAAM,CAAC,IAAI,GAC1C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GACjE,EAAE;YACJ,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9B,WAAW,EAAE,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1B,CAAC;SACH,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,KAAuB;IACxC,OAAO,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;AAClF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../src/cogitator/initializers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../src/cogitator/initializers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InMemoryAdapter, RedisAdapter, PostgresAdapter, ContextBuilder, } from '@cogitator-ai/memory';
|
|
1
|
+
import { InMemoryAdapter, RedisAdapter, PostgresAdapter, ContextBuilder, createEmbeddingService, } from '@cogitator-ai/memory';
|
|
2
2
|
import { getLogger } from '../logger.js';
|
|
3
3
|
import { ReflectionEngine, InMemoryInsightStore } from '../reflection/index.js';
|
|
4
4
|
import { ConstitutionalAI } from '../constitutional/index.js';
|
|
@@ -51,8 +51,12 @@ export async function initializeMemory(config, state) {
|
|
|
51
51
|
}
|
|
52
52
|
state.memoryAdapter = adapter;
|
|
53
53
|
if (config.memory.contextBuilder) {
|
|
54
|
+
const embedding = config.memory.embedding;
|
|
54
55
|
const deps = {
|
|
55
|
-
memoryAdapter:
|
|
56
|
+
memoryAdapter: adapter,
|
|
57
|
+
...(isFactAdapter(adapter) && { factAdapter: adapter }),
|
|
58
|
+
...(isEmbeddingAdapter(adapter) && { embeddingAdapter: adapter }),
|
|
59
|
+
...(embedding && { embeddingService: createEmbeddingService(embedding) }),
|
|
56
60
|
};
|
|
57
61
|
const contextConfig = {
|
|
58
62
|
...config.memory.contextBuilder,
|
|
@@ -162,4 +166,12 @@ export async function cleanupState(state) {
|
|
|
162
166
|
state.contextManager = undefined;
|
|
163
167
|
state.contextManagerInitialized = false;
|
|
164
168
|
}
|
|
169
|
+
function isFactAdapter(adapter) {
|
|
170
|
+
const candidate = adapter;
|
|
171
|
+
return typeof candidate.getFacts === 'function' && typeof candidate.addFact === 'function';
|
|
172
|
+
}
|
|
173
|
+
function isEmbeddingAdapter(adapter) {
|
|
174
|
+
const candidate = adapter;
|
|
175
|
+
return typeof candidate.search === 'function' && typeof candidate.addEmbedding === 'function';
|
|
176
|
+
}
|
|
165
177
|
//# sourceMappingURL=initializers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializers.js","sourceRoot":"","sources":["../../src/cogitator/initializers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initializers.js","sourceRoot":"","sources":["../../src/cogitator/initializers.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export declare function buildInputWithAudio(input: string, audio: AudioInput[] |
|
|
|
11
11
|
signal?: AbortSignal;
|
|
12
12
|
}): Promise<string>;
|
|
13
13
|
export declare function buildInitialMessages(agent: Agent, options: RunOptions, threadId: string, memoryAdapter: MemoryAdapter | undefined, contextBuilder: ContextBuilder | undefined): Promise<Message[]>;
|
|
14
|
-
export declare function saveEntry(threadId: string, agentId: string, message: Message, memoryAdapter: MemoryAdapter | undefined, toolCalls?: ToolCall[], toolResults?: ToolResult[], onError?: (error: Error, operation: 'save' | 'load') => void): Promise<void>;
|
|
14
|
+
export declare function saveEntry(threadId: string, agentId: string, message: Message, memoryAdapter: MemoryAdapter | undefined, toolCalls?: ToolCall[], toolResults?: ToolResult[], onError?: (error: Error, operation: 'save' | 'load') => void, userId?: string): Promise<void>;
|
|
15
15
|
export declare function enrichMessagesWithInsights(messages: Message[], reflectionEngine: ReflectionEngine, agentContext: AgentContext): Promise<void>;
|
|
16
16
|
export declare function addContextToMessages(messages: Message[], context: Record<string, unknown>): void;
|
|
17
17
|
//# sourceMappingURL=message-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../src/cogitator/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EAGV,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-builder.d.ts","sourceRoot":"","sources":["../../src/cogitator/message-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EAGV,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAG1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,EAC/B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,CAuBjB;AA6BD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,cAAc,EAAE,cAAc,GAAG,SAAS,GACzC,OAAO,CAAC,OAAO,EAAE,CAAC,CA4CpB;AAkBD,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,EAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,EAC5D,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,OAAO,EAAE,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { countMessageTokens } from '@cogitator-ai/memory';
|
|
2
2
|
import { getLogger } from '../logger.js';
|
|
3
|
+
import { ensureThreadAccess, threadMetadata } from './threads.js';
|
|
3
4
|
import { sanitizeToolHistory } from '../utils/tool-history.js';
|
|
4
5
|
import { transcribeAudio } from '../tools/audio-transcribe.js';
|
|
5
6
|
/**
|
|
@@ -54,15 +55,22 @@ export async function buildInitialMessages(agent, options, threadId, memoryAdapt
|
|
|
54
55
|
{ role: 'user', content: userContent },
|
|
55
56
|
];
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
if (options.threadId !== undefined && options.threadAccess !== 'shared') {
|
|
59
|
+
await ensureThreadAccess(memoryAdapter, threadId, {
|
|
60
|
+
agentId: agent.id,
|
|
61
|
+
userId: options.userId,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
await createThreadIfMissing(memoryAdapter, threadId, agent.id, options.userId);
|
|
60
66
|
}
|
|
61
67
|
if (contextBuilder && options.loadHistory !== false) {
|
|
62
68
|
const ctx = await contextBuilder.build({
|
|
63
69
|
threadId,
|
|
64
70
|
agentId: agent.id,
|
|
71
|
+
userId: options.userId,
|
|
65
72
|
systemPrompt: agent.instructions,
|
|
73
|
+
currentInput: options.input,
|
|
66
74
|
});
|
|
67
75
|
return [...sanitizeToolHistory(ctx.messages), { role: 'user', content: userContent }];
|
|
68
76
|
}
|
|
@@ -80,14 +88,21 @@ export async function buildInitialMessages(agent, options, threadId, memoryAdapt
|
|
|
80
88
|
{ role: 'user', content: userContent },
|
|
81
89
|
];
|
|
82
90
|
}
|
|
83
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Creates thread `threadId`, owned by `userId`, unless it exists. A thread
|
|
93
|
+
* that cannot be read is left alone: creating it would overwrite its owner.
|
|
94
|
+
*/
|
|
95
|
+
async function createThreadIfMissing(memoryAdapter, threadId, agentId, userId) {
|
|
96
|
+
const threadResult = await memoryAdapter.getThread(threadId);
|
|
97
|
+
if (threadResult.success && !threadResult.data) {
|
|
98
|
+
await memoryAdapter.createThread(agentId, threadMetadata({ agentId, userId }), threadId);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export async function saveEntry(threadId, agentId, message, memoryAdapter, toolCalls, toolResults, onError, userId) {
|
|
84
102
|
if (!memoryAdapter)
|
|
85
103
|
return;
|
|
86
104
|
try {
|
|
87
|
-
|
|
88
|
-
if (!threadResult.success || !threadResult.data) {
|
|
89
|
-
await memoryAdapter.createThread(agentId, { agentId }, threadId);
|
|
90
|
-
}
|
|
105
|
+
await createThreadIfMissing(memoryAdapter, threadId, agentId, userId);
|
|
91
106
|
await memoryAdapter.addEntry({
|
|
92
107
|
threadId,
|
|
93
108
|
message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-builder.js","sourceRoot":"","sources":["../../src/cogitator/message-builder.ts"],"names":[],"mappings":"AAUA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"message-builder.js","sourceRoot":"","sources":["../../src/cogitator/message-builder.ts"],"names":[],"mappings":"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"}
|