@anvia/core 1.0.3 → 1.0.7
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 +61 -23
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +6 -5
- package/dist/{agent-DYfzP-n5.d.ts → agent-B-3jCRmI.d.ts} +2 -2
- package/dist/{chunk-OIB3URVG.js → chunk-2QZJTG2E.js} +2 -2
- package/dist/{chunk-AR2K73CJ.js → chunk-34EDX4ZL.js} +4 -83
- package/dist/chunk-34EDX4ZL.js.map +1 -0
- package/dist/{chunk-5TIXGU5U.js → chunk-HNRNTFMQ.js} +4 -4
- package/dist/chunk-KSKST3KP.js +86 -0
- package/dist/chunk-KSKST3KP.js.map +1 -0
- package/dist/{chunk-LZD36ZAP.js → chunk-XC3LVC4K.js} +5 -4
- package/dist/chunk-XC3LVC4K.js.map +1 -0
- package/dist/{chunk-4EWTDOLR.js → chunk-XEVOC433.js} +1 -157
- package/dist/chunk-XEVOC433.js.map +1 -0
- package/dist/{chunk-VSTJNHOZ.js → chunk-XSV5C4R5.js} +2 -2
- package/dist/documents/index.d.ts +1 -14
- package/dist/documents/index.js +3 -5
- package/dist/evals/index.d.ts +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7 -6
- package/dist/internal/agent.d.ts +3 -3
- package/dist/internal/agent.js +6 -5
- package/dist/internal/agent.js.map +1 -1
- package/dist/memory/index.d.ts +2 -2
- package/dist/observability/index.d.ts +2 -2
- package/dist/observability/index.js +2 -1
- package/dist/pipeline/index.d.ts +77 -4
- package/dist/pipeline/index.js +268 -27
- package/dist/pipeline/index.js.map +1 -1
- package/dist/skills/index.js +4 -4
- package/dist/tool/index.js +3 -3
- package/dist/{types-BUEZMBhO.d.ts → types-DL7wX6hJ.d.ts} +2 -1
- package/dist/{types-CSYt7-It.d.ts → types-DmzRCbU5.d.ts} +9 -1
- package/dist/vector-store/index.js +2 -2
- package/package.json +1 -10
- package/dist/chunk-4EWTDOLR.js.map +0 -1
- package/dist/chunk-AR2K73CJ.js.map +0 -1
- package/dist/chunk-LZD36ZAP.js.map +0 -1
- /package/dist/{chunk-OIB3URVG.js.map → chunk-2QZJTG2E.js.map} +0 -0
- /package/dist/{chunk-5TIXGU5U.js.map → chunk-HNRNTFMQ.js.map} +0 -0
- /package/dist/{chunk-VSTJNHOZ.js.map → chunk-XSV5C4R5.js.map} +0 -0
package/README.md
CHANGED
|
@@ -20,6 +20,18 @@ adapter on the same release channel.
|
|
|
20
20
|
pnpm add @anvia/core@rc
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
### Bun
|
|
24
|
+
|
|
25
|
+
Bun 1.3.14 is the currently tested and supported runtime baseline. Install Core on the same
|
|
26
|
+
release channel as the rest of your Anvia packages:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
bun add @anvia/core@rc
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The repository itself remains a pnpm workspace; Bun support applies to applications consuming the
|
|
33
|
+
published package.
|
|
34
|
+
|
|
23
35
|
See the repository's [1.0 release policy](../../docs/releases/v1.md) for channel and support
|
|
24
36
|
details.
|
|
25
37
|
|
|
@@ -380,9 +392,11 @@ new Agent({
|
|
|
380
392
|
Without `session`, the same Agent is stateless. Pass `{ messages }` when the caller already owns a
|
|
381
393
|
complete transcript; transcripts cannot be combined with persisted sessions.
|
|
382
394
|
|
|
383
|
-
Compaction is an explicit Agent policy over a store capability. The
|
|
384
|
-
|
|
385
|
-
|
|
395
|
+
Compaction is an explicit Agent policy over a store capability. The store preserves the canonical
|
|
396
|
+
message history for `load()` and inspectors, and persists one latest compaction checkpoint
|
|
397
|
+
separately. Future model calls receive the checkpoint summary (a system message tagged with
|
|
398
|
+
`metadata.anvia.memoryCompaction`) plus the unsummarized tail, not the individual messages already
|
|
399
|
+
covered by that summary:
|
|
386
400
|
|
|
387
401
|
```ts
|
|
388
402
|
import { createSummaryMemoryCompactor } from "@anvia/core/memory";
|
|
@@ -451,9 +465,10 @@ if (result.type === "compacted") {
|
|
|
451
465
|
}
|
|
452
466
|
```
|
|
453
467
|
|
|
454
|
-
The automatic trigger is a threshold, not a hard storage limit.
|
|
455
|
-
|
|
456
|
-
|
|
468
|
+
The automatic trigger is a threshold, not a hard storage limit. Omitting `compaction` keeps the
|
|
469
|
+
full canonical history model-facing. Summary-provider retries belong to the compactor; full
|
|
470
|
+
snapshot-to-checkpoint conflict retries are separately opt-in. A streamed `memory_compaction`
|
|
471
|
+
event is emitted only after the store atomically commits the checkpoint.
|
|
457
472
|
|
|
458
473
|
## Structured Extraction
|
|
459
474
|
|
|
@@ -500,21 +515,51 @@ const { runId, output } = await pipeline.run({
|
|
|
500
515
|
});
|
|
501
516
|
```
|
|
502
517
|
|
|
503
|
-
|
|
518
|
+
Pipelines use the same named observability configuration as Agents. Pipeline observers receive the
|
|
519
|
+
root run and every composed, parallel, Agent, extraction, and custom stage. A primary stage trace is
|
|
520
|
+
propagated into an Agent stage so its generations and tools become children of that stage. This
|
|
521
|
+
requires the Pipeline and Agent `primaryTrace` names to match. When they differ, Anvia leaves the
|
|
522
|
+
Agent trace unchanged without raising an error:
|
|
504
523
|
|
|
505
|
-
|
|
506
|
-
|
|
524
|
+
```ts
|
|
525
|
+
const pipeline = new Pipeline({
|
|
526
|
+
id: "support-flow",
|
|
527
|
+
inputSchema: z.string(),
|
|
528
|
+
observability: {
|
|
529
|
+
observers: { telemetry: pipelineObserver },
|
|
530
|
+
primaryTrace: "telemetry",
|
|
531
|
+
},
|
|
532
|
+
}).agent({
|
|
533
|
+
id: "draft",
|
|
534
|
+
agent,
|
|
535
|
+
suspension: "reject",
|
|
536
|
+
request: ({ input }) => ({ prompt: input }),
|
|
537
|
+
});
|
|
507
538
|
|
|
508
|
-
|
|
509
|
-
|
|
539
|
+
const result = await pipeline.run({
|
|
540
|
+
input: "Customer cannot complete checkout.",
|
|
541
|
+
trace: { sessionId: "support-session" },
|
|
542
|
+
});
|
|
510
543
|
|
|
511
|
-
|
|
512
|
-
pnpm add pdfjs-dist
|
|
544
|
+
console.log(result.trace);
|
|
513
545
|
```
|
|
514
546
|
|
|
547
|
+
The `observer` passed to `pipeline.run()` remains a separate stage-event sink intended for Studio,
|
|
548
|
+
logging, and other operational consumers. Its errors are isolated unless `failOnObserverError` is
|
|
549
|
+
enabled.
|
|
550
|
+
|
|
551
|
+
`observability.errorPolicy` controls named observer failures instead. It accepts `"ignore"` or
|
|
552
|
+
`"throw"` and defaults to `"ignore"`. With `"throw"`, the run rejects with a
|
|
553
|
+
`PipelineObserverDispatchError` containing the failed phase and per-observer failures.
|
|
554
|
+
|
|
555
|
+
## Documents
|
|
556
|
+
|
|
557
|
+
Applications own file discovery, file reads, document parsing, source metadata, and per-file error
|
|
558
|
+
policy. Core only provides deterministic in-memory text chunking:
|
|
559
|
+
|
|
515
560
|
```ts
|
|
516
561
|
import { readFile } from "node:fs/promises";
|
|
517
|
-
import { chunkText
|
|
562
|
+
import { chunkText } from "@anvia/core/documents";
|
|
518
563
|
|
|
519
564
|
const text = await readFile("guide.txt", "utf8");
|
|
520
565
|
const chunks = chunkText({
|
|
@@ -524,19 +569,12 @@ const chunks = chunkText({
|
|
|
524
569
|
overlap: 100,
|
|
525
570
|
separators: ["\n\n", "\n", " "],
|
|
526
571
|
});
|
|
527
|
-
|
|
528
|
-
const { pages } = await extractPdfText({
|
|
529
|
-
data: new Uint8Array(await readFile("guide.pdf")),
|
|
530
|
-
abortSignal,
|
|
531
|
-
});
|
|
532
572
|
```
|
|
533
573
|
|
|
534
574
|
Use `strategy: "fixed"` for deterministic sliding windows. Recursive chunking requires an explicit
|
|
535
575
|
separator order and falls back to fixed-size splitting when none of those separators can divide an
|
|
536
576
|
oversized section. Chunk offsets use JavaScript string indices and always identify the exact source
|
|
537
|
-
slice.
|
|
538
|
-
If parsing or abort handling fails together with parser cleanup, extraction rejects with an
|
|
539
|
-
`AggregateError` containing the operation failure first and the cleanup failure second.
|
|
577
|
+
slice.
|
|
540
578
|
|
|
541
579
|
For the common vector ingestion path, embed and upsert raw text with one call:
|
|
542
580
|
|
|
@@ -627,7 +665,7 @@ connection ownership, URL safety, and cleanup.
|
|
|
627
665
|
- `skills`: local skill loading
|
|
628
666
|
- `observability`: observer interfaces for runs, generations, and tool calls
|
|
629
667
|
- `evals`: evaluation helpers and reporters
|
|
630
|
-
- `documents`: in-memory text chunking
|
|
668
|
+
- `documents`: deterministic in-memory text chunking
|
|
631
669
|
- `speech-generation`, `image-generation`, `transcription`: provider-neutral media interfaces
|
|
632
670
|
|
|
633
671
|
## Development
|
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
|
|
2
2
|
export { R as RetryContext, a as RetryOptions, b as RetrySetting } from '../retry-CjvSlKGW.js';
|
|
3
|
-
export { A as Agent, a as AgentContextInput, b as AgentMemory, c as AgentMemoryOptions, d as AgentOptions, e as AgentToolInput, f as AgentToolOptions, C as CreateHybridVectorContextOptions, g as CreateVectorContextOptions, V as VectorContext, h as VectorContextBaseOptions, i as createVectorContext, j as isVectorContext } from '../agent-
|
|
3
|
+
export { A as Agent, a as AgentContextInput, b as AgentMemory, c as AgentMemoryOptions, d as AgentOptions, e as AgentToolInput, f as AgentToolOptions, C as CreateHybridVectorContextOptions, g as CreateVectorContextOptions, V as VectorContext, h as VectorContextBaseOptions, i as createVectorContext, j as isVectorContext } from '../agent-B-3jCRmI.js';
|
|
4
4
|
import { M as Message, U as Usage, C as CompletionFinishReason } from '../types-DgvozfPc.js';
|
|
5
|
-
import { A as AgentBlockedOutcome, g as AgentInteractionOutcome } from '../types-
|
|
6
|
-
export { a as AgentChildStreamEvent, b as AgentDeltaEvent, c as AgentErrorEvent, d as AgentErrorStreamEvent, e as AgentFinishEvent, f as AgentInput, h as AgentLifecycle, i as AgentMemoryCompactionEvent, j as AgentMemoryCompactionOptions, k as AgentOutcome, l as AgentPrompt, m as AgentResponse, n as AgentRunOptions, o as AgentRunSettings, p as AgentStartEvent, q as AgentSteerInput, r as AgentSteerReceipt, s as AgentStepFinishEvent, t as AgentStream, u as AgentStreamEvent, v as AgentToolCallDeltaEvent, w as AgentToolFinishEvent, x as AgentToolStartEvent } from '../types-
|
|
5
|
+
import { A as AgentBlockedOutcome, g as AgentInteractionOutcome } from '../types-DL7wX6hJ.js';
|
|
6
|
+
export { a as AgentChildStreamEvent, b as AgentDeltaEvent, c as AgentErrorEvent, d as AgentErrorStreamEvent, e as AgentFinishEvent, f as AgentInput, h as AgentLifecycle, i as AgentMemoryCompactionEvent, j as AgentMemoryCompactionOptions, k as AgentOutcome, l as AgentPrompt, m as AgentResponse, n as AgentRunOptions, o as AgentRunSettings, p as AgentStartEvent, q as AgentSteerInput, r as AgentSteerReceipt, s as AgentStepFinishEvent, t as AgentStream, u as AgentStreamEvent, v as AgentToolCallDeltaEvent, w as AgentToolFinishEvent, x as AgentToolStartEvent } from '../types-DL7wX6hJ.js';
|
|
7
7
|
import '../zod-schema-C7F4clpm.js';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import '../types-DhkodEft.js';
|
|
10
10
|
import '../type-utils-CtHVDRn_.js';
|
|
11
11
|
import '../types-DjqRHeAi.js';
|
|
12
12
|
import '../tool-BpqpoRSE.js';
|
|
13
|
-
import '../types-
|
|
13
|
+
import '../types-DmzRCbU5.js';
|
|
14
14
|
import '../middleware-kcF8AusP.js';
|
|
15
15
|
import './interactions/index.js';
|
|
16
16
|
import '../types-DC1U1XwW.js';
|
package/dist/agent/index.js
CHANGED
|
@@ -2,15 +2,16 @@ import {
|
|
|
2
2
|
Agent,
|
|
3
3
|
createVectorContext,
|
|
4
4
|
isVectorContext
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-HNRNTFMQ.js";
|
|
6
6
|
import "../chunk-OJBFDBLG.js";
|
|
7
7
|
import "../chunk-J6LVLV6P.js";
|
|
8
8
|
import "../chunk-XMVOBX43.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-34EDX4ZL.js";
|
|
10
|
+
import "../chunk-KSKST3KP.js";
|
|
10
11
|
import "../chunk-YK4WAAS4.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-2QZJTG2E.js";
|
|
13
|
+
import "../chunk-XC3LVC4K.js";
|
|
14
|
+
import "../chunk-XEVOC433.js";
|
|
14
15
|
import {
|
|
15
16
|
AgentRunBlockedError,
|
|
16
17
|
AgentRunCancelledError,
|
|
@@ -3,8 +3,8 @@ import { D as Document, c as CompletionModel, P as ProviderTool, J as JsonObject
|
|
|
3
3
|
import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
|
|
4
4
|
import { d as GuardrailPolicyInput, c as GuardrailPolicy } from './types-DhkodEft.js';
|
|
5
5
|
import { a as McpServer } from './types-DjqRHeAi.js';
|
|
6
|
-
import { E as MemoryStore, z as MemorySavePolicy, F as MemoryTokenCounter, n as MemoryCompactor, d as MemoryCompactionConflictRetryOptions, y as MemoryOptions, k as MemoryCompactionResult } from './types-
|
|
7
|
-
import { h as AgentLifecycle, F as AgentObservabilityOptions, n as AgentRunOptions, k as AgentOutcome, o as AgentRunSettings, t as AgentStream, j as AgentMemoryCompactionOptions } from './types-
|
|
6
|
+
import { E as MemoryStore, z as MemorySavePolicy, F as MemoryTokenCounter, n as MemoryCompactor, d as MemoryCompactionConflictRetryOptions, y as MemoryOptions, k as MemoryCompactionResult } from './types-DmzRCbU5.js';
|
|
7
|
+
import { h as AgentLifecycle, F as AgentObservabilityOptions, n as AgentRunOptions, k as AgentOutcome, o as AgentRunSettings, t as AgentStream, j as AgentMemoryCompactionOptions } from './types-DL7wX6hJ.js';
|
|
8
8
|
import { A as AgentMiddleware } from './middleware-kcF8AusP.js';
|
|
9
9
|
import { A as AnyTool, T as Tool, c as ToolCallContext, N as NormalizedToolOutput } from './tool-BpqpoRSE.js';
|
|
10
10
|
import { AgentContinuation, AgentInteractionResponse } from './agent/interactions/index.js';
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
assertPositiveSearchLimit,
|
|
5
5
|
createTool,
|
|
6
6
|
retrieveDocuments
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XC3LVC4K.js";
|
|
8
8
|
import {
|
|
9
9
|
embedDocuments
|
|
10
10
|
} from "./chunk-K5L7R7XM.js";
|
|
@@ -168,4 +168,4 @@ export {
|
|
|
168
168
|
createMiddleware,
|
|
169
169
|
createThinkTool
|
|
170
170
|
};
|
|
171
|
-
//# sourceMappingURL=chunk-
|
|
171
|
+
//# sourceMappingURL=chunk-2QZJTG2E.js.map
|
|
@@ -1,89 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
observerSnapshot
|
|
3
|
+
} from "./chunk-KSKST3KP.js";
|
|
1
4
|
import {
|
|
2
5
|
Usage
|
|
3
6
|
} from "./chunk-TB5EKZM7.js";
|
|
4
7
|
|
|
5
|
-
// src/observability/snapshot.ts
|
|
6
|
-
function observerSnapshot(value) {
|
|
7
|
-
if (containsError(value, /* @__PURE__ */ new WeakSet())) {
|
|
8
|
-
return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
|
|
9
|
-
}
|
|
10
|
-
try {
|
|
11
|
-
return globalThis.structuredClone(value);
|
|
12
|
-
} catch {
|
|
13
|
-
return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
function cloneObserverFallback(value, seen) {
|
|
17
|
-
if (typeof value !== "object" || value === null) {
|
|
18
|
-
return value;
|
|
19
|
-
}
|
|
20
|
-
const existing = seen.get(value);
|
|
21
|
-
if (existing !== void 0) {
|
|
22
|
-
return existing;
|
|
23
|
-
}
|
|
24
|
-
if (Array.isArray(value)) {
|
|
25
|
-
const clone2 = [];
|
|
26
|
-
seen.set(value, clone2);
|
|
27
|
-
clone2.push(...value.map((item) => cloneObserverFallback(item, seen)));
|
|
28
|
-
return clone2;
|
|
29
|
-
}
|
|
30
|
-
if (value instanceof Date) {
|
|
31
|
-
return new Date(value.getTime());
|
|
32
|
-
}
|
|
33
|
-
if (value instanceof Error) {
|
|
34
|
-
const clone2 = Object.create(Object.getPrototypeOf(value));
|
|
35
|
-
seen.set(value, clone2);
|
|
36
|
-
Object.defineProperties(clone2, {
|
|
37
|
-
name: { configurable: true, writable: true, value: value.name },
|
|
38
|
-
message: { configurable: true, writable: true, value: value.message }
|
|
39
|
-
});
|
|
40
|
-
if (value.stack !== void 0) {
|
|
41
|
-
Object.defineProperty(clone2, "stack", {
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: value.stack
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
if (value.cause !== void 0) {
|
|
48
|
-
Object.defineProperty(clone2, "cause", {
|
|
49
|
-
configurable: true,
|
|
50
|
-
writable: true,
|
|
51
|
-
value: cloneObserverFallback(value.cause, seen)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
for (const key of Object.getOwnPropertyNames(value)) {
|
|
55
|
-
if (key === "name" || key === "message" || key === "stack" || key === "cause") continue;
|
|
56
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
57
|
-
if (descriptor === void 0) continue;
|
|
58
|
-
if ("value" in descriptor) {
|
|
59
|
-
descriptor.value = cloneObserverFallback(descriptor.value, seen);
|
|
60
|
-
}
|
|
61
|
-
Object.defineProperty(clone2, key, descriptor);
|
|
62
|
-
}
|
|
63
|
-
return clone2;
|
|
64
|
-
}
|
|
65
|
-
if (Object.getPrototypeOf(value) !== Object.prototype) {
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
const clone = {};
|
|
69
|
-
seen.set(value, clone);
|
|
70
|
-
for (const [key, item] of Object.entries(value)) {
|
|
71
|
-
clone[key] = cloneObserverFallback(item, seen);
|
|
72
|
-
}
|
|
73
|
-
return clone;
|
|
74
|
-
}
|
|
75
|
-
function containsError(value, seen) {
|
|
76
|
-
if (typeof value !== "object" || value === null) return false;
|
|
77
|
-
if (value instanceof Error) return true;
|
|
78
|
-
if (seen.has(value)) return false;
|
|
79
|
-
seen.add(value);
|
|
80
|
-
if (Array.isArray(value)) {
|
|
81
|
-
return value.some((item) => containsError(item, seen));
|
|
82
|
-
}
|
|
83
|
-
if (Object.getPrototypeOf(value) !== Object.prototype) return false;
|
|
84
|
-
return Object.values(value).some((item) => containsError(item, seen));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
8
|
// src/observability/group.ts
|
|
88
9
|
var AgentObserverDispatchError = class extends AggregateError {
|
|
89
10
|
phase;
|
|
@@ -321,4 +242,4 @@ export {
|
|
|
321
242
|
AgentObserverDispatchError,
|
|
322
243
|
startAgentRunObservers
|
|
323
244
|
};
|
|
324
|
-
//# sourceMappingURL=chunk-
|
|
245
|
+
//# sourceMappingURL=chunk-34EDX4ZL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/observability/group.ts"],"sourcesContent":["import { Usage } from \"../completion\";\nimport { observerSnapshot } from \"./snapshot\";\nimport type {\n AgentGenerationEndArgs,\n AgentGenerationErrorArgs,\n AgentGenerationObserver,\n AgentGenerationStartArgs,\n AgentGenerationUpdateArgs,\n AgentObserverErrorPolicy,\n AgentObserverMap,\n AgentRunEndArgs,\n AgentRunErrorArgs,\n AgentRunEventArgs,\n AgentRunObserver,\n AgentRunStartArgs,\n AgentToolEndArgs,\n AgentToolErrorArgs,\n AgentToolObserver,\n AgentToolStartArgs,\n AgentToolStreamEventArgs,\n AgentToolSuspendedArgs,\n AgentTraceInfo,\n} from \"./types\";\n\nexport type AgentObserverFailure = {\n readonly observer: string;\n readonly error: unknown;\n};\n\nexport class AgentObserverDispatchError extends AggregateError {\n readonly phase: string;\n readonly failures: readonly AgentObserverFailure[];\n\n constructor(phase: string, failures: readonly AgentObserverFailure[]) {\n super(\n failures.map((failure) => failure.error),\n `Agent observer ${phase} failed for ${failures.map((failure) => failure.observer).join(\", \")}.`,\n );\n this.name = \"AgentObserverDispatchError\";\n this.phase = phase;\n this.failures = Object.freeze([...failures]);\n }\n}\n\ntype NamedObserver<T> = {\n readonly name: string;\n readonly observer: T;\n};\n\ntype ActiveNamedObserver<T> = NamedObserver<T> & {\n terminal: boolean;\n};\n\nexport async function startAgentRunObservers(\n observers: AgentObserverMap,\n args: AgentRunStartArgs,\n options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n },\n): Promise<ActiveAgentRunObservers> {\n const runObservers: ActiveNamedObserver<AgentRunObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const [name, observer] of Object.entries(observers)) {\n try {\n const runObserver = await observer.startRun(observerSnapshot(args));\n if (runObserver !== undefined) {\n runObservers.push({ name, observer: runObserver, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: name, error });\n }\n }\n if (options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startRun\", failures);\n const cleanupFailures = await terminateObservers(runObservers, (observer) =>\n observer.error?.(\n observerSnapshot({\n status: \"failed\",\n error: startupError,\n usage: Usage.empty(),\n messages: [...args.history, args.prompt],\n }),\n ),\n );\n throw new AgentObserverDispatchError(\"startRun\", [...failures, ...cleanupFailures]);\n }\n return new ActiveAgentRunObservers(runObservers, options);\n}\n\nexport class ActiveAgentRunObservers {\n readonly trace: AgentTraceInfo | undefined;\n\n constructor(\n private readonly runObservers: readonly ActiveNamedObserver<AgentRunObserver>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n },\n ) {\n const primary =\n options.primaryTrace === undefined\n ? undefined\n : runObservers.find((entry) => entry.name === options.primaryTrace);\n this.trace =\n primary?.observer.trace === undefined\n ? undefined\n : Object.freeze({ observer: primary.name, ...primary.observer.trace });\n }\n\n async startGeneration(args: AgentGenerationStartArgs): Promise<ActiveGenerationObservers> {\n const generationObservers: ActiveNamedObserver<AgentGenerationObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startGeneration === undefined) continue;\n try {\n const observer = await entry.observer.startGeneration(observerSnapshot(args));\n if (observer !== undefined) {\n generationObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startGeneration\", failures);\n const cleanupFailures = await terminateObservers(generationObservers, (observer) =>\n observer.error?.(observerSnapshot({ turn: args.turn, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startGeneration\", [...failures, ...cleanupFailures]);\n }\n return new ActiveGenerationObservers(generationObservers, this.options.errorPolicy);\n }\n\n async startTool(args: AgentToolStartArgs): Promise<ActiveToolObservers> {\n const toolObservers: ActiveNamedObserver<AgentToolObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startTool === undefined) continue;\n try {\n const observer = await entry.observer.startTool(observerSnapshot(args));\n if (observer !== undefined) {\n toolObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startTool\", failures);\n const cleanupFailures = await terminateObservers(toolObservers, (observer) =>\n observer.error?.(observerSnapshot({ ...args, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startTool\", [...failures, ...cleanupFailures]);\n }\n return new ActiveToolObservers(toolObservers, this.options.errorPolicy);\n }\n\n async end(args: AgentRunEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: AgentRunErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n\n async event(args: AgentRunEventArgs): Promise<void> {\n await dispatchObservers(\n this.runObservers,\n \"event\",\n (observer) => observer.event?.(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n}\n\nexport class ActiveGenerationObservers {\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentGenerationObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n ) {}\n\n async end(args: AgentGenerationEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async error(args: AgentGenerationErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n\n async update(args: AgentGenerationUpdateArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"generation.update\",\n (observer) => observer.update?.(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n}\n\nexport class ActiveToolObservers {\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentToolObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n ) {}\n\n async streamEvent(args: AgentToolStreamEventArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"tool.streamEvent\",\n (observer) => observer.streamEvent?.(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async end(args: AgentToolEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async suspend(args: AgentToolSuspendedArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.suspend\",\n (observer) => observer.suspend?.(observerSnapshot(args)),\n this.errorPolicy,\n );\n }\n\n async error(args: AgentToolErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nasync function dispatchObservers<T>(\n observers: readonly NamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n): Promise<void> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n throwObserverFailures(phase, failures, errorPolicy);\n}\n\nasync function dispatchTerminalObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n): Promise<void> {\n const failures = await terminateObservers(observers, dispatch);\n throwObserverFailures(phase, failures, errorPolicy);\n}\n\nasync function terminateObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n dispatch: (observer: T) => void | Promise<void> | undefined,\n): Promise<AgentObserverFailure[]> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n if (entry.terminal) continue;\n entry.terminal = true;\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n return failures;\n}\n\nfunction throwObserverFailures(\n phase: string,\n failures: readonly AgentObserverFailure[],\n errorPolicy: AgentObserverErrorPolicy,\n): void {\n if (errorPolicy === \"throw\" && failures.length > 0) {\n throw new AgentObserverDispatchError(phase, failures);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -16,14 +16,14 @@ import {
|
|
|
16
16
|
} from "./chunk-XMVOBX43.js";
|
|
17
17
|
import {
|
|
18
18
|
startAgentRunObservers
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-34EDX4ZL.js";
|
|
20
20
|
import {
|
|
21
21
|
isSkillTool
|
|
22
22
|
} from "./chunk-YK4WAAS4.js";
|
|
23
23
|
import {
|
|
24
24
|
isQuestionTool,
|
|
25
25
|
isToolIndex
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-2QZJTG2E.js";
|
|
27
27
|
import {
|
|
28
28
|
ToolNotFoundError,
|
|
29
29
|
ToolOutput,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
retrieveDocuments,
|
|
39
39
|
toolMayRequireApproval,
|
|
40
40
|
toolResultContentToText
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-XC3LVC4K.js";
|
|
42
42
|
import {
|
|
43
43
|
AgentRunBlockedError,
|
|
44
44
|
AgentRunCancelledError,
|
|
@@ -4772,4 +4772,4 @@ export {
|
|
|
4772
4772
|
markResolvedAgentOptions,
|
|
4773
4773
|
Agent
|
|
4774
4774
|
};
|
|
4775
|
-
//# sourceMappingURL=chunk-
|
|
4775
|
+
//# sourceMappingURL=chunk-HNRNTFMQ.js.map
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// src/observability/snapshot.ts
|
|
2
|
+
function observerSnapshot(value) {
|
|
3
|
+
if (containsError(value, /* @__PURE__ */ new WeakSet())) {
|
|
4
|
+
return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
return globalThis.structuredClone(value);
|
|
8
|
+
} catch {
|
|
9
|
+
return cloneObserverFallback(value, /* @__PURE__ */ new WeakMap());
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function cloneObserverFallback(value, seen) {
|
|
13
|
+
if (typeof value !== "object" || value === null) {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
const existing = seen.get(value);
|
|
17
|
+
if (existing !== void 0) {
|
|
18
|
+
return existing;
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
const clone2 = [];
|
|
22
|
+
seen.set(value, clone2);
|
|
23
|
+
clone2.push(...value.map((item) => cloneObserverFallback(item, seen)));
|
|
24
|
+
return clone2;
|
|
25
|
+
}
|
|
26
|
+
if (value instanceof Date) {
|
|
27
|
+
return new Date(value.getTime());
|
|
28
|
+
}
|
|
29
|
+
if (value instanceof Error) {
|
|
30
|
+
const clone2 = Object.create(Object.getPrototypeOf(value));
|
|
31
|
+
seen.set(value, clone2);
|
|
32
|
+
Object.defineProperties(clone2, {
|
|
33
|
+
name: { configurable: true, writable: true, value: value.name },
|
|
34
|
+
message: { configurable: true, writable: true, value: value.message }
|
|
35
|
+
});
|
|
36
|
+
if (value.stack !== void 0) {
|
|
37
|
+
Object.defineProperty(clone2, "stack", {
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true,
|
|
40
|
+
value: value.stack
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (value.cause !== void 0) {
|
|
44
|
+
Object.defineProperty(clone2, "cause", {
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: cloneObserverFallback(value.cause, seen)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
for (const key of Object.getOwnPropertyNames(value)) {
|
|
51
|
+
if (key === "name" || key === "message" || key === "stack" || key === "cause") continue;
|
|
52
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
53
|
+
if (descriptor === void 0) continue;
|
|
54
|
+
if ("value" in descriptor) {
|
|
55
|
+
descriptor.value = cloneObserverFallback(descriptor.value, seen);
|
|
56
|
+
}
|
|
57
|
+
Object.defineProperty(clone2, key, descriptor);
|
|
58
|
+
}
|
|
59
|
+
return clone2;
|
|
60
|
+
}
|
|
61
|
+
if (Object.getPrototypeOf(value) !== Object.prototype) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
const clone = {};
|
|
65
|
+
seen.set(value, clone);
|
|
66
|
+
for (const [key, item] of Object.entries(value)) {
|
|
67
|
+
clone[key] = cloneObserverFallback(item, seen);
|
|
68
|
+
}
|
|
69
|
+
return clone;
|
|
70
|
+
}
|
|
71
|
+
function containsError(value, seen) {
|
|
72
|
+
if (typeof value !== "object" || value === null) return false;
|
|
73
|
+
if (value instanceof Error) return true;
|
|
74
|
+
if (seen.has(value)) return false;
|
|
75
|
+
seen.add(value);
|
|
76
|
+
if (Array.isArray(value)) {
|
|
77
|
+
return value.some((item) => containsError(item, seen));
|
|
78
|
+
}
|
|
79
|
+
if (Object.getPrototypeOf(value) !== Object.prototype) return false;
|
|
80
|
+
return Object.values(value).some((item) => containsError(item, seen));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export {
|
|
84
|
+
observerSnapshot
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=chunk-KSKST3KP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/observability/snapshot.ts"],"sourcesContent":["export function observerSnapshot<T>(value: T): T {\n if (containsError(value, new WeakSet<object>())) {\n return cloneObserverFallback(value, new WeakMap<object, object>());\n }\n try {\n return globalThis.structuredClone(value);\n } catch {\n return cloneObserverFallback(value, new WeakMap<object, object>());\n }\n}\n\nfunction cloneObserverFallback<T>(value: T, seen: WeakMap<object, object>): T {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const existing = seen.get(value);\n if (existing !== undefined) {\n return existing as T;\n }\n if (Array.isArray(value)) {\n const clone: unknown[] = [];\n seen.set(value, clone);\n clone.push(...value.map((item) => cloneObserverFallback(item, seen)));\n return clone as T;\n }\n if (value instanceof Date) {\n return new Date(value.getTime()) as T;\n }\n if (value instanceof Error) {\n const clone = Object.create(Object.getPrototypeOf(value)) as Error;\n seen.set(value, clone);\n Object.defineProperties(clone, {\n name: { configurable: true, writable: true, value: value.name },\n message: { configurable: true, writable: true, value: value.message },\n });\n if (value.stack !== undefined) {\n Object.defineProperty(clone, \"stack\", {\n configurable: true,\n writable: true,\n value: value.stack,\n });\n }\n if (value.cause !== undefined) {\n Object.defineProperty(clone, \"cause\", {\n configurable: true,\n writable: true,\n value: cloneObserverFallback(value.cause, seen),\n });\n }\n for (const key of Object.getOwnPropertyNames(value)) {\n if (key === \"name\" || key === \"message\" || key === \"stack\" || key === \"cause\") continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (descriptor === undefined) continue;\n if (\"value\" in descriptor) {\n descriptor.value = cloneObserverFallback(descriptor.value, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n return clone as T;\n }\n if (Object.getPrototypeOf(value) !== Object.prototype) {\n return value;\n }\n const clone: Record<string, unknown> = {};\n seen.set(value, clone);\n for (const [key, item] of Object.entries(value)) {\n clone[key] = cloneObserverFallback(item, seen);\n }\n return clone as T;\n}\n\nfunction containsError(value: unknown, seen: WeakSet<object>): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (value instanceof Error) return true;\n if (seen.has(value)) return false;\n seen.add(value);\n if (Array.isArray(value)) {\n return value.some((item) => containsError(item, seen));\n }\n if (Object.getPrototypeOf(value) !== Object.prototype) return false;\n return Object.values(value).some((item) => containsError(item, seen));\n}\n"],"mappings":"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","names":["clone"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
chunkTextDocuments
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XEVOC433.js";
|
|
4
4
|
import {
|
|
5
5
|
cosineSimilarity,
|
|
6
6
|
embedDocuments,
|
|
@@ -86,7 +86,7 @@ var ToolJsonError = class extends Error {
|
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
// src/tool/tool.ts
|
|
89
|
-
var richToolOutput = /* @__PURE__ */ Symbol("anvia.tool-output.content");
|
|
89
|
+
var richToolOutput = /* @__PURE__ */ Symbol.for("anvia.tool-output.content");
|
|
90
90
|
var ToolResultSerializationError = class extends TypeError {
|
|
91
91
|
constructor(output) {
|
|
92
92
|
super("Tool output must be a string, a strict JSON value, or ToolOutput.content(...).");
|
|
@@ -135,7 +135,8 @@ function toolResultContentToText(content) {
|
|
|
135
135
|
return content.map((item) => item.type === "text" ? item.text : `[file:${item.mediaType}]`).join("\n");
|
|
136
136
|
}
|
|
137
137
|
function isRichToolOutput(value) {
|
|
138
|
-
|
|
138
|
+
if (typeof value !== "object" || value === null) return false;
|
|
139
|
+
return Object.getOwnPropertyDescriptor(value, richToolOutput)?.value === true;
|
|
139
140
|
}
|
|
140
141
|
function parseToolArgs(args) {
|
|
141
142
|
const value = JSON.parse(args);
|
|
@@ -749,4 +750,4 @@ export {
|
|
|
749
750
|
InMemoryVectorStore,
|
|
750
751
|
createVectorSearchTool
|
|
751
752
|
};
|
|
752
|
-
//# sourceMappingURL=chunk-
|
|
753
|
+
//# sourceMappingURL=chunk-XC3LVC4K.js.map
|