@agentrun/sdk 0.0.3 → 0.0.4
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 +20 -15
- package/dist/agent-runtime/api/index.cjs +907 -0
- package/dist/agent-runtime/api/index.cjs.map +1 -0
- package/dist/agent-runtime/api/index.d.cts +193 -0
- package/dist/agent-runtime/api/index.d.ts +193 -0
- package/dist/agent-runtime/api/index.js +882 -0
- package/dist/agent-runtime/api/index.js.map +1 -0
- package/dist/agent-runtime/index.cjs +2528 -0
- package/dist/agent-runtime/index.cjs.map +1 -0
- package/dist/agent-runtime/index.d.cts +778 -0
- package/dist/agent-runtime/index.d.ts +778 -0
- package/dist/agent-runtime/index.js +2496 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/base-K1GMfJbH.d.ts +59 -0
- package/dist/base-xcWt5bua.d.cts +59 -0
- package/dist/client-DHXxjuo3.d.ts +58 -0
- package/dist/client-DPUTs69s.d.cts +58 -0
- package/dist/config-07gMelJP.d.cts +125 -0
- package/dist/config-07gMelJP.d.ts +125 -0
- package/dist/control-api-BWD4eua5.d.cts +27 -0
- package/dist/control-api-d-82Sgpr.d.ts +27 -0
- package/dist/credential/api/index.cjs +655 -0
- package/dist/credential/api/index.cjs.map +1 -0
- package/dist/credential/api/index.d.cts +93 -0
- package/dist/credential/api/index.d.ts +93 -0
- package/dist/credential/api/index.js +630 -0
- package/dist/credential/api/index.js.map +1 -0
- package/dist/credential/index.cjs +1286 -0
- package/dist/credential/index.cjs.map +1 -0
- package/dist/credential/index.d.cts +246 -0
- package/dist/credential/index.d.ts +246 -0
- package/dist/credential/index.js +1263 -0
- package/dist/credential/index.js.map +1 -0
- package/dist/data-api-B-4h9_Vf.d.ts +166 -0
- package/dist/data-api-DsG-8JRQ.d.cts +166 -0
- package/dist/exception-DM9H2Rpo.d.cts +68 -0
- package/dist/exception-DM9H2Rpo.d.ts +68 -0
- package/dist/index.cjs +29281 -1427
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -4485
- package/dist/index.d.ts +38 -4485
- package/dist/index.js +29259 -1426
- package/dist/index.js.map +1 -1
- package/dist/integration/builtin/index.cjs +9399 -0
- package/dist/integration/builtin/index.cjs.map +1 -0
- package/dist/integration/builtin/index.d.cts +692 -0
- package/dist/integration/builtin/index.d.ts +692 -0
- package/dist/integration/builtin/index.js +9363 -0
- package/dist/integration/builtin/index.js.map +1 -0
- package/dist/integration/index.cjs +9524 -0
- package/dist/integration/index.cjs.map +1 -0
- package/dist/integration/index.d.cts +98 -0
- package/dist/integration/index.d.ts +98 -0
- package/dist/integration/index.js +9481 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/mastra/index.cjs +9383 -0
- package/dist/integration/mastra/index.cjs.map +1 -0
- package/dist/integration/mastra/index.d.cts +186 -0
- package/dist/integration/mastra/index.d.ts +186 -0
- package/dist/integration/mastra/index.js +9348 -0
- package/dist/integration/mastra/index.js.map +1 -0
- package/dist/model/index.cjs +2392 -0
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.cts +97 -0
- package/dist/model/index.d.ts +97 -0
- package/dist/model/index.js +2368 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model--I90nCqy.d.cts +66 -0
- package/dist/model--I90nCqy.d.ts +66 -0
- package/dist/model-BV7A6Trb.d.cts +512 -0
- package/dist/model-DGBy-o_L.d.cts +176 -0
- package/dist/model-DGBy-o_L.d.ts +176 -0
- package/dist/model-RiiiZnou.d.ts +512 -0
- package/dist/model-service-D-P2FZNi.d.ts +540 -0
- package/dist/model-service-VpzBb7rV.d.cts +540 -0
- package/dist/resource-CQovFUeh.d.cts +44 -0
- package/dist/resource-DnE_DEka.d.ts +44 -0
- package/dist/sandbox/index.cjs +3557 -0
- package/dist/sandbox/index.cjs.map +1 -0
- package/dist/sandbox/index.d.cts +1598 -0
- package/dist/sandbox/index.d.ts +1598 -0
- package/dist/sandbox/index.js +3532 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/server/adapter/index.cjs +24886 -0
- package/dist/server/adapter/index.cjs.map +1 -0
- package/dist/server/adapter/index.d.cts +68 -0
- package/dist/server/adapter/index.d.ts +68 -0
- package/dist/server/adapter/index.js +24883 -0
- package/dist/server/adapter/index.js.map +1 -0
- package/dist/server/core/index.cjs +313 -0
- package/dist/server/core/index.cjs.map +1 -0
- package/dist/server/core/index.d.cts +58 -0
- package/dist/server/core/index.d.ts +58 -0
- package/dist/server/core/index.js +309 -0
- package/dist/server/core/index.js.map +1 -0
- package/dist/server/index.cjs +25098 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +73 -0
- package/dist/server/index.d.ts +73 -0
- package/dist/server/index.js +25067 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/protocol/index.cjs +1057 -0
- package/dist/server/protocol/index.cjs.map +1 -0
- package/dist/server/protocol/index.d.cts +135 -0
- package/dist/server/protocol/index.d.ts +135 -0
- package/dist/server/protocol/index.js +1053 -0
- package/dist/server/protocol/index.js.map +1 -0
- package/dist/tool-CG0LY-ov.d.cts +155 -0
- package/dist/tool-JJHam0ms.d.ts +155 -0
- package/dist/toolset/api/index.cjs +754 -0
- package/dist/toolset/api/index.cjs.map +1 -0
- package/dist/toolset/api/index.d.cts +207 -0
- package/dist/toolset/api/index.d.ts +207 -0
- package/dist/toolset/api/index.js +727 -0
- package/dist/toolset/api/index.js.map +1 -0
- package/dist/toolset/index.cjs +1945 -0
- package/dist/toolset/index.cjs.map +1 -0
- package/dist/toolset/index.d.cts +182 -0
- package/dist/toolset/index.d.ts +182 -0
- package/dist/toolset/index.js +1920 -0
- package/dist/toolset/index.js.map +1 -0
- package/dist/toolset-BYDvhwRp.d.cts +394 -0
- package/dist/toolset-CSRsJxCb.d.ts +394 -0
- package/dist/utils/index.cjs +994 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +30 -0
- package/dist/utils/index.d.ts +30 -0
- package/dist/utils/index.js +951 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +65 -13
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
// src/utils/log.ts
|
|
2
|
+
var LOG_LEVELS = {
|
|
3
|
+
debug: 0,
|
|
4
|
+
info: 1,
|
|
5
|
+
warn: 2,
|
|
6
|
+
error: 3
|
|
7
|
+
};
|
|
8
|
+
var COLORS = {
|
|
9
|
+
reset: "\x1B[0m",
|
|
10
|
+
bright: "\x1B[1m",
|
|
11
|
+
dim: "\x1B[2m",
|
|
12
|
+
italic: "\x1B[3m",
|
|
13
|
+
blue: "\x1B[34m",
|
|
14
|
+
cyan: "\x1B[36m",
|
|
15
|
+
yellow: "\x1B[33m",
|
|
16
|
+
red: "\x1B[31m"
|
|
17
|
+
};
|
|
18
|
+
var Logger = class {
|
|
19
|
+
level = "info";
|
|
20
|
+
// match Python logger name
|
|
21
|
+
prefix = "agentrun-logger";
|
|
22
|
+
setLevel(level) {
|
|
23
|
+
this.level = level;
|
|
24
|
+
}
|
|
25
|
+
shouldLog(level) {
|
|
26
|
+
return LOG_LEVELS[level] >= LOG_LEVELS[this.level];
|
|
27
|
+
}
|
|
28
|
+
getColor(level) {
|
|
29
|
+
switch (level) {
|
|
30
|
+
case "debug":
|
|
31
|
+
return COLORS.cyan;
|
|
32
|
+
case "info":
|
|
33
|
+
return COLORS.blue;
|
|
34
|
+
case "warn":
|
|
35
|
+
return COLORS.yellow;
|
|
36
|
+
case "error":
|
|
37
|
+
return COLORS.red;
|
|
38
|
+
default:
|
|
39
|
+
return COLORS.reset;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS
|
|
43
|
+
formatTimestamp(d = /* @__PURE__ */ new Date()) {
|
|
44
|
+
const pad = (n, sz = 2) => n.toString().padStart(sz, "0");
|
|
45
|
+
const year = d.getFullYear();
|
|
46
|
+
const month = pad(d.getMonth() + 1);
|
|
47
|
+
const day = pad(d.getDate());
|
|
48
|
+
const hour = pad(d.getHours());
|
|
49
|
+
const minute = pad(d.getMinutes());
|
|
50
|
+
const second = pad(d.getSeconds());
|
|
51
|
+
const ms = pad(d.getMilliseconds(), 3);
|
|
52
|
+
return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;
|
|
53
|
+
}
|
|
54
|
+
// attempt to infer caller file and line by parsing Error.stack
|
|
55
|
+
// helper: parse a single stack frame into {filepath, line, functionName}
|
|
56
|
+
parseFrame(frame) {
|
|
57
|
+
const m = frame.match(/^(?:at\s+)?(?:(.+?)\s+\()?(.*?):(\d+):(\d+)\)?$/);
|
|
58
|
+
if (!m) return null;
|
|
59
|
+
return {
|
|
60
|
+
functionName: m[1] ? m[1].trim() : void 0,
|
|
61
|
+
filepath: m[2],
|
|
62
|
+
line: parseInt(m[3], 10)
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// get caller by fixed stack offset (used in public log methods)
|
|
66
|
+
getCallerByOffset() {
|
|
67
|
+
const err = new Error();
|
|
68
|
+
const stack = err.stack;
|
|
69
|
+
if (!stack) return {};
|
|
70
|
+
const lines = stack.split("\n").map((l) => l.trim());
|
|
71
|
+
for (let i = 3; i < lines.length; i++) {
|
|
72
|
+
let parsed = this.parseFrame(lines[i]);
|
|
73
|
+
if (!parsed) {
|
|
74
|
+
const m = lines[i].match(/(\/[^:\s]+:\d+:\d+)/);
|
|
75
|
+
if (m) {
|
|
76
|
+
const parts = m[1].split(":");
|
|
77
|
+
parts.pop();
|
|
78
|
+
const ln = Number(parts.pop());
|
|
79
|
+
const fp2 = parts.join(":");
|
|
80
|
+
parsed = { filepath: fp2, line: ln, functionName: void 0 };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (!parsed) continue;
|
|
84
|
+
const fp = parsed.filepath;
|
|
85
|
+
if (fp.includes("node_modules") || fp.includes("internal") || fp.includes("<anonymous>") || fp.includes("native"))
|
|
86
|
+
continue;
|
|
87
|
+
return { filepath: parsed.filepath, line: parsed.line };
|
|
88
|
+
}
|
|
89
|
+
const cwd = process.cwd();
|
|
90
|
+
for (let i = 0; i < lines.length; i++) {
|
|
91
|
+
let parsed = this.parseFrame(lines[i]);
|
|
92
|
+
if (!parsed) {
|
|
93
|
+
const m = lines[i].match(/(\/[^:\s]+:\d+:\d+)/);
|
|
94
|
+
if (m) {
|
|
95
|
+
const parts = m[1].split(":");
|
|
96
|
+
parts.pop();
|
|
97
|
+
const ln = Number(parts.pop());
|
|
98
|
+
const fp2 = parts.join(":");
|
|
99
|
+
parsed = { filepath: fp2, line: ln, functionName: void 0 };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (!parsed) continue;
|
|
103
|
+
const fp = parsed.filepath;
|
|
104
|
+
if (fp.includes("node_modules") || fp.includes("internal") || fp.includes("<anonymous>") || fp.includes("native"))
|
|
105
|
+
continue;
|
|
106
|
+
if (fp.includes("/src/utils/log.ts")) continue;
|
|
107
|
+
if (fp.startsWith(cwd)) return { filepath: parsed.filepath, line: parsed.line };
|
|
108
|
+
}
|
|
109
|
+
for (let i = 0; i < lines.length; i++) {
|
|
110
|
+
let parsed = this.parseFrame(lines[i]);
|
|
111
|
+
if (!parsed) {
|
|
112
|
+
const m = lines[i].match(/(\/[^:\s]+:\d+:\d+)/);
|
|
113
|
+
if (m) {
|
|
114
|
+
const parts = m[1].split(":");
|
|
115
|
+
parts.pop();
|
|
116
|
+
const ln = Number(parts.pop());
|
|
117
|
+
const fp2 = parts.join(":");
|
|
118
|
+
parsed = { filepath: fp2, line: ln, functionName: void 0 };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (!parsed) continue;
|
|
122
|
+
const fp = parsed.filepath;
|
|
123
|
+
if (fp.includes("node_modules") || fp.includes("internal") || fp.includes("<anonymous>") || fp.includes("native"))
|
|
124
|
+
continue;
|
|
125
|
+
if (fp.includes("/src/utils/log.ts")) continue;
|
|
126
|
+
return { filepath: parsed.filepath, line: parsed.line };
|
|
127
|
+
}
|
|
128
|
+
return {};
|
|
129
|
+
}
|
|
130
|
+
formatMessage(level, message, filepath, line) {
|
|
131
|
+
const timestamp = this.formatTimestamp();
|
|
132
|
+
const color = this.getColor(level);
|
|
133
|
+
const reset = COLORS.reset;
|
|
134
|
+
const levelName = level === "warn" ? "WARNING" : level.toUpperCase();
|
|
135
|
+
const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;
|
|
136
|
+
const nameStr = `${color}[${this.prefix}]${reset}`;
|
|
137
|
+
const tsStr = `${color} ${timestamp}${reset}`;
|
|
138
|
+
const pathInfo = filepath && line !== void 0 ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}` : "";
|
|
139
|
+
const msg = level === "debug" ? `${COLORS.dim}${message}${reset}` : message;
|
|
140
|
+
return `
|
|
141
|
+
${levelStr} ${nameStr}${tsStr}${pathInfo}
|
|
142
|
+
${msg}
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
debug(message, ...args) {
|
|
146
|
+
if (this.shouldLog("debug")) {
|
|
147
|
+
const caller = this.getCallerByOffset();
|
|
148
|
+
console.debug(this.formatMessage("debug", message, caller.filepath, caller.line), ...args);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
info(message, ...args) {
|
|
152
|
+
if (this.shouldLog("info")) {
|
|
153
|
+
const caller = this.getCallerByOffset();
|
|
154
|
+
console.info(this.formatMessage("info", message, caller.filepath, caller.line), ...args);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
warn(message, ...args) {
|
|
158
|
+
if (this.shouldLog("warn")) {
|
|
159
|
+
const caller = this.getCallerByOffset();
|
|
160
|
+
console.warn(this.formatMessage("warn", message, caller.filepath, caller.line), ...args);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
error(message, ...args) {
|
|
164
|
+
if (this.shouldLog("error")) {
|
|
165
|
+
const caller = this.getCallerByOffset();
|
|
166
|
+
console.error(this.formatMessage("error", message, caller.filepath, caller.line), ...args);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
var logger = new Logger();
|
|
171
|
+
if (![void 0, null, "", "False", "FALSE", "false", "0"].includes(process.env["AGENTRUN_SDK_DEBUG"])) {
|
|
172
|
+
logger.setLevel("debug");
|
|
173
|
+
if (!globalThis._AGENTRUN_DEBUG_LOGGED) {
|
|
174
|
+
logger.warn("\u542F\u7528 AgentRun SDK \u8C03\u8BD5\u65E5\u5FD7\uFF0C \u79FB\u9664 AGENTRUN_SDK_DEBUG \u73AF\u5883\u53D8\u91CF\u4EE5\u5173\u95ED");
|
|
175
|
+
globalThis._AGENTRUN_DEBUG_LOGGED = true;
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
logger.setLevel("info");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// src/utils/version-check.ts
|
|
182
|
+
var VERSION = "0.0.4" ;
|
|
183
|
+
if (!process.env.DISABLE_BREAKING_CHANGES_WARNING && !globalThis._AGENTRUN_VERSION_WARNING_SHOWN) {
|
|
184
|
+
globalThis._AGENTRUN_VERSION_WARNING_SHOWN = true;
|
|
185
|
+
logger.warn(
|
|
186
|
+
`\u5F53\u524D\u60A8\u6B63\u5728\u4F7F\u7528 AgentRun Python SDK \u7248\u672C ${VERSION}\u3002\u65E9\u671F\u7248\u672C\u901A\u5E38\u5305\u542B\u8BB8\u591A\u65B0\u529F\u80FD\uFF0C\u8FD9\u4E9B\u529F\u80FD\x1B[1;33m \u53EF\u80FD\u5F15\u5165\u4E0D\u517C\u5BB9\u7684\u53D8\u66F4 \x1B[0m\u3002\u4E3A\u907F\u514D\u6F5C\u5728\u95EE\u9898\uFF0C\u6211\u4EEC\u5F3A\u70C8\u5EFA\u8BAE\x1B[1;32m \u5C06\u4F9D\u8D56\u9501\u5B9A\u4E3A\u6B64\u7248\u672C \x1B[0m\u3002
|
|
187
|
+
You are currently using AgentRun Python SDK version ${VERSION}. Early versions often include many new features, which\x1B[1;33m may introduce breaking changes\x1B[0m. To avoid potential issues, we strongly recommend \x1B[1;32mpinning the dependency to this version\x1B[0m.
|
|
188
|
+
\x1B[2;3m pip install 'agentrun-sdk==${VERSION}' \x1B[0m
|
|
189
|
+
|
|
190
|
+
\u589E\u52A0\x1B[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \x1B[0m\u5230\u60A8\u7684\u73AF\u5883\u53D8\u91CF\u4EE5\u5173\u95ED\u6B64\u8B66\u544A\u3002
|
|
191
|
+
Add\x1B[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \x1B[0mto your environment variables to disable this warning.
|
|
192
|
+
|
|
193
|
+
Releases:\x1B[2;3m https://github.com/Serverless-Devs/agentrun-sdk-python/releases\x1B[0m`
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// src/server/core/model.ts
|
|
198
|
+
var MessageRole = /* @__PURE__ */ ((MessageRole2) => {
|
|
199
|
+
MessageRole2["SYSTEM"] = "system";
|
|
200
|
+
MessageRole2["USER"] = "user";
|
|
201
|
+
MessageRole2["ASSISTANT"] = "assistant";
|
|
202
|
+
MessageRole2["TOOL"] = "tool";
|
|
203
|
+
return MessageRole2;
|
|
204
|
+
})(MessageRole || {});
|
|
205
|
+
var EventType = /* @__PURE__ */ ((EventType2) => {
|
|
206
|
+
EventType2["TEXT"] = "TEXT";
|
|
207
|
+
EventType2["TOOL_CALL"] = "TOOL_CALL";
|
|
208
|
+
EventType2["TOOL_CALL_CHUNK"] = "TOOL_CALL_CHUNK";
|
|
209
|
+
EventType2["TOOL_RESULT"] = "TOOL_RESULT";
|
|
210
|
+
EventType2["TOOL_RESULT_CHUNK"] = "TOOL_RESULT_CHUNK";
|
|
211
|
+
EventType2["ERROR"] = "ERROR";
|
|
212
|
+
EventType2["STATE"] = "STATE";
|
|
213
|
+
EventType2["HITL"] = "HITL";
|
|
214
|
+
EventType2["CUSTOM"] = "CUSTOM";
|
|
215
|
+
EventType2["RAW"] = "RAW";
|
|
216
|
+
return EventType2;
|
|
217
|
+
})(EventType || {});
|
|
218
|
+
|
|
219
|
+
// src/server/core/invoker.ts
|
|
220
|
+
var AgentInvoker = class {
|
|
221
|
+
constructor(handler) {
|
|
222
|
+
this.handler = handler;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Invoke agent and return streaming result
|
|
226
|
+
* Always returns AsyncGenerator<AgentEvent>
|
|
227
|
+
*/
|
|
228
|
+
async *invoke(request, options) {
|
|
229
|
+
try {
|
|
230
|
+
const result = await Promise.resolve(this.handler(request));
|
|
231
|
+
if (options?.signal?.aborted) {
|
|
232
|
+
yield this.createErrorEvent(new Error("Request aborted"));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (this.isAsyncIterable(result)) {
|
|
236
|
+
yield* this.processAsyncIterable(result, options);
|
|
237
|
+
} else if (typeof result === "string") {
|
|
238
|
+
yield { event: "TEXT" /* TEXT */, data: { delta: result } };
|
|
239
|
+
} else {
|
|
240
|
+
yield* this.processEvent(result);
|
|
241
|
+
}
|
|
242
|
+
} catch (error) {
|
|
243
|
+
yield this.createErrorEvent(error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Process async iterable stream
|
|
248
|
+
*/
|
|
249
|
+
async *processAsyncIterable(stream, options) {
|
|
250
|
+
try {
|
|
251
|
+
for await (const item of stream) {
|
|
252
|
+
if (options?.signal?.aborted) {
|
|
253
|
+
yield this.createErrorEvent(new Error("Request aborted"));
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
if (typeof item === "string") {
|
|
257
|
+
if (item) {
|
|
258
|
+
yield { event: "TEXT" /* TEXT */, data: { delta: item } };
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
yield* this.processEvent(item);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
} catch (error) {
|
|
265
|
+
yield this.createErrorEvent(error);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Process single event
|
|
270
|
+
* Expands TOOL_CALL → TOOL_CALL_CHUNK
|
|
271
|
+
*/
|
|
272
|
+
*processEvent(event) {
|
|
273
|
+
if (event.event === "TOOL_CALL" /* TOOL_CALL */) {
|
|
274
|
+
yield {
|
|
275
|
+
event: "TOOL_CALL_CHUNK" /* TOOL_CALL_CHUNK */,
|
|
276
|
+
data: {
|
|
277
|
+
id: event.data?.id,
|
|
278
|
+
name: event.data?.name,
|
|
279
|
+
args_delta: event.data?.args || ""
|
|
280
|
+
},
|
|
281
|
+
addition: event.addition,
|
|
282
|
+
additionMergeOptions: event.additionMergeOptions
|
|
283
|
+
};
|
|
284
|
+
} else {
|
|
285
|
+
yield event;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Create error event from exception
|
|
290
|
+
*/
|
|
291
|
+
createErrorEvent(error) {
|
|
292
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
293
|
+
const code = error instanceof Error ? error.name : "UnknownError";
|
|
294
|
+
return {
|
|
295
|
+
event: "ERROR" /* ERROR */,
|
|
296
|
+
data: { message, code }
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Check if value is async iterable
|
|
301
|
+
*/
|
|
302
|
+
isAsyncIterable(value) {
|
|
303
|
+
return value !== null && typeof value === "object" && Symbol.asyncIterator in value;
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
export { AgentInvoker, EventType, MessageRole };
|
|
308
|
+
//# sourceMappingURL=index.js.map
|
|
309
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/log.ts","../../../src/utils/version-check.ts","../../../src/server/core/model.ts","../../../src/server/core/invoker.ts"],"names":["fp","MessageRole","EventType"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Logging utilities for AgentRun SDK\n *\n * 此模块提供日志功能。\n * This module provides logging utilities.\n */\n\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n// concise ANSI color codes we need\nconst COLORS = {\n reset: '\\x1b[0m',\n bright: '\\x1b[1m',\n dim: '\\x1b[2m',\n italic: '\\x1b[3m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nclass Logger {\n private level: LogLevel = 'info';\n // match Python logger name\n private prefix = 'agentrun-logger';\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n private shouldLog(level: LogLevel): boolean {\n return LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n }\n\n private getColor(level: LogLevel): string {\n switch (level) {\n case 'debug':\n return COLORS.cyan;\n case 'info':\n return COLORS.blue;\n case 'warn':\n return COLORS.yellow;\n case 'error':\n return COLORS.red;\n default:\n return COLORS.reset;\n }\n }\n\n // format timestamp like Python: YYYY-MM-DD HH:mm:ss,SSS\n private formatTimestamp(d = new Date()): string {\n const pad = (n: number, sz = 2) => n.toString().padStart(sz, '0');\n const year = d.getFullYear();\n const month = pad(d.getMonth() + 1);\n const day = pad(d.getDate());\n const hour = pad(d.getHours());\n const minute = pad(d.getMinutes());\n const second = pad(d.getSeconds());\n const ms = pad(d.getMilliseconds(), 3);\n return `${year}-${month}-${day} ${hour}:${minute}:${second},${ms}`;\n }\n\n // attempt to infer caller file and line by parsing Error.stack\n // helper: parse a single stack frame into {filepath, line, functionName}\n private parseFrame(frame: string) {\n const m = frame.match(/^(?:at\\s+)?(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/);\n if (!m) return null;\n return {\n functionName: m[1] ? m[1].trim() : undefined,\n filepath: m[2],\n line: parseInt(m[3], 10),\n };\n }\n\n // get caller by fixed stack offset (used in public log methods)\n private getCallerByOffset(): { filepath?: string; line?: number } {\n const err = new Error();\n const stack = err.stack;\n if (!stack) return {};\n const lines = stack.split('\\n').map(l => l.trim());\n // try the requested offset, if absent try next few frames\n\n for (let i = 3; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n // fallback: try extract /path:line:col substring\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n // skip logger internal frames\n return { filepath: parsed.filepath, line: parsed.line };\n }\n // fallback: scan all frames and return first project frame\n const cwd = process.cwd();\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n if (fp.startsWith(cwd)) return { filepath: parsed.filepath, line: parsed.line };\n }\n // final fallback: first non-node_modules parsed frame\n for (let i = 0; i < lines.length; i++) {\n let parsed = this.parseFrame(lines[i]);\n if (!parsed) {\n const m = lines[i].match(/(\\/[^:\\s]+:\\d+:\\d+)/);\n if (m) {\n const parts = m[1].split(':');\n parts.pop(); // col\n const ln = Number(parts.pop());\n const fp = parts.join(':');\n parsed = { filepath: fp, line: ln, functionName: undefined } as any;\n }\n }\n if (!parsed) continue;\n const fp = parsed.filepath;\n if (\n fp.includes('node_modules') ||\n fp.includes('internal') ||\n fp.includes('<anonymous>') ||\n fp.includes('native')\n )\n continue;\n if (fp.includes('/src/utils/log.ts')) continue;\n return { filepath: parsed.filepath, line: parsed.line };\n }\n return {};\n }\n\n private formatMessage(\n level: LogLevel,\n message: string,\n filepath?: string,\n line?: number\n ): string {\n const timestamp = this.formatTimestamp();\n const color = this.getColor(level);\n const reset = COLORS.reset;\n\n // filepath/line should be provided by caller via getCallerByOffset;\n // if missing, leave blank\n\n const levelName = level === 'warn' ? 'WARNING' : level.toUpperCase();\n const levelStr = `${COLORS.bright}${color}${levelName}${reset}`;\n const nameStr = `${color}[${this.prefix}]${reset}`;\n const tsStr = `${color} ${timestamp}${reset}`;\n const pathInfo =\n filepath && line !== undefined\n ? ` ${COLORS.dim}${COLORS.italic}${filepath}:${line}${reset}`\n : '';\n const msg = level === 'debug' ? `${COLORS.dim}${message}${reset}` : message;\n\n return `\\n${levelStr} ${nameStr}${tsStr}${pathInfo}\\n${msg}\\n`;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.shouldLog('debug')) {\n const caller = this.getCallerByOffset();\n console.debug(this.formatMessage('debug', message, caller.filepath, caller.line), ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.shouldLog('info')) {\n const caller = this.getCallerByOffset();\n console.info(this.formatMessage('info', message, caller.filepath, caller.line), ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.shouldLog('warn')) {\n const caller = this.getCallerByOffset();\n console.warn(this.formatMessage('warn', message, caller.filepath, caller.line), ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.shouldLog('error')) {\n const caller = this.getCallerByOffset();\n console.error(this.formatMessage('error', message, caller.filepath, caller.line), ...args);\n }\n }\n}\n\nexport const logger = new Logger();\nif (\n ![undefined, null, '', 'False', 'FALSE', 'false', '0'].includes(process.env['AGENTRUN_SDK_DEBUG'])\n) {\n logger.setLevel('debug');\n\n if (!(globalThis as any)._AGENTRUN_DEBUG_LOGGED) {\n logger.warn('启用 AgentRun SDK 调试日志, 移除 AGENTRUN_SDK_DEBUG 环境变量以关闭');\n (globalThis as any)._AGENTRUN_DEBUG_LOGGED = true;\n }\n} else {\n logger.setLevel('info');\n}\n","// Version check utility to ensure warning is only shown once globally\ndeclare const __VERSION__: string;\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '0.0.0-dev';\nimport { logger } from './log';\n\nif (\n !process.env.DISABLE_BREAKING_CHANGES_WARNING &&\n !(globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN\n) {\n (globalThis as any)._AGENTRUN_VERSION_WARNING_SHOWN = true;\n logger.warn(\n `当前您正在使用 AgentRun Python SDK 版本 ${VERSION}。早期版本通常包含许多新功能,这些功能\\x1b[1;33m 可能引入不兼容的变更 \\x1b[0m。为避免潜在问题,我们强烈建议\\x1b[1;32m 将依赖锁定为此版本 \\x1b[0m。\nYou are currently using AgentRun Python SDK version ${VERSION}. Early versions often include many new features, which\\x1b[1;33m may introduce breaking changes\\x1b[0m. To avoid potential issues, we strongly recommend \\x1b[1;32mpinning the dependency to this version\\x1b[0m.\n\\x1b[2;3m pip install 'agentrun-sdk==${VERSION}' \\x1b[0m\n\n增加\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0m到您的环境变量以关闭此警告。\nAdd\\x1b[2;3m DISABLE_BREAKING_CHANGES_WARNING=1 \\x1b[0mto your environment variables to disable this warning.\n \nReleases:\\x1b[2;3m https://github.com/Serverless-Devs/agentrun-sdk-python/releases\\x1b[0m`\n );\n}\n","/**\n * Server Core Data Models\n *\n * 此模块定义 Server 相关的所有数据模型。\n * This module defines all data models related to Server.\n */\n\n/**\n * Message role enum\n */\nexport enum MessageRole {\n SYSTEM = 'system',\n USER = 'user',\n ASSISTANT = 'assistant',\n TOOL = 'tool',\n}\n\n/**\n * Event type enum for AgentEvent (Protocol agnostic)\n *\n * 定义核心事件类型,框架会自动转换为对应协议格式(OpenAI、AG-UI 等)。\n */\nexport enum EventType {\n // 核心事件\n TEXT = 'TEXT', // 文本内容块\n TOOL_CALL = 'TOOL_CALL', // 完整工具调用(含 id, name, args)\n TOOL_CALL_CHUNK = 'TOOL_CALL_CHUNK', // 工具调用参数片段(流式场景)\n TOOL_RESULT = 'TOOL_RESULT', // 工具执行结果\n TOOL_RESULT_CHUNK = 'TOOL_RESULT_CHUNK', // 工具执行结果片段(流式输出场景)\n ERROR = 'ERROR', // 错误事件\n STATE = 'STATE', // 状态更新(快照或增量)\n\n // 人机交互事件\n HITL = 'HITL', // Human-in-the-Loop,请求人类介入\n\n // 扩展事件\n CUSTOM = 'CUSTOM', // 自定义事件\n RAW = 'RAW', // 原始协议数据(直接透传到响应流)\n}\n\n/**\n * Tool call definition\n */\nexport interface ToolCall {\n id: string;\n type?: string;\n function: {\n name: string;\n arguments: string;\n };\n}\n\n/**\n * Tool definition\n */\nexport interface Tool {\n type: string;\n function: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n };\n}\n\n/**\n * Message in a conversation\n */\nexport interface Message {\n id?: string;\n role: MessageRole;\n content?: string | Array<Record<string, unknown>>;\n name?: string;\n toolCalls?: ToolCall[];\n toolCallId?: string;\n}\n\n/**\n * Agent request\n */\nexport interface AgentRequest {\n /** Protocol name */\n protocol?: string;\n /** Messages in the conversation */\n messages: Message[];\n /** Whether to stream the response */\n stream?: boolean;\n /** Model to use */\n model?: string;\n /** Available tools */\n tools?: Tool[];\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Raw HTTP request (for accessing headers, etc.) */\n rawRequest?: unknown;\n}\n\n/**\n * Merge options for addition field\n */\nexport interface MergeOptions {\n noNewField?: boolean;\n concatList?: boolean;\n ignoreEmptyList?: boolean;\n}\n\n/**\n * Agent event (for streaming)\n *\n * 标准化的事件结构,协议无关设计。\n * 框架层会自动将 AgentEvent 转换为对应协议的格式(OpenAI、AG-UI 等)。\n */\nexport interface AgentEvent {\n /** Event type */\n event: EventType;\n /** Event data */\n data?: Record<string, unknown>;\n /** Additional fields for protocol extension */\n addition?: Record<string, unknown>;\n /** Merge options for addition */\n additionMergeOptions?: MergeOptions;\n}\n\n/**\n * Agent result (alias for AgentEvent)\n */\nexport type AgentResult = AgentEvent;\n\n/**\n * Agent event item (can be string or AgentEvent)\n */\nexport type AgentEventItem = string | AgentEvent;\n\n/**\n * Protocol configuration base\n */\nexport interface ProtocolConfig {\n prefix?: string;\n enable?: boolean;\n}\n\n/**\n * OpenAI protocol configuration\n */\nexport interface OpenAIProtocolConfig extends ProtocolConfig {\n modelName?: string;\n}\n\n/**\n * AG-UI protocol configuration\n */\nexport interface AGUIProtocolConfig extends ProtocolConfig {\n // No additional config for now\n}\n\n/**\n * Server configuration\n */\nexport interface ServerConfig {\n /** OpenAI protocol config */\n openai?: OpenAIProtocolConfig;\n /** AG-UI protocol config */\n agui?: AGUIProtocolConfig;\n /** CORS origins */\n corsOrigins?: string[];\n /** Port to listen on */\n port?: number;\n /** Host to listen on */\n host?: string;\n}\n\n/**\n * Protocol request interface (framework agnostic)\n */\nexport interface ProtocolRequest {\n body: Record<string, unknown>;\n headers: Record<string, string>;\n method: string;\n url: string;\n query?: Record<string, string>;\n}\n\n/**\n * Protocol response interface\n */\nexport interface ProtocolResponse {\n status: number;\n headers: Record<string, string>;\n body: string | AsyncIterable<string>;\n}\n\n/**\n * Invoke options for AgentInvoker\n */\nexport interface InvokeOptions {\n signal?: AbortSignal;\n timeout?: number;\n}\n","/**\n * Agent Invoker\n *\n * Unified agent invocation handler that normalizes all return types\n * to AsyncGenerator<AgentEvent>.\n */\n\nimport { AgentEvent, AgentRequest, EventType, InvokeOptions } from './model';\n\n/**\n * Agent invoke handler type\n *\n * Supports multiple return types:\n * - string: Simple text response\n * - AgentEvent: Single event\n * - Promise<string | AgentEvent>: Async single response\n * - AsyncIterable<string | AgentEvent>: Streaming response\n */\nexport type InvokeAgentHandler = (\n request: AgentRequest\n) => string | AgentEvent | Promise<string | AgentEvent> | AsyncIterable<string | AgentEvent>;\n\n/**\n * Agent Invoker\n *\n * Responsibilities:\n * 1. Call user's invoke_agent function\n * 2. Normalize all return types to AsyncGenerator<AgentEvent>\n * 3. Auto-convert string → AgentEvent(TEXT)\n * 4. Expand TOOL_CALL → TOOL_CALL_CHUNK\n * 5. Handle errors gracefully\n */\nexport class AgentInvoker {\n constructor(private handler: InvokeAgentHandler) {}\n\n /**\n * Invoke agent and return streaming result\n * Always returns AsyncGenerator<AgentEvent>\n */\n async *invoke(request: AgentRequest, options?: InvokeOptions): AsyncGenerator<AgentEvent> {\n try {\n const result = await Promise.resolve(this.handler(request));\n\n // Check abort signal\n if (options?.signal?.aborted) {\n yield this.createErrorEvent(new Error('Request aborted'));\n return;\n }\n\n // Normalize based on return type\n if (this.isAsyncIterable(result)) {\n yield* this.processAsyncIterable(result as AsyncIterable<string | AgentEvent>, options);\n } else if (typeof result === 'string') {\n yield { event: EventType.TEXT, data: { delta: result } };\n } else {\n yield* this.processEvent(result as AgentEvent);\n }\n } catch (error) {\n yield this.createErrorEvent(error);\n }\n }\n\n /**\n * Process async iterable stream\n */\n private async *processAsyncIterable(\n stream: AsyncIterable<string | AgentEvent>,\n options?: InvokeOptions\n ): AsyncGenerator<AgentEvent> {\n try {\n for await (const item of stream) {\n // Check abort signal\n if (options?.signal?.aborted) {\n yield this.createErrorEvent(new Error('Request aborted'));\n return;\n }\n\n if (typeof item === 'string') {\n if (item) {\n yield { event: EventType.TEXT, data: { delta: item } };\n }\n } else {\n yield* this.processEvent(item);\n }\n }\n } catch (error) {\n yield this.createErrorEvent(error);\n }\n }\n\n /**\n * Process single event\n * Expands TOOL_CALL → TOOL_CALL_CHUNK\n */\n private *processEvent(event: AgentEvent): Generator<AgentEvent> {\n if (event.event === EventType.TOOL_CALL) {\n // Expand TOOL_CALL to TOOL_CALL_CHUNK for streaming compatibility\n yield {\n event: EventType.TOOL_CALL_CHUNK,\n data: {\n id: event.data?.id,\n name: event.data?.name,\n args_delta: (event.data?.args as string) || '',\n },\n addition: event.addition,\n additionMergeOptions: event.additionMergeOptions,\n };\n } else {\n yield event;\n }\n }\n\n /**\n * Create error event from exception\n */\n private createErrorEvent(error: unknown): AgentEvent {\n const message = error instanceof Error ? error.message : String(error);\n const code = error instanceof Error ? error.name : 'UnknownError';\n return {\n event: EventType.ERROR,\n data: { message, code },\n };\n }\n\n /**\n * Check if value is async iterable\n */\n private isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return value !== null && typeof value === 'object' && Symbol.asyncIterator in value;\n }\n}\n"]}
|