@goondan/cli 0.0.3-alpha17 → 0.0.3-alpha19
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/dist/commands/logs.js +9 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/restart.js +10 -4
- package/dist/commands/restart.js.map +1 -1
- package/dist/parser.d.ts +2 -0
- package/dist/parser.js +2 -0
- package/dist/parser.js.map +1 -1
- package/dist/services/env.js +21 -17
- package/dist/services/env.js.map +1 -1
- package/dist/services/logs.js +65 -0
- package/dist/services/logs.js.map +1 -1
- package/dist/services/studio.js +147 -4
- package/dist/services/studio.js.map +1 -1
- package/dist/studio/assets.d.ts +1 -1
- package/dist/studio/assets.js +16 -16
- package/dist/types.d.ts +37 -0
- package/package.json +2 -2
package/dist/commands/logs.js
CHANGED
|
@@ -4,12 +4,20 @@ export async function handleLogs({ cmd, deps, globals }) {
|
|
|
4
4
|
const processName = cmd.process;
|
|
5
5
|
const result = await deps.logs.read({
|
|
6
6
|
instanceKey: cmd.instanceKey ?? undefined,
|
|
7
|
+
agent: cmd.agent ?? undefined,
|
|
8
|
+
trace: cmd.trace ?? undefined,
|
|
7
9
|
process: processName,
|
|
8
10
|
stream,
|
|
9
11
|
lines,
|
|
10
12
|
stateRoot: globals.stateRoot ?? undefined,
|
|
11
13
|
});
|
|
12
|
-
|
|
14
|
+
const filters = [];
|
|
15
|
+
if (cmd.agent)
|
|
16
|
+
filters.push(`agent=${cmd.agent}`);
|
|
17
|
+
if (cmd.trace)
|
|
18
|
+
filters.push(`trace=${cmd.trace}`);
|
|
19
|
+
const filterLabel = filters.length > 0 ? ` [${filters.join(', ')}]` : '';
|
|
20
|
+
deps.io.out(`Logs instance=${result.instanceKey} process=${result.process} stream=${stream} lines=${lines}${filterLabel}`);
|
|
13
21
|
for (const chunk of result.chunks) {
|
|
14
22
|
deps.io.out(`--- ${chunk.stream} (${chunk.path}) ---`);
|
|
15
23
|
if (chunk.lines.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAe;IAClE,MAAM,MAAM,GAAc,GAAG,CAAC,MAAM,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,OAAO,EAAE,WAAW;QACpB,MAAM;QACN,KAAK;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,YAAY,MAAM,CAAC,OAAO,WAAW,MAAM,UAAU,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAe;IAClE,MAAM,MAAM,GAAc,GAAG,CAAC,MAAM,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;QACzC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;QAC7B,OAAO,EAAE,WAAW;QACpB,MAAM;QACN,KAAK;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;KAC1C,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,YAAY,MAAM,CAAC,OAAO,WAAW,MAAM,UAAU,KAAK,GAAG,WAAW,EAAE,CAAC,CAAC;IAC3H,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/commands/restart.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
export async function handleRestart({ cmd, deps, globals }) {
|
|
2
|
+
const agent = cmd.agent ?? undefined;
|
|
3
|
+
const fresh = cmd.fresh ?? false;
|
|
2
4
|
const result = await deps.runtime.restart({
|
|
3
|
-
agent
|
|
4
|
-
fresh
|
|
5
|
+
agent,
|
|
6
|
+
fresh,
|
|
5
7
|
stateRoot: globals.stateRoot ?? undefined,
|
|
6
8
|
});
|
|
7
9
|
if (result.instanceKey && typeof result.pid === 'number') {
|
|
8
|
-
|
|
10
|
+
const target = agent ? `agent "${agent}"` : 'Orchestrator';
|
|
11
|
+
const freshLabel = fresh ? ' (fresh, state cleared)' : '';
|
|
12
|
+
deps.io.out(`${target} restarted: ${result.instanceKey} (pid: ${result.pid})${freshLabel}`);
|
|
9
13
|
return 0;
|
|
10
14
|
}
|
|
11
|
-
|
|
15
|
+
const target = agent ? `agent "${agent}"` : result.restarted.join(', ');
|
|
16
|
+
const freshLabel = fresh ? ' (fresh, state cleared)' : '';
|
|
17
|
+
deps.io.out(`Restart requested for: ${target}${freshLabel}`);
|
|
12
18
|
return 0;
|
|
13
19
|
}
|
|
14
20
|
//# sourceMappingURL=restart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAkB;IACxE,MAAM,
|
|
1
|
+
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAkB;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,KAAK;QACL,KAAK;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;KAC1C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,eAAe,MAAM,CAAC,WAAW,UAAU,MAAM,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -76,6 +76,8 @@ export declare const gdnParser: import("@optique/core/parser").Parser<"sync", {
|
|
|
76
76
|
} | {
|
|
77
77
|
readonly action: "logs";
|
|
78
78
|
readonly instanceKey: string | undefined;
|
|
79
|
+
readonly agent: string | undefined;
|
|
80
|
+
readonly trace: string | undefined;
|
|
79
81
|
readonly process: string;
|
|
80
82
|
readonly stream: "stdout" | "stderr" | "both";
|
|
81
83
|
readonly lines: number;
|
package/dist/parser.js
CHANGED
|
@@ -102,6 +102,8 @@ const doctorCommand = command('doctor', object({
|
|
|
102
102
|
const logsCommand = command('logs', object({
|
|
103
103
|
action: constant('logs'),
|
|
104
104
|
instanceKey: optional(option('-i', '--instance-key', string({ metavar: 'KEY' }))),
|
|
105
|
+
agent: optional(option('-a', '--agent', string({ metavar: 'NAME' }))),
|
|
106
|
+
trace: optional(option('--trace', string({ metavar: 'TRACE_ID' }))),
|
|
105
107
|
process: withDefault(option('-p', '--process', string({ metavar: 'NAME' })), 'orchestrator'),
|
|
106
108
|
stream: withDefault(option('--stream', choice(['stdout', 'stderr', 'both'])), 'both'),
|
|
107
109
|
lines: withDefault(option('-l', '--lines', integer({ min: 1 })), 200),
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/services/env.js
CHANGED
|
@@ -10,34 +10,38 @@ function resolveEnvFilePath(projectRoot, inputPath) {
|
|
|
10
10
|
return path.resolve(projectRoot, inputPath);
|
|
11
11
|
}
|
|
12
12
|
function buildEnvFileQueue(projectRoot, envFile) {
|
|
13
|
-
|
|
13
|
+
// Precedence (higher wins):
|
|
14
|
+
// --env-file > .env.local > .env > system env
|
|
15
|
+
// Implementation strategy:
|
|
16
|
+
// - Start from system env
|
|
17
|
+
// - Apply low-precedence dotenv files first, then override upward
|
|
18
|
+
const queue = [
|
|
19
|
+
{
|
|
20
|
+
filePath: path.join(projectRoot, '.env'),
|
|
21
|
+
required: false,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
filePath: path.join(projectRoot, '.env.local'),
|
|
25
|
+
required: false,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
14
28
|
if (envFile && envFile.trim().length > 0) {
|
|
15
29
|
queue.push({
|
|
16
30
|
filePath: resolveEnvFilePath(projectRoot, envFile.trim()),
|
|
17
31
|
required: true,
|
|
18
32
|
});
|
|
19
33
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}, {
|
|
24
|
-
filePath: path.join(projectRoot, '.env'),
|
|
25
|
-
required: false,
|
|
26
|
-
});
|
|
27
|
-
const deduped = new Set();
|
|
28
|
-
const uniqueQueue = [];
|
|
34
|
+
// Dedupe while keeping the last occurrence (so a user-provided --env-file
|
|
35
|
+
// can replace the default path and still be treated as required).
|
|
36
|
+
const byPath = new Map();
|
|
29
37
|
for (const item of queue) {
|
|
30
|
-
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
deduped.add(item.filePath);
|
|
34
|
-
uniqueQueue.push(item);
|
|
38
|
+
byPath.set(item.filePath, item);
|
|
35
39
|
}
|
|
36
|
-
return
|
|
40
|
+
return [...byPath.values()];
|
|
37
41
|
}
|
|
38
42
|
function mergeDotEnvValues(target, parsed) {
|
|
39
43
|
for (const [key, value] of Object.entries(parsed)) {
|
|
40
|
-
if (
|
|
44
|
+
if (value === undefined) {
|
|
41
45
|
continue;
|
|
42
46
|
}
|
|
43
47
|
target[key] = value;
|
package/dist/services/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/services/env.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAYrC,SAAS,kBAAkB,CAAC,WAAmB,EAAE,SAAiB;IAChE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB,EAAE,OAA2B;IACzE,MAAM,KAAK,GAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/services/env.ts"],"names":[],"mappings":"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"}
|
package/dist/services/logs.js
CHANGED
|
@@ -87,6 +87,53 @@ async function readChunk(stream, filePath, maxLines) {
|
|
|
87
87
|
lines: tailLines(raw, maxLines),
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
function matchesEventFilter(line, filter) {
|
|
91
|
+
try {
|
|
92
|
+
const parsed = JSON.parse(line);
|
|
93
|
+
if (!isObjectRecord(parsed)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
if (filter.agent) {
|
|
97
|
+
const agentName = parsed['agentName'];
|
|
98
|
+
if (typeof agentName !== 'string' || agentName !== filter.agent) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (filter.trace) {
|
|
103
|
+
const traceId = parsed['traceId'];
|
|
104
|
+
if (typeof traceId !== 'string' || traceId !== filter.trace) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function filterAndTailLines(content, maxLines, filter) {
|
|
115
|
+
const lines = content
|
|
116
|
+
.split('\n')
|
|
117
|
+
.map((line) => line.replace(/\r$/, ''))
|
|
118
|
+
.filter((line) => line.length > 0);
|
|
119
|
+
const filtered = lines.filter((line) => matchesEventFilter(line, filter));
|
|
120
|
+
if (filtered.length <= maxLines) {
|
|
121
|
+
return filtered;
|
|
122
|
+
}
|
|
123
|
+
return filtered.slice(filtered.length - maxLines);
|
|
124
|
+
}
|
|
125
|
+
async function readRuntimeEventsChunk(filePath, maxLines, filter) {
|
|
126
|
+
const hasFile = await exists(filePath);
|
|
127
|
+
if (!hasFile) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const raw = await readFile(filePath, 'utf8');
|
|
131
|
+
return {
|
|
132
|
+
stream: 'stdout',
|
|
133
|
+
path: filePath,
|
|
134
|
+
lines: filterAndTailLines(raw, maxLines, filter),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
90
137
|
export class FileLogService {
|
|
91
138
|
env;
|
|
92
139
|
constructor(env) {
|
|
@@ -103,6 +150,24 @@ export class FileLogService {
|
|
|
103
150
|
if (!instanceKey) {
|
|
104
151
|
throw configError('실행 중인 인스턴스를 찾지 못했습니다.', 'gdn run으로 먼저 실행하거나 --instance-key를 지정하세요.');
|
|
105
152
|
}
|
|
153
|
+
const hasEventFilter = Boolean(request.agent) || Boolean(request.trace);
|
|
154
|
+
// agent/trace 필터가 있으면 runtime-events.jsonl에서 필터링
|
|
155
|
+
if (hasEventFilter) {
|
|
156
|
+
const filter = {
|
|
157
|
+
agent: request.agent,
|
|
158
|
+
trace: request.trace,
|
|
159
|
+
};
|
|
160
|
+
const eventsPath = path.join(stateRoot, 'workspaces', instanceKey, 'messages', 'runtime-events.jsonl');
|
|
161
|
+
const chunk = await readRuntimeEventsChunk(eventsPath, maxLines, filter);
|
|
162
|
+
if (!chunk) {
|
|
163
|
+
throw configError(`런타임 이벤트 파일을 찾을 수 없습니다. (instance=${instanceKey})`, 'gdn run을 다시 실행한 뒤 gdn logs를 사용하세요.');
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
instanceKey,
|
|
167
|
+
process: processName,
|
|
168
|
+
chunks: [chunk],
|
|
169
|
+
};
|
|
170
|
+
}
|
|
106
171
|
const fromActive = active?.logs.find((item) => item.process === processName);
|
|
107
172
|
const resolvedPaths = fromActive ?? resolveFallbackLogPaths(stateRoot, instanceKey, processName);
|
|
108
173
|
const chunks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/services/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/services/logs.ts"],"names":[],"mappings":"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"}
|
package/dist/services/studio.js
CHANGED
|
@@ -279,7 +279,7 @@ function fromMessageToRoute(message, instanceKey, defaultAgentId, state) {
|
|
|
279
279
|
const inbound = message.inboundContext;
|
|
280
280
|
if (inbound) {
|
|
281
281
|
const fromId = `${inbound.sourceKind}:${inbound.sourceName}`;
|
|
282
|
-
state.
|
|
282
|
+
state.lastInboundSourceId = fromId;
|
|
283
283
|
return {
|
|
284
284
|
from: fromId,
|
|
285
285
|
to: defaultAgentId,
|
|
@@ -287,7 +287,7 @@ function fromMessageToRoute(message, instanceKey, defaultAgentId, state) {
|
|
|
287
287
|
detail: message.content,
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
|
-
state.
|
|
290
|
+
state.lastInboundSourceId = userId;
|
|
291
291
|
return {
|
|
292
292
|
from: userId,
|
|
293
293
|
to: defaultAgentId,
|
|
@@ -321,13 +321,37 @@ function fromMessageToRoute(message, instanceKey, defaultAgentId, state) {
|
|
|
321
321
|
detail: message.content,
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
|
+
// assistant 메시지: inbound context로부터 마지막 소스를 target으로 사용
|
|
324
325
|
return {
|
|
325
326
|
from: defaultAgentId,
|
|
326
|
-
to: state.
|
|
327
|
+
to: state.lastInboundSourceId,
|
|
327
328
|
kind: 'message.assistant',
|
|
328
329
|
detail: message.content,
|
|
329
330
|
};
|
|
330
331
|
}
|
|
332
|
+
function parseTokenUsage(value) {
|
|
333
|
+
if (!isObjectRecord(value)) {
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
const promptTokens = value['promptTokens'];
|
|
337
|
+
const completionTokens = value['completionTokens'];
|
|
338
|
+
const totalTokens = value['totalTokens'];
|
|
339
|
+
if (typeof promptTokens !== 'number' ||
|
|
340
|
+
typeof completionTokens !== 'number' ||
|
|
341
|
+
typeof totalTokens !== 'number') {
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
return { promptTokens, completionTokens, totalTokens };
|
|
345
|
+
}
|
|
346
|
+
function extractTraceContext(event) {
|
|
347
|
+
const traceId = typeof event['traceId'] === 'string' ? event['traceId'] : undefined;
|
|
348
|
+
const spanId = typeof event['spanId'] === 'string' ? event['spanId'] : undefined;
|
|
349
|
+
const parentSpanId = typeof event['parentSpanId'] === 'string' ? event['parentSpanId'] : undefined;
|
|
350
|
+
const instanceKey = typeof event['instanceKey'] === 'string' ? event['instanceKey'] : undefined;
|
|
351
|
+
const duration = typeof event['duration'] === 'number' ? event['duration'] : undefined;
|
|
352
|
+
const tokenUsage = parseTokenUsage(event['tokenUsage']);
|
|
353
|
+
return { traceId, spanId, parentSpanId, instanceKey, duration, tokenUsage };
|
|
354
|
+
}
|
|
331
355
|
function runtimeEventRoute(event) {
|
|
332
356
|
const type = event['type'];
|
|
333
357
|
const agentName = event['agentName'];
|
|
@@ -336,6 +360,7 @@ function runtimeEventRoute(event) {
|
|
|
336
360
|
}
|
|
337
361
|
const agentId = `agent:${agentName}`;
|
|
338
362
|
const llmInputMessages = parseLlmInputMessages(event['llmInputMessages']);
|
|
363
|
+
const trace = extractTraceContext(event);
|
|
339
364
|
if (type === 'tool.called') {
|
|
340
365
|
const toolName = event['toolName'];
|
|
341
366
|
return {
|
|
@@ -343,6 +368,7 @@ function runtimeEventRoute(event) {
|
|
|
343
368
|
to: `tool:${typeof toolName === 'string' ? toolName : 'unknown'}`,
|
|
344
369
|
detail: typeof toolName === 'string' ? toolName : '',
|
|
345
370
|
llmInputMessages,
|
|
371
|
+
...trace,
|
|
346
372
|
};
|
|
347
373
|
}
|
|
348
374
|
if (type === 'tool.completed' || type === 'tool.failed') {
|
|
@@ -354,6 +380,7 @@ function runtimeEventRoute(event) {
|
|
|
354
380
|
to: agentId,
|
|
355
381
|
detail: `${typeof toolName === 'string' ? toolName : 'unknown'}${suffix}`,
|
|
356
382
|
llmInputMessages,
|
|
383
|
+
...trace,
|
|
357
384
|
};
|
|
358
385
|
}
|
|
359
386
|
return {
|
|
@@ -361,6 +388,7 @@ function runtimeEventRoute(event) {
|
|
|
361
388
|
to: 'system:runtime',
|
|
362
389
|
detail: type,
|
|
363
390
|
llmInputMessages,
|
|
391
|
+
...trace,
|
|
364
392
|
};
|
|
365
393
|
}
|
|
366
394
|
function parseLlmInputMessages(value) {
|
|
@@ -595,6 +623,113 @@ function writeText(res, statusCode, contentType, body) {
|
|
|
595
623
|
res.setHeader('cache-control', 'no-store');
|
|
596
624
|
res.end(body);
|
|
597
625
|
}
|
|
626
|
+
function buildTraces(entries) {
|
|
627
|
+
const traceMap = new Map();
|
|
628
|
+
// First pass: collect all spans from runtime events with trace info
|
|
629
|
+
for (const entry of entries) {
|
|
630
|
+
if (!entry.traceId || !entry.spanId) {
|
|
631
|
+
continue;
|
|
632
|
+
}
|
|
633
|
+
let traceData = traceMap.get(entry.traceId);
|
|
634
|
+
if (!traceData) {
|
|
635
|
+
traceData = {
|
|
636
|
+
spans: new Map(),
|
|
637
|
+
agentNames: new Set(),
|
|
638
|
+
startedAt: entry.at,
|
|
639
|
+
};
|
|
640
|
+
traceMap.set(entry.traceId, traceData);
|
|
641
|
+
}
|
|
642
|
+
const agentName = entry.source.startsWith('agent:')
|
|
643
|
+
? entry.source.slice(6)
|
|
644
|
+
: entry.target?.startsWith('agent:')
|
|
645
|
+
? entry.target.slice(6)
|
|
646
|
+
: undefined;
|
|
647
|
+
if (agentName) {
|
|
648
|
+
traceData.agentNames.add(agentName);
|
|
649
|
+
}
|
|
650
|
+
const existingSpan = traceData.spans.get(entry.spanId);
|
|
651
|
+
if (existingSpan) {
|
|
652
|
+
// Update existing span with completion info
|
|
653
|
+
if (entry.subtype.endsWith('.completed') || entry.subtype.endsWith('.failed')) {
|
|
654
|
+
existingSpan.completedAt = entry.at;
|
|
655
|
+
existingSpan.status = entry.subtype.endsWith('.failed') ? 'failed' : 'completed';
|
|
656
|
+
if (entry.duration !== undefined) {
|
|
657
|
+
existingSpan.duration = entry.duration;
|
|
658
|
+
}
|
|
659
|
+
if (entry.tokenUsage) {
|
|
660
|
+
existingSpan.tokenUsage = entry.tokenUsage;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
else {
|
|
665
|
+
const status = entry.subtype.endsWith('.completed')
|
|
666
|
+
? 'completed'
|
|
667
|
+
: entry.subtype.endsWith('.failed')
|
|
668
|
+
? 'failed'
|
|
669
|
+
: 'started';
|
|
670
|
+
traceData.spans.set(entry.spanId, {
|
|
671
|
+
spanId: entry.spanId,
|
|
672
|
+
parentSpanId: entry.parentSpanId,
|
|
673
|
+
traceId: entry.traceId,
|
|
674
|
+
type: entry.subtype,
|
|
675
|
+
agentName: agentName ?? 'unknown',
|
|
676
|
+
instanceKey: entry.instanceKey ?? '',
|
|
677
|
+
startedAt: entry.at,
|
|
678
|
+
completedAt: status !== 'started' ? entry.at : undefined,
|
|
679
|
+
duration: entry.duration,
|
|
680
|
+
status,
|
|
681
|
+
children: [],
|
|
682
|
+
tokenUsage: entry.tokenUsage,
|
|
683
|
+
detail: entry.detail,
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
// Track trace time boundaries
|
|
687
|
+
if (toMillis(entry.at) < toMillis(traceData.startedAt)) {
|
|
688
|
+
traceData.startedAt = entry.at;
|
|
689
|
+
}
|
|
690
|
+
if (!traceData.completedAt || toMillis(entry.at) > toMillis(traceData.completedAt)) {
|
|
691
|
+
traceData.completedAt = entry.at;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
// Second pass: build tree structure
|
|
695
|
+
const traces = [];
|
|
696
|
+
for (const [traceId, traceData] of traceMap) {
|
|
697
|
+
const rootSpans = [];
|
|
698
|
+
for (const span of traceData.spans.values()) {
|
|
699
|
+
if (span.parentSpanId) {
|
|
700
|
+
const parent = traceData.spans.get(span.parentSpanId);
|
|
701
|
+
if (parent) {
|
|
702
|
+
parent.children.push(span);
|
|
703
|
+
continue;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
rootSpans.push(span);
|
|
707
|
+
}
|
|
708
|
+
// Sort children by startedAt
|
|
709
|
+
const sortSpanChildren = (span) => {
|
|
710
|
+
span.children.sort((a, b) => toMillis(a.startedAt) - toMillis(b.startedAt));
|
|
711
|
+
for (const child of span.children) {
|
|
712
|
+
sortSpanChildren(child);
|
|
713
|
+
}
|
|
714
|
+
};
|
|
715
|
+
for (const root of rootSpans) {
|
|
716
|
+
sortSpanChildren(root);
|
|
717
|
+
}
|
|
718
|
+
rootSpans.sort((a, b) => toMillis(a.startedAt) - toMillis(b.startedAt));
|
|
719
|
+
const startMs = toMillis(traceData.startedAt);
|
|
720
|
+
const endMs = traceData.completedAt ? toMillis(traceData.completedAt) : undefined;
|
|
721
|
+
traces.push({
|
|
722
|
+
traceId,
|
|
723
|
+
rootSpans,
|
|
724
|
+
agentNames: [...traceData.agentNames],
|
|
725
|
+
startedAt: traceData.startedAt,
|
|
726
|
+
completedAt: traceData.completedAt,
|
|
727
|
+
totalDuration: endMs !== undefined ? endMs - startMs : undefined,
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
traces.sort((a, b) => toMillis(a.startedAt) - toMillis(b.startedAt));
|
|
731
|
+
return traces;
|
|
732
|
+
}
|
|
598
733
|
function notFound(res) {
|
|
599
734
|
writeJson(res, 404, {
|
|
600
735
|
error: 'not_found',
|
|
@@ -646,7 +781,7 @@ export class DefaultStudioService {
|
|
|
646
781
|
const runtimeFallbackMs = (await stat(runtimeEventsPath).catch(() => undefined))?.mtimeMs ?? 0;
|
|
647
782
|
const baseRows = await readJsonLines(basePath);
|
|
648
783
|
const routeState = {
|
|
649
|
-
|
|
784
|
+
lastInboundSourceId: `user:${request.instanceKey}`,
|
|
650
785
|
};
|
|
651
786
|
for (const row of baseRows) {
|
|
652
787
|
const message = messageFromUnknown(row);
|
|
@@ -738,6 +873,12 @@ export class DefaultStudioService {
|
|
|
738
873
|
subtype,
|
|
739
874
|
detail: routed.detail,
|
|
740
875
|
llmInputMessages: routed.llmInputMessages,
|
|
876
|
+
traceId: routed.traceId,
|
|
877
|
+
spanId: routed.spanId,
|
|
878
|
+
parentSpanId: routed.parentSpanId,
|
|
879
|
+
instanceKey: routed.instanceKey,
|
|
880
|
+
duration: routed.duration,
|
|
881
|
+
tokenUsage: routed.tokenUsage,
|
|
741
882
|
}, sequence);
|
|
742
883
|
sequence += 1;
|
|
743
884
|
}
|
|
@@ -767,12 +908,14 @@ export class DefaultStudioService {
|
|
|
767
908
|
const entries = timeline.map((item) => item.entry);
|
|
768
909
|
const recentLimit = request.maxRecentEvents ?? 20;
|
|
769
910
|
const recentEvents = entries.slice(Math.max(0, entries.length - recentLimit));
|
|
911
|
+
const traces = buildTraces(entries);
|
|
770
912
|
return {
|
|
771
913
|
instanceKey: request.instanceKey,
|
|
772
914
|
participants: finalizeParticipants(participants),
|
|
773
915
|
interactions: finalizeInteractions(interactions),
|
|
774
916
|
timeline: entries,
|
|
775
917
|
recentEvents,
|
|
918
|
+
traces,
|
|
776
919
|
};
|
|
777
920
|
}
|
|
778
921
|
async startServer(request) {
|