@unigent/cli 0.1.1
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/LICENSE +21 -0
- package/README.md +470 -0
- package/dist/cli.js +132 -0
- package/dist/cli.js.map +1 -0
- package/dist/command.js +44 -0
- package/dist/command.js.map +1 -0
- package/dist/environment.js +20 -0
- package/dist/environment.js.map +1 -0
- package/dist/error_message.js +59 -0
- package/dist/error_message.js.map +1 -0
- package/dist/format.js +38 -0
- package/dist/format.js.map +1 -0
- package/dist/node_version.js +9 -0
- package/dist/node_version.js.map +1 -0
- package/dist/protocol.js +72 -0
- package/dist/protocol.js.map +1 -0
- package/dist/register.js +78 -0
- package/dist/register.js.map +1 -0
- package/dist/script_runtime.js +29 -0
- package/dist/script_runtime.js.map +1 -0
- package/dist/tui/app.js +453 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/clipboard.js +31 -0
- package/dist/tui/clipboard.js.map +1 -0
- package/dist/tui/runner.js +116 -0
- package/dist/tui/runner.js.map +1 -0
- package/dist/tui/scroll.js +33 -0
- package/dist/tui/scroll.js.map +1 -0
- package/dist/tui/store.js +99 -0
- package/dist/tui/store.js.map +1 -0
- package/dist/tui/theme.js +35 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/tree.js +267 -0
- package/dist/tui/tree.js.map +1 -0
- package/dist/tui.js +63 -0
- package/dist/tui.js.map +1 -0
- package/node_modules/@unigent/core/dist/adapter_process.d.ts +25 -0
- package/node_modules/@unigent/core/dist/adapter_process.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/adapter_process.js +46 -0
- package/node_modules/@unigent/core/dist/adapter_process.js.map +1 -0
- package/node_modules/@unigent/core/dist/args.d.ts +17 -0
- package/node_modules/@unigent/core/dist/args.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/args.js +233 -0
- package/node_modules/@unigent/core/dist/args.js.map +1 -0
- package/node_modules/@unigent/core/dist/backend.d.ts +83 -0
- package/node_modules/@unigent/core/dist/backend.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/backend.js +2 -0
- package/node_modules/@unigent/core/dist/backend.js.map +1 -0
- package/node_modules/@unigent/core/dist/checkpoint.d.ts +26 -0
- package/node_modules/@unigent/core/dist/checkpoint.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/checkpoint.js +107 -0
- package/node_modules/@unigent/core/dist/checkpoint.js.map +1 -0
- package/node_modules/@unigent/core/dist/checkpoint_fingerprint.d.ts +4 -0
- package/node_modules/@unigent/core/dist/checkpoint_fingerprint.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/checkpoint_fingerprint.js +41 -0
- package/node_modules/@unigent/core/dist/checkpoint_fingerprint.js.map +1 -0
- package/node_modules/@unigent/core/dist/completion.d.ts +9 -0
- package/node_modules/@unigent/core/dist/completion.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/completion.js +4 -0
- package/node_modules/@unigent/core/dist/completion.js.map +1 -0
- package/node_modules/@unigent/core/dist/errors.d.ts +43 -0
- package/node_modules/@unigent/core/dist/errors.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/errors.js +48 -0
- package/node_modules/@unigent/core/dist/errors.js.map +1 -0
- package/node_modules/@unigent/core/dist/events.d.ts +101 -0
- package/node_modules/@unigent/core/dist/events.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/events.js +105 -0
- package/node_modules/@unigent/core/dist/events.js.map +1 -0
- package/node_modules/@unigent/core/dist/index.d.ts +19 -0
- package/node_modules/@unigent/core/dist/index.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/index.js +10 -0
- package/node_modules/@unigent/core/dist/index.js.map +1 -0
- package/node_modules/@unigent/core/dist/json_schema_validator.d.ts +8 -0
- package/node_modules/@unigent/core/dist/json_schema_validator.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/json_schema_validator.js +27 -0
- package/node_modules/@unigent/core/dist/json_schema_validator.js.map +1 -0
- package/node_modules/@unigent/core/dist/mcp.d.ts +12 -0
- package/node_modules/@unigent/core/dist/mcp.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/mcp.js +117 -0
- package/node_modules/@unigent/core/dist/mcp.js.map +1 -0
- package/node_modules/@unigent/core/dist/runtime.d.ts +109 -0
- package/node_modules/@unigent/core/dist/runtime.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/runtime.js +976 -0
- package/node_modules/@unigent/core/dist/runtime.js.map +1 -0
- package/node_modules/@unigent/core/dist/schema.d.ts +15 -0
- package/node_modules/@unigent/core/dist/schema.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/schema.js +71 -0
- package/node_modules/@unigent/core/dist/schema.js.map +1 -0
- package/node_modules/@unigent/core/dist/source_tools.d.ts +7 -0
- package/node_modules/@unigent/core/dist/source_tools.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/source_tools.js +450 -0
- package/node_modules/@unigent/core/dist/source_tools.js.map +1 -0
- package/node_modules/@unigent/core/dist/tool.d.ts +41 -0
- package/node_modules/@unigent/core/dist/tool.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/tool.js +43 -0
- package/node_modules/@unigent/core/dist/tool.js.map +1 -0
- package/node_modules/@unigent/core/dist/tools.d.ts +7 -0
- package/node_modules/@unigent/core/dist/tools.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/tools.js +3 -0
- package/node_modules/@unigent/core/dist/tools.js.map +1 -0
- package/node_modules/@unigent/core/dist/trace.d.ts +82 -0
- package/node_modules/@unigent/core/dist/trace.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/trace.js +235 -0
- package/node_modules/@unigent/core/dist/trace.js.map +1 -0
- package/node_modules/@unigent/core/dist/usage.d.ts +26 -0
- package/node_modules/@unigent/core/dist/usage.d.ts.map +1 -0
- package/node_modules/@unigent/core/dist/usage.js +47 -0
- package/node_modules/@unigent/core/dist/usage.js.map +1 -0
- package/node_modules/@unigent/core/package.json +68 -0
- package/package.json +68 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { appendFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { AgentConfigError } from "./errors.js";
|
|
5
|
+
function isFiniteNumber(value) {
|
|
6
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
7
|
+
}
|
|
8
|
+
function isUsage(value) {
|
|
9
|
+
const optionalNumbersAreValid = typeof value === "object" &&
|
|
10
|
+
value !== null &&
|
|
11
|
+
(!("cachedInputTokens" in value) || isFiniteNumber(value.cachedInputTokens)) &&
|
|
12
|
+
(!("reasoningTokens" in value) || isFiniteNumber(value.reasoningTokens)) &&
|
|
13
|
+
(!("costUsd" in value) || isFiniteNumber(value.costUsd));
|
|
14
|
+
return (typeof value === "object" &&
|
|
15
|
+
value !== null &&
|
|
16
|
+
"inputTokens" in value &&
|
|
17
|
+
isFiniteNumber(value.inputTokens) &&
|
|
18
|
+
"outputTokens" in value &&
|
|
19
|
+
isFiniteNumber(value.outputTokens) &&
|
|
20
|
+
"totalTokens" in value &&
|
|
21
|
+
isFiniteNumber(value.totalTokens) &&
|
|
22
|
+
"calls" in value &&
|
|
23
|
+
isFiniteNumber(value.calls) &&
|
|
24
|
+
optionalNumbersAreValid);
|
|
25
|
+
}
|
|
26
|
+
function isCheckpointValue(value) {
|
|
27
|
+
return (typeof value === "object" &&
|
|
28
|
+
value !== null &&
|
|
29
|
+
(("kind" in value && value.kind === "done") ||
|
|
30
|
+
("kind" in value && value.kind === "output" && "value" in value)));
|
|
31
|
+
}
|
|
32
|
+
function parseRecord(value) {
|
|
33
|
+
if (typeof value !== "object" ||
|
|
34
|
+
value === null ||
|
|
35
|
+
!("version" in value) ||
|
|
36
|
+
value.version !== 1 ||
|
|
37
|
+
!("value" in value) ||
|
|
38
|
+
!isCheckpointValue(value.value) ||
|
|
39
|
+
!("usage" in value) ||
|
|
40
|
+
!isUsage(value.usage)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return { version: 1, value: value.value, usage: value.usage };
|
|
44
|
+
}
|
|
45
|
+
function parseLine(line) {
|
|
46
|
+
const trimmed = line.trim();
|
|
47
|
+
if (trimmed.length === 0) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const parsed = JSON.parse(trimmed);
|
|
52
|
+
if (typeof parsed !== "object" || parsed === null || !("key" in parsed)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const record = "record" in parsed ? parseRecord(parsed.record) : undefined;
|
|
56
|
+
return typeof parsed.key === "string" && record !== undefined
|
|
57
|
+
? [parsed.key, record]
|
|
58
|
+
: undefined;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Create an ephemeral checkpoint store. */
|
|
65
|
+
function createMemoryCheckpointStore() {
|
|
66
|
+
const records = new Map();
|
|
67
|
+
return {
|
|
68
|
+
get: (key) => records.get(key),
|
|
69
|
+
set: (key, record) => {
|
|
70
|
+
records.set(key, record);
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** Create a crash-tolerant JSONL checkpoint store. */
|
|
75
|
+
function createFileCheckpointStore(filePath) {
|
|
76
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
77
|
+
const records = new Map();
|
|
78
|
+
if (existsSync(filePath)) {
|
|
79
|
+
for (const line of readFileSync(filePath, "utf8").split("\n")) {
|
|
80
|
+
const entry = parseLine(line);
|
|
81
|
+
if (entry !== undefined) {
|
|
82
|
+
records.set(entry[0], entry[1]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
let tail = Promise.resolve();
|
|
87
|
+
return {
|
|
88
|
+
get: (key) => records.get(key),
|
|
89
|
+
set: async (key, record) => {
|
|
90
|
+
let line;
|
|
91
|
+
try {
|
|
92
|
+
line = `${JSON.stringify({ key, record })}\n`;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new AgentConfigError("checkpoint output is not JSON serializable", { cause: error });
|
|
96
|
+
}
|
|
97
|
+
const write = tail.then(async () => {
|
|
98
|
+
await appendFile(filePath, line);
|
|
99
|
+
});
|
|
100
|
+
tail = write.catch(() => undefined);
|
|
101
|
+
await write;
|
|
102
|
+
records.set(key, record);
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export { createFileCheckpointStore, createMemoryCheckpointStore };
|
|
107
|
+
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint_fingerprint.d.ts","sourceRoot":"","sources":["../src/checkpoint_fingerprint.ts"],"names":[],"mappings":"AAyCA,kFAAkF;AAClF,iBAAS,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAG3D;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { AgentConfigError } from "./errors.js";
|
|
3
|
+
function normalize(value, seen) {
|
|
4
|
+
if (value === undefined || value === null) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
if (typeof value === "string" || typeof value === "boolean") {
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
if (typeof value === "number") {
|
|
11
|
+
if (!Number.isFinite(value)) {
|
|
12
|
+
throw new AgentConfigError("checkpoint fingerprint contains a non-finite number");
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
if (typeof value !== "object") {
|
|
17
|
+
throw new AgentConfigError(`checkpoint fingerprint cannot contain ${typeof value}`);
|
|
18
|
+
}
|
|
19
|
+
if (seen.has(value)) {
|
|
20
|
+
throw new AgentConfigError("checkpoint fingerprint contains a cycle");
|
|
21
|
+
}
|
|
22
|
+
seen.add(value);
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
const normalized = value.map((entry) => normalize(entry, seen));
|
|
25
|
+
seen.delete(value);
|
|
26
|
+
return normalized;
|
|
27
|
+
}
|
|
28
|
+
const normalized = {};
|
|
29
|
+
for (const key of Object.keys(value).sort()) {
|
|
30
|
+
normalized[key] = normalize(Reflect.get(value, key), seen);
|
|
31
|
+
}
|
|
32
|
+
seen.delete(value);
|
|
33
|
+
return normalized;
|
|
34
|
+
}
|
|
35
|
+
/** Produce a deterministic SHA-256 identity from output-shaping configuration. */
|
|
36
|
+
function checkpointFingerprint(ingredients) {
|
|
37
|
+
const serialized = JSON.stringify(normalize(ingredients, new Set()));
|
|
38
|
+
return createHash("sha256").update(serialized).digest("hex");
|
|
39
|
+
}
|
|
40
|
+
export { checkpointFingerprint };
|
|
41
|
+
//# sourceMappingURL=checkpoint_fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint_fingerprint.js","sourceRoot":"","sources":["../src/checkpoint_fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO/C,SAAS,SAAS,CAAC,KAAc,EAAE,IAAiB;IAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,gBAAgB,CAAC,qDAAqD,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,OAAO,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,kFAAkF;AAClF,SAAS,qBAAqB,CAAC,WAAoB;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Marker selecting side-effect-only completion for `agent.run(prompt, done)`. */
|
|
2
|
+
interface Done {
|
|
3
|
+
readonly kind: "done";
|
|
4
|
+
}
|
|
5
|
+
/** Require a structured completion signal without asking the agent for a value. */
|
|
6
|
+
declare const done: Done;
|
|
7
|
+
export type { Done };
|
|
8
|
+
export { done };
|
|
9
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,UAAU,IAAI;IACZ,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,mFAAmF;AACnF,QAAA,MAAM,IAAI,EAAE,IAAsC,CAAC;AAEnD,YAAY,EAAE,IAAI,EAAE,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAKA,mFAAmF;AACnF,MAAM,IAAI,GAAS,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAGnD,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Base class for every consumer-facing Unigent failure. */
|
|
2
|
+
export declare class AgentError extends Error {
|
|
3
|
+
constructor(message: string, options?: ErrorOptions);
|
|
4
|
+
}
|
|
5
|
+
/** Deliberate failure raised by the opt-in `fail` tool. */
|
|
6
|
+
export declare class AgentRaisedError extends AgentError {
|
|
7
|
+
readonly code: string | undefined;
|
|
8
|
+
constructor(message: string, code?: string);
|
|
9
|
+
}
|
|
10
|
+
/** Run was cancelled through `abort()` or a parent signal. */
|
|
11
|
+
export declare class AgentCancelledError extends AgentError {
|
|
12
|
+
}
|
|
13
|
+
/** A configured wall-clock limit expired. */
|
|
14
|
+
export declare class AgentTimeoutError extends AgentError {
|
|
15
|
+
}
|
|
16
|
+
/** A cumulative cost limit was exceeded. */
|
|
17
|
+
export declare class AgentBudgetExceededError extends AgentError {
|
|
18
|
+
}
|
|
19
|
+
/** Agent output or tool input could not be repaired within the configured attempts. */
|
|
20
|
+
export declare class AgentRepairExhaustedError extends AgentError {
|
|
21
|
+
}
|
|
22
|
+
/** Invalid or unsupported Unigent configuration. */
|
|
23
|
+
export declare class AgentConfigError extends AgentError {
|
|
24
|
+
}
|
|
25
|
+
/** Script arguments could not be parsed through their declared schema. */
|
|
26
|
+
export declare class AgentInputError extends AgentError {
|
|
27
|
+
}
|
|
28
|
+
/** Overlapping turns attempted on one stateful session. */
|
|
29
|
+
export declare class AgentConcurrencyError extends AgentError {
|
|
30
|
+
}
|
|
31
|
+
/** Base class for backend boundary failures. */
|
|
32
|
+
export declare abstract class AgentBackendError extends AgentError {
|
|
33
|
+
abstract readonly retryable: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Transient backend/provider failure. */
|
|
36
|
+
export declare class AgentBackendUnavailableError extends AgentBackendError {
|
|
37
|
+
readonly retryable = true;
|
|
38
|
+
}
|
|
39
|
+
/** Non-transient backend rejection or unsupported request. */
|
|
40
|
+
export declare class AgentBackendRejectedError extends AgentBackendError {
|
|
41
|
+
readonly retryable = false;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAI3D;AAED,2DAA2D;AAC3D,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,SAAgB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAIlD;AAED,8DAA8D;AAC9D,qBAAa,mBAAoB,SAAQ,UAAU;CAAG;AAEtD,6CAA6C;AAC7C,qBAAa,iBAAkB,SAAQ,UAAU;CAAG;AAEpD,4CAA4C;AAC5C,qBAAa,wBAAyB,SAAQ,UAAU;CAAG;AAE3D,uFAAuF;AACvF,qBAAa,yBAA0B,SAAQ,UAAU;CAAG;AAE5D,oDAAoD;AACpD,qBAAa,gBAAiB,SAAQ,UAAU;CAAG;AAEnD,0EAA0E;AAC1E,qBAAa,eAAgB,SAAQ,UAAU;CAAG;AAElD,2DAA2D;AAC3D,qBAAa,qBAAsB,SAAQ,UAAU;CAAG;AAExD,gDAAgD;AAChD,8BAAsB,iBAAkB,SAAQ,UAAU;IACxD,kBAAyB,SAAS,EAAE,OAAO,CAAC;CAC7C;AAED,0CAA0C;AAC1C,qBAAa,4BAA6B,SAAQ,iBAAiB;IACjE,SAAgB,SAAS,QAAQ;CAClC;AAED,8DAA8D;AAC9D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,SAAgB,SAAS,SAAS;CACnC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Base class for every consumer-facing Unigent failure. */
|
|
2
|
+
export class AgentError extends Error {
|
|
3
|
+
constructor(message, options) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
this.name = new.target.name;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/** Deliberate failure raised by the opt-in `fail` tool. */
|
|
9
|
+
export class AgentRaisedError extends AgentError {
|
|
10
|
+
code;
|
|
11
|
+
constructor(message, code) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.code = code;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Run was cancelled through `abort()` or a parent signal. */
|
|
17
|
+
export class AgentCancelledError extends AgentError {
|
|
18
|
+
}
|
|
19
|
+
/** A configured wall-clock limit expired. */
|
|
20
|
+
export class AgentTimeoutError extends AgentError {
|
|
21
|
+
}
|
|
22
|
+
/** A cumulative cost limit was exceeded. */
|
|
23
|
+
export class AgentBudgetExceededError extends AgentError {
|
|
24
|
+
}
|
|
25
|
+
/** Agent output or tool input could not be repaired within the configured attempts. */
|
|
26
|
+
export class AgentRepairExhaustedError extends AgentError {
|
|
27
|
+
}
|
|
28
|
+
/** Invalid or unsupported Unigent configuration. */
|
|
29
|
+
export class AgentConfigError extends AgentError {
|
|
30
|
+
}
|
|
31
|
+
/** Script arguments could not be parsed through their declared schema. */
|
|
32
|
+
export class AgentInputError extends AgentError {
|
|
33
|
+
}
|
|
34
|
+
/** Overlapping turns attempted on one stateful session. */
|
|
35
|
+
export class AgentConcurrencyError extends AgentError {
|
|
36
|
+
}
|
|
37
|
+
/** Base class for backend boundary failures. */
|
|
38
|
+
export class AgentBackendError extends AgentError {
|
|
39
|
+
}
|
|
40
|
+
/** Transient backend/provider failure. */
|
|
41
|
+
export class AgentBackendUnavailableError extends AgentBackendError {
|
|
42
|
+
retryable = true;
|
|
43
|
+
}
|
|
44
|
+
/** Non-transient backend rejection or unsupported request. */
|
|
45
|
+
export class AgentBackendRejectedError extends AgentBackendError {
|
|
46
|
+
retryable = false;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAmB,OAAe,EAAE,OAAsB;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9B,IAAI,CAAqB;IAEzC,YAAmB,OAAe,EAAE,IAAa;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,mBAAoB,SAAQ,UAAU;CAAG;AAEtD,6CAA6C;AAC7C,MAAM,OAAO,iBAAkB,SAAQ,UAAU;CAAG;AAEpD,4CAA4C;AAC5C,MAAM,OAAO,wBAAyB,SAAQ,UAAU;CAAG;AAE3D,uFAAuF;AACvF,MAAM,OAAO,yBAA0B,SAAQ,UAAU;CAAG;AAE5D,oDAAoD;AACpD,MAAM,OAAO,gBAAiB,SAAQ,UAAU;CAAG;AAEnD,0EAA0E;AAC1E,MAAM,OAAO,eAAgB,SAAQ,UAAU;CAAG;AAElD,2DAA2D;AAC3D,MAAM,OAAO,qBAAsB,SAAQ,UAAU;CAAG;AAExD,gDAAgD;AAChD,MAAM,OAAgB,iBAAkB,SAAQ,UAAU;CAEzD;AAED,0CAA0C;AAC1C,MAAM,OAAO,4BAA6B,SAAQ,iBAAiB;IACjD,SAAS,GAAG,IAAI,CAAC;CAClC;AAED,8DAA8D;AAC9D,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC9C,SAAS,GAAG,KAAK,CAAC;CACnC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { AgentUsage } from "./usage.js";
|
|
2
|
+
/** Common envelope carried by every first-class trace event. */
|
|
3
|
+
interface EventEnvelope {
|
|
4
|
+
readonly traceId: string;
|
|
5
|
+
readonly spanId: string;
|
|
6
|
+
readonly parentSpanId?: string;
|
|
7
|
+
readonly sequence: number;
|
|
8
|
+
readonly timestamp: string;
|
|
9
|
+
}
|
|
10
|
+
/** Normalized append-only event stream. */
|
|
11
|
+
type AgentEvent = EventEnvelope & ({
|
|
12
|
+
readonly type: "span_start";
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly kind: "run" | "tool";
|
|
15
|
+
readonly backend?: string;
|
|
16
|
+
readonly model?: string;
|
|
17
|
+
readonly agent?: string;
|
|
18
|
+
readonly scopePath?: readonly string[];
|
|
19
|
+
} | {
|
|
20
|
+
readonly type: "span_end";
|
|
21
|
+
readonly durationMs: number;
|
|
22
|
+
readonly usage: AgentUsage;
|
|
23
|
+
readonly outcome: "succeeded" | "failed" | "cancelled";
|
|
24
|
+
readonly error?: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly type: "system_prompt";
|
|
27
|
+
readonly text: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly type: "user_prompt";
|
|
30
|
+
readonly text: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: "reasoning";
|
|
33
|
+
readonly text: string;
|
|
34
|
+
} | {
|
|
35
|
+
readonly type: "text";
|
|
36
|
+
readonly text: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly type: "repair";
|
|
39
|
+
readonly attempt: number;
|
|
40
|
+
readonly error: string;
|
|
41
|
+
} | {
|
|
42
|
+
readonly type: "log";
|
|
43
|
+
readonly message: string;
|
|
44
|
+
readonly level: "info" | "warn" | "error";
|
|
45
|
+
} | {
|
|
46
|
+
readonly type: "annotate";
|
|
47
|
+
readonly attributes: Readonly<Record<string, unknown>>;
|
|
48
|
+
} | {
|
|
49
|
+
readonly type: "checkpoint";
|
|
50
|
+
readonly key: string;
|
|
51
|
+
readonly action: "hit" | "miss" | "wait" | "write";
|
|
52
|
+
} | {
|
|
53
|
+
readonly type: "tool_call";
|
|
54
|
+
readonly callId: string;
|
|
55
|
+
readonly name: string;
|
|
56
|
+
readonly input: unknown;
|
|
57
|
+
} | {
|
|
58
|
+
readonly type: "tool_result";
|
|
59
|
+
readonly callId: string;
|
|
60
|
+
readonly name: string;
|
|
61
|
+
readonly output: unknown;
|
|
62
|
+
readonly isError: boolean;
|
|
63
|
+
});
|
|
64
|
+
/** Immutable trace snapshot. */
|
|
65
|
+
interface AgentTrace {
|
|
66
|
+
readonly traceId: string;
|
|
67
|
+
readonly events: readonly AgentEvent[];
|
|
68
|
+
}
|
|
69
|
+
type PendingEvent = AgentEvent extends infer Event ? Event extends AgentEvent ? Omit<Event, "traceId" | "sequence" | "timestamp"> : never : never;
|
|
70
|
+
type RunControlEvent = {
|
|
71
|
+
readonly type: "run_start";
|
|
72
|
+
readonly traceId: string;
|
|
73
|
+
readonly spanId: string;
|
|
74
|
+
readonly abort: (reason?: unknown) => void;
|
|
75
|
+
} | {
|
|
76
|
+
readonly type: "run_end";
|
|
77
|
+
readonly traceId: string;
|
|
78
|
+
readonly spanId: string;
|
|
79
|
+
};
|
|
80
|
+
/** Single-writer replayable event log. */
|
|
81
|
+
declare class EventLog {
|
|
82
|
+
readonly traceId: string;
|
|
83
|
+
private readonly recorded;
|
|
84
|
+
private readonly waiters;
|
|
85
|
+
private readonly endedSpans;
|
|
86
|
+
private ended;
|
|
87
|
+
constructor(traceId: string);
|
|
88
|
+
emit(event: PendingEvent): void;
|
|
89
|
+
end(): void;
|
|
90
|
+
snapshot(): AgentTrace;
|
|
91
|
+
private includesEvent;
|
|
92
|
+
private iterableEnded;
|
|
93
|
+
private waitForEvent;
|
|
94
|
+
iterable(rootSpanId?: string): AsyncIterable<AgentEvent>;
|
|
95
|
+
}
|
|
96
|
+
declare const TRACE_EVENT_CHANNEL = "unigent.trace.v1";
|
|
97
|
+
declare const RUN_CONTROL_CHANNEL = "unigent.control.v1";
|
|
98
|
+
declare function publishRunControl(event: RunControlEvent): void;
|
|
99
|
+
export type { AgentEvent, AgentTrace, EventEnvelope, RunControlEvent };
|
|
100
|
+
export { EventLog, publishRunControl, RUN_CONTROL_CHANNEL, TRACE_EVENT_CHANNEL };
|
|
101
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { channel } from "node:diagnostics_channel";
|
|
2
|
+
/** Single-writer replayable event log. */
|
|
3
|
+
class EventLog {
|
|
4
|
+
traceId;
|
|
5
|
+
recorded = [];
|
|
6
|
+
waiters = new Set();
|
|
7
|
+
endedSpans = new Set();
|
|
8
|
+
ended = false;
|
|
9
|
+
constructor(traceId) {
|
|
10
|
+
this.traceId = traceId;
|
|
11
|
+
}
|
|
12
|
+
emit(event) {
|
|
13
|
+
const envelope = {
|
|
14
|
+
traceId: this.traceId,
|
|
15
|
+
spanId: event.spanId,
|
|
16
|
+
sequence: this.recorded.length,
|
|
17
|
+
timestamp: new Date().toISOString(),
|
|
18
|
+
...(event.parentSpanId === undefined ? {} : { parentSpanId: event.parentSpanId }),
|
|
19
|
+
};
|
|
20
|
+
const recorded = { ...event, ...envelope };
|
|
21
|
+
this.recorded.push(recorded);
|
|
22
|
+
if (recorded.type === "span_end") {
|
|
23
|
+
this.endedSpans.add(recorded.spanId);
|
|
24
|
+
}
|
|
25
|
+
if (traceEventChannel.hasSubscribers) {
|
|
26
|
+
try {
|
|
27
|
+
traceEventChannel.publish(recorded);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Instrumentation is best-effort and cannot become a runtime failure path.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
for (const wake of this.waiters) {
|
|
34
|
+
wake();
|
|
35
|
+
}
|
|
36
|
+
this.waiters.clear();
|
|
37
|
+
}
|
|
38
|
+
end() {
|
|
39
|
+
this.ended = true;
|
|
40
|
+
for (const wake of this.waiters) {
|
|
41
|
+
wake();
|
|
42
|
+
}
|
|
43
|
+
this.waiters.clear();
|
|
44
|
+
}
|
|
45
|
+
snapshot() {
|
|
46
|
+
return { traceId: this.traceId, events: [...this.recorded] };
|
|
47
|
+
}
|
|
48
|
+
includesEvent(includedSpans, event) {
|
|
49
|
+
if (includedSpans === undefined) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
if (event.type === "span_start" &&
|
|
53
|
+
event.parentSpanId !== undefined &&
|
|
54
|
+
includedSpans.has(event.parentSpanId)) {
|
|
55
|
+
includedSpans.add(event.spanId);
|
|
56
|
+
}
|
|
57
|
+
return includedSpans.has(event.spanId);
|
|
58
|
+
}
|
|
59
|
+
iterableEnded(rootSpanId, cursor) {
|
|
60
|
+
if (cursor < this.recorded.length) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
return rootSpanId === undefined ? this.ended : this.endedSpans.has(rootSpanId);
|
|
64
|
+
}
|
|
65
|
+
async waitForEvent() {
|
|
66
|
+
await new Promise((resolve) => this.waiters.add(resolve));
|
|
67
|
+
}
|
|
68
|
+
iterable(rootSpanId) {
|
|
69
|
+
const log = this;
|
|
70
|
+
return {
|
|
71
|
+
async *[Symbol.asyncIterator]() {
|
|
72
|
+
let cursor = 0;
|
|
73
|
+
const includedSpans = rootSpanId === undefined ? undefined : new Set([rootSpanId]);
|
|
74
|
+
while (!log.iterableEnded(rootSpanId, cursor)) {
|
|
75
|
+
const event = log.recorded[cursor];
|
|
76
|
+
if (event === undefined) {
|
|
77
|
+
await log.waitForEvent();
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
cursor += 1;
|
|
81
|
+
if (log.includesEvent(includedSpans, event)) {
|
|
82
|
+
yield event;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const TRACE_EVENT_CHANNEL = "unigent.trace.v1";
|
|
90
|
+
const traceEventChannel = channel(TRACE_EVENT_CHANNEL);
|
|
91
|
+
const RUN_CONTROL_CHANNEL = "unigent.control.v1";
|
|
92
|
+
const runControlChannel = channel(RUN_CONTROL_CHANNEL);
|
|
93
|
+
function publishRunControl(event) {
|
|
94
|
+
if (!runControlChannel.hasSubscribers) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
runControlChannel.publish(event);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Instrumentation is best-effort and cannot become a runtime failure path.
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export { EventLog, publishRunControl, RUN_CONTROL_CHANNEL, TRACE_EVENT_CHANNEL };
|
|
105
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** `@unigent/core` — the harness-neutral runtime behind Unigent. */
|
|
2
|
+
export type { AdapterProcess, AdapterProcessCompletion, AdapterProcessOptions, } from "./adapter_process.js";
|
|
3
|
+
export { spawnAdapterProcess } from "./adapter_process.js";
|
|
4
|
+
export type { Backend, BackendCapabilities, BackendEvent, BackendSession, BackendSessionOptions, BackendTool, BackendToolResult, BackendTurnRequest, BackendTurnResult, BackendUsage, JsonSchema, } from "./backend.js";
|
|
5
|
+
export type { CheckpointRecord, CheckpointStore, CheckpointValue } from "./checkpoint.js";
|
|
6
|
+
export { createFileCheckpointStore, createMemoryCheckpointStore } from "./checkpoint.js";
|
|
7
|
+
export type { Done } from "./completion.js";
|
|
8
|
+
export { done } from "./completion.js";
|
|
9
|
+
export { AgentBackendError, AgentBackendRejectedError, AgentBackendUnavailableError, AgentBudgetExceededError, AgentCancelledError, AgentConcurrencyError, AgentConfigError, AgentError, AgentInputError, AgentRaisedError, AgentRepairExhaustedError, AgentTimeoutError, } from "./errors.js";
|
|
10
|
+
export type { AgentEvent, AgentTrace, EventEnvelope } from "./events.js";
|
|
11
|
+
export type { Agent, AgentLimits, AgentOptions, AgentOverrides, AgentRun, AgentRunResult, AgentScope, AgentScopeOptions, AgentSession, AgentTool, Duration, SystemPrompt, } from "./runtime.js";
|
|
12
|
+
export { agent } from "./runtime.js";
|
|
13
|
+
export type { OutputSchema } from "./schema.js";
|
|
14
|
+
export { bakeSourceTools } from "./source_tools.js";
|
|
15
|
+
export type { SourceToolFunction, ToolDefinition, ToolOptions } from "./tool.js";
|
|
16
|
+
export { tool } from "./tool.js";
|
|
17
|
+
export type { AgentUsage } from "./usage.js";
|
|
18
|
+
export { combineUsage } from "./usage.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EACV,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACzF,YAAY,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,KAAK,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** `@unigent/core` — the harness-neutral runtime behind Unigent. */
|
|
2
|
+
export { spawnAdapterProcess } from "./adapter_process.js";
|
|
3
|
+
export { createFileCheckpointStore, createMemoryCheckpointStore } from "./checkpoint.js";
|
|
4
|
+
export { done } from "./completion.js";
|
|
5
|
+
export { AgentBackendError, AgentBackendRejectedError, AgentBackendUnavailableError, AgentBudgetExceededError, AgentCancelledError, AgentConcurrencyError, AgentConfigError, AgentError, AgentInputError, AgentRaisedError, AgentRepairExhaustedError, AgentTimeoutError, } from "./errors.js";
|
|
6
|
+
export { agent } from "./runtime.js";
|
|
7
|
+
export { bakeSourceTools } from "./source_tools.js";
|
|
8
|
+
export { tool } from "./tool.js";
|
|
9
|
+
export { combineUsage } from "./usage.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAOpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAe3D,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { JsonSchema } from "./backend.js";
|
|
2
|
+
interface JsonSchemaValidator {
|
|
3
|
+
readonly validate: (value: unknown) => readonly string[];
|
|
4
|
+
}
|
|
5
|
+
/** Compile source-derived JSON Schema through the isolated validator boundary. */
|
|
6
|
+
declare function compileJsonSchemaValidator(schema: JsonSchema): JsonSchemaValidator;
|
|
7
|
+
export { compileJsonSchemaValidator };
|
|
8
|
+
//# sourceMappingURL=json_schema_validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema_validator.d.ts","sourceRoot":"","sources":["../src/json_schema_validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,MAAM,EAAE,CAAC;CAC1D;AAOD,kFAAkF;AAClF,iBAAS,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,mBAAmB,CAgB3E;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Ajv } from "ajv";
|
|
2
|
+
import { AgentConfigError } from "./errors.js";
|
|
3
|
+
function issueMessage(issue) {
|
|
4
|
+
const location = issue.instancePath.length === 0 ? "input" : `input${issue.instancePath}`;
|
|
5
|
+
return `${location} ${issue.message ?? "is invalid"}`;
|
|
6
|
+
}
|
|
7
|
+
/** Compile source-derived JSON Schema through the isolated validator boundary. */
|
|
8
|
+
function compileJsonSchemaValidator(schema) {
|
|
9
|
+
let validate;
|
|
10
|
+
try {
|
|
11
|
+
const ajv = new Ajv({ allErrors: true, strict: true });
|
|
12
|
+
validate = ajv.compile(schema);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new AgentConfigError("failed to compile source tool parameter schema", { cause: error });
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
validate: (value) => {
|
|
19
|
+
if (validate(value)) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
return (validate.errors ?? []).map(issueMessage);
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export { compileJsonSchemaValidator };
|
|
27
|
+
//# sourceMappingURL=json_schema_validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema_validator.js","sourceRoot":"","sources":["../src/json_schema_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA2C,MAAM,KAAK,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC;IAC1F,OAAO,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,EAAE,CAAC;AACxD,CAAC;AAED,kFAAkF;AAClF,SAAS,0BAA0B,CAAC,MAAkB;IACpD,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,CAAC,KAAc,EAAqB,EAAE;YAC9C,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BackendTool } from "./backend.js";
|
|
2
|
+
/** Ephemeral Streamable HTTP MCP endpoint exposing one Unigent turn's tools. */
|
|
3
|
+
interface McpToolServer {
|
|
4
|
+
readonly url: string;
|
|
5
|
+
readonly authorizationHeader: string;
|
|
6
|
+
readonly close: () => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/** Start an isolated MCP server for a single backend turn. */
|
|
9
|
+
declare function startMcpToolServer(tools: readonly BackendTool[]): Promise<McpToolServer>;
|
|
10
|
+
export type { McpToolServer };
|
|
11
|
+
export { startMcpToolServer };
|
|
12
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,gFAAgF;AAChF,UAAU,aAAa;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AA8FD,8DAA8D;AAC9D,iBAAe,kBAAkB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAqCvF;AAED,YAAY,EAAE,aAAa,EAAE,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|