@bowenqt/qiniu-ai-sdk 0.10.0 → 0.13.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 +225 -0
- package/dist/ai/agent-graph.d.ts +99 -0
- package/dist/ai/agent-graph.d.ts.map +1 -0
- package/dist/ai/agent-graph.js +321 -0
- package/dist/ai/agent-graph.js.map +1 -0
- package/dist/ai/agent-graph.mjs +317 -0
- package/dist/ai/generate-text.d.ts +51 -0
- package/dist/ai/generate-text.d.ts.map +1 -1
- package/dist/ai/generate-text.js +132 -0
- package/dist/ai/generate-text.js.map +1 -1
- package/dist/ai/generate-text.mjs +131 -0
- package/dist/ai/graph/checkpointer.d.ts +112 -0
- package/dist/ai/graph/checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/checkpointer.js +131 -0
- package/dist/ai/graph/checkpointer.js.map +1 -0
- package/dist/ai/graph/checkpointer.mjs +126 -0
- package/dist/ai/graph/index.d.ts +13 -0
- package/dist/ai/graph/index.d.ts.map +1 -0
- package/dist/ai/graph/index.js +22 -0
- package/dist/ai/graph/index.js.map +1 -0
- package/dist/ai/graph/index.mjs +12 -0
- package/dist/ai/graph/postgres-checkpointer.d.ts +54 -0
- package/dist/ai/graph/postgres-checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/postgres-checkpointer.js +134 -0
- package/dist/ai/graph/postgres-checkpointer.js.map +1 -0
- package/dist/ai/graph/postgres-checkpointer.mjs +130 -0
- package/dist/ai/graph/redis-checkpointer.d.ts +51 -0
- package/dist/ai/graph/redis-checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/redis-checkpointer.js +124 -0
- package/dist/ai/graph/redis-checkpointer.js.map +1 -0
- package/dist/ai/graph/redis-checkpointer.mjs +120 -0
- package/dist/ai/graph/state-graph.d.ts +41 -0
- package/dist/ai/graph/state-graph.d.ts.map +1 -0
- package/dist/ai/graph/state-graph.js +149 -0
- package/dist/ai/graph/state-graph.js.map +1 -0
- package/dist/ai/graph/state-graph.mjs +144 -0
- package/dist/ai/graph/types.d.ts +41 -0
- package/dist/ai/graph/types.d.ts.map +1 -0
- package/dist/ai/graph/types.js +10 -0
- package/dist/ai/graph/types.js.map +1 -0
- package/dist/ai/graph/types.mjs +7 -0
- package/dist/ai/internal-types.d.ts +109 -0
- package/dist/ai/internal-types.d.ts.map +1 -0
- package/dist/ai/internal-types.js +28 -0
- package/dist/ai/internal-types.js.map +1 -0
- package/dist/ai/internal-types.mjs +23 -0
- package/dist/ai/nodes/execute-node.d.ts +27 -0
- package/dist/ai/nodes/execute-node.d.ts.map +1 -0
- package/dist/ai/nodes/execute-node.js +118 -0
- package/dist/ai/nodes/execute-node.js.map +1 -0
- package/dist/ai/nodes/execute-node.mjs +114 -0
- package/dist/ai/nodes/index.d.ts +8 -0
- package/dist/ai/nodes/index.d.ts.map +1 -0
- package/dist/ai/nodes/index.js +16 -0
- package/dist/ai/nodes/index.js.map +1 -0
- package/dist/ai/nodes/index.mjs +7 -0
- package/dist/ai/nodes/memory-node.d.ts +34 -0
- package/dist/ai/nodes/memory-node.d.ts.map +1 -0
- package/dist/ai/nodes/memory-node.js +164 -0
- package/dist/ai/nodes/memory-node.js.map +1 -0
- package/dist/ai/nodes/memory-node.mjs +158 -0
- package/dist/ai/nodes/predict-node.d.ts +42 -0
- package/dist/ai/nodes/predict-node.d.ts.map +1 -0
- package/dist/ai/nodes/predict-node.js +89 -0
- package/dist/ai/nodes/predict-node.js.map +1 -0
- package/dist/ai/nodes/predict-node.mjs +86 -0
- package/dist/ai/nodes/types.d.ts +44 -0
- package/dist/ai/nodes/types.d.ts.map +1 -0
- package/dist/ai/nodes/types.js +6 -0
- package/dist/ai/nodes/types.js.map +1 -0
- package/dist/ai/nodes/types.mjs +5 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +80 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -0
- package/dist/lib/otel-tracer.d.ts +47 -0
- package/dist/lib/otel-tracer.d.ts.map +1 -0
- package/dist/lib/otel-tracer.js +79 -0
- package/dist/lib/otel-tracer.js.map +1 -0
- package/dist/lib/otel-tracer.mjs +75 -0
- package/dist/lib/token-estimator.d.ts +62 -0
- package/dist/lib/token-estimator.d.ts.map +1 -0
- package/dist/lib/token-estimator.js +106 -0
- package/dist/lib/token-estimator.js.map +1 -0
- package/dist/lib/token-estimator.mjs +100 -0
- package/dist/lib/tool-registry.d.ts +103 -0
- package/dist/lib/tool-registry.d.ts.map +1 -0
- package/dist/lib/tool-registry.js +159 -0
- package/dist/lib/tool-registry.js.map +1 -0
- package/dist/lib/tool-registry.mjs +154 -0
- package/dist/lib/tracer.d.ts +85 -0
- package/dist/lib/tracer.d.ts.map +1 -0
- package/dist/lib/tracer.js +170 -0
- package/dist/lib/tracer.js.map +1 -0
- package/dist/lib/tracer.mjs +161 -0
- package/dist/lib/types.d.ts +11 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/modules/mcp/adapter.d.ts +23 -0
- package/dist/modules/mcp/adapter.d.ts.map +1 -0
- package/dist/modules/mcp/adapter.js +63 -0
- package/dist/modules/mcp/adapter.js.map +1 -0
- package/dist/modules/mcp/adapter.mjs +58 -0
- package/dist/modules/mcp/client.d.ts +75 -0
- package/dist/modules/mcp/client.d.ts.map +1 -0
- package/dist/modules/mcp/client.js +300 -0
- package/dist/modules/mcp/client.js.map +1 -0
- package/dist/modules/mcp/client.mjs +295 -0
- package/dist/modules/mcp/http-transport.d.ts +51 -0
- package/dist/modules/mcp/http-transport.d.ts.map +1 -0
- package/dist/modules/mcp/http-transport.js +146 -0
- package/dist/modules/mcp/http-transport.js.map +1 -0
- package/dist/modules/mcp/http-transport.mjs +141 -0
- package/dist/modules/mcp/index.d.ts +11 -0
- package/dist/modules/mcp/index.d.ts.map +1 -0
- package/dist/modules/mcp/index.js +34 -0
- package/dist/modules/mcp/index.js.map +1 -0
- package/dist/modules/mcp/index.mjs +14 -0
- package/dist/modules/mcp/oauth.d.ts +101 -0
- package/dist/modules/mcp/oauth.d.ts.map +1 -0
- package/dist/modules/mcp/oauth.js +347 -0
- package/dist/modules/mcp/oauth.js.map +1 -0
- package/dist/modules/mcp/oauth.mjs +304 -0
- package/dist/modules/mcp/token-store.d.ts +69 -0
- package/dist/modules/mcp/token-store.d.ts.map +1 -0
- package/dist/modules/mcp/token-store.js +174 -0
- package/dist/modules/mcp/token-store.js.map +1 -0
- package/dist/modules/mcp/token-store.mjs +135 -0
- package/dist/modules/mcp/types.d.ts +91 -0
- package/dist/modules/mcp/types.d.ts.map +1 -0
- package/dist/modules/mcp/types.js +14 -0
- package/dist/modules/mcp/types.js.map +1 -0
- package/dist/modules/mcp/types.mjs +11 -0
- package/dist/modules/skills/index.d.ts +7 -0
- package/dist/modules/skills/index.d.ts.map +1 -0
- package/dist/modules/skills/index.js +14 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/skills/index.mjs +6 -0
- package/dist/modules/skills/loader.d.ts +51 -0
- package/dist/modules/skills/loader.d.ts.map +1 -0
- package/dist/modules/skills/loader.js +237 -0
- package/dist/modules/skills/loader.js.map +1 -0
- package/dist/modules/skills/loader.mjs +198 -0
- package/dist/modules/skills/types.d.ts +60 -0
- package/dist/modules/skills/types.d.ts.map +1 -0
- package/dist/modules/skills/types.js +20 -0
- package/dist/modules/skills/types.js.map +1 -0
- package/dist/modules/skills/types.mjs +17 -0
- package/package.json +4 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* StateGraph - LangGraph-inspired graph builder.
|
|
4
|
+
* Minimal implementation for Phase 1.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StateGraph = exports.MaxGraphStepsError = void 0;
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
/** Maximum steps error */
|
|
10
|
+
class MaxGraphStepsError extends Error {
|
|
11
|
+
constructor(maxSteps) {
|
|
12
|
+
super(`Graph execution exceeded maximum steps: ${maxSteps}`);
|
|
13
|
+
this.maxSteps = maxSteps;
|
|
14
|
+
this.name = 'MaxGraphStepsError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.MaxGraphStepsError = MaxGraphStepsError;
|
|
18
|
+
/**
|
|
19
|
+
* StateGraph builder for agent workflows.
|
|
20
|
+
*/
|
|
21
|
+
class StateGraph {
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.nodes = new Map();
|
|
25
|
+
this.edges = [];
|
|
26
|
+
this.entryPoint = null;
|
|
27
|
+
if (config.entryPoint) {
|
|
28
|
+
this.entryPoint = config.entryPoint;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add a node to the graph.
|
|
33
|
+
*/
|
|
34
|
+
addNode(name, fn) {
|
|
35
|
+
this.nodes.set(name, { name, fn });
|
|
36
|
+
// First node is default entry point
|
|
37
|
+
if (!this.entryPoint) {
|
|
38
|
+
this.entryPoint = name;
|
|
39
|
+
}
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Add an edge between nodes.
|
|
44
|
+
*/
|
|
45
|
+
addEdge(from, to) {
|
|
46
|
+
this.edges.push({ from, to });
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Add a conditional edge.
|
|
51
|
+
*/
|
|
52
|
+
addConditionalEdge(from, resolver) {
|
|
53
|
+
this.edges.push({ from, to: resolver });
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Set the entry point.
|
|
58
|
+
*/
|
|
59
|
+
setEntryPoint(name) {
|
|
60
|
+
this.entryPoint = name;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Compile the graph into an executable form.
|
|
65
|
+
*/
|
|
66
|
+
compile() {
|
|
67
|
+
if (!this.entryPoint) {
|
|
68
|
+
throw new Error('Graph has no entry point');
|
|
69
|
+
}
|
|
70
|
+
const nodes = new Map(this.nodes);
|
|
71
|
+
const edges = [...this.edges];
|
|
72
|
+
const entryPoint = this.entryPoint;
|
|
73
|
+
return {
|
|
74
|
+
invoke: async (initialState, options) => {
|
|
75
|
+
const maxSteps = options?.maxSteps ?? 100;
|
|
76
|
+
let state = { ...initialState };
|
|
77
|
+
let currentNode = entryPoint;
|
|
78
|
+
let steps = 0;
|
|
79
|
+
while (currentNode && steps < maxSteps) {
|
|
80
|
+
const node = nodes.get(currentNode);
|
|
81
|
+
if (!node) {
|
|
82
|
+
throw new Error(`Node not found: ${currentNode}`);
|
|
83
|
+
}
|
|
84
|
+
// Execute node
|
|
85
|
+
const update = await node.fn(state);
|
|
86
|
+
state = { ...state, ...update };
|
|
87
|
+
steps++;
|
|
88
|
+
// Find next node
|
|
89
|
+
const edge = edges.find(e => e.from === currentNode);
|
|
90
|
+
if (!edge) {
|
|
91
|
+
break; // No outgoing edge, stop
|
|
92
|
+
}
|
|
93
|
+
if (typeof edge.to === 'string') {
|
|
94
|
+
currentNode = edge.to;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const next = edge.to(state);
|
|
98
|
+
if (next === types_1.END) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
currentNode = next;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (steps >= maxSteps) {
|
|
105
|
+
throw new MaxGraphStepsError(maxSteps);
|
|
106
|
+
}
|
|
107
|
+
return state;
|
|
108
|
+
},
|
|
109
|
+
stream: async function* (initialState, options) {
|
|
110
|
+
const maxSteps = options?.maxSteps ?? 100;
|
|
111
|
+
let state = { ...initialState };
|
|
112
|
+
let currentNode = entryPoint;
|
|
113
|
+
let steps = 0;
|
|
114
|
+
while (currentNode && steps < maxSteps) {
|
|
115
|
+
const node = nodes.get(currentNode);
|
|
116
|
+
if (!node) {
|
|
117
|
+
throw new Error(`Node not found: ${currentNode}`);
|
|
118
|
+
}
|
|
119
|
+
// Execute node
|
|
120
|
+
const update = await node.fn(state);
|
|
121
|
+
state = { ...state, ...update };
|
|
122
|
+
steps++;
|
|
123
|
+
// Yield current state
|
|
124
|
+
yield { node: currentNode, state };
|
|
125
|
+
// Find next node
|
|
126
|
+
const edge = edges.find(e => e.from === currentNode);
|
|
127
|
+
if (!edge) {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
if (typeof edge.to === 'string') {
|
|
131
|
+
currentNode = edge.to;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const next = edge.to(state);
|
|
135
|
+
if (next === types_1.END) {
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
currentNode = next;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (steps >= maxSteps) {
|
|
142
|
+
throw new MaxGraphStepsError(maxSteps);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.StateGraph = StateGraph;
|
|
149
|
+
//# sourceMappingURL=state-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-graph.js","sourceRoot":"","sources":["../../../src/ai/graph/state-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StateGraph - LangGraph-inspired graph builder.
|
|
3
|
+
* Minimal implementation for Phase 1.
|
|
4
|
+
*/
|
|
5
|
+
import { END } from './types.mjs';
|
|
6
|
+
/** Maximum steps error */
|
|
7
|
+
export class MaxGraphStepsError extends Error {
|
|
8
|
+
constructor(maxSteps) {
|
|
9
|
+
super(`Graph execution exceeded maximum steps: ${maxSteps}`);
|
|
10
|
+
this.maxSteps = maxSteps;
|
|
11
|
+
this.name = 'MaxGraphStepsError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* StateGraph builder for agent workflows.
|
|
16
|
+
*/
|
|
17
|
+
export class StateGraph {
|
|
18
|
+
constructor(config = {}) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.nodes = new Map();
|
|
21
|
+
this.edges = [];
|
|
22
|
+
this.entryPoint = null;
|
|
23
|
+
if (config.entryPoint) {
|
|
24
|
+
this.entryPoint = config.entryPoint;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add a node to the graph.
|
|
29
|
+
*/
|
|
30
|
+
addNode(name, fn) {
|
|
31
|
+
this.nodes.set(name, { name, fn });
|
|
32
|
+
// First node is default entry point
|
|
33
|
+
if (!this.entryPoint) {
|
|
34
|
+
this.entryPoint = name;
|
|
35
|
+
}
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Add an edge between nodes.
|
|
40
|
+
*/
|
|
41
|
+
addEdge(from, to) {
|
|
42
|
+
this.edges.push({ from, to });
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a conditional edge.
|
|
47
|
+
*/
|
|
48
|
+
addConditionalEdge(from, resolver) {
|
|
49
|
+
this.edges.push({ from, to: resolver });
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set the entry point.
|
|
54
|
+
*/
|
|
55
|
+
setEntryPoint(name) {
|
|
56
|
+
this.entryPoint = name;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Compile the graph into an executable form.
|
|
61
|
+
*/
|
|
62
|
+
compile() {
|
|
63
|
+
if (!this.entryPoint) {
|
|
64
|
+
throw new Error('Graph has no entry point');
|
|
65
|
+
}
|
|
66
|
+
const nodes = new Map(this.nodes);
|
|
67
|
+
const edges = [...this.edges];
|
|
68
|
+
const entryPoint = this.entryPoint;
|
|
69
|
+
return {
|
|
70
|
+
invoke: async (initialState, options) => {
|
|
71
|
+
const maxSteps = options?.maxSteps ?? 100;
|
|
72
|
+
let state = { ...initialState };
|
|
73
|
+
let currentNode = entryPoint;
|
|
74
|
+
let steps = 0;
|
|
75
|
+
while (currentNode && steps < maxSteps) {
|
|
76
|
+
const node = nodes.get(currentNode);
|
|
77
|
+
if (!node) {
|
|
78
|
+
throw new Error(`Node not found: ${currentNode}`);
|
|
79
|
+
}
|
|
80
|
+
// Execute node
|
|
81
|
+
const update = await node.fn(state);
|
|
82
|
+
state = { ...state, ...update };
|
|
83
|
+
steps++;
|
|
84
|
+
// Find next node
|
|
85
|
+
const edge = edges.find(e => e.from === currentNode);
|
|
86
|
+
if (!edge) {
|
|
87
|
+
break; // No outgoing edge, stop
|
|
88
|
+
}
|
|
89
|
+
if (typeof edge.to === 'string') {
|
|
90
|
+
currentNode = edge.to;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const next = edge.to(state);
|
|
94
|
+
if (next === END) {
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
currentNode = next;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (steps >= maxSteps) {
|
|
101
|
+
throw new MaxGraphStepsError(maxSteps);
|
|
102
|
+
}
|
|
103
|
+
return state;
|
|
104
|
+
},
|
|
105
|
+
stream: async function* (initialState, options) {
|
|
106
|
+
const maxSteps = options?.maxSteps ?? 100;
|
|
107
|
+
let state = { ...initialState };
|
|
108
|
+
let currentNode = entryPoint;
|
|
109
|
+
let steps = 0;
|
|
110
|
+
while (currentNode && steps < maxSteps) {
|
|
111
|
+
const node = nodes.get(currentNode);
|
|
112
|
+
if (!node) {
|
|
113
|
+
throw new Error(`Node not found: ${currentNode}`);
|
|
114
|
+
}
|
|
115
|
+
// Execute node
|
|
116
|
+
const update = await node.fn(state);
|
|
117
|
+
state = { ...state, ...update };
|
|
118
|
+
steps++;
|
|
119
|
+
// Yield current state
|
|
120
|
+
yield { node: currentNode, state };
|
|
121
|
+
// Find next node
|
|
122
|
+
const edge = edges.find(e => e.from === currentNode);
|
|
123
|
+
if (!edge) {
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
if (typeof edge.to === 'string') {
|
|
127
|
+
currentNode = edge.to;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const next = edge.to(state);
|
|
131
|
+
if (next === END) {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
currentNode = next;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (steps >= maxSteps) {
|
|
138
|
+
throw new MaxGraphStepsError(maxSteps);
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=state-graph.js.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Runtime types.
|
|
3
|
+
* Minimal implementation for Phase 1.
|
|
4
|
+
*/
|
|
5
|
+
/** Graph node function signature */
|
|
6
|
+
export type NodeFunction<S> = (state: S) => Promise<Partial<S>> | Partial<S>;
|
|
7
|
+
/** Edge destination resolver */
|
|
8
|
+
export type EdgeResolver<S> = (state: S) => string | typeof END;
|
|
9
|
+
/** Special end symbol */
|
|
10
|
+
export declare const END: unique symbol;
|
|
11
|
+
/** Graph node definition */
|
|
12
|
+
export interface GraphNode<S> {
|
|
13
|
+
name: string;
|
|
14
|
+
fn: NodeFunction<S>;
|
|
15
|
+
}
|
|
16
|
+
/** Graph edge definition */
|
|
17
|
+
export interface GraphEdge<S> {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string | EdgeResolver<S>;
|
|
20
|
+
}
|
|
21
|
+
/** Compiled graph */
|
|
22
|
+
export interface CompiledGraph<S> {
|
|
23
|
+
invoke: (initialState: S, options?: InvokeOptions) => Promise<S>;
|
|
24
|
+
stream: (initialState: S, options?: InvokeOptions) => AsyncGenerator<{
|
|
25
|
+
node: string;
|
|
26
|
+
state: S;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
/** Invoke options */
|
|
30
|
+
export interface InvokeOptions {
|
|
31
|
+
/** Thread ID for checkpointing */
|
|
32
|
+
threadId?: string;
|
|
33
|
+
/** Maximum number of steps */
|
|
34
|
+
maxSteps?: number;
|
|
35
|
+
}
|
|
36
|
+
/** Graph builder config */
|
|
37
|
+
export interface StateGraphConfig<S> {
|
|
38
|
+
/** Entry point node */
|
|
39
|
+
entryPoint?: string;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai/graph/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oCAAoC;AACpC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7E,gCAAgC;AAChC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,CAAC;AAEhE,yBAAyB;AACzB,eAAO,MAAM,GAAG,eAAgB,CAAC;AAEjC,4BAA4B;AAC5B,MAAM,WAAW,SAAS,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CACvB;AAED,4BAA4B;AAC5B,MAAM,WAAW,SAAS,CAAC,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CAChC;AAED,qBAAqB;AACrB,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,cAAc,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CACpG;AAED,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2BAA2B;AAC3B,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Graph Runtime types.
|
|
4
|
+
* Minimal implementation for Phase 1.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.END = void 0;
|
|
8
|
+
/** Special end symbol */
|
|
9
|
+
exports.END = Symbol('END');
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ai/graph/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,yBAAyB;AACZ,QAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal types for Agent Graph execution.
|
|
3
|
+
* These types extend public types with internal metadata.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatMessage, ToolCall } from '../lib/types';
|
|
6
|
+
import type { RegisteredTool } from '../lib/tool-registry';
|
|
7
|
+
/**
|
|
8
|
+
* Internal metadata for messages.
|
|
9
|
+
* Stripped before sending to API.
|
|
10
|
+
*/
|
|
11
|
+
export interface MessageMeta {
|
|
12
|
+
/** Skill ID for skill-injected messages */
|
|
13
|
+
skillId?: string;
|
|
14
|
+
/** Whether this message can be dropped during compaction */
|
|
15
|
+
droppable?: boolean;
|
|
16
|
+
/** Original message index before injection */
|
|
17
|
+
originalIndex?: number;
|
|
18
|
+
/** Skill priority for stable compaction (lower = drop first) */
|
|
19
|
+
priority?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Internal message with metadata.
|
|
23
|
+
* API-bound messages have _meta stripped.
|
|
24
|
+
*/
|
|
25
|
+
export interface InternalMessage extends ChatMessage {
|
|
26
|
+
_meta?: MessageMeta;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Agent state for graph execution.
|
|
30
|
+
*/
|
|
31
|
+
export interface AgentState {
|
|
32
|
+
/** Current messages in conversation */
|
|
33
|
+
messages: InternalMessage[];
|
|
34
|
+
/** Injected skills with metadata */
|
|
35
|
+
skills: InjectedSkill[];
|
|
36
|
+
/** Available tools */
|
|
37
|
+
tools: Map<string, RegisteredTool>;
|
|
38
|
+
/** Current step count */
|
|
39
|
+
stepCount: number;
|
|
40
|
+
/** Maximum allowed steps */
|
|
41
|
+
maxSteps: number;
|
|
42
|
+
/** Whether execution is complete */
|
|
43
|
+
done: boolean;
|
|
44
|
+
/** Final text output */
|
|
45
|
+
output: string;
|
|
46
|
+
/** Accumulated reasoning */
|
|
47
|
+
reasoning: string;
|
|
48
|
+
/** Finish reason from last prediction */
|
|
49
|
+
finishReason: string | null;
|
|
50
|
+
/** Token usage */
|
|
51
|
+
usage?: {
|
|
52
|
+
prompt_tokens: number;
|
|
53
|
+
completion_tokens: number;
|
|
54
|
+
total_tokens: number;
|
|
55
|
+
};
|
|
56
|
+
/** Abort signal for cancellation */
|
|
57
|
+
abortSignal?: AbortSignal;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Injected skill with position info for compaction.
|
|
61
|
+
*/
|
|
62
|
+
export interface InjectedSkill {
|
|
63
|
+
/** Skill name */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Priority for compaction (lower = drop first) */
|
|
66
|
+
priority: number;
|
|
67
|
+
/** Message index in messages array */
|
|
68
|
+
messageIndex: number;
|
|
69
|
+
/** Estimated token count */
|
|
70
|
+
tokenCount: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Step result for event callbacks.
|
|
74
|
+
*/
|
|
75
|
+
export interface StepResult {
|
|
76
|
+
type: 'text' | 'tool_call' | 'tool_result';
|
|
77
|
+
content: string;
|
|
78
|
+
reasoning?: string;
|
|
79
|
+
toolCalls?: ToolCall[];
|
|
80
|
+
toolResults?: {
|
|
81
|
+
toolCallId: string;
|
|
82
|
+
result: string;
|
|
83
|
+
}[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Agent graph events.
|
|
87
|
+
* Note: onToken is not supported in Phase 2 (no token-level streaming).
|
|
88
|
+
*/
|
|
89
|
+
export interface AgentGraphEvents {
|
|
90
|
+
/** Called when a step completes */
|
|
91
|
+
onStepFinish?: (step: StepResult) => void;
|
|
92
|
+
/** Called when entering a node */
|
|
93
|
+
onNodeEnter?: (nodeName: string) => void;
|
|
94
|
+
/** Called when exiting a node */
|
|
95
|
+
onNodeExit?: (nodeName: string) => void;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Strip internal metadata from messages before API call.
|
|
99
|
+
*/
|
|
100
|
+
export declare function stripMeta(messages: InternalMessage[]): ChatMessage[];
|
|
101
|
+
/**
|
|
102
|
+
* Check if message is droppable during compaction.
|
|
103
|
+
*/
|
|
104
|
+
export declare function isDroppable(message: InternalMessage): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Get skill ID from message.
|
|
107
|
+
*/
|
|
108
|
+
export declare function getSkillId(message: InternalMessage): string | undefined;
|
|
109
|
+
//# sourceMappingURL=internal-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/ai/internal-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAChD,KAAK,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,uCAAuC;IACvC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,oCAAoC;IACpC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,sBAAsB;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB;IAClB,KAAK,CAAC,EAAE;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,oCAAoC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,mCAAmC;IACnC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,kCAAkC;IAClC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iCAAiC;IACjC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAEpE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAEvE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Internal types for Agent Graph execution.
|
|
4
|
+
* These types extend public types with internal metadata.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.stripMeta = stripMeta;
|
|
8
|
+
exports.isDroppable = isDroppable;
|
|
9
|
+
exports.getSkillId = getSkillId;
|
|
10
|
+
/**
|
|
11
|
+
* Strip internal metadata from messages before API call.
|
|
12
|
+
*/
|
|
13
|
+
function stripMeta(messages) {
|
|
14
|
+
return messages.map(({ _meta, ...msg }) => msg);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if message is droppable during compaction.
|
|
18
|
+
*/
|
|
19
|
+
function isDroppable(message) {
|
|
20
|
+
return message._meta?.droppable === true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get skill ID from message.
|
|
24
|
+
*/
|
|
25
|
+
function getSkillId(message) {
|
|
26
|
+
return message._meta?.skillId;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=internal-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-types.js","sourceRoot":"","sources":["../../src/ai/internal-types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsGH,8BAEC;AAKD,kCAEC;AAKD,gCAEC;AAnBD;;GAEG;AACH,SAAgB,SAAS,CAAC,QAA2B;IACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAkB,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAwB;IAChD,OAAO,OAAO,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAwB;IAC/C,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal types for Agent Graph execution.
|
|
3
|
+
* These types extend public types with internal metadata.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Strip internal metadata from messages before API call.
|
|
7
|
+
*/
|
|
8
|
+
export function stripMeta(messages) {
|
|
9
|
+
return messages.map(({ _meta, ...msg }) => msg);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if message is droppable during compaction.
|
|
13
|
+
*/
|
|
14
|
+
export function isDroppable(message) {
|
|
15
|
+
return message._meta?.droppable === true;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get skill ID from message.
|
|
19
|
+
*/
|
|
20
|
+
export function getSkillId(message) {
|
|
21
|
+
return message._meta?.skillId;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=internal-types.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExecuteNode - Tool execution abstraction.
|
|
3
|
+
* Extracted from generateText for modular use in Graph Runtime.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChatMessage, ToolCall } from '../../lib/types';
|
|
6
|
+
import type { RegisteredTool } from '../../lib/tool-registry';
|
|
7
|
+
/** Tool execution context */
|
|
8
|
+
export interface ExecutionContext {
|
|
9
|
+
toolCallId: string;
|
|
10
|
+
messages: ChatMessage[];
|
|
11
|
+
abortSignal?: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
/** Tool result */
|
|
14
|
+
export interface ToolExecutionResult {
|
|
15
|
+
toolCallId: string;
|
|
16
|
+
result: string;
|
|
17
|
+
isError: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Execute tools based on tool calls from LLM.
|
|
21
|
+
*/
|
|
22
|
+
export declare function executeTools(toolCalls: ToolCall[], tools: Map<string, RegisteredTool>, context: Omit<ExecutionContext, 'toolCallId'>): Promise<ToolExecutionResult[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Convert tool execution results to chat messages.
|
|
25
|
+
*/
|
|
26
|
+
export declare function toolResultsToMessages(results: ToolExecutionResult[]): ChatMessage[];
|
|
27
|
+
//# sourceMappingURL=execute-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-node.d.ts","sourceRoot":"","sources":["../../../src/ai/nodes/execute-node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,kBAAkB;AAClB,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAC9B,SAAS,EAAE,QAAQ,EAAE,EACrB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EAClC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,GAC9C,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgEhC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,WAAW,EAAE,CAMnF"}
|